Feature proposal: ghc --full-flag-help ?

Simon Marlow simonmarhaskell at gmail.com
Wed Mar 14 07:18:20 EDT 2007


Marc Weber wrote:
> On Tue, Mar 13, 2007 at 01:57:10PM +0100, Marc Weber wrote:
>> Hi
>>
>> I did notice a lot of times that I just didn't remember the name of
>> option X. How to look it up? Walk through html or pdf documentation?
> 
> Just printing a link to ghc online docs is not enough because:
>   * maybe no internet availible
>   * internet slow?
>   * You still need to search/ scroll (too much effort)
>   * getting help on flags is default behaviour of any linux application
>     and most haskell developers are working on this os I think.
>     Have you ever tried  info bash, info grep, info whatsoever and got
>     the result "please visit http:// .. ?
>     That's like invoking ghc printing "This is only a fake. Please
>     execute realghc instead"
> 
> I'd love to implement this. But I might need some time.
> I already know where to start (hacking on ghc intro on the ghc
> documentation site .. ;-)
> 
> How should it look like?

We already have support for man pages, I think we should try to avoid 
duplication here.  If your GHC man page is installed correctly, then 'man ghc' 
should give you a nice consise list of options (see attached file, and scripts 
in docs/man in a GHC tree).

So I think if we are to have a 'ghc --full-help' then it should just output the 
man page, as Ketil suggested.  But we should make this work and output the 
correct man page regardless of whether 'man ghc' works, because you might have 
multiple GHC versions installed, and/or the system might not even have a man 
command (Windows).  So every GHC installation should include a text version of 
the man page, that should be fairly easy to arrange.

Cheers,
	Simon

-------------- next part --------------
GHC(1)                     Glasgow Haskell Compiler                     GHC(1)



NNAAMMEE
       GHC - the Glasgow Haskell Compiler



SSYYNNOOPPSSIISS
       gghhcc [_o_p_t_i_o_n|_f_i_l_e_n_a_m_e]...
       gghhccii [_o_p_t_i_o_n|_f_i_l_e_n_a_m_e]...


DDEESSCCRRIIPPTTIIOONN
       This  manual  page  documents  briefly the gghhcc and gghhccii commands.  Note
       that gghhccii is not yet available on all architectures.   Extensive  docu-
       mentation   is  available  in  various  other  formats  including  DVI,
       PostScript and HTML; see below.


       Each of GHC's command line options is classified as  either  _s_t_a_t_i_c  or
       _d_y_n_a_m_i_c.   A  static  flag  may  only be specified on the command line,
       whereas a dynamic flag may also be given in  an  OPTIONS  pragma  in  a
       source file or set from the GHCi command-line with :set.

       As  a  rule  of thumb, all the language options are dynamic, as are the
       warning options and the debugging options.

       The rest are static, with the notable exceptions of  --vv,  --ccpppp,  --ffaassmm,
       --ffvviiaa--CC,  and --##iinncclluuddee.  The OPTIONS sections lists the status of each
       flag.


       Common suffixes of file names for Haskell are:

       ..hhss    Haskell source code; preprocess, compile

       ..llhhss   literate Haskell source; unlit, preprocess, compile

       ..hhii    Interface file; contains information about exported symbols

       ..hhcc    intermediate C files

       .._x__oo   way _x object files; common ways are: pp, uu, ss

       .._x__hhii  way _x interface files



