Legend:

This section of the commentary describes everything between [wiki:Commentary/Compiler/HscMain HscMain] and the front-end; that is, the parts of GHC that coordinate the compilation of multiple modules.

6

6

7

[[Image(ghc-top.png)]]

8

9

The GHC API is the interface exported by [[GhcFile(compiler/main/GHC.hs)]]. To compile a Haskell module that uses the GHC API, use the flag {{{-package ghc}}} (in GHC 6.6 and later). GHC itself contains a few front-ends that use the GHC API:

10

11

* The "one-shot" mode, where GHC compiles each file on the command line separately (eg. {{{ghc -c Foo.hs}}}). This mode