-Use of the Glasgow Haskell Compiler driver:
+Usage:
$$ [command-line-options-and-input-files]
-------------------------------------------------------------------------
-This driver ($$) guides each input file through (some of the)
-possible phases of a compilation:
+To compile and link a complete Haskell program, run the compiler like
+so:
+
+ $$ --make Main
+
+where the module Main is in a file named Main.hs (or Main.lhs) in the
+current directory. The other modules in the program will be located
+and compiled automatically, and the linked program will be placed in
+the file `a.out' (or `Main.exe' on Windows).
+
+Alternatively, $$ can be used to compile files individually. Each
+input file is guided through (some of the) possible phases of a
+compilation:
- unlit: extract code from a "literate program"
- hscpp: run code through the C pre-processor (if -cpp flag given)
For each input file, the phase to START with is determined by the
file's suffix:
- - .lhs literate Haskell: unlit
- - .hs illiterate Haskell: hsc
- - .hc C from the Haskell compiler: gcc
- - .c C not from the Haskell compiler: gcc
- - .s assembly language: as
- - other passed directly to the linker: ld
-If no files are given on the command line, input is taken from
-standard input, and processing is as for an .hs file. (All output is
-to stdout or stderr, however).
+ - .lhs literate Haskell unlit
+ - .hs plain Haskell ghc
+ - .hc C from the Haskell compiler gcc
+ - .c C not from the Haskell compiler gcc
+ - .s assembly language as
+ - other passed directly to the linker ld
The phase at which to STOP processing is determined by a command-line
option:
+
-E stop after generating preprocessed, de-litted Haskell
(used in conjunction with -cpp)
-C stop after generating C (.hc output)
Other commonly-used options are:
- -O An `optimising' package of compiler flags, for faster code
-
- -prof Compile for cost-centre profiling
- (add -auto for automagic cost-centres on top-level functions)
+ -v[n] Control verbosity (n is 0--5, normal verbosity level is 1,
+ -v alone is equivalent to -v3)
-fglasgow-exts Allow Glasgow extensions (unboxed types, etc.)
- -H14m Increase compiler's heap size
+ -O An `optimising' package of compiler flags, for faster code
+
+ -prof Compile for cost-centre profiling
+ (add -auto-all for automagic cost-centres on all
+ top-level functions)
- -M Output the Makefile rules recording the
- dependencies of a list of Haskell files.
- (ghc driver script calls upon the help of a
- compatible mkdependHS script to do the actual
- processing)
+ -H14m Increase compiler's heap size (might make compilation
+ faster, especially on large source files).
-The User's Guide has more information about GHC's *many* options.
+ -M Output Makefile rules recording the
+ dependencies of a list of Haskell files.
Given the above, here are some TYPICAL invocations of $$:
% $$ -C -H16m Foo.hs
# compile Haskell-produced C (.hc) to assembly language:
% $$ -S Foo.hc
+
+The User's Guide has more information about GHC's *many* options. An
+online copy can be found here:
+
+ http://www.haskell.org/ghc/documentation.html
+
------------------------------------------------------------------------