OOPPTTIIOONNSS
   HHeellpp aanndd vveerrbboossiittyy ooppttiioonnss
       -?    -help    -n    -v    -v_n    -V    --version     --numeric-version
       --print-libdir  -ferror-spans  -H_s_i_z_e  -Rghc-timing


   WWhhiicchh pphhaasseess ttoo rruunn
       -E  -C  -S  -c  -x _s_u_f_f_i_x


   AAlltteerrnnaattiivvee mmooddeess ooff ooppeerraattiioonn
       --interactive  --make  -e expr  -M


   RReeddiirreeccttiinngg oouuttppuutt
       -hcsuf  _s_u_f_f_i_x  -hidir _d_i_r  -hisuf _s_u_f_f_i_x  -o _f_i_l_e_n_a_m_e  -odir _d_i_r  -ohi
       _f_i_l_e_n_a_m_e   -osuf _s_u_f_f_i_x  -stubdir _d_i_r


   KKeeeeppiinngg iinntteerrmmeeddiiaattee ffiilleess
       -keep-hc-file  -keep-s-file  -keep-raw-s-file  -keep-tmp-files


   TTeemmppoorraarryy ffiilleess
       -tmpdir


   FFiinnddiinngg iimmppoorrttss
       -i_d_i_r_1:_d_i_r_2:...  -i


   IInntteerrffaaccee ffiillee ooppttiioonnss
       -ddump-hi  -ddump-hi-diffs  -ddump-minimal-imports  --show-iface _f_i_l_e


   RReeccoommppiillaattiioonn cchheecckkiinngg
       -fforce-recomp -fno-force-recomp


   IInntteerraaccttiivvee--mmooddee ooppttiioonnss
       -ignore-dot-ghci  -read-dot-ghci  -fdebugging  -fno-debugging


   PPaacckkaaggeess
       -package-name _P  -package  _P   -hide-all-packages   -hide-package  _n_a_m_e
       -ignore-package _n_a_m_e  -package-conf _f_i_l_e  -no-user-package-conf


   LLaanngguuaaggee ooppttiioonnss
       -fallow-overlapping-instances          -fno-allow-overlapping-instances
       -fallow-incoherent-instances            -fno-allow-incoherent-instances
       -fallow-undecidable-instances          -fno-allow-undecidable-instances
       -fcontext-stack=N_n 20  -farrows -fno-arrows   -ffi  or  -fffi  -fno-ffi
       -fgenerics     -fno-fgenerics      -fglasgow-exts     -fno-glasgow-exts
       -fimplicit-params      -fno-implicit-params        -firrefutable-tuples
       -fno-irrefutable-tuples     -fno-implicit-prelude    -fimplicit-prelude
       -fno-monomorphism-restriction                -fmonomorphism-restriction
       -fno-mono-pat-binds      -fmono-pat-binds      -fextended-default-rules
       -fno-extended-default-rules                        -foverloaded-strings
       -fno-overloaded-strings                         -fscoped-type-variables
       -fno-scoped-type-variables      -fth      -fno-th       -fbang-patterns
       -fno-bang-patterns


   WWaarrnniinnggss
       -W     -w      -w      -Wall    -w     -Werror      -fwarn-deprecations
       -fno-warn-deprecations                         -fwarn-duplicate-exports
       -fno-warn-duplicate-exports  -fwarn-hi-shadowing -fno-warn-hi-shadowing
       -fwarn-incomplete-patterns                -fno-warn-incomplete-patterns
       -fwarn-incomplete-record-updates    -fno-warn-incomplete-record-updates
       -fwarn-missing-fields -fno-warn-missing-fields   -fwarn-missing-methods
       -fno-warn-missing-methods                     -fwarn-missing-signatures
       -fno-warn-missing-signatures                      -fwarn-name-shadowing
       -fno-warn-name-shadowing         -fwarn-orphans       -fno-warn-orphans
       -fwarn-overlapping-patterns              -fno-warn-overlapping-patterns
       -fwarn-simple-patterns      -fno-warn-simple-patterns       -fwarn-tabs
       -fno-warn-tabs       -fwarn-type-defaults       -fno-warn-type-defaults
       -fwarn-unused-binds    -fno-warn-unused-binds     -fwarn-unused-imports
       -fno-warn-unused-imports                          -fwarn-unused-matches
       -fno-warn-unused-matches


   OOppttiimmiissaattiioonn lleevveellss
       -O -O0  -O_n -O0


   IInnddiivviidduuaall ooppttiimmiissaattiioonnss
       -fcase-merge    -fno-case-merge     -fdicts-strict    -fno-dicts-strict
       -fdo-eta-reduction   -fno-do-eta-reduction    -fdo-lambda-eta-expansion
       -fno-do-lambda-eta-expansion   -fexcess-precision -fno-excess-precision
       -frules-off    -frules-off     -fignore-asserts     -fno-ignore-asserts
       -fignore-interface-pragmas                -fno-ignore-interface-pragmas
       -fliberate-case-threshold                  -fno-liberate-case-threshold
       -fomit-interface-pragmas -fno-omit-interface-pragmas  -fmax-worker-args
       -fmax-simplifier-iterations          -fno-state-hack           -fno-cse
       -fno-full-laziness           -fno-pre-inlining          -fno-strictness
       -funbox-strict-fields                          -fno-unbox-strict-fields
       -funfolding-creation-threshold        -fno-unfolding-creation-threshold
       -funfolding-fun-discount                    -fno-unfolding-fun-discount
       -funfolding-keeness-factor                -fno-unfolding-keeness-factor
       -funfolding-update-in-place              -fno-unfolding-update-in-place
       -funfolding-use-threshold -fno-unfolding-use-threshold


   PPrrooffiilliinngg ooppttiioonnss
       -auto  -no-auto   -auto-all  -no-auto-all   -caf-all -no-caf-all  -prof
       -ticky


   HHaasskkeellll pprree--pprroocceessssoorr ooppttiioonnss
       -F


   CC pprree--pprroocceessssoorr ooppttiioonnss
       -cpp  -D_s_y_m_b_o_l=_v_a_l_u_e -U  -U_s_y_m_b_o_l  -I_d_i_r


   CC ccoommppiilleerr ooppttiioonnss
       -#include _f_i_l_e


   CCooddee ggeenneerraattiioonn ooppttiioonnss
       -fasm   -fvia-C   -fno-code


   LLiinnkkiinngg ooppttiioonnss
       -fPIC  -dynamic  -framework _n_a_m_e  -framework-path  _n_a_m_e   -l_l_i_b   -L_d_i_r
       -main-is    --mk-dll    -no-hs-main    -no-link   -split-objs   -static
       -threaded  -debug


   RReeppllaacciinngg pphhaasseess
       -pgmL _c_m_d  -pgmP _c_m_d  -pgmc _c_m_d  -pgmm _c_m_d  -pgms _c_m_d  -pgma _c_m_d  -pgml
       _c_m_d  -pgmdll _c_m_d  -pgmF _c_m_d


   FFoorrcciinngg ooppttiioonnss ttoo ppaarrttiiccuullaarr pphhaasseess
       -optL  _o_p_t_i_o_n   -optP  _o_p_t_i_o_n  -optF _o_p_t_i_o_n  -optc _o_p_t_i_o_n  -optm _o_p_t_i_o_n
       -opta _o_p_t_i_o_n  -optl _o_p_t_i_o_n  -optdll _o_p_t_i_o_n  -optdep _o_p_t_i_o_n


   PPllaattffoorrmm--ssppeecciiffiicc ooppttiioonnss
       -monly-[432]-regs


   EExxtteerrnnaall ccoorree ffiillee ooppttiioonnss
       -fext-core


   CCoommppiilleerr ddeebbuuggggiinngg ooppttiioonnss
       -dcore-lint   -ddump-asm    -ddump-bcos    -ddump-cmm    -ddump-cpranal
       -ddump-cse    -ddump-deriv    -ddump-ds   -ddump-flatC   -ddump-foreign
       -ddump-inlinings   -ddump-occur-anal    -ddump-opt-cmm    -ddump-parsed
       -ddump-prep         -ddump-rn         -ddump-rules         -ddump-simpl
       -ddump-simpl-iterations    -ddump-spec    -ddump-splices     -ddump-stg
       -ddump-stranal     -ddump-tc     -ddump-types     -ddump-worker-wrapper
       -ddump-if-trace   -ddump-tc-trace    -ddump-rn-trace    -ddump-rn-stats
       -ddump-simpl-stats    -dppr-debug    -dppr-noprags    -dppr-user-length
       -dsource-stats        -dcmm-lint         -dstg-lint         -dstg-stats
       -dverbose-core2core           -dverbose-stg2stg           -dshow-passes
       -dfaststring-stats  -unreg


   MMiisscc ccoommppiilleerr ooppttiioonnss
       -fno-hi-version-check       -dno-black-holing       -fno-method-sharing
       -fhistory-size            -funregisterised            -fno-asm-mangling
       -fno-print-bind-result



