packages feed

ddc-tools-0.4.2.1: src/ddc-main/DDC/Main/Help.hs

module DDC.Main.Help where
import qualified DDC.Version    as Version


-- | What to print when we have no input files.
hello :: String
hello   = unlines
        [ "ddc: no input files"
        , "For usage information, try the -help option." ]


-- | The command-line help page.
---
--   The following internal debugging flags are also accepted but do not appear
--   in the help page.
--
--     -taint-avoid-type-checks    Avoid type checking if possible.
--                                 Exactly how much checking is avoided depends
--                                 on the compilation mode. 
help :: String
help    = unlines
        [ Version.splash
        , ""
        , "General"
        , "     -help                  Display this help."
        , "     -version               Display the version string."
        , ""
        , "Language"
        , "     -infer                 Infer types in core files. (default) (negates -recon)"
        , "     -recon                 Reconstruct types in core files.     (negates -infer)"
        , ""
        , "Compilation"
        , "     -make       FILE       Compile a module into an executable file."
        , " -c, -compile    FILE       Compile a module into an object file."
        , "     -build      FILE       Build a library or executable defined in a .build file"
        , ""
        , " -o, -output     FILE       Redirect output to this file."
        , "     -output-dir DIR        Redirect output to this directory."
        , ""
        , "     -fvia-llvm             Compile via the LLVM backend  (default)"
        , "     -fvia-c                Compile via the C backend."
        , ""
        , "Checking and Loading"
        , "     -parse      FILE       Parse a module."
        , "     -check      FILE       Parse and type check a module."
        , "     -load       FILE       Parse, type check and desugar a module to the Core IR."
        , ""
        , "Conversion"
        , "     -to-salt    FILE       Convert a module to Disciple Core Salt."
        , "     -to-llvm    FILE       Convert a module to LLVM code."
        , "     -to-c       FILE       Convert a module to C code."
        , ""
        , "Configuration"
        , "     -basedir    DIR        Path to the runtime and base library code."
        , "     -print-basedir         Print directory holding the runtime and base libraries."
        , "     -print-builder         Print external builder info for this platform."
        , "     -run-heap   BYTES      Size of the fixed runtime heap.  (65536)"
        , "     -run-link-static       Force the runtime to be linked statically."
        , ""
        , "Generic Transforms, that work on all fragments."
        , "  To uses the transforms, set the desired one with -trans, then -load a file."
        , "     -O0                    No optimisations.                (default)"
        , " -O, -O1                    Do standard optimisations."
        , ""
        , "     -trans    TRANS        Set the transformation to use with -load."
        , "     -with     FILE         Use this module for inliner templates with -load."
        , ""
        , "  TRANS   ::= "
        , "     { TRANS }              Parenthesis."
        , "     fix N TRANS            Transform to a fixpoint, or bail out after N iterations."
        , "     TRANS; TRANS           Sequence two transforms."
        , "     Id                     Return the original program unharmed."
        , "     Anonymize              Anonymize names to deBruijn form."
        , "     Beta                   Perform beta-reduction for value arguments."
        , "     BetaLets                ... introducing new let-bindings for redex arguments."
        , "     Bubble                 Float casts outwards, and combine similar ones."
        , "     Elaborate              Introduce default witnesses for unconstrained regions."
        , "     Flatten                Flatten nested let-bindings."
        , "     Forward                Move let-bindings forward into their use sites."
        , "     Inline MODULE[NAME..]  Perform inlining. Use '-with' to add source modules."
        , "     Lambdas                Perform lambda-lifting."
        , "     Namify                 Introduce fresh names for deBruijn binders."
        , "     Prune                  Erase unused, ineffectual let-bindings."
        , "     Rewrite                Perform rule based rewriting."
        , "     Snip                   Introduce let-bindings for nested applications."
        , "     SnipOver                ... and over-applications."
        , ""
        , "Core Tetra Tranfsorms (that work on .dct files only)"
        , "     -tetra-suspend   FILE  Eta-expand around suspended expressions."
        , "     -tetra-curry     FILE  Reify function closures and insert function call prims."
        , "     -tetra-boxing    FILE  Manage boxing/unboxing in prep for conversion to Core Salt."
        , ""
        , "Core Flow Transforms  (that work on .dcf files only)"
        , "     -flow-prep       FILE  Prepare a module for lowering."
        , "     -flow-lower      FILE  Lower functions to loop code."
        , "     -flow-concretize FILE  Rewrite primops to use concrete series lengths."
        , "     -flow-melt       FILE  Melt compound data structures."
        , "     -flow-wind       FILE  Wind loop primops into tail recursive loops."
        , "     -flow-thread     FILE  Thread state token through program."        
        , ""
        , "Debugging"
        , "     -dump                  Dump intermediate representations."
        , "     -keep-ll-files         Keep intermediate .ll files."
        , "     -keep-c-files          Keep intermediate .c files."
        , "     -keep-s-files          Keep intermediate .s files." ]