HHEELLPP AANNDD VVEERRBBOOSSIITTYY OOPPTTIIOONNSS
       --??     help
                                                                        [mode]


       --hheellpp  help
                                                                        [mode]


       --nn     do a dry run
                                                                     [dynamic]


       --vv     verbose mode (equivalent to --vv33)
                                                                     [dynamic]


       --vv_n    set verbosity level
                                                                     [dynamic]


       --VV     display GHC version
                                                                        [mode]


       ----vveerrssiioonn
              display GHC version
                                                                        [mode]


       ----nnuummeerriicc--vveerrssiioonn
              display GHC version (numeric only)
                                                                        [mode]


       ----pprriinntt--lliibbddiirr
              display GHC library directory
                                                                        [mode]


       --ffeerrrroorr--ssppaannss
              output full span in error messages
                                                                      [static]


       --HH_s_i_z_e Set the minimum heap size to _s_i_z_e
                                                                      [static]


       --RRgghhcc--ttiimmiinngg
              Summarise timing stats for GHC (same as +RTS -tstderr)
                                                                      [static]



WWHHIICCHH PPHHAASSEESS TTOO RRUUNN
       --EE     Stop after preprocessing (.hspp file)
                                                                        [mode]


       --CC     Stop after generating C (.hc file)
                                                                        [mode]


       --SS     Stop after generating assembly (.s file)
                                                                        [mode]


       --cc     Do not link
                                                                     [dynamic]


       --xx _s_u_f_f_i_x
              Override default behaviour for source files
                                                                      [static]



AALLTTEERRNNAATTIIVVEE MMOODDEESS OOFF OOPPEERRAATTIIOONN
       ----iinntteerraaccttiivvee
              Interactive mode - normally used by just running ghci
                                                                        [mode]


       ----mmaakkee Build a multi-module Haskell program, automatically figuring out
              dependencies.  Likely  to be much easier, and faster, than using
              make.
                                                                        [mode]


       --ee eexxpprr
              Evaluate _e_x_p_r
                                                                        [mode]


       --MM     Generate dependency information suitable for use in a  Makefile.
                                                                        [mode]



RREEDDIIRREECCTTIINNGG OOUUTTPPUUTT
       --hhccssuuff _s_u_f_f_i_x
              set the suffix to use for intermediate C files
                                                                     [dynamic]


       --hhiiddiirr _d_i_r
              set directory for interface files
                                                                     [dynamic]


       --hhiissuuff _s_u_f_f_i_x
              set the suffix to use for interface files
                                                                     [dynamic]


       --oo _f_i_l_e_n_a_m_e
              set output filename
                                                                     [dynamic]


       --ooddiirr _d_i_r
              set output directory
                                                                     [dynamic]


       --oohhii _f_i_l_e_n_a_m_e
              set the filename in which to put the interface
                                                                     [dynamic]


       --oossuuff _s_u_f_f_i_x
              set the output file suffix
                                                                     [dynamic]


       --ssttuubbddiirr _d_i_r
              redirect FFi stub files
                                                                     [dynamic]



KKEEEEPPIINNGG IINNTTEERRMMEEDDIIAATTEE FFIILLEESS
       --kkeeeepp--hhcc--ffiillee
              retain intermediate .hc files
                                                                     [dynamic]


       --kkeeeepp--ss--ffiillee
              retain intermediate .s files
                                                                     [dynamic]


       --kkeeeepp--rraaww--ss--ffiillee
              retain intermediate .raw_s files
                                                                     [dynamic]


       --kkeeeepp--ttmmpp--ffiilleess
              retain all intermediate temporary files
                                                                     [dynamic]



TTEEMMPPOORRAARRYY FFIILLEESS
       --ttmmppddiirr
              set the directory for temporary files
                                                                     [dynamic]



FFIINNDDIINNGG IIMMPPOORRTTSS
       --ii_d_i_r_1:_d_i_r_2:...
              add _d_i_r, _d_i_r_2, etc. to import path
                                                                 [static/:set]


       --ii     Empty the import directory list
                                                                 [static/:set]



IINNTTEERRFFAACCEE FFIILLEE OOPPTTIIOONNSS
       --dddduummpp--hhii
              Dump the new interface to stdout
                                                                     [dynamic]


       --dddduummpp--hhii--ddiiffffss
              Show the differences vs. the old interface
                                                                     [dynamic]


       --dddduummpp--mmiinniimmaall--iimmppoorrttss
              Dump a minimal set of imports
                                                                     [dynamic]


       ----sshhooww--iiffaaccee _f_i_l_e
              Read the interface in _f_i_l_e and dump it as text to stdout.
                                                                        [mode]



RREECCOOMMPPIILLAATTIIOONN CCHHEECCKKIINNGG
       --ffffoorrccee--rreeccoommpp
              Turn off recompilation checking; implied by any --dddduummpp--XX option
                                                                     [dynamic]



IINNTTEERRAACCTTIIVVEE--MMOODDEE OOPPTTIIOONNSS
       --iiggnnoorree--ddoott--gghhccii
              Disable reading of .ghci files
                                                                      [static]


       --rreeaadd--ddoott--gghhccii
              Enable reading of .ghci files
                                                                      [static]


       --ffddeebbuuggggiinngg
              Generate bytecode enabled for debugging
                                                                     [dynamic]


       --ffnnoo--ddeebbuuggggiinngg
              Do not include debugging information in bytecodes
                                                                     [dynamic]



PPAACCKKAAGGEESS
       --ppaacckkaaggee--nnaammee _P
              Compile to be part of package _P
                                                                     [dynamic]


       --ppaacckkaaggee _P
              Expose package _P
                                                                 [static/:set]


       --hhiiddee--aallll--ppaacckkaaggeess
              Hide all packages by default
                                                                      [static]


       --hhiiddee--ppaacckkaaggee _n_a_m_e
              Hide package _P
                                                                 [static/:set]


       --iiggnnoorree--ppaacckkaaggee _n_a_m_e
              Ignore package _P
                                                                 [static/:set]


       --ppaacckkaaggee--ccoonnff _f_i_l_e
              Load more packages from _f_i_l_e
                                                                      [static]


       --nnoo--uusseerr--ppaacckkaaggee--ccoonnff
              Don't load the user's package config file.
                                                                      [static]



LLAANNGGUUAAGGEE OOPPTTIIOONNSS
       --ffaallllooww--oovveerrllaappppiinngg--iinnssttaanncceess
              Enable overlapping instances
                                                                     [dynamic]


       --ffaallllooww--iinnccoohheerreenntt--iinnssttaanncceess
              Enable  incoherent  instances.  Implies  --ffaallllooww--oovveerrllaappppiinngg--iinn--
              ssttaanncceess
                                                                     [dynamic]


       --ffaallllooww--uunnddeecciiddaabbllee--iinnssttaanncceess
              Enable undecidable instances
                                                                     [dynamic]


       --ffccoonntteexxtt--ssttaacckk==NN_n
              set the limit for context reduction
                                                                     [dynamic]


       --ffaarrrroowwss
              Enable arrow notation extension
                                                                     [dynamic]


       --ffffii or --ffffffii
              Enable foreign function interface (implied by --ffggllaassggooww--eexxttss)
                                                                     [dynamic]


       --ffggeenneerriiccss
              Enable generic classes
                                                                     [dynamic]


       --ffggllaassggooww--eexxttss
              Enable most language extensions
                                                                     [dynamic]


       --ffiimmpplliicciitt--ppaarraammss
              Enable Implicit Parameters. Implied by --ffggllaassggooww--eexxttss.
                                                                     [dynamic]


       --ffiirrrreeffuuttaabbllee--ttuupplleess
              Make tuple pattern matching irrefutable
                                                                     [dynamic]


       --ffnnoo--iimmpplliicciitt--pprreelluuddee
              Don't implicitly import Prelude
                                                                     [dynamic]


       --ffnnoo--mmoonnoommoorrpphhiissmm--rreessttrriiccttiioonn
              Disable the monomorphism restriction
                                                                     [dynamic]


       --ffnnoo--mmoonnoo--ppaatt--bbiinnddss
              Make pattern bindings polymorphic
                                                                     [dynamic]


       --ffeexxtteennddeedd--ddeeffaauulltt--rruulleess
              Use GHCi's extended default rules in a normal module
                                                                     [dynamic]


       --ffoovveerrllooaaddeedd--ssttrriinnggss
              Enable overloaded string literals.
                                                                     [dynamic]


       --ffssccooppeedd--ttyyppee--vvaarriiaabblleess
              Enable  lexically-scoped  type  variables.  Implied  by  --ffggllaass--
              ggooww--eexxttss.
                                                                     [dynamic]


       --fftthh   Enable Template Haskell. No longer implied by --ffggllaassggooww--eexxttss.
                                                                     [dynamic]


       --ffbbaanngg--ppaatttteerrnnss
              Enable bang patterns.
                                                                     [dynamic]



WWAARRNNIINNGGSS
       --WW     enable normal warnings
                                                                     [dynamic]


       --ww     disable all warnings
                                                                     [dynamic]


       --WWaallll  enable all warnings
                                                                     [dynamic]


       --WWeerrrroorr
              make warnings fatal
                                                                     [dynamic]


       --ffwwaarrnn--ddeepprreeccaattiioonnss
              warn about uses of functions & types that are deprecated
                                                                     [dynamic]


       --ffwwaarrnn--dduupplliiccaattee--eexxppoorrttss
              warn when an entity is exported multiple times
                                                                     [dynamic]


       --ffwwaarrnn--hhii--sshhaaddoowwiinngg
              warn when a .hi file in the current directory shadows a library
                                                                     [dynamic]


       --ffwwaarrnn--iinnccoommpplleettee--ppaatttteerrnnss
              warn when a pattern match could fail
                                                                     [dynamic]


       --ffwwaarrnn--iinnccoommpplleettee--rreeccoorrdd--uuppddaatteess
              warn when a record update could fail
                                                                     [dynamic]


       --ffwwaarrnn--mmiissssiinngg--ffiieellddss
              warn when fields of a record are uninitialised
                                                                     [dynamic]


       --ffwwaarrnn--mmiissssiinngg--mmeetthhooddss
              warn when class methods are undefined
                                                                     [dynamic]


       --ffwwaarrnn--mmiissssiinngg--ssiiggnnaattuurreess
              warn about top-level functions without signatures
                                                                     [dynamic]


       --ffwwaarrnn--nnaammee--sshhaaddoowwiinngg
              warn when names are shadowed
                                                                     [dynamic]


       --ffwwaarrnn--oorrpphhaannss
              warn  when the module contains "orphan" instance declarations or
              rewrite rules
                                                                     [dynamic]


       --ffwwaarrnn--oovveerrllaappppiinngg--ppaatttteerrnnss
              warn about overlapping patterns
                                                                     [dynamic]


       --ffwwaarrnn--ssiimmppllee--ppaatttteerrnnss
              warn about lambda-patterns that can fail
                                                                     [dynamic]


       --ffwwaarrnn--ttaabbss
              warn if there are tabs in the source file
                                                                     [dynamic]


       --ffwwaarrnn--ttyyppee--ddeeffaauullttss
              warn when defaulting happens
                                                                     [dynamic]


       --ffwwaarrnn--uunnuusseedd--bbiinnddss
              warn about bindings that are unused
                                                                     [dynamic]


       --ffwwaarrnn--uunnuusseedd--iimmppoorrttss
              warn about unnecessary imports
                                                                     [dynamic]


       --ffwwaarrnn--uunnuusseedd--mmaattcchheess
              warn about variables in patterns that aren't used
                                                                     [dynamic]



OOPPTTIIMMIISSAATTIIOONN LLEEVVEELLSS
       --OO     Enable default optimisation (level 1)
                                                                     [dynamic]


       --OO_n    Set optimisation level _n
                                                                     [dynamic]



IINNDDIIVVIIDDUUAALL OOPPTTIIMMIISSAATTIIOONNSS
       --ffccaassee--mmeerrggee
              Enable case-merging
                                                                     [dynamic]


       --ffddiiccttss--ssttrriicctt
              Make dictionaries strict
                                                                      [static]


       --ffddoo--eettaa--rreedduuccttiioonn
              Enable eta-reduction
                                                                     [dynamic]


       --ffddoo--llaammbbddaa--eettaa--eexxppaannssiioonn
              Enable lambda eta-reduction
                                                                     [dynamic]


       --ffeexxcceessss--pprreecciissiioonn
              Enable excess intermediate precision
                                                                     [dynamic]


       --ffrruulleess--ooffff
              Switch off all rewrite rules (including rules generated by auto-
              matic specialisation of overloaded functions)
                                                                      [static]


       --ffiiggnnoorree--aasssseerrttss
              Ignore assertions in the source
                                                                     [dynamic]


       --ffiiggnnoorree--iinntteerrffaaccee--pprraaggmmaass
              Ignore pragmas in interface files
                                                                     [dynamic]


       --fflliibbeerraattee--ccaassee--tthhrreesshhoolldd
              Tweak the liberate-case optimisation (default: 10)
                                                                      [static]


       --ffoommiitt--iinntteerrffaaccee--pprraaggmmaass
              Don't generate interface pragmas
                                                                     [dynamic]


       --ffmmaaxx--wwoorrkkeerr--aarrggss
              If  a worker has that many arguments, none will be unpacked any-
              more (default: 10)
                                                                      [static]


       --ffmmaaxx--ssiimmpplliiffiieerr--iitteerraattiioonnss
              Set the max iterations for the simplifier
                                                                     [dynamic]


       --ffnnoo--ssttaattee--hhaacckk
              Turn off the "state hack" whereby any lambda with  a  real-world
              state  token as argument is considered to be single-entry. Hence
              OK to inline things inside it.
                                                                      [static]


       --ffnnoo--ccssee
              Turn off common sub-expression
                                                                     [dynamic]


       --ffnnoo--ffuullll--llaazziinneessss
              Turn off full laziness (floating bindings outwards).
                                                                     [dynamic]


       --ffnnoo--pprree--iinnlliinniinngg
              Turn off pre-inlining
                                                                      [static]


       --ffnnoo--ssttrriiccttnneessss
              Turn off strictness analysis
                                                                     [dynamic]


       --ffuunnbbooxx--ssttrriicctt--ffiieellddss
              Flatten strict constructor fields
                                                                     [dynamic]


       --ffuunnffoollddiinngg--ccrreeaattiioonn--tthhrreesshhoolldd
              Tweak unfolding settings
                                                                      [static]


       --ffuunnffoollddiinngg--ffuunn--ddiissccoouunntt
              Tweak unfolding settings
                                                                      [static]


       --ffuunnffoollddiinngg--kkeeeenneessss--ffaaccttoorr
              Tweak unfolding settings
                                                                      [static]


       --ffuunnffoollddiinngg--uuppddaattee--iinn--ppllaaccee
              Tweak unfolding settings
                                                                      [static]


       --ffuunnffoollddiinngg--uussee--tthhrreesshhoolldd
              Tweak unfolding settings
                                                                      [static]



PPRROOFFIILLIINNGG OOPPTTIIOONNSS
       --aauuttoo  Auto-add _scc_s to all exported functions
                                                                      [static]


       --aauuttoo--aallll
              Auto-add _scc_s to all top-level functions
                                                                      [static]


       --ccaaff--aallll
              Auto-add _scc_s to all CAFs
                                                                      [static]


       --pprrooff  Turn on profiling
                                                                      [static]


       --ttiicckkyy Turn on ticky-ticky profiling
                                                                      [static]



HHAASSKKEELLLL PPRREE--PPRROOCCEESSSSOORR OOPPTTIIOONNSS
       --FF     Enable the use of a pre-processor (set with --ppggmmFF)
                                                                     [dynamic]



CC PPRREE--PPRROOCCEESSSSOORR OOPPTTIIOONNSS
       --ccpppp   Run the C pre-processor on Haskell source files
                                                                     [dynamic]


       --DD_s_y_m_b_o_l=_v_a_l_u_e
              Define a symbol in the C pre-processor
                                                                     [dynamic]


       --UU_s_y_m_b_o_l
              Undefine a symbol in the C pre-processor
                                                                     [dynamic]


       --II_d_i_r  Add _d_i_r to the directory search list for #include files
                                                                     [dynamic]



CC CCOOMMPPIILLEERR OOPPTTIIOONNSS
       --##iinncclluuddee _f_i_l_e
              Include _f_i_l_e when compiling the .hc file
                                                                     [dynamic]



CCOODDEE GGEENNEERRAATTIIOONN OOPPTTIIOONNSS
       --ffaassmm  Use the native code generator
                                                                     [dynamic]


       --ffvviiaa--CC
              Compile via C
                                                                     [dynamic]


       --ffnnoo--ccooddee
              Omit code generation
                                                                        [mode]



LLIINNKKIINNGG OOPPTTIIOONNSS
       --ffPPIICC  Generate position-independent code (where available)
                                                                      [static]


       --ddyynnaammiicc
              Use dynamic Haskell libraries (if available)
                                                                      [static]


       --ffrraammeewwoorrkk _n_a_m_e
              On Darwin/MacOS X only, link in the framework _n_a_m_e. This  option
              corresponds to the --ffrraammeewwoorrkk option for Apple's Linker.
                                                                     [dynamic]


       --ffrraammeewwoorrkk--ppaatthh _n_a_m_e
              On  Darwin/MacOS  X  only,  add  _d_i_r  to the list of directories
              searched for frameworks. This option corresponds to the  --FF  op-
              tion for Apple's Linker.
                                                                     [dynamic]


       --ll_l_i_b  Link in library _l_i_b
                                                                     [dynamic]


       --LL_d_i_r  Add _d_i_r to the list of directories searched for libraries
                                                                     [dynamic]


       --mmaaiinn--iiss
              Set main module and function
                                                                     [dynamic]


       ----mmkk--ddllll
              DLL-creation mode (Windows only)
                                                                     [dynamic]


       --nnoo--hhss--mmaaiinn
              Don't assume this program contains main
                                                                     [dynamic]


       --nnoo--lliinnkk
              Omit linking
                                                                     [dynamic]


       --sspplliitt--oobbjjss
              Split objects (for libraries)
                                                                     [dynamic]


       --ssttaattiicc
              Use static Haskell libraries
                                                                      [static]


       --tthhrreeaaddeedd
              Use the threaded runtime
                                                                      [static]


       --ddeebbuugg Use the debugging runtime
                                                                      [static]



RREEPPLLAACCIINNGG PPHHAASSEESS
       --ppggmmLL _c_m_d
              Use _c_m_d as the literate pre-processor
                                                                     [dynamic]


       --ppggmmPP _c_m_d
              Use _c_m_d as the C pre-processor (with --ccpppp only)
                                                                     [dynamic]


       --ppggmmcc _c_m_d
              Use _c_m_d as the C compiler
                                                                     [dynamic]


       --ppggmmmm _c_m_d
              Use _c_m_d as the mangler
                                                                     [dynamic]


       --ppggmmss _c_m_d
              Use _c_m_d as the splitter
                                                                     [dynamic]


       --ppggmmaa _c_m_d
              Use _c_m_d as the assembler
                                                                     [dynamic]


       --ppggmmll _c_m_d
              Use _c_m_d as the linker
                                                                     [dynamic]


       --ppggmmddllll _c_m_d
              Use _c_m_d as the DLL generator
                                                                     [dynamic]


       --ppggmmFF _c_m_d
              Use _c_m_d as the pre-processor (with --FF only)
                                                                     [dynamic]



FFOORRCCIINNGG OOPPTTIIOONNSS TTOO PPAARRTTIICCUULLAARR PPHHAASSEESS
       --ooppttLL _o_p_t_i_o_n
              pass _o_p_t_i_o_n to the literate pre-processor
                                                                     [dynamic]


       --ooppttPP _o_p_t_i_o_n
              pass _o_p_t_i_o_n to cpp (with --ccpppp only)
                                                                     [dynamic]


       --ooppttFF _o_p_t_i_o_n
              pass _o_p_t_i_o_n to the custom pre-processor
                                                                     [dynamic]


       --ooppttcc _o_p_t_i_o_n
              pass _o_p_t_i_o_n to the C compiler
                                                                     [dynamic]


       --ooppttmm _o_p_t_i_o_n
              pass _o_p_t_i_o_n to the mangler
                                                                     [dynamic]


       --ooppttaa _o_p_t_i_o_n
              pass _o_p_t_i_o_n to the assembler
                                                                     [dynamic]


       --ooppttll _o_p_t_i_o_n
              pass _o_p_t_i_o_n to the linker
                                                                     [dynamic]


       --ooppttddllll _o_p_t_i_o_n
              pass _o_p_t_i_o_n to the DLL generator
                                                                     [dynamic]


       --ooppttddeepp _o_p_t_i_o_n
              pass _o_p_t_i_o_n to the dependency generator
                                                                     [dynamic]



PPLLAATTFFOORRMM--SSPPEECCIIFFIICC OOPPTTIIOONNSS
       --mmoonnllyy--[[443322]]--rreeggss
              (x86 only) give some registers back to the C compiler
                                                                     [dynamic]



EEXXTTEERRNNAALL CCOORREE FFIILLEE OOPPTTIIOONNSS
       --ffeexxtt--ccoorree
              Generate .hcr external Core files
                                                                      [static]



CCOOMMPPIILLEERR DDEEBBUUGGGGIINNGG OOPPTTIIOONNSS
       --ddccoorree--lliinntt
              Turn on internal sanity checking
                                                                     [dynamic]


       --dddduummpp--aassmm
              Dump assembly
                                                                     [dynamic]


       --dddduummpp--bbccooss
              Dump interpreter byte code
                                                                     [dynamic]


       --dddduummpp--ccmmmm
              Dump C-- output
                                                                     [dynamic]


       --dddduummpp--ccpprraannaall
              Dump output from CPR analysis
                                                                     [dynamic]


       --dddduummpp--ccssee
              Dump CSE output
                                                                     [dynamic]


       --dddduummpp--ddeerriivv
              Dump deriving output
                                                                     [dynamic]


       --dddduummpp--ddss
              Dump desugarer output
                                                                     [dynamic]


       --dddduummpp--ffllaattCC
              Dump 'flat' C
                                                                     [dynamic]


       --dddduummpp--ffoorreeiiggnn
              Dump foreign export stubs
                                                                     [dynamic]


       --dddduummpp--iinnlliinniinnggss
              Dump inlining info
                                                                     [dynamic]


       --dddduummpp--ooccccuurr--aannaall
              Dump occurrence analysis output
                                                                     [dynamic]


       --dddduummpp--oopptt--ccmmmm
              Dump the results of C-- to C-- optimising passes
                                                                     [dynamic]


       --dddduummpp--ppaarrsseedd
              Dump parse tree
                                                                     [dynamic]


       --dddduummpp--pprreepp
              Dump prepared core
                                                                     [dynamic]


       --dddduummpp--rrnn
              Dump renamer output
                                                                     [dynamic]


       --dddduummpp--rruulleess
              Dump rules
                                                                     [dynamic]


       --dddduummpp--ssiimmppll
              Dump final simplifier output
                                                                     [dynamic]


       --dddduummpp--ssiimmppll--iitteerraattiioonnss
              Dump output from each simplifier iteration
                                                                     [dynamic]


       --dddduummpp--ssppeecc
              Dump specialiser output
                                                                     [dynamic]


       --dddduummpp--sspplliicceess
              Dump TH splided expressions, and what they evaluate to
                                                                     [dynamic]


       --dddduummpp--ssttgg
              Dump final STG
                                                                     [dynamic]


       --dddduummpp--ssttrraannaall
              Dump strictness analyser output
                                                                     [dynamic]


       --dddduummpp--ttcc
              Dump typechecker output
                                                                     [dynamic]


       --dddduummpp--ttyyppeess
              Dump type signatures
                                                                     [dynamic]


       --dddduummpp--wwoorrkkeerr--wwrraappppeerr
              Dump worker-wrapper output
                                                                     [dynamic]


       --dddduummpp--iiff--ttrraaccee
              Trace interface files
                                                                     [dynamic]


       --dddduummpp--ttcc--ttrraaccee
              Trace typechecker
                                                                     [dynamic]


       --dddduummpp--rrnn--ttrraaccee
              Trace renamer
                                                                     [dynamic]


       --dddduummpp--rrnn--ssttaattss
              Renamer stats
                                                                     [dynamic]


       --dddduummpp--ssiimmppll--ssttaattss
              Dump simplifier stats
                                                                     [dynamic]


       --ddpppprr--ddeebbuugg
              Turn on debug printing (more verbose)
                                                                      [static]


       --ddpppprr--nnoopprraaggss
              Don't output pragma info in dumps
                                                                      [static]


       --ddpppprr--uusseerr--lleennggtthh
              Set the depth for printing expressions in error msgs
                                                                      [static]


       --ddssoouurrccee--ssttaattss
              Dump haskell source stats
                                                                     [dynamic]


       --ddccmmmm--lliinntt
              C-- pass sanity checking
                                                                     [dynamic]


       --ddssttgg--lliinntt
              STG pass sanity checking
                                                                     [dynamic]


       --ddssttgg--ssttaattss
              Dump STG stats
                                                                     [dynamic]


       --ddvveerrbboossee--ccoorree22ccoorree
              Show output from each core-to-core pass
                                                                     [dynamic]


       --ddvveerrbboossee--ssttgg22ssttgg
              Show output from each STG-to-STG pass
                                                                     [dynamic]


       --ddsshhooww--ppaasssseess
              Print out each pass name as it happens
                                                                     [dynamic]


       --ddffaassttssttrriinngg--ssttaattss
              Show statistics for fast string usage when finished
                                                                     [dynamic]


       --uunnrreegg Enable unregisterised compilation
                                                                      [static]



MMIISSCC CCOOMMPPIILLEERR OOPPTTIIOONNSS
       --ffnnoo--hhii--vveerrssiioonn--cchheecckk
              Don't complain about .hi file mismatches
                                                                      [static]


       --ddnnoo--bbllaacckk--hhoolliinngg
              Turn off black holing (probably doesn't work)
                                                                      [static]


       --ffnnoo--mmeetthhoodd--sshhaarriinngg
              Don't share specialisations of overloaded functions
                                                                      [static]


       --ffhhiissttoorryy--ssiizzee
              Set simplification history size
                                                                      [static]


       --ffuunnrreeggiisstteerriisseedd
              Unregisterised compilation (use --uunnrreegg instead)
                                                                      [static]


       --ffnnoo--aassmm--mmaanngglliinngg
              Turn off assembly mangling (use --uunnrreegg instead)
                                                                     [dynamic]


       --ffnnoo--pprriinntt--bbiinndd--rreessuulltt
              Turn off printing of binding results in GHCi
                                                                     [dynamic]




FFIILLEESS
       _/_6_4_p_l_a_y_p_e_n_/_b_u_i_l_d_b_o_t_/_x_8_6___6_4_-_l_i_n_u_x_-
       _h_e_a_d_/_b_u_i_l_d_/_g_h_c_-_6_._7_._2_0_0_7_0_3_0_9_/_l_i_b_/_x_8_6___6_4_-_u_n_k_n_o_w_n_-_l_i_n_u_x

CCOOPPYYRRIIGGHHTT
       Copyright 2002, The University Court of the University of Glasgow.
       All rights reserved.



AAUUTTHHOORR
       This manual page was generated from the XML documentation of  GHC  with
       blood,  sweat,  tears  and a breaks-if-you-look-at-it-the-wrong-way XSL
       stylesheet originally written by  Michael  Weber  <michaelw at debian.org>
       for the Debian GNU/Linux system (but may be used by others).




Glasgow FP Suite                  2002-10-25                            GHC(1)


More information about the Glasgow-haskell-users mailing list