diff options
-rw-r--r-- | haskell/ghc/README | 6 | ||||
-rw-r--r-- | haskell/ghc/ghc.1 | 2061 | ||||
-rw-r--r-- | haskell/ghc/ghc.SlackBuild | 105 | ||||
-rw-r--r-- | haskell/ghc/ghc.info | 24 | ||||
-rw-r--r-- | haskell/ghc/slack-desc | 2 |
5 files changed, 2133 insertions, 65 deletions
diff --git a/haskell/ghc/README b/haskell/ghc/README index a63dd0582bce..85310df7efcf 100644 --- a/haskell/ghc/README +++ b/haskell/ghc/README @@ -4,8 +4,4 @@ interactive system and profiling libraries and documentation. You will need 4.3G of free space in /tmp/SBo to build this package. -In theory, if you already have ghc 7.4 or newer on your build host, -you can skip the bootstrapping done by this script by passing -BOOTSTRAP=no environment variable to this script. In that case, you -also do not have to download the bindist, just the ghc-*-src.tar.xz. -This is not recommended, though, since it is poorly tested. +Optional dependency: Sphinx (for building the documentation). diff --git a/haskell/ghc/ghc.1 b/haskell/ghc/ghc.1 new file mode 100644 index 000000000000..aa378816a083 --- /dev/null +++ b/haskell/ghc/ghc.1 @@ -0,0 +1,2061 @@ +.\" Man page generated from reStructuredText. +. +.TH "GHC" "1" "May 20, 2018" "8.4.3" "Glasgow Haskell Compiler" +.SH NAME +ghc \- the Glasgow Haskell Compiler +. +.nr rst2man-indent-level 0 +. +.de1 rstReportMargin +\\$1 \\n[an-margin] +level \\n[rst2man-indent-level] +level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] +- +\\n[rst2man-indent0] +\\n[rst2man-indent1] +\\n[rst2man-indent2] +.. +.de1 INDENT +.\" .rstReportMargin pre: +. RS \\$1 +. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] +. nr rst2man-indent-level +1 +.\" .rstReportMargin post: +.. +.de UNINDENT +. RE +.\" indent \\n[an-margin] +.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] +.nr rst2man-indent-level -1 +.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] +.in \\n[rst2man-indent\\n[rst2man-indent-level]]u +.. +.SH SYNOPSIS +.INDENT 0.0 +.INDENT 3.5 +.sp +.nf +.ft C +ghc [option|filename] +ghci [option|filename] +.ft P +.fi +.UNINDENT +.UNINDENT +.SH DESCRIPTION +.sp +This manual page documents briefly the \fBghc\fP and \fBghci\fP commands. Note that +\fBghci\fP is not yet available on all architectures. Extensive documentation is +available in various other formats including PDF and HTML; see below. +.sp +Each of GHC\(aqs command line options is classified as either \fIstatic\fP or +\fIdynamic\fP\&. A static flag may only be specified on the command line, whereas a +dynamic flag may also be given in an \fBOPTIONS\fP pragma in a source file or +set from the GHCi command\-line with \fB:set\fP . +.sp +As a rule of thumb, all the language options are dynamic, as are the +warning options and the debugging options. +.sp +The rest are static, with the notable exceptions of +\fB\-v\fP, \fB\-cpp\fP, \fB\-fasm\fP, \fB\-fvia\-C\fP, \fB\-fllvm\fP, and +\fB\-#include\fP\&. +The OPTIONS sections lists the status of each flag. +.sp +Common suffixes of file names for Haskell are: +.INDENT 0.0 +.TP +.B \fB\&.hs\fP +Haskell source code; preprocess, compile +.TP +.B \fB\&.lhs\fP +literate Haskell source; unlit, preprocess, compile +.TP +.B \fB\&.hi\fP +Interface file; contains information about exported symbols +.TP +.B \fB\&.hc\fP +intermediate C files +.TP +.B \fB\&.⟨way⟩_o\fP +object files for "way" ⟨way⟩; common ways are: +.INDENT 7.0 +.TP +.B \fBdyn\fP +dynamically\-linked +.TP +.B \fBp\fP +built with profiling +.UNINDENT +.TP +.B \fB\&.⟨way⟩_hi\fP +interface files for "way" ⟨way⟩; common ways are: +.UNINDENT +.SH OPTIONS +.TP +.B Code generation +\fB\-dynamic\-too\fP \fB\-fasm\fP \fB\-fbyte\-code\fP \fB\-fllvm\fP \fB\-fno\-code\fP \fB\-fobject\-code\fP \fB\-fPIC\fP \fB\-fPIE\fP \fB\-fwrite\-interface\fP +.TP +.B Debugging the compiler +\fB\-dcmm\-lint\fP \fB\-dcore\-lint\fP \fB\-ddump\-asm\fP \fB\-ddump\-asm\-expanded\fP \fB\-ddump\-asm\-liveness\fP \fB\-ddump\-asm\-native\fP \fB\-ddump\-asm\-regalloc\fP \fB\-ddump\-asm\-regalloc\-stages\fP \fB\-ddump\-asm\-stats\fP \fB\-ddump\-bcos\fP \fB\-ddump\-cmm\fP \fB\-ddump\-cmm\-caf\fP \fB\-ddump\-cmm\-cbe\fP \fB\-ddump\-cmm\-cfg\fP \fB\-ddump\-cmm\-cps\fP \fB\-ddump\-cmm\-from\-stg\fP \fB\-ddump\-cmm\-info\fP \fB\-ddump\-cmm\-proc\fP \fB\-ddump\-cmm\-procmap\fP \fB\-ddump\-cmm\-raw\fP \fB\-ddump\-cmm\-sink\fP \fB\-ddump\-cmm\-sp\fP \fB\-ddump\-cmm\-split\fP \fB\-ddump\-cmm\-switch\fP \fB\-ddump\-cmm\-verbose\fP \fB\-ddump\-core\-stats\fP \fB\-ddump\-cse\fP \fB\-ddump\-deriv\fP \fB\-ddump\-ds\fP \fB\-ddump\-ec\-trace\fP \fB\-ddump\-foreign\fP \fB\-ddump\-if\-trace\fP \fB\-ddump\-inlinings\fP \fB\-ddump\-json\fP \fB\-ddump\-llvm\fP \fB\-ddump\-occur\-anal\fP \fB\-ddump\-opt\-cmm\fP \fB\-ddump\-parsed\fP \fB\-ddump\-parsed\-ast\fP \fB\-ddump\-prep\fP \fB\-ddump\-rn\fP \fB\-ddump\-rn\-ast\fP \fB\-ddump\-rn\-stats\fP \fB\-ddump\-rn\-trace\fP \fB\-ddump\-rule\-firings\fP \fB\-ddump\-rule\-rewrites\fP \fB\-ddump\-rules\fP \fB\-ddump\-simpl\fP \fB\-ddump\-simpl\-iterations\fP \fB\-ddump\-simpl\-stats\fP \fB\-ddump\-spec\fP \fB\-ddump\-splices\fP \fB\-ddump\-stg\fP \fB\-ddump\-str\-signatures\fP \fB\-ddump\-stranal\fP \fB\-ddump\-tc\fP \fB\-ddump\-tc\-ast\fP \fB\-ddump\-tc\-trace\fP \fB\-ddump\-timings\fP \fB\-ddump\-to\-file\fP \fB\-ddump\-types\fP \fB\-ddump\-vect\fP \fB\-ddump\-vt\-trace\fP \fB\-ddump\-worker\-wrapper\fP \fB\-dfaststring\-stats\fP \fB\-dinitial\-unique=⟨s⟩\fP \fB\-dno\-debug\-output\fP \fB\-dppr\-case\-as\-let\fP \fB\-dppr\-cols=⟨n⟩\fP \fB\-dppr\-debug\fP \fB\-dppr\-user\-length\fP \fB\-dshow\-passes\fP \fB\-dstg\-lint\fP \fB\-dsuppress\-all\fP \fB\-dsuppress\-coercions\fP \fB\-dsuppress\-idinfo\fP \fB\-dsuppress\-module\-prefixes\fP \fB\-dsuppress\-stg\-free\-vars\fP \fB\-dsuppress\-ticks\fP \fB\-dsuppress\-type\-applications\fP \fB\-dsuppress\-type\-signatures\fP \fB\-dsuppress\-unfoldings\fP \fB\-dsuppress\-uniques\fP \fB\-dsuppress\-var\-kinds\fP \fB\-dth\-dec\-file=⟨file⟩\fP \fB\-dunique\-increment=⟨i⟩\fP \fB\-dverbose\-core2core\fP \fB\-dverbose\-stg2stg\fP \fB\-falignment\-sanitisation\fP \fB\-fcatch\-bottoms\fP \fB\-fllvm\-fill\-undef\-with\-garbage\fP \fB\-g\fP \fB\-g⟨n⟩\fP +.TP +.B C pre\-processor +\fB\-cpp\fP \fB\-D⟨symbol⟩[=⟨value⟩]\fP \fB\-I⟨dir⟩\fP \fB\-U⟨symbol⟩\fP +.TP +.B Finding imports +\fB\-i\fP \fB\-i⟨dir⟩[:⟨dir⟩]*\fP +.TP +.B Interactive mode +\fB\-fbreak\-on\-error\fP \fB\-fbreak\-on\-exception\fP \fB\-fghci\-hist\-size=⟨n⟩\fP \fB\-flocal\-ghci\-history\fP \fB\-fprint\-bind\-result\fP \fB\-fshow\-loaded\-modules\fP \fB\-ghci\-script\fP \fB\-ignore\-dot\-ghci\fP \fB\-interactive\-print ⟨expr⟩\fP +.TP +.B Interface files +\fB\-\-show\-iface ⟨file⟩\fP \fB\-ddump\-hi\fP \fB\-ddump\-hi\-diffs\fP \fB\-ddump\-minimal\-imports\fP +.TP +.B Keeping intermediate files +\fB\-keep\-hc\-file\fP \fB\-keep\-hc\-files\fP \fB\-keep\-hi\-files\fP \fB\-keep\-llvm\-file\fP \fB\-keep\-llvm\-files\fP \fB\-keep\-o\-files\fP \fB\-keep\-s\-file\fP \fB\-keep\-s\-files\fP \fB\-keep\-tmp\-files\fP +.TP +.B Language options +\fB\-XAllowAmbiguousTypes\fP \fB\-XApplicativeDo\fP \fB\-XArrows\fP \fB\-XBangPatterns\fP \fB\-XBinaryLiterals\fP \fB\-XCApiFFI\fP \fB\-XConstrainedClassMethods\fP \fB\-XConstraintKinds\fP \fB\-XCPP\fP \fB\-XDataKinds\fP \fB\-XDatatypeContexts\fP \fB\-XDefaultSignatures\fP \fB\-XDeriveAnyClass\fP \fB\-XDeriveDataTypeable\fP \fB\-XDeriveFoldable\fP \fB\-XDeriveFunctor\fP \fB\-XDeriveGeneric\fP \fB\-XDeriveLift\fP \fB\-XDeriveTraversable\fP \fB\-XDerivingStrategies\fP \fB\-XDisambiguateRecordFields\fP \fB\-XDuplicateRecordFields\fP \fB\-XEmptyCase\fP \fB\-XEmptyDataDecls\fP \fB\-XEmptyDataDeriving\fP \fB\-XExistentialQuantification\fP \fB\-XExplicitForAll\fP \fB\-XExplicitNamespaces\fP \fB\-XExtendedDefaultRules\fP \fB\-XFlexibleContexts\fP \fB\-XFlexibleInstances\fP \fB\-XForeignFunctionInterface\fP \fB\-XFunctionalDependencies\fP \fB\-XGADTs\fP \fB\-XGADTSyntax\fP \fB\-XGeneralisedNewtypeDeriving\fP \fB\-XGeneralizedNewtypeDeriving\fP \fB\-XHexFloatLiterals\fP \fB\-XImplicitParams\fP \fB\-XImpredicativeTypes\fP \fB\-XIncoherentInstances\fP \fB\-XInstanceSigs\fP \fB\-XInterruptibleFFI\fP \fB\-XKindSignatures\fP \fB\-XLambdaCase\fP \fB\-XLiberalTypeSynonyms\fP \fB\-XMagicHash\fP \fB\-XMonadComprehensions\fP \fB\-XMonadFailDesugaring\fP \fB\-XMonoLocalBinds\fP \fB\-XMultiParamTypeClasses\fP \fB\-XMultiWayIf\fP \fB\-XNamedFieldPuns\fP \fB\-XNamedWildCards\fP \fB\-XNegativeLiterals\fP \fB\-XNoImplicitPrelude\fP \fB\-XNoMonomorphismRestriction\fP \fB\-XNoPatternGuards\fP \fB\-XNoTraditionalRecordSyntax\fP \fB\-XNPlusKPatterns\fP \fB\-XNullaryTypeClasses\fP \fB\-XNumDecimals\fP \fB\-XOverlappingInstances\fP \fB\-XOverloadedLabels\fP \fB\-XOverloadedLists\fP \fB\-XOverloadedStrings\fP \fB\-XPackageImports\fP \fB\-XParallelListComp\fP \fB\-XPartialTypeSignatures\fP \fB\-XPatternSynonyms\fP \fB\-XPolyKinds\fP \fB\-XPostfixOperators\fP \fB\-XQuasiQuotes\fP \fB\-XRank2Types\fP \fB\-XRankNTypes\fP \fB\-XRebindableSyntax\fP \fB\-XRecordWildCards\fP \fB\-XRecursiveDo\fP \fB\-XRoleAnnotations\fP \fB\-XSafe\fP \fB\-XScopedTypeVariables\fP \fB\-XStandaloneDeriving\fP \fB\-XStaticPointers\fP \fB\-XStrict\fP \fB\-XStrictData\fP \fB\-XTemplateHaskell\fP \fB\-XTemplateHaskellQuotes\fP \fB\-XTransformListComp\fP \fB\-XTrustworthy\fP \fB\-XTupleSections\fP \fB\-XTypeApplications\fP \fB\-XTypeFamilies\fP \fB\-XTypeFamilyDependencies\fP \fB\-XTypeInType\fP \fB\-XTypeOperators\fP \fB\-XTypeSynonymInstances\fP \fB\-XUnboxedSums\fP \fB\-XUnboxedTuples\fP \fB\-XUndecidableInstances\fP \fB\-XUndecidableSuperClasses\fP \fB\-XUnicodeSyntax\fP \fB\-XUnsafe\fP \fB\-XViewPatterns\fP +.TP +.B Linking options +\fB\-c\fP \fB\-debug\fP \fB\-dylib\-install\-name ⟨path⟩\fP \fB\-dynamic\fP \fB\-dynload\fP \fB\-eventlog\fP \fB\-fno\-embed\-manifest\fP \fB\-fno\-gen\-manifest\fP \fB\-fno\-shared\-implib\fP \fB\-framework ⟨name⟩\fP \fB\-framework\-path ⟨dir⟩\fP \fB\-fwhole\-archive\-hs\-libs\fP \fB\-L ⟨dir⟩\fP \fB\-l ⟨lib⟩\fP \fB\-main\-is ⟨thing⟩\fP \fB\-no\-hs\-main\fP \fB\-no\-rtsopts\-suggestions\fP \fB\-package ⟨name⟩\fP \fB\-pie\fP \fB\-rdynamic\fP \fB\-rtsopts[=⟨none|some|all⟩]\fP \fB\-shared\fP \fB\-split\-objs\fP \fB\-split\-sections\fP \fB\-static\fP \fB\-staticlib\fP \fB\-threaded\fP \fB\-with\-rtsopts=⟨opts⟩\fP +.TP +.B Miscellaneous options +\fB\-fexternal\-interpreter\fP \fB\-fglasgow\-exts\fP \fB\-ghcversion\-file ⟨path to ghcversion.h⟩\fP \fB\-H ⟨size⟩\fP \fB\-j[⟨n⟩]\fP +.TP +.B Modes of operation +\fB\-\-frontend ⟨module⟩\fP \fB\-\-help\fP \fB\-?\fP \fB\-\-info\fP \fB\-\-interactive\fP \fB\-\-make\fP \fB\-\-mk\-dll\fP \fB\-\-numeric\-version\fP \fB\-\-print\-libdir\fP \fB\-\-show\-iface ⟨file⟩\fP \fB\-\-show\-options\fP \fB\-\-supported\-extensions\fP \fB\-\-supported\-languages\fP \fB\-\-version\fP \fB\-V\fP \fB\-e ⟨expr⟩\fP \fB\-M\fP +.TP +.B Individual optimizations +\fB\-fcall\-arity\fP \fB\-fcase\-folding\fP \fB\-fcase\-merge\fP \fB\-fcmm\-elim\-common\-blocks\fP \fB\-fcmm\-sink\fP \fB\-fcpr\-anal\fP \fB\-fcross\-module\-specialise\fP \fB\-fcse\fP \fB\-fdicts\-cheap\fP \fB\-fdicts\-strict\fP \fB\-fdmd\-tx\-dict\-sel\fP \fB\-fdo\-eta\-reduction\fP \fB\-fdo\-lambda\-eta\-expansion\fP \fB\-feager\-blackholing\fP \fB\-fenable\-rewrite\-rules\fP \fB\-fexcess\-precision\fP \fB\-fexitification\fP \fB\-fexpose\-all\-unfoldings\fP \fB\-ffloat\-in\fP \fB\-ffull\-laziness\fP \fB\-ffun\-to\-thunk\fP \fB\-fignore\-asserts\fP \fB\-fignore\-interface\-pragmas\fP \fB\-flate\-dmd\-anal\fP \fB\-fliberate\-case\fP \fB\-fliberate\-case\-threshold=⟨n⟩\fP \fB\-fllvm\-pass\-vectors\-in\-regs\fP \fB\-floopification\fP \fB\-fmax\-inline\-alloc\-size=⟨n⟩\fP \fB\-fmax\-inline\-memcpy\-insns=⟨n⟩\fP \fB\-fmax\-inline\-memset\-insns=⟨n⟩\fP \fB\-fmax\-relevant\-binds=⟨n⟩\fP \fB\-fmax\-simplifier\-iterations=⟨n⟩\fP \fB\-fmax\-uncovered\-patterns=⟨n⟩\fP \fB\-fmax\-valid\-substitutions=⟨n⟩\fP \fB\-fmax\-worker\-args=⟨n⟩\fP \fB\-fno\-opt\-coercion\fP \fB\-fno\-pre\-inlining\fP \fB\-fno\-state\-hack\fP \fB\-fomit\-interface\-pragmas\fP \fB\-fomit\-yields\fP \fB\-foptimal\-applicative\-do\fP \fB\-fpedantic\-bottoms\fP \fB\-fregs\-graph\fP \fB\-fregs\-iterative\fP \fB\-fsimpl\-tick\-factor=⟨n⟩\fP \fB\-fsimplifier\-phases=⟨n⟩\fP \fB\-fsolve\-constant\-dicts\fP \fB\-fspec\-constr\fP \fB\-fspec\-constr\-count=⟨n⟩\fP \fB\-fspec\-constr\-keen\fP \fB\-fspec\-constr\-threshold=⟨n⟩\fP \fB\-fspecialise\fP \fB\-fspecialise\-aggressively\fP \fB\-fstatic\-argument\-transformation\fP \fB\-fstg\-cse\fP \fB\-fstrictness\fP \fB\-fstrictness\-before=⟨n⟩\fP \fB\-funbox\-small\-strict\-fields\fP \fB\-funbox\-strict\-fields\fP \fB\-funfolding\-creation\-threshold=⟨n⟩\fP \fB\-funfolding\-dict\-discount=⟨n⟩\fP \fB\-funfolding\-fun\-discount=⟨n⟩\fP \fB\-funfolding\-keeness\-factor=⟨n⟩\fP \fB\-funfolding\-use\-threshold=⟨n⟩\fP \fB\-fvectorisation\-avoidance\fP \fB\-fvectorise\fP +.TP +.B Optimization levels +\fB\-O\fP \fB\-O1\fP \fB\-O0\fP \fB\-O2\fP \fB\-Odph\fP +.TP +.B Package options +\fB\-clear\-package\-db\fP \fB\-distrust ⟨pkg⟩\fP \fB\-distrust\-all\-packages\fP \fB\-fpackage\-trust\fP \fB\-global\-package\-db\fP \fB\-hide\-all\-packages\fP \fB\-hide\-package ⟨pkg⟩\fP \fB\-ignore\-package ⟨pkg⟩\fP \fB\-no\-auto\-link\-packages\fP \fB\-no\-global\-package\-db\fP \fB\-no\-user\-package\-db\fP \fB\-package ⟨pkg⟩\fP \fB\-package\-db ⟨file⟩\fP \fB\-package\-env ⟨file⟩|⟨name⟩\fP \fB\-package\-id ⟨unit\-id⟩\fP \fB\-this\-unit\-id ⟨unit\-id⟩\fP \fB\-trust ⟨pkg⟩\fP \fB\-user\-package\-db\fP +.TP +.B Phases of compilation +\fB\-C\fP \fB\-c\fP \fB\-E\fP \fB\-F\fP \fB\-S\fP \fB\-x ⟨suffix⟩\fP +.TP +.B Overriding external programs +\fB\-pgma ⟨cmd⟩\fP \fB\-pgmc ⟨cmd⟩\fP \fB\-pgmdll ⟨cmd⟩\fP \fB\-pgmF ⟨cmd⟩\fP \fB\-pgmi ⟨cmd⟩\fP \fB\-pgmL ⟨cmd⟩\fP \fB\-pgml ⟨cmd⟩\fP \fB\-pgmlc ⟨cmd⟩\fP \fB\-pgmlibtool ⟨cmd⟩\fP \fB\-pgmlo ⟨cmd⟩\fP \fB\-pgmP ⟨cmd⟩\fP \fB\-pgms ⟨cmd⟩\fP \fB\-pgmwindres ⟨cmd⟩\fP +.TP +.B Phase\-specific options +\fB\-opta ⟨option⟩\fP \fB\-optc ⟨option⟩\fP \fB\-optdll ⟨option⟩\fP \fB\-optF ⟨option⟩\fP \fB\-opti ⟨option⟩\fP \fB\-optL ⟨option⟩\fP \fB\-optl ⟨option⟩\fP \fB\-optlc ⟨option⟩\fP \fB\-optlo ⟨option⟩\fP \fB\-optP ⟨option⟩\fP \fB\-optwindres ⟨option⟩\fP +.TP +.B Platform\-specific options +\fB\-msse2\fP \fB\-msse4.2\fP +.TP +.B Compiler plugins +\fB\-fplugin\-opt=⟨module⟩:⟨args⟩\fP \fB\-fplugin=⟨module⟩\fP \fB\-hide\-all\-plugin\-packages\fP \fB\-plugin\-package ⟨pkg⟩\fP \fB\-plugin\-package\-id ⟨pkg\-id⟩\fP +.TP +.B Profiling +\fB\-fno\-prof\-auto\fP \fB\-fno\-prof\-cafs\fP \fB\-fno\-prof\-count\-entries\fP \fB\-fprof\-auto\fP \fB\-fprof\-auto\-calls\fP \fB\-fprof\-auto\-exported\fP \fB\-fprof\-auto\-top\fP \fB\-fprof\-cafs\fP \fB\-prof\fP \fB\-ticky\fP +.TP +.B Program coverage +\fB\-fhpc\fP +.TP +.B Recompilation checking +\fB\-fforce\-recomp\fP \fB\-fignore\-hpc\-changes\fP \fB\-fignore\-optim\-changes\fP +.TP +.B Redirecting output +\fB\-\-exclude\-module=⟨file⟩\fP \fB\-ddump\-mod\-cycles\fP \fB\-dep\-makefile ⟨file⟩\fP \fB\-dep\-suffix ⟨suffix⟩\fP \fB\-dumpdir ⟨dir⟩\fP \fB\-hcsuf ⟨suffix⟩\fP \fB\-hidir ⟨dir⟩\fP \fB\-hisuf ⟨suffix⟩\fP \fB\-include\-pkg\-deps\fP \fB\-o ⟨file⟩\fP \fB\-odir ⟨dir⟩\fP \fB\-ohi ⟨file⟩\fP \fB\-osuf ⟨suffix⟩\fP \fB\-outputdir ⟨dir⟩\fP \fB\-stubdir ⟨dir⟩\fP +.TP +.B Temporary files +\fB\-tmpdir ⟨dir⟩\fP +.TP +.B Verbosity options +\fB\-fdiagnostics\-color=⟨always|auto|never⟩\fP \fB\-fdiagnostics\-show\-caret\fP \fB\-ferror\-spans\fP \fB\-fhide\-source\-paths\fP \fB\-fprint\-equality\-relations\fP \fB\-fprint\-expanded\-synonyms\fP \fB\-fprint\-explicit\-coercions\fP \fB\-fprint\-explicit\-foralls\fP \fB\-fprint\-explicit\-kinds\fP \fB\-fprint\-explicit\-runtime\-rep\fP \fB\-fprint\-explicit\-runtime\-reps\fP \fB\-fprint\-potential\-instances\fP \fB\-fprint\-typechecker\-elaboration\fP \fB\-fprint\-unicode\-syntax\fP \fB\-fshow\-hole\-constraints\fP \fB\-Rghc\-timing\fP \fB\-v\fP \fB\-v⟨n⟩\fP +.TP +.B Warnings +\fB\-fdefer\-out\-of\-scope\-variables\fP \fB\-fdefer\-type\-errors\fP \fB\-fdefer\-typed\-holes\fP \fB\-fhelpful\-errors\fP \fB\-fmax\-pmcheck\-iterations=⟨n⟩\fP \fB\-fshow\-warning\-groups\fP \fB\-W\fP \fB\-w\fP \fB\-Wall\fP \fB\-Wall\-missed\-specialisations\fP \fB\-Wamp\fP \fB\-Wcompat\fP \fB\-Wcpp\-undef\fP \fB\-Wdeferred\-out\-of\-scope\-variables\fP \fB\-Wdeferred\-type\-errors\fP \fB\-Wdeprecated\-flags\fP \fB\-Wdeprecations\fP \fB\-Wdodgy\-exports\fP \fB\-Wdodgy\-foreign\-imports\fP \fB\-Wdodgy\-imports\fP \fB\-Wduplicate\-constraints\fP \fB\-Wduplicate\-exports\fP \fB\-Wempty\-enumerations\fP \fB\-Werror\fP \fB\-Weverything\fP \fB\-Whi\-shadowing\fP \fB\-Widentities\fP \fB\-Wimplicit\-prelude\fP \fB\-Wincomplete\-patterns\fP \fB\-Wincomplete\-record\-updates\fP \fB\-Wincomplete\-uni\-patterns\fP \fB\-Winline\-rule\-shadowing\fP \fB\-Wmissed\-specialisations\fP \fB\-Wmissing\-export\-lists\fP \fB\-Wmissing\-exported\-signatures\fP \fB\-Wmissing\-exported\-sigs\fP \fB\-Wmissing\-fields\fP \fB\-Wmissing\-home\-modules\fP \fB\-Wmissing\-import\-lists\fP \fB\-Wmissing\-local\-signatures\fP \fB\-Wmissing\-local\-sigs\fP \fB\-Wmissing\-methods\fP \fB\-Wmissing\-monadfail\-instances\fP \fB\-Wmissing\-pattern\-synonym\-signatures\fP \fB\-Wmissing\-signatures\fP \fB\-Wmonomorphism\-restriction\fP \fB\-Wname\-shadowing\fP \fB\-Wno\-compat\fP \fB\-Wnoncanonical\-monad\-instances\fP \fB\-Wnoncanonical\-monadfail\-instances\fP \fB\-Wnoncanonical\-monoid\-instances\fP \fB\-Worphans\fP \fB\-Woverflowed\-literals\fP \fB\-Woverlapping\-patterns\fP \fB\-Wpartial\-fields\fP \fB\-Wpartial\-type\-signatures\fP \fB\-Wredundant\-constraints\fP \fB\-Wsafe\fP \fB\-Wsemigroup\fP \fB\-Wsimplifiable\-class\-constraints\fP \fB\-Wtabs\fP \fB\-Wtrustworthy\-safe\fP \fB\-Wtype\-defaults\fP \fB\-Wtyped\-holes\fP \fB\-Wunbanged\-strict\-patterns\fP \fB\-Wunrecognised\-pragmas\fP \fB\-Wunrecognised\-warning\-flags\fP \fB\-Wunsafe\fP \fB\-Wunsupported\-calling\-conventions\fP \fB\-Wunsupported\-llvm\-version\fP \fB\-Wunticked\-promoted\-constructors\fP \fB\-Wunused\-binds\fP \fB\-Wunused\-do\-bind\fP \fB\-Wunused\-foralls\fP \fB\-Wunused\-imports\fP \fB\-Wunused\-local\-binds\fP \fB\-Wunused\-matches\fP \fB\-Wunused\-pattern\-binds\fP \fB\-Wunused\-top\-binds\fP \fB\-Wunused\-type\-patterns\fP \fB\-Wwarn\fP \fB\-Wwarnings\-deprecations\fP \fB\-Wwrong\-do\-bind\fP +.SS Code generation +.INDENT 0.0 +.TP +.B \fI\%\-dynamic\-too\fP +Build dynamic object files \fIas well as\fP static object files +during compilation +.TP +.B \fI\%\-fasm\fP +Use the \fInative code generator\fP +.TP +.B \fI\%\-fbyte\-code\fP +Generate byte\-code +.TP +.B \fI\%\-fllvm\fP +Compile using the \fILLVM code generator\fP +.TP +.B \fI\%\-fno\-code\fP +Omit code generation +.TP +.B \fI\%\-fobject\-code\fP +Generate object code +.TP +.B \fI\%\-fPIC\fP +Generate position\-independent code (where available) +.TP +.B \fI\%\-fPIE\fP +Generate code for a position\-independent executable (where available) +.TP +.B \fI\%\-fwrite\-interface\fP +Always write interface files +.UNINDENT +.SS Debugging the compiler +.INDENT 0.0 +.TP +.B \fI\%\-dcmm\-lint\fP +C\-\- pass sanity checking +.TP +.B \fI\%\-dcore\-lint\fP +Turn on internal sanity checking +.TP +.B \fI\%\-ddump\-asm\fP +Dump final assembly +.TP +.B \fI\%\-ddump\-asm\-expanded\fP +Dump the result of the synthetic instruction expansion pass. +.TP +.B \fI\%\-ddump\-asm\-liveness\fP +Dump assembly augmented with register liveness +.TP +.B \fI\%\-ddump\-asm\-native\fP +Dump initial assembly +.TP +.B \fI\%\-ddump\-asm\-regalloc\fP +Dump the result of register allocation +.TP +.B \fI\%\-ddump\-asm\-regalloc\-stages\fP +Dump the build/spill stages of the \fB\-fregs\-graph\fP +register allocator. +.TP +.B \fI\%\-ddump\-asm\-stats\fP +Dump statistics from the register allocator. +.TP +.B \fI\%\-ddump\-bcos\fP +Dump interpreter byte code +.TP +.B \fI\%\-ddump\-cmm\fP +Dump the final C\-\- output +.TP +.B \fI\%\-ddump\-cmm\-caf\fP +Dump the results of the C\-\- CAF analysis pass. +.TP +.B \fI\%\-ddump\-cmm\-cbe\fP +Dump the results of common block elimination +.TP +.B \fI\%\-ddump\-cmm\-cfg\fP +Dump the results of the C\-\- control flow optimisation pass. +.TP +.B \fI\%\-ddump\-cmm\-cps\fP +Dump the results of the CPS pass +.TP +.B \fI\%\-ddump\-cmm\-from\-stg\fP +Dump STG\-to\-C\-\- output +.TP +.B \fI\%\-ddump\-cmm\-info\fP +Dump the results of the C\-\- info table augmentation pass. +.TP +.B \fI\%\-ddump\-cmm\-proc\fP +Dump the results of proc\-point analysis +.TP +.B \fI\%\-ddump\-cmm\-procmap\fP +Dump the results of the C\-\- proc\-point map pass. +.TP +.B \fI\%\-ddump\-cmm\-raw\fP +Dump raw C\-\- +.TP +.B \fI\%\-ddump\-cmm\-sink\fP +Dump the results of the C\-\- sinking pass. +.TP +.B \fI\%\-ddump\-cmm\-sp\fP +Dump the results of the C\-\- stack layout pass. +.TP +.B \fI\%\-ddump\-cmm\-split\fP +Dump the results of the C\-\- proc\-point splitting pass. +.TP +.B \fI\%\-ddump\-cmm\-switch\fP +Dump the results of switch lowering passes +.TP +.B \fI\%\-ddump\-cmm\-verbose\fP +Show output from each C\-\- pipeline pass +.TP +.B \fI\%\-ddump\-core\-stats\fP +Print a one\-line summary of the size of the Core program at the +end of the optimisation pipeline +.TP +.B \fI\%\-ddump\-cse\fP +Dump CSE output +.TP +.B \fI\%\-ddump\-deriv\fP +Dump deriving output +.TP +.B \fI\%\-ddump\-ds\fP +Dump desugarer output +.TP +.B \fI\%\-ddump\-ec\-trace\fP +Trace exhaustiveness checker +.TP +.B \fI\%\-ddump\-foreign\fP +Dump \fBforeign export\fP stubs +.TP +.B \fI\%\-ddump\-if\-trace\fP +Trace interface files +.TP +.B \fI\%\-ddump\-inlinings\fP +Dump inlining info +.TP +.B \fI\%\-ddump\-json\fP +Dump error messages as JSON documents +.TP +.B \fI\%\-ddump\-llvm\fP +Dump LLVM intermediate code. +.TP +.B \fI\%\-ddump\-occur\-anal\fP +Dump occurrence analysis output +.TP +.B \fI\%\-ddump\-opt\-cmm\fP +Dump the results of C\-\- to C\-\- optimising passes +.TP +.B \fI\%\-ddump\-parsed\fP +Dump parse tree +.TP +.B \fI\%\-ddump\-parsed\-ast\fP +Dump parser output as a syntax tree +.TP +.B \fI\%\-ddump\-prep\fP +Dump prepared core +.TP +.B \fI\%\-ddump\-rn\fP +Dump renamer output +.TP +.B \fI\%\-ddump\-rn\-ast\fP +Dump renamer output as a syntax tree +.TP +.B \fI\%\-ddump\-rn\-stats\fP +Renamer stats +.TP +.B \fI\%\-ddump\-rn\-trace\fP +Trace renamer +.TP +.B \fI\%\-ddump\-rule\-firings\fP +Dump rule firing info +.TP +.B \fI\%\-ddump\-rule\-rewrites\fP +Dump detailed rule firing info +.TP +.B \fI\%\-ddump\-rules\fP +Dump rewrite rules +.TP +.B \fI\%\-ddump\-simpl\fP +Dump final simplifier output +.TP +.B \fI\%\-ddump\-simpl\-iterations\fP +Dump output from each simplifier iteration +.TP +.B \fI\%\-ddump\-simpl\-stats\fP +Dump simplifier stats +.TP +.B \fI\%\-ddump\-spec\fP +Dump specialiser output +.TP +.B \fI\%\-ddump\-splices\fP +Dump TH spliced expressions, and what they evaluate to +.TP +.B \fI\%\-ddump\-stg\fP +Dump final STG +.TP +.B \fI\%\-ddump\-str\-signatures\fP +Dump strictness signatures +.TP +.B \fI\%\-ddump\-stranal\fP +Dump strictness analyser output +.TP +.B \fI\%\-ddump\-tc\fP +Dump typechecker output +.TP +.B \fI\%\-ddump\-tc\-ast\fP +Dump typechecker output as a syntax tree +.TP +.B \fI\%\-ddump\-tc\-trace\fP +Trace typechecker +.TP +.B \fI\%\-ddump\-timings\fP +Dump per\-pass timing and allocation statistics +.TP +.B \fI\%\-ddump\-to\-file\fP +Dump to files instead of stdout +.TP +.B \fI\%\-ddump\-types\fP +Dump type signatures +.TP +.B \fI\%\-ddump\-vect\fP +Dump vectoriser input and output +.TP +.B \fI\%\-ddump\-vt\-trace\fP +Trace vectoriser +.TP +.B \fI\%\-ddump\-worker\-wrapper\fP +Dump worker\-wrapper output +.TP +.B \fI\%\-dfaststring\-stats\fP +Show statistics for fast string usage when finished +.TP +.B \fI\%\-dinitial\-unique=⟨s⟩\fP +Start \fBUniqSupply\fP allocation from ⟨s⟩. +.TP +.B \fI\%\-dno\-debug\-output\fP +Suppress unsolicited debugging output +.TP +.B \fI\%\-dppr\-case\-as\-let\fP +Print single alternative case expressions as strict lets. +.TP +.B \fI\%\-dppr\-cols=⟨n⟩\fP +Set the width of debugging output. For example \fB\-dppr\-cols200\fP +.TP +.B \fI\%\-dppr\-debug\fP +Turn on debug printing (more verbose) +.TP +.B \fI\%\-dppr\-user\-length\fP +Set the depth for printing expressions in error msgs +.TP +.B \fI\%\-dshow\-passes\fP +Print out each pass name as it happens +.TP +.B \fI\%\-dstg\-lint\fP +STG pass sanity checking +.TP +.B \fI\%\-dsuppress\-all\fP +In core dumps, suppress everything (except for uniques) that is +suppressible. +.TP +.B \fI\%\-dsuppress\-coercions\fP +Suppress the printing of coercions in Core dumps to make them +shorter +.TP +.B \fI\%\-dsuppress\-idinfo\fP +Suppress extended information about identifiers where they +are bound +.TP +.B \fI\%\-dsuppress\-module\-prefixes\fP +Suppress the printing of module qualification prefixes +.TP +.B \fI\%\-dsuppress\-stg\-free\-vars\fP +Suppress the printing of closure free variable lists in STG output +.TP +.B \fI\%\-dsuppress\-ticks\fP +Suppress "ticks" in the pretty\-printer output. +.TP +.B \fI\%\-dsuppress\-type\-applications\fP +Suppress type applications +.TP +.B \fI\%\-dsuppress\-type\-signatures\fP +Suppress type signatures +.TP +.B \fI\%\-dsuppress\-unfoldings\fP +Suppress the printing of the stable unfolding of a variable at +its binding site +.TP +.B \fI\%\-dsuppress\-uniques\fP +Suppress the printing of uniques in debug output (easier to use +\fBdiff\fP) +.TP +.B \fI\%\-dsuppress\-var\-kinds\fP +Suppress the printing of variable kinds +.TP +.B \fI\%\-dth\-dec\-file=⟨file⟩\fP +Show evaluated TH declarations in a .th.hs file +.TP +.B \fI\%\-dunique\-increment=⟨i⟩\fP +Set the increment for the generated \fBUnique\fP\(aqs to ⟨i⟩. +.TP +.B \fI\%\-dverbose\-core2core\fP +Show output from each core\-to\-core pass +.TP +.B \fI\%\-dverbose\-stg2stg\fP +Show output from each STG\-to\-STG pass +.TP +.B \fI\%\-falignment\-sanitisation\fP +Compile with alignment checks for all info table dereferences. +.TP +.B \fI\%\-fcatch\-bottoms\fP +Insert \fBerror\fP expressions after bottoming expressions; useful +when debugging the compiler. +.TP +.B \fI\%\-fllvm\-fill\-undef\-with\-garbage\fP +Intruct LLVM to fill dead STG registers with garbage +.TP +.B \fI\%\-g\fP +Produce DWARF debug information in compiled object files. +⟨n⟩ can be 0, 1, or 2, with higher numbers producing richer +output. If ⟨n⟩ is omitted level 2 is assumed. +.UNINDENT +.SS C pre\-processor +.INDENT 0.0 +.TP +.B \fI\%\-cpp\fP +Run the C pre\-processor on Haskell source files +.TP +.B \fI\%\-D⟨symbol⟩[=⟨value⟩]\fP +Define a symbol in the C pre\-processor +.TP +.B \fI\%\-I⟨dir⟩\fP +Add ⟨dir⟩ to the directory search list for \fB#include\fP files +.TP +.B \fI\%\-U⟨symbol⟩\fP +Undefine a symbol in the C pre\-processor +.UNINDENT +.SS Finding imports +.INDENT 0.0 +.TP +.B \fI\%\-i\fP +Empty the import directory list +.TP +.B \fI\%\-i⟨dir⟩[:⟨dir⟩]*\fP +add ⟨dir⟩, ⟨dir2⟩, etc. to import path +.UNINDENT +.SS Interactive mode +.INDENT 0.0 +.TP +.B \fI\%\-fbreak\-on\-error\fP +\fI\%Break on uncaught exceptions and errors\fP +.TP +.B \fI\%\-fbreak\-on\-exception\fP +\fI\%Break on any exception thrown\fP +.TP +.B \fI\%\-fghci\-hist\-size=⟨n⟩\fP +Set the number of entries GHCi keeps for \fB:history\fP\&. +See \fI\%The GHCi Debugger\fP\&. +.TP +.B \fI\%\-flocal\-ghci\-history\fP +Use current directory for the GHCi command history +file \fB\&.ghci\-history\fP\&. +.TP +.B \fI\%\-fprint\-bind\-result\fP +\fI\%Turn on printing of binding results in GHCi\fP +.TP +.B \fI\%\-fshow\-loaded\-modules\fP +Show the names of modules that GHCi loaded after a +\fI\%:load\fP command. +.TP +.B \fI\%\-ghci\-script\fP +Read additional \fB\&.ghci\fP files +.TP +.B \fI\%\-ignore\-dot\-ghci\fP +Disable reading of \fB\&.ghci\fP files +.TP +.B \fI\%\-interactive\-print ⟨expr⟩\fP +\fI\%Select the function to use for printing evaluated +expressions in GHCi\fP +.UNINDENT +.SS Interface files +.INDENT 0.0 +.TP +.B \fB\-\-show\-iface ⟨file⟩\fP +See \fImodes\fP\&. +.TP +.B \fI\%\-ddump\-hi\fP +Dump the new interface to stdout +.TP +.B \fI\%\-ddump\-hi\-diffs\fP +Show the differences vs. the old interface +.TP +.B \fI\%\-ddump\-minimal\-imports\fP +Dump a minimal set of imports +.UNINDENT +.SS Keeping intermediate files +.INDENT 0.0 +.TP +.B \fI\%\-keep\-hc\-file\fP +Retain intermediate \fB\&.hc\fP files. +.TP +.B \fI\%\-keep\-hi\-files\fP +Retain intermediate \fB\&.hi\fP files (the default). +.TP +.B \fI\%\-keep\-llvm\-file\fP +Retain intermediate LLVM \fB\&.ll\fP files. +Implies \fB\-fllvm\fP\&. +.TP +.B \fI\%\-keep\-o\-files\fP +Retain intermediate \fB\&.o\fP files (the default). +.TP +.B \fI\%\-keep\-s\-file\fP +Retain intermediate \fB\&.s\fP files. +.TP +.B \fI\%\-keep\-tmp\-files\fP +Retain all intermediate temporary files. +.UNINDENT +.SS Language options +.INDENT 0.0 +.TP +.B \fI\%\-XAllowAmbiguousTypes\fP +Allow the user to write ambiguous types, and +the type inference engine to infer them. +.TP +.B \fI\%\-XApplicativeDo\fP +Enable Applicative do\-notation desugaring +.TP +.B \fI\%\-XArrows\fP +Enable arrow notation extension +.TP +.B \fI\%\-XBangPatterns\fP +Enable bang patterns. +.TP +.B \fI\%\-XBinaryLiterals\fP +Enable support for binary literals. +.TP +.B \fI\%\-XCApiFFI\fP +Enable the CAPI calling convention. +.TP +.B \fI\%\-XConstrainedClassMethods\fP +Enable constrained class methods. +.TP +.B \fI\%\-XConstraintKinds\fP +Enable a kind of constraints. +.TP +.B \fI\%\-XCPP\fP +Enable the C preprocessor. +.TP +.B \fI\%\-XDataKinds\fP +Enable datatype promotion. +.TP +.B \fI\%\-XDatatypeContexts\fP +Allow contexts on \fBdata\fP types. +.TP +.B \fI\%\-XDefaultSignatures\fP +Enable default signatures. +.TP +.B \fI\%\-XDeriveAnyClass\fP +Enable deriving for any class. +.TP +.B \fI\%\-XDeriveDataTypeable\fP +Enable deriving for the Data class. +Implied by \fBAutoDeriveTypeable\fP\&. +.TP +.B \fI\%\-XDeriveFoldable\fP +Enable deriving for the Foldable class. +Implied by \fI\%DeriveTraversable\fP\&. +.TP +.B \fI\%\-XDeriveFunctor\fP +Enable deriving for the Functor class. +Implied by \fI\%DeriveTraversable\fP\&. +.TP +.B \fI\%\-XDeriveGeneric\fP +Enable deriving for the Generic class. +.TP +.B \fI\%\-XDeriveLift\fP +Enable deriving for the Lift class +.TP +.B \fI\%\-XDeriveTraversable\fP +Enable deriving for the Traversable class. +Implies \fI\%DeriveFunctor\fP and \fI\%DeriveFoldable\fP\&. +.TP +.B \fI\%\-XDerivingStrategies\fP +Enables deriving strategies. +.TP +.B \fI\%\-XDisambiguateRecordFields\fP +Enable record field disambiguation. +Implied by \fI\%RecordWildCards\fP\&. +.TP +.B \fI\%\-XDuplicateRecordFields\fP +Allow definition of record types with identically\-named fields. +.TP +.B \fI\%\-XEmptyCase\fP +Allow empty case alternatives. +.TP +.B \fI\%\-XEmptyDataDecls\fP +Allow definition of empty \fBdata\fP types. +.TP +.B \fI\%\-XEmptyDataDeriving\fP +Allow deriving instances of standard type classes for +empty data types. +.TP +.B \fI\%\-XExistentialQuantification\fP +Enable liberalised type synonyms. +.TP +.B \fI\%\-XExplicitForAll\fP +Enable explicit universal quantification. +Implied by \fI\%ScopedTypeVariables\fP, \fI\%LiberalTypeSynonyms\fP, +\fI\%RankNTypes\fP and \fI\%ExistentialQuantification\fP\&. +.TP +.B \fI\%\-XExplicitNamespaces\fP +Enable using the keyword \fBtype\fP to specify the namespace of +entries in imports and exports (\fI\%Explicit namespaces in import/export\fP). +Implied by \fI\%TypeOperators\fP and \fI\%TypeFamilies\fP\&. +.TP +.B \fI\%\-XExtendedDefaultRules\fP +Use GHCi\(aqs extended default rules in a normal module. +.TP +.B \fI\%\-XFlexibleContexts\fP +Enable flexible contexts. Implied by +\fI\%ImplicitParams\fP\&. +.TP +.B \fI\%\-XFlexibleInstances\fP +Enable flexible instances. +Implies \fI\%TypeSynonymInstances\fP\&. +Implied by \fI\%ImplicitParams\fP\&. +.TP +.B \fI\%\-XForeignFunctionInterface\fP +Enable foreign function interface. +.TP +.B \fI\%\-XFunctionalDependencies\fP +Enable functional dependencies. +Implies \fI\%MultiParamTypeClasses\fP\&. +.TP +.B \fI\%\-XGADTs\fP +Enable generalised algebraic data types. +Implies \fI\%GADTSyntax\fP and \fI\%MonoLocalBinds\fP\&. +.TP +.B \fI\%\-XGADTSyntax\fP +Enable generalised algebraic data type syntax. +.TP +.B \fI\%\-XGeneralisedNewtypeDeriving\fP +Enable newtype deriving. +.TP +.B \fI\%\-XGeneralizedNewtypeDeriving\fP +Enable newtype deriving. +.TP +.B \fI\%\-XHexFloatLiterals\fP +Enable support for \fI\%hexadecimal floating point literals\fP\&. +.TP +.B \fI\%\-XImplicitParams\fP +Enable Implicit Parameters. +Implies \fI\%FlexibleContexts\fP and \fI\%FlexibleInstances\fP\&. +.TP +.B \fI\%\-XImpredicativeTypes\fP +Enable impredicative types. +Implies \fI\%RankNTypes\fP\&. +.TP +.B \fI\%\-XIncoherentInstances\fP +Enable incoherent instances. +Implies \fI\%OverlappingInstances\fP\&. +.TP +.B \fI\%\-XInstanceSigs\fP +Enable instance signatures. +.TP +.B \fI\%\-XInterruptibleFFI\fP +Enable interruptible FFI. +.TP +.B \fI\%\-XKindSignatures\fP +Enable kind signatures. +Implied by \fI\%TypeFamilies\fP and \fI\%PolyKinds\fP\&. +.TP +.B \fI\%\-XLambdaCase\fP +Enable lambda\-case expressions. +.TP +.B \fI\%\-XLiberalTypeSynonyms\fP +Enable liberalised type synonyms. +.TP +.B \fI\%\-XMagicHash\fP +Allow \fB#\fP as a postfix modifier on identifiers. +.TP +.B \fI\%\-XMonadComprehensions\fP +Enable monad comprehensions. +.TP +.B \fI\%\-XMonadFailDesugaring\fP +Enable monadfail desugaring. +.TP +.B \fI\%\-XMonoLocalBinds\fP +Enable do not generalise local bindings. +Implied by \fI\%TypeFamilies\fP and \fI\%GADTs\fP\&. +.TP +.B \fI\%\-XMultiParamTypeClasses\fP +Enable multi parameter type classes. +Implied by \fI\%FunctionalDependencies\fP\&. +.TP +.B \fI\%\-XMultiWayIf\fP +Enable multi\-way if\-expressions. +.TP +.B \fI\%\-XNamedFieldPuns\fP +Enable record puns. +.TP +.B \fI\%\-XNamedWildCards\fP +Enable named wildcards. +.TP +.B \fI\%\-XNegativeLiterals\fP +Enable support for negative literals. +.TP +.B \fI\%\-XNoImplicitPrelude\fP +Don\(aqt implicitly \fBimport Prelude\fP\&. +Implied by \fI\%RebindableSyntax\fP\&. +.TP +.B \fI\%\-XNoMonomorphismRestriction\fP +Disable the monomorphism restriction. +.TP +.B \fI\%\-XNoPatternGuards\fP +Disable pattern guards. +Implied by \fBHaskell98\fP\&. +.TP +.B \fI\%\-XNoTraditionalRecordSyntax\fP +Disable support for traditional record syntax +(as supported by Haskell 98) \fBC {f = x}\fP +.TP +.B \fI\%\-XNPlusKPatterns\fP +Enable support for \fBn+k\fP patterns. +Implied by \fBHaskell98\fP\&. +.TP +.B \fI\%\-XNullaryTypeClasses\fP +Deprecated, does nothing. nullary (no parameter) type +classes are now enabled using \fI\%MultiParamTypeClasses\fP\&. +.TP +.B \fI\%\-XNumDecimals\fP +Enable support for \(aqfractional\(aq integer literals. +.TP +.B \fI\%\-XOverlappingInstances\fP +Enable overlapping instances. +.TP +.B \fI\%\-XOverloadedLabels\fP +Enable overloaded labels. +.TP +.B \fI\%\-XOverloadedLists\fP +Enable overloaded lists. +.TP +.B \fI\%\-XOverloadedStrings\fP +Enable overloaded string literals. +.TP +.B \fI\%\-XPackageImports\fP +Enable package\-qualified imports. +.TP +.B \fI\%\-XParallelListComp\fP +Enable parallel list comprehensions. +Implied by \fBParallelArrays\fP\&. +.TP +.B \fI\%\-XPartialTypeSignatures\fP +Enable partial type signatures. +.TP +.B \fI\%\-XPatternSynonyms\fP +Enable pattern synonyms. +.TP +.B \fI\%\-XPolyKinds\fP +Enable kind polymorphism. +Implies \fI\%KindSignatures\fP\&. +.TP +.B \fI\%\-XPostfixOperators\fP +Enable postfix operators. +.TP +.B \fI\%\-XQuasiQuotes\fP +Enable quasiquotation. +.TP +.B \fI\%\-XRank2Types\fP +Enable rank\-2 types. +Synonym for \fI\%RankNTypes\fP\&. +.TP +.B \fI\%\-XRankNTypes\fP +Enable rank\-N types. +Implied by \fI\%ImpredicativeTypes\fP\&. +.TP +.B \fI\%\-XRebindableSyntax\fP +Employ rebindable syntax. +Implies \fI\%NoImplicitPrelude\fP\&. +.TP +.B \fI\%\-XRecordWildCards\fP +Enable record wildcards. +Implies \fI\%DisambiguateRecordFields\fP\&. +.TP +.B \fI\%\-XRecursiveDo\fP +Enable recursive do (mdo) notation. +.TP +.B \fI\%\-XRoleAnnotations\fP +Enable role annotations. +.TP +.B \fI\%\-XSafe\fP +Enable the \fI\%Safe Haskell\fP Safe mode. +.TP +.B \fI\%\-XScopedTypeVariables\fP +Enable lexically\-scoped type variables. +.TP +.B \fI\%\-XStandaloneDeriving\fP +Enable standalone deriving. +.TP +.B \fI\%\-XStaticPointers\fP +Enable static pointers. +.TP +.B \fI\%\-XStrict\fP +Make bindings in the current module strict by default. +.TP +.B \fI\%\-XStrictData\fP +Enable default strict datatype fields. +.TP +.B \fI\%\-XTemplateHaskell\fP +Enable Template Haskell. +.TP +.B \fI\%\-XTemplateHaskellQuotes\fP +Enable quotation subset of +\fI\%Template Haskell\fP\&. +.TP +.B \fI\%\-XTransformListComp\fP +Enable generalised list comprehensions. +.TP +.B \fI\%\-XTrustworthy\fP +Enable the \fI\%Safe Haskell\fP Trustworthy mode. +.TP +.B \fI\%\-XTupleSections\fP +Enable tuple sections. +.TP +.B \fI\%\-XTypeApplications\fP +Enable type application syntax. +.TP +.B \fI\%\-XTypeFamilies\fP +Enable type families. +Implies \fI\%ExplicitNamespaces\fP, \fI\%KindSignatures\fP, +and \fI\%MonoLocalBinds\fP\&. +.TP +.B \fI\%\-XTypeFamilyDependencies\fP +Enable injective type families. +Implies \fI\%TypeFamilies\fP\&. +.TP +.B \fI\%\-XTypeInType\fP +Allow kinds to be used as types, +including explicit kind variable quantification, higher\-rank +kinds, kind synonyms, and kind families. +Implies \fI\%DataKinds\fP, \fI\%KindSignatures\fP, +and \fI\%PolyKinds\fP\&. +.TP +.B \fI\%\-XTypeOperators\fP +Enable type operators. +Implies \fI\%ExplicitNamespaces\fP\&. +.TP +.B \fI\%\-XTypeSynonymInstances\fP +Enable type synonyms in instance heads. +Implied by \fI\%FlexibleInstances\fP\&. +.TP +.B \fI\%\-XUnboxedSums\fP +Enable unboxed sums. +.TP +.B \fI\%\-XUnboxedTuples\fP +Enable the use of unboxed tuple syntax. +.TP +.B \fI\%\-XUndecidableInstances\fP +Enable undecidable instances. +.TP +.B \fI\%\-XUndecidableSuperClasses\fP +Allow all superclass constraints, including those that may +result in non\-termination of the typechecker. +.TP +.B \fI\%\-XUnicodeSyntax\fP +Enable unicode syntax. +.TP +.B \fI\%\-XUnsafe\fP +Enable \fI\%Safe Haskell\fP Unsafe mode. +.TP +.B \fI\%\-XViewPatterns\fP +Enable view patterns. +.UNINDENT +.SS Linking options +.INDENT 0.0 +.TP +.B \fB\-c\fP +Stop after generating object (\fB\&.o\fP) file +.TP +.B \fI\%\-debug\fP +Use the debugging runtime +.TP +.B \fI\%\-dylib\-install\-name ⟨path⟩\fP +Set the install name (via \fB\-install_name\fP passed to Apple\(aqs +linker), specifying the full install path of the library file. +Any libraries or executables that link with it later will pick +up that path as their runtime search location for it. +(Darwin/OS X only) +.TP +.B \fI\%\-dynamic\fP +Build dynamically\-linked object files and executables +.TP +.B \fI\%\-dynload\fP +Selects one of a number of modes for finding shared libraries at runtime. +.TP +.B \fI\%\-eventlog\fP +Enable runtime event tracing +.TP +.B \fI\%\-fno\-embed\-manifest\fP +Do not embed the manifest in the executable (Windows only) +.TP +.B \fI\%\-fno\-gen\-manifest\fP +Do not generate a manifest file (Windows only) +.TP +.B \fI\%\-fno\-shared\-implib\fP +Don\(aqt generate an import library for a DLL (Windows only) +.TP +.B \fI\%\-framework ⟨name⟩\fP +On Darwin/OS X/iOS only, link in the framework ⟨name⟩. This +option corresponds to the \fB\-framework\fP option for Apple\(aqs Linker. +.TP +.B \fI\%\-framework\-path ⟨dir⟩\fP +On Darwin/OS X/iOS only, add ⟨dir⟩ to the list of directories +searched for frameworks. This option corresponds to the \fB\-F\fP +option for Apple\(aqs Linker. +.TP +.B \fI\%\-fwhole\-archive\-hs\-libs\fP +When linking a binary executable, this inserts the flag +\fB\-Wl,\-\-whole\-archive\fP before any \fB\-l\fP flags for Haskell +libraries, and \fB\-Wl,\-\-no\-whole\-archive\fP afterwards +.TP +.B \fI\%\-L ⟨dir⟩\fP +Add ⟨dir⟩ to the list of directories searched for libraries +.TP +.B \fI\%\-l ⟨lib⟩\fP +Link in library ⟨lib⟩ +.TP +.B \fI\%\-main\-is ⟨thing⟩\fP +Set main module and function +.TP +.B \fI\%\-no\-hs\-main\fP +Don\(aqt assume this program contains \fBmain\fP +.TP +.B \fI\%\-no\-rtsopts\-suggestions\fP +Don\(aqt print RTS suggestions about linking with +\fI\%\-rtsopts[=⟨none|some|all⟩]\fP\&. +.TP +.B \fI\%\-package ⟨name⟩\fP +Expose package ⟨pkg⟩ +.TP +.B \fI\%\-pie\fP +Instruct the linker to produce a position\-independent executable. +.TP +.B \fI\%\-rdynamic\fP +This instructs the linker to add all symbols, not only used +ones, to the dynamic symbol table. Currently Linux and +Windows/MinGW32 only. This is equivalent to using +\fB\-optl \-rdynamic\fP on Linux, and \fB\-optl \-export\-all\-symbols\fP +on Windows. +.TP +.B \fI\%\-rtsopts[=⟨none|some|all⟩]\fP +Control whether the RTS behaviour can be tweaked via command\-line +flags and the \fBGHCRTS\fP environment variable. Using \fBnone\fP +means no RTS flags can be given; \fBsome\fP means only a minimum +of safe options can be given (the default), and \fBall\fP (or no +argument at all) means that all RTS flags are permitted. +.TP +.B \fI\%\-shared\fP +Generate a shared library (as opposed to an executable) +.TP +.B \fI\%\-split\-objs\fP +Split objects (for libraries) +.TP +.B \fI\%\-split\-sections\fP +Split sections for link\-time dead\-code stripping +.TP +.B \fI\%\-static\fP +Use static Haskell libraries +.TP +.B \fI\%\-staticlib\fP +Generate a standalone static library (as opposed to an +executable). This is useful when cross compiling. The +library together with all its dependencies ends up in in a +single static library that can be linked against. +.TP +.B \fI\%\-threaded\fP +Use the threaded runtime +.TP +.B \fI\%\-with\-rtsopts=⟨opts⟩\fP +Set the default RTS options to ⟨opts⟩. +.UNINDENT +.SS Miscellaneous options +.INDENT 0.0 +.TP +.B \fI\%\-fexternal\-interpreter\fP +Run interpreted code in a separate process +.TP +.B \fI\%\-fglasgow\-exts\fP +Deprecated. Enable most language extensions; +see \fI\%Language options\fP for exactly which ones. +.TP +.B \fI\%\-ghcversion\-file ⟨path to ghcversion.h⟩\fP +(GHC as a C compiler only) Use this \fBghcversion.h\fP file +.TP +.B \fI\%\-H ⟨size⟩\fP +Set the minimum size of the heap to ⟨size⟩ +.TP +.B \fI\%\-j[⟨n⟩]\fP +When compiling with \fI\%\-\-make\fP, compile ⟨n⟩ modules +in parallel. +.UNINDENT +.SS Modes of operation +.INDENT 0.0 +.TP +.B \fI\%\-\-frontend ⟨module⟩\fP +run GHC with the given frontend plugin; see +\fIfrontend_plugins\fP for details. +.TP +.B \fI\%\-\-help\fP +Display help +.TP +.B \fI\%\-\-info\fP +display information about the compiler +.TP +.B \fI\%\-\-interactive\fP +Interactive mode \- normally used by just running \fBghci\fP; +see \fIghci\fP for details. +.TP +.B \fI\%\-\-make\fP +Build a multi\-module Haskell program, automatically figuring out +dependencies. Likely to be much easier, and faster, than using +\fBmake\fP; see \fI\%Using ghc \-\-make\fP for details. +.TP +.B \fI\%\-\-mk\-dll\fP +DLL\-creation mode (Windows only) +.TP +.B \fI\%\-\-numeric\-version\fP +display GHC version (numeric only) +.TP +.B \fI\%\-\-print\-libdir\fP +display GHC library directory +.TP +.B \fI\%\-\-show\-iface ⟨file⟩\fP +display the contents of an interface file. +.TP +.B \fI\%\-\-show\-options\fP +display the supported command line options +.TP +.B \fI\%\-\-supported\-extensions\fP +display the supported language extensions +.TP +.B \fI\%\-\-version\fP +display GHC version +.TP +.B \fI\%\-e ⟨expr⟩\fP +Evaluate \fBexpr\fP; see \fI\%Expression evaluation mode\fP for details. +.TP +.B \fI\%\-M\fP +generate dependency information suitable for use in a +\fBMakefile\fP; see \fImakefile\-dependencies\fP for details. +.UNINDENT +.SS Individual optimizations +.INDENT 0.0 +.TP +.B \fI\%\-fcall\-arity\fP +Enable call\-arity optimisation. Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-fcase\-folding\fP +Enable constant folding in case expressions. Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-fcase\-merge\fP +Enable case\-merging. Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-fcmm\-elim\-common\-blocks\fP +Enable Cmm common block elimination. Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-fcmm\-sink\fP +Enable Cmm sinking. Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-fcpr\-anal\fP +Turn on CPR analysis in the demand analyser. Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-fcross\-module\-specialise\fP +Turn on specialisation of overloaded functions imported from +other modules. +.TP +.B \fI\%\-fcse\fP +Enable common sub\-expression elimination. Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-fdicts\-cheap\fP +Make dictionary\-valued expressions seem cheap to the optimiser. +.TP +.B \fI\%\-fdicts\-strict\fP +Make dictionaries strict +.TP +.B \fI\%\-fdmd\-tx\-dict\-sel\fP +Use a special demand transformer for dictionary selectors. +Always enabled by default. +.TP +.B \fI\%\-fdo\-eta\-reduction\fP +Enable eta\-reduction. Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-fdo\-lambda\-eta\-expansion\fP +Enable lambda eta\-expansion. Always enabled by default. +.TP +.B \fI\%\-feager\-blackholing\fP +Turn on \fIeager blackholing\fP +.TP +.B \fI\%\-fenable\-rewrite\-rules\fP +Switch on all rewrite rules (including rules generated by +automatic specialisation of overloaded functions). Implied by +\fB\-O\fP\&. +.TP +.B \fI\%\-fexcess\-precision\fP +Enable excess intermediate precision +.TP +.B \fI\%\-fexitification\fP +Enables exitification optimisation. Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-fexpose\-all\-unfoldings\fP +Expose all unfoldings, even for very large or recursive functions. +.TP +.B \fI\%\-ffloat\-in\fP +Turn on the float\-in transformation. Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-ffull\-laziness\fP +Turn on full laziness (floating bindings outwards). +Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-ffun\-to\-thunk\fP +Allow worker\-wrapper to convert a function closure into a thunk +if the function does not use any of its arguments. Off by default. +.TP +.B \fI\%\-fignore\-asserts\fP +Ignore assertions in the source. Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-fignore\-interface\-pragmas\fP +Ignore pragmas in interface files. Implied by \fI\%\-O0\fP only. +.TP +.B \fI\%\-flate\-dmd\-anal\fP +Run demand analysis again, at the end of the +simplification pipeline +.TP +.B \fI\%\-fliberate\-case\fP +Turn on the liberate\-case transformation. Implied by \fI\%\-O2\fP\&. +.TP +.B \fI\%\-fliberate\-case\-threshold=⟨n⟩\fP +\fIdefault: 2000.\fP Set the size threshold for the liberate\-case +transformation to ⟨n⟩ +.TP +.B \fI\%\-fllvm\-pass\-vectors\-in\-regs\fP +Pass vector value in vector registers for function calls +.TP +.B \fI\%\-floopification\fP +Turn saturated self\-recursive tail\-calls into local jumps in the +generated assembly. Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-fmax\-inline\-alloc\-size=⟨n⟩\fP +\fIdefault: 128.\fP Set the maximum size of inline array allocations +to ⟨n⟩ bytes (default: 128). +.TP +.B \fI\%\-fmax\-inline\-memcpy\-insns=⟨n⟩\fP +\fIdefault: 32.\fP Inline \fBmemcpy\fP calls if they would generate no +more than ⟨n⟩ pseudo instructions. +.TP +.B \fI\%\-fmax\-inline\-memset\-insns=⟨n⟩\fP +\fIdefault: 32.\fP Inline \fBmemset\fP calls if they would generate no +more than ⟨n⟩ pseudo instructions +.TP +.B \fI\%\-fmax\-relevant\-binds=⟨n⟩\fP +\fIdefault: 6.\fP Set the maximum number of bindings to display in +type error messages. +.TP +.B \fI\%\-fmax\-simplifier\-iterations=⟨n⟩\fP +\fIdefault: 4.\fP Set the max iterations for the simplifier. +.TP +.B \fI\%\-fmax\-uncovered\-patterns=⟨n⟩\fP +\fIdefault: 4.\fP Set the maximum number of patterns to display in +warnings about non\-exhaustive ones. +.TP +.B \fI\%\-fmax\-valid\-substitutions=⟨n⟩\fP +\fIdefault: 6.\fP Set the maximum number of valid substitutions for +typed holes to display in type error messages. +.TP +.B \fI\%\-fmax\-worker\-args=⟨n⟩\fP +\fIdefault: 10.\fP If a worker has that many arguments, none will +be unpacked anymore. +.TP +.B \fI\%\-fno\-opt\-coercion\fP +Turn off the coercion optimiser +.TP +.B \fI\%\-fno\-pre\-inlining\fP +Turn off pre\-inlining +.TP +.B \fI\%\-fno\-state\-hack\fP +Turn off the state hackwhereby any lambda with a real\-world +state token as argument is considered to be single\-entry. Hence +OK to inline things inside it. +.TP +.B \fI\%\-fomit\-interface\-pragmas\fP +Don\(aqt generate interface pragmas. Implied by \fI\%\-O0\fP only. +.TP +.B \fI\%\-fomit\-yields\fP +Omit heap checks when no allocation is being performed. +.TP +.B \fI\%\-foptimal\-applicative\-do\fP +Use a slower but better algorithm for ApplicativeDo +.TP +.B \fI\%\-fpedantic\-bottoms\fP +Make GHC be more precise about its treatment of bottom (but see +also \fI\%\-fno\-state\-hack\fP). In particular, GHC will not +eta\-expand through a case expression. +.TP +.B \fI\%\-fregs\-graph\fP +Use the graph colouring register allocator for register +allocation in the native code generator. Implied by \fI\%\-O2\fP\&. +.TP +.B \fI\%\-fregs\-iterative\fP +Use the iterative coalescing graph colouring register allocator +in the native code generator. +.TP +.B \fI\%\-fsimpl\-tick\-factor=⟨n⟩\fP +\fIdefault: 100.\fP Set the percentage factor for simplifier ticks. +.TP +.B \fI\%\-fsimplifier\-phases=⟨n⟩\fP +\fIdefault: 2.\fP Set the number of phases for the simplifier. +Ignored with \fI\%\-O0\fP\&. +.TP +.B \fI\%\-fsolve\-constant\-dicts\fP +When solving constraints, try to eagerly solve +super classes using available dictionaries. +.TP +.B \fI\%\-fspec\-constr\fP +Turn on the SpecConstr transformation. Implied by \fI\%\-O2\fP\&. +.TP +.B \fI\%\-fspec\-constr\-count=⟨n⟩\fP +default: 3.* Set to ⟨n⟩ the maximum number of specialisations that +will be created for any one function by the SpecConstr +transformation. +.TP +.B \fI\%\-fspec\-constr\-keen\fP +Specialize a call with an explicit constructor argument, +even if the argument is not scrutinised in the body of the function +.TP +.B \fI\%\-fspec\-constr\-threshold=⟨n⟩\fP +\fIdefault: 2000.\fP Set the size threshold for the SpecConstr +transformation to ⟨n⟩. +.TP +.B \fI\%\-fspecialise\fP +Turn on specialisation of overloaded functions. Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-fspecialise\-aggressively\fP +Turn on specialisation of overloaded functions regardless of +size, if unfolding is available +.TP +.B \fI\%\-fstatic\-argument\-transformation\fP +Turn on the static argument transformation. +.TP +.B \fI\%\-fstg\-cse\fP +Enable common sub\-expression elimination on the STG +intermediate language +.TP +.B \fI\%\-fstrictness\fP +Turn on strictness analysis. +Implied by \fI\%\-O\fP\&. Implies \fB\-fworker\-wrapper\fP +.TP +.B \fI\%\-fstrictness\-before=⟨n⟩\fP +Run an additional strictness analysis before simplifier phase ⟨n⟩ +.TP +.B \fI\%\-funbox\-small\-strict\-fields\fP +Flatten strict constructor fields with a pointer\-sized +representation. Implied by \fI\%\-O\fP\&. +.TP +.B \fI\%\-funbox\-strict\-fields\fP +Flatten strict constructor fields +.TP +.B \fI\%\-funfolding\-creation\-threshold=⟨n⟩\fP +\fIdefault: 750.\fP Tweak unfolding settings. +.TP +.B \fI\%\-funfolding\-dict\-discount=⟨n⟩\fP +\fIdefault: 30.\fP Tweak unfolding settings. +.TP +.B \fI\%\-funfolding\-fun\-discount=⟨n⟩\fP +\fIdefault: 60.\fP Tweak unfolding settings. +.TP +.B \fI\%\-funfolding\-keeness\-factor=⟨n⟩\fP +\fIdefault: 1.5.\fP Tweak unfolding settings. +.TP +.B \fI\%\-funfolding\-use\-threshold=⟨n⟩\fP +\fIdefault: 60.\fP Tweak unfolding settings. +.TP +.B \fI\%\-fvectorisation\-avoidance\fP +Enable vectorisation avoidance. Always enabled by default. +.TP +.B \fI\%\-fvectorise\fP +Enable vectorisation of nested data parallelism +.UNINDENT +.SS Optimization levels +.INDENT 0.0 +.TP +.B \fI\%\-O\fP +Enable level 1 optimisations +.TP +.B \fI\%\-O0\fP +Disable optimisations (default) +.TP +.B \fI\%\-O2\fP +Enable level 2 optimisations +.TP +.B \fI\%\-Odph\fP +Enable level 2 optimisations, set +\fB\-fmax\-simplifier\-iterations=20\fP +and \fB\-fsimplifier\-phases=3\fP\&. +.UNINDENT +.SS Package options +.INDENT 0.0 +.TP +.B \fI\%\-clear\-package\-db\fP +Clear the package db stack. +.TP +.B \fI\%\-distrust ⟨pkg⟩\fP +Expose package ⟨pkg⟩ and set it to be distrusted. See +\fI\%Safe Haskell\fP\&. +.TP +.B \fI\%\-distrust\-all\-packages\fP +Distrust all packages by default. See \fI\%Safe Haskell\fP\&. +.TP +.B \fI\%\-fpackage\-trust\fP +Enable \fI\%Safe Haskell\fP trusted package +requirement for trustworthy modules. +.TP +.B \fI\%\-global\-package\-db\fP +Add the global package db to the stack. +.TP +.B \fI\%\-hide\-all\-packages\fP +Hide all packages by default +.TP +.B \fI\%\-hide\-package ⟨pkg⟩\fP +Hide package ⟨pkg⟩ +.TP +.B \fI\%\-ignore\-package ⟨pkg⟩\fP +Ignore package ⟨pkg⟩ +.TP +.B \fI\%\-no\-auto\-link\-packages\fP +Don\(aqt automatically link in the base and rts packages. +.TP +.B \fI\%\-no\-global\-package\-db\fP +Remove the global package db from the stack. +.TP +.B \fI\%\-no\-user\-package\-db\fP +Remove the user\(aqs package db from the stack. +.TP +.B \fI\%\-package ⟨pkg⟩\fP +Expose package ⟨pkg⟩ +.TP +.B \fI\%\-package\-db ⟨file⟩\fP +Add ⟨file⟩ to the package db stack. +.TP +.B \fI\%\-package\-env ⟨file⟩|⟨name⟩\fP +Use the specified package environment. +.TP +.B \fI\%\-package\-id ⟨unit\-id⟩\fP +Expose package by id ⟨unit\-id⟩ +.TP +.B \fI\%\-this\-unit\-id ⟨unit\-id⟩\fP +Compile to be part of unit (i.e. package) +⟨unit\-id⟩ +.TP +.B \fI\%\-trust ⟨pkg⟩\fP +Expose package ⟨pkg⟩ and set it to be trusted. See +\fI\%Safe Haskell\fP\&. +.TP +.B \fI\%\-user\-package\-db\fP +Add the user\(aqs package db to the stack. +.UNINDENT +.SS Phases of compilation +.INDENT 0.0 +.TP +.B \fI\%\-C\fP +Stop after generating C (\fB\&.hc\fP file) +.TP +.B \fI\%\-c\fP +Stop after generating object (\fB\&.o\fP) file +.TP +.B \fI\%\-E\fP +Stop after preprocessing (\fB\&.hspp\fP file) +.TP +.B \fI\%\-F\fP +Enable the use of a \fI\%pre\-processor\fP +(set with \fI\%\-pgmF ⟨cmd⟩\fP) +.TP +.B \fI\%\-S\fP +Stop after generating assembly (\fB\&.s\fP file) +.TP +.B \fI\%\-x ⟨suffix⟩\fP +Override default behaviour for source files +.UNINDENT +.SS Overriding external programs +.INDENT 0.0 +.TP +.B \fI\%\-pgma ⟨cmd⟩\fP +Use ⟨cmd⟩ as the assembler +.TP +.B \fI\%\-pgmc ⟨cmd⟩\fP +Use ⟨cmd⟩ as the C compiler +.TP +.B \fI\%\-pgmdll ⟨cmd⟩\fP +Use ⟨cmd⟩ as the DLL generator +.TP +.B \fI\%\-pgmF ⟨cmd⟩\fP +Use ⟨cmd⟩ as the pre\-processor (with \fB\-F\fP only) +.TP +.B \fI\%\-pgmi ⟨cmd⟩\fP +Use ⟨cmd⟩ as the external interpreter command. +.TP +.B \fI\%\-pgmL ⟨cmd⟩\fP +Use ⟨cmd⟩ as the literate pre\-processor +.TP +.B \fI\%\-pgml ⟨cmd⟩\fP +Use ⟨cmd⟩ as the linker +.TP +.B \fI\%\-pgmlc ⟨cmd⟩\fP +Use ⟨cmd⟩ as the LLVM compiler +.TP +.B \fI\%\-pgmlibtool ⟨cmd⟩\fP +Use ⟨cmd⟩ as the command for libtool (with \fB\-staticlib\fP only). +.TP +.B \fI\%\-pgmlo ⟨cmd⟩\fP +Use ⟨cmd⟩ as the LLVM optimiser +.TP +.B \fI\%\-pgmP ⟨cmd⟩\fP +Use ⟨cmd⟩ as the C pre\-processor (with \fB\-cpp\fP only) +.TP +.B \fI\%\-pgms ⟨cmd⟩\fP +Use ⟨cmd⟩ as the splitter +.TP +.B \fI\%\-pgmwindres ⟨cmd⟩\fP +Use ⟨cmd⟩ as the program for embedding manifests on Windows. +.UNINDENT +.SS Phase\-specific options +.INDENT 0.0 +.TP +.B \fI\%\-opta ⟨option⟩\fP +pass ⟨option⟩ to the assembler +.TP +.B \fI\%\-optc ⟨option⟩\fP +pass ⟨option⟩ to the C compiler +.TP +.B \fI\%\-optdll ⟨option⟩\fP +pass ⟨option⟩ to the DLL generator +.TP +.B \fI\%\-optF ⟨option⟩\fP +pass ⟨option⟩ to the custom pre\-processor +.TP +.B \fI\%\-opti ⟨option⟩\fP +pass ⟨option⟩ to the interpreter sub\-process. +.TP +.B \fI\%\-optL ⟨option⟩\fP +pass ⟨option⟩ to the literate pre\-processor +.TP +.B \fI\%\-optl ⟨option⟩\fP +pass ⟨option⟩ to the linker +.TP +.B \fI\%\-optlc ⟨option⟩\fP +pass ⟨option⟩ to the LLVM compiler +.TP +.B \fI\%\-optlo ⟨option⟩\fP +pass ⟨option⟩ to the LLVM optimiser +.TP +.B \fI\%\-optP ⟨option⟩\fP +pass ⟨option⟩ to cpp (with \fB\-cpp\fP only) +.TP +.B \fI\%\-optwindres ⟨option⟩\fP +pass ⟨option⟩ to \fBwindres\fP\&. +.UNINDENT +.SS Platform\-specific options +.INDENT 0.0 +.TP +.B \fI\%\-msse2\fP +(x86 only) Use SSE2 for floating\-point operations +.TP +.B \fI\%\-msse4.2\fP +(x86 only) Use SSE4.2 for floating\-point operations +.UNINDENT +.SS Compiler plugins +.INDENT 0.0 +.TP +.B \fI\%\-fplugin\-opt=⟨module⟩:⟨args⟩\fP +Give arguments to a plugin module; module must be specified with +\fI\%\-fplugin=⟨module⟩\fP +.TP +.B \fI\%\-fplugin=⟨module⟩\fP +Load a plugin exported by a given module +.TP +.B \fI\%\-hide\-all\-plugin\-packages\fP +Hide all packages for plugins by default +.TP +.B \fI\%\-plugin\-package ⟨pkg⟩\fP +Expose ⟨pkg⟩ for plugins +.TP +.B \fI\%\-plugin\-package\-id ⟨pkg\-id⟩\fP +Expose ⟨pkg\-id⟩ for plugins +.UNINDENT +.SS Profiling +.INDENT 0.0 +.TP +.B \fI\%\-fno\-prof\-auto\fP +Disables any previous \fI\%\-fprof\-auto\fP, +\fI\%\-fprof\-auto\-top\fP, or \fI\%\-fprof\-auto\-exported\fP options. +.TP +.B \fI\%\-fno\-prof\-cafs\fP +Disables any previous \fI\%\-fprof\-cafs\fP option. +.TP +.B \fI\%\-fno\-prof\-count\-entries\fP +Do not collect entry counts +.TP +.B \fI\%\-fprof\-auto\fP +Auto\-add \fBSCC\fP\e s to all bindings not marked INLINE +.TP +.B \fI\%\-fprof\-auto\-calls\fP +Auto\-add \fBSCC\fP\e s to all call sites +.TP +.B \fI\%\-fprof\-auto\-exported\fP +Auto\-add \fBSCC\fP\e s to all exported bindings not marked INLINE +.TP +.B \fI\%\-fprof\-auto\-top\fP +Auto\-add \fBSCC\fP\e s to all top\-level bindings not marked INLINE +.TP +.B \fI\%\-fprof\-cafs\fP +Auto\-add \fBSCC\fP\e s to all CAFs +.TP +.B \fI\%\-prof\fP +Turn on profiling +.TP +.B \fI\%\-ticky\fP +\fI\%Turn on ticky\-ticky profiling\fP +.UNINDENT +.SS Program coverage +.INDENT 0.0 +.TP +.B \fI\%\-fhpc\fP +Turn on Haskell program coverage instrumentation +.UNINDENT +.SS Recompilation checking +.INDENT 0.0 +.TP +.B \fI\%\-fforce\-recomp\fP +Turn off recompilation checking. This is implied by any +\fB\-ddump\-X\fP option when compiling a single file +(i.e. when using \fB\-c\fP). +.TP +.B \fI\%\-fignore\-hpc\-changes\fP +Do not recompile modules just to match changes to +HPC flags. This is especially useful for avoiding recompilation +when using GHCi, and is enabled by default for GHCi. +.TP +.B \fI\%\-fignore\-optim\-changes\fP +Do not recompile modules just to match changes to +optimisation flags. This is especially useful for avoiding +recompilation when using GHCi, and is enabled by default for +GHCi. +.UNINDENT +.SS Redirecting output +.INDENT 0.0 +.TP +.B \fI\%\-\-exclude\-module=⟨file⟩\fP +Regard \fB⟨file⟩\fP as "stable"; i.e., exclude it from having +dependencies on it. +.TP +.B \fI\%\-ddump\-mod\-cycles\fP +Dump module cycles +.TP +.B \fI\%\-dep\-makefile ⟨file⟩\fP +Use ⟨file⟩ as the makefile +.TP +.B \fI\%\-dep\-suffix ⟨suffix⟩\fP +Make dependencies that declare that files with suffix +\fB\&.⟨suf⟩⟨osuf⟩\fP depend on interface files with suffix \fB\&.⟨suf⟩hi\fP +.TP +.B \fI\%\-dumpdir ⟨dir⟩\fP +redirect dump files +.TP +.B \fI\%\-hcsuf ⟨suffix⟩\fP +set the suffix to use for intermediate C files +.TP +.B \fI\%\-hidir ⟨dir⟩\fP +set directory for interface files +.TP +.B \fI\%\-hisuf ⟨suffix⟩\fP +set the suffix to use for interface files +.TP +.B \fI\%\-include\-pkg\-deps\fP +Regard modules imported from packages as unstable +.TP +.B \fI\%\-o ⟨file⟩\fP +set output filename +.TP +.B \fI\%\-odir ⟨dir⟩\fP +set directory for object files +.TP +.B \fI\%\-ohi ⟨file⟩\fP +set the filename in which to put the interface +.TP +.B \fI\%\-osuf ⟨suffix⟩\fP +set the output file suffix +.TP +.B \fI\%\-outputdir ⟨dir⟩\fP +set output directory +.TP +.B \fI\%\-stubdir ⟨dir⟩\fP +redirect FFI stub files +.UNINDENT +.SS Temporary files +.INDENT 0.0 +.TP +.B \fI\%\-tmpdir ⟨dir⟩\fP +set the directory for temporary files +.UNINDENT +.SS Verbosity options +.INDENT 0.0 +.TP +.B \fI\%\-fdiagnostics\-color=⟨always|auto|never⟩\fP +Use colors in error messages +.TP +.B \fI\%\-fdiagnostics\-show\-caret\fP +Whether to show snippets of original source code +.TP +.B \fI\%\-ferror\-spans\fP +Output full span in error messages +.TP +.B \fI\%\-fhide\-source\-paths\fP +hide module source and object paths +.TP +.B \fI\%\-fprint\-equality\-relations\fP +Distinguish between equality relations when printing +.TP +.B \fI\%\-fprint\-expanded\-synonyms\fP +In type errors, also print type\-synonym\-expanded types. +.TP +.B \fI\%\-fprint\-explicit\-coercions\fP +Print coercions in types +.TP +.B \fI\%\-fprint\-explicit\-foralls\fP +Print explicit \fBforall\fP quantification in types. +See also \fB\-XExplicitForAll\fP +.TP +.B \fI\%\-fprint\-explicit\-kinds\fP +Print explicit kind foralls and kind arguments in types. +See also \fB\-XKindSignatures\fP +.TP +.B \fI\%\-fprint\-explicit\-runtime\-rep\fP +Print \fBRuntimeRep\fP variables in types which are +runtime\-representation polymorphic. +.TP +.B \fI\%\-fprint\-explicit\-runtime\-reps\fP +Print \fBRuntimeRep\fP variables in types which are +runtime\-representation polymorphic. +.TP +.B \fI\%\-fprint\-potential\-instances\fP +display all available instances in type error messages +.TP +.B \fI\%\-fprint\-typechecker\-elaboration\fP +Print extra information from typechecker. +.TP +.B \fI\%\-fprint\-unicode\-syntax\fP +Use unicode syntax when printing expressions, types and kinds. +See also \fB\-XUnicodeSyntax\fP +.TP +.B \fI\%\-fshow\-hole\-constraints\fP +Show constraints when reporting typed holes +.TP +.B \fI\%\-Rghc\-timing\fP +Summarise timing stats for GHC (same as \fB+RTS \-tstderr\fP). +.TP +.B \fI\%\-v\fP +verbose mode (equivalent to \fB\-v3\fP) +.TP +.B \fI\%\-v⟨n⟩\fP +set verbosity level +.UNINDENT +.SS Warnings +.INDENT 0.0 +.TP +.B \fI\%\-fdefer\-out\-of\-scope\-variables\fP +Convert variable out of scope variables errors into warnings. +Implied by \fI\%\-fdefer\-type\-errors\fP\&. +See also \fI\%\-Wdeferred\-out\-of\-scope\-variables\fP\&. +.TP +.B \fI\%\-fdefer\-type\-errors\fP +Turn type errors into warnings, \fIdeferring the error until +runtime\fP\&. Implies +\fI\%\-fdefer\-typed\-holes\fP and +\fI\%\-fdefer\-out\-of\-scope\-variables\fP\&. +See also \fI\%\-Wdeferred\-type\-errors\fP +.TP +.B \fI\%\-fdefer\-typed\-holes\fP +Convert \fItyped hole\fP errors into warnings, +\fIdeferring the error until runtime\fP\&. +Implied by \fI\%\-fdefer\-type\-errors\fP\&. +See also \fI\%\-Wtyped\-holes\fP\&. +.TP +.B \fI\%\-fhelpful\-errors\fP +Make suggestions for mis\-spelled names. +.TP +.B \fI\%\-fmax\-pmcheck\-iterations=⟨n⟩\fP +the iteration limit for the pattern match checker +.TP +.B \fI\%\-fshow\-warning\-groups\fP +show which group an emitted warning belongs to. +.TP +.B \fI\%\-W\fP +enable normal warnings +.TP +.B \fI\%\-w\fP +disable all warnings +.TP +.B \fI\%\-Wall\fP +enable almost all warnings (details in \fI\%Warnings and sanity\-checking\fP) +.TP +.B \fI\%\-Wall\-missed\-specialisations\fP +warn when specialisation of any overloaded function fails. +.TP +.B \fI\%\-Wamp\fP +\fI(deprecated)\fP warn on definitions conflicting with the +Applicative\-Monad Proposal (AMP) +.TP +.B \fI\%\-Wcompat\fP +enable future compatibility warnings +(details in \fI\%Warnings and sanity\-checking\fP) +.TP +.B \fI\%\-Wcpp\-undef\fP +warn on uses of the \fI#if\fP directive on undefined identifiers +.TP +.B \fI\%\-Wdeferred\-out\-of\-scope\-variables\fP +Report warnings when variable out\-of\-scope errors are +\fIdeferred until runtime\fP\&. +See \fI\%\-fdefer\-out\-of\-scope\-variables\fP\&. +.TP +.B \fI\%\-Wdeferred\-type\-errors\fP +Report warnings when \fIdeferred type errors\fP are enabled. This option is enabled by +default. See \fI\%\-fdefer\-type\-errors\fP\&. +.TP +.B \fI\%\-Wdeprecated\-flags\fP +warn about uses of commandline flags that are deprecated +.TP +.B \fI\%\-Wdeprecations\fP +warn about uses of functions & types that have warnings or +deprecated pragmas. Alias for \fI\%\-Wwarnings\-deprecations\fP +.TP +.B \fI\%\-Wdodgy\-exports\fP +warn about dodgy exports +.TP +.B \fI\%\-Wdodgy\-foreign\-imports\fP +warn about dodgy foreign imports +.TP +.B \fI\%\-Wdodgy\-imports\fP +warn about dodgy imports +.TP +.B \fI\%\-Wduplicate\-constraints\fP +warn when a constraint appears duplicated in a type signature +.TP +.B \fI\%\-Wduplicate\-exports\fP +warn when an entity is exported multiple times +.TP +.B \fI\%\-Wempty\-enumerations\fP +warn about enumerations that are empty +.TP +.B \fI\%\-Werror\fP +make warnings fatal +.TP +.B \fI\%\-Weverything\fP +enable all warnings supported by GHC +.TP +.B \fI\%\-Whi\-shadowing\fP +warn when a \fB\&.hi\fP file in the current directory shadows a library +.TP +.B \fI\%\-Widentities\fP +warn about uses of Prelude numeric conversions that are probably +the identity (and hence could be omitted) +.TP +.B \fI\%\-Wimplicit\-prelude\fP +warn when the Prelude is implicitly imported +.TP +.B \fI\%\-Wincomplete\-patterns\fP +warn when a pattern match could fail +.TP +.B \fI\%\-Wincomplete\-record\-updates\fP +warn when a record update could fail +.TP +.B \fI\%\-Wincomplete\-uni\-patterns\fP +warn when a pattern match in a lambda expression or +pattern binding could fail +.TP +.B \fI\%\-Winline\-rule\-shadowing\fP +Warn if a rewrite RULE might fail to fire because the +function might be inlined before the rule has a chance to fire. +See \fIrules\-inline\fP\&. +.TP +.B \fI\%\-Wmissed\-specialisations\fP +warn when specialisation of an imported, overloaded function +fails. +.TP +.B \fI\%\-Wmissing\-export\-lists\fP +warn when a module declaration does not explicitly list all +exports +.TP +.B \fI\%\-Wmissing\-exported\-signatures\fP +warn about top\-level functions without signatures, only if they +are exported. takes precedence over \-Wmissing\-signatures +.TP +.B \fI\%\-Wmissing\-exported\-sigs\fP +\fI(deprecated)\fP +warn about top\-level functions without signatures, only if they +are exported. takes precedence over \-Wmissing\-signatures +.TP +.B \fI\%\-Wmissing\-fields\fP +warn when fields of a record are uninitialised +.TP +.B \fI\%\-Wmissing\-home\-modules\fP +warn when encountering a home module imported, but not listed +on the command line. Useful for cabal to ensure GHC won\(aqt pick +up modules, not listed neither in \fBexposed\-modules\fP, nor in +\fBother\-modules\fP\&. +.TP +.B \fI\%\-Wmissing\-import\-lists\fP +warn when an import declaration does not explicitly list all the +names brought into scope +.TP +.B \fI\%\-Wmissing\-local\-signatures\fP +warn about polymorphic local bindings without signatures +.TP +.B \fI\%\-Wmissing\-local\-sigs\fP +\fI(deprecated)\fP +warn about polymorphic local bindings without signatures +.TP +.B \fI\%\-Wmissing\-methods\fP +warn when class methods are undefined +.TP +.B \fI\%\-Wmissing\-monadfail\-instances\fP +Warn when a failable pattern is used in a do\-block that does +not have a \fBMonadFail\fP instance. +.TP +.B \fI\%\-Wmissing\-pattern\-synonym\-signatures\fP +warn when pattern synonyms do not have type signatures +.TP +.B \fI\%\-Wmissing\-signatures\fP +warn about top\-level functions without signatures +.TP +.B \fI\%\-Wmonomorphism\-restriction\fP +warn when the Monomorphism Restriction is applied +.TP +.B \fI\%\-Wname\-shadowing\fP +warn when names are shadowed +.TP +.B \fI\%\-Wno\-compat\fP +Disables all warnings enabled by \fI\%\-Wcompat\fP\&. +.TP +.B \fI\%\-Wnoncanonical\-monad\-instances\fP +warn when \fBApplicative\fP or \fBMonad\fP instances have +noncanonical definitions of \fBreturn\fP, \fBpure\fP, \fB(>>)\fP, +or \fB(*>)\fP\&. +See flag description in \fI\%Warnings and sanity\-checking\fP for more details. +.TP +.B \fI\%\-Wnoncanonical\-monadfail\-instances\fP +warn when \fBMonad\fP or \fBMonadFail\fP instances have +noncanonical definitions of \fBfail\fP\&. +See flag description in \fI\%Warnings and sanity\-checking\fP for more details. +.TP +.B \fI\%\-Wnoncanonical\-monoid\-instances\fP +warn when \fBSemigroup\fP or \fBMonoid\fP instances have +noncanonical definitions of \fB(<>)\fP or \fBmappend\fP\&. +See flag description in \fI\%Warnings and sanity\-checking\fP for more details. +.TP +.B \fI\%\-Worphans\fP +warn when the module contains \fIorphan instance declarations +or rewrite rules\fP +.TP +.B \fI\%\-Woverflowed\-literals\fP +warn about literals that will overflow their type +.TP +.B \fI\%\-Woverlapping\-patterns\fP +warn about overlapping patterns +.TP +.B \fI\%\-Wpartial\-fields\fP +warn when defining a partial record field. +.TP +.B \fI\%\-Wpartial\-type\-signatures\fP +warn about holes in partial type signatures when +\fB\-XPartialTypeSignatures\fP is enabled. Not applicable when +\fB\-XPartialTypesignatures\fP is not enabled, in which case +errors are generated for such holes. See +\fIpartial\-type\-signatures\fP\&. +.TP +.B \fI\%\-Wredundant\-constraints\fP +Have the compiler warn about redundant constraints in type +signatures. +.TP +.B \fI\%\-Wsafe\fP +warn if the module being compiled is regarded to be safe. +.TP +.B \fI\%\-Wsemigroup\fP +warn when a \fBMonoid\fP is not \fBSemigroup\fP, and on non\- +\fBSemigroup\fP definitions of \fB(<>)\fP? +.TP +.B \fI\%\-Wsimplifiable\-class\-constraints\fP +2arn about class constraints in a type signature that can +be simplified using a top\-level instance declaration. +.TP +.B \fI\%\-Wtabs\fP +warn if there are tabs in the source file +.TP +.B \fI\%\-Wtrustworthy\-safe\fP +warn if the module being compiled is marked as +\fI\%Trustworthy\fP but it could instead be marked as +\fI\%Safe\fP, a more informative bound. +.TP +.B \fI\%\-Wtype\-defaults\fP +warn when defaulting happens +.TP +.B \fI\%\-Wtyped\-holes\fP +Report warnings when \fItyped hole\fP errors are +\fIdeferred until runtime\fP\&. See +\fI\%\-fdefer\-typed\-holes\fP\&. +.TP +.B \fI\%\-Wunbanged\-strict\-patterns\fP +warn on pattern bind of unlifted variable that is neither bare +nor banged +.TP +.B \fI\%\-Wunrecognised\-pragmas\fP +warn about uses of pragmas that GHC doesn\(aqt recognise +.TP +.B \fI\%\-Wunrecognised\-warning\-flags\fP +throw a warning when an unreconised \fB\-W...\fP flag is +encountered on the command line. +.TP +.B \fI\%\-Wunsafe\fP +warn if the module being compiled is regarded to be unsafe. +See \fI\%Safe Haskell\fP +.TP +.B \fI\%\-Wunsupported\-calling\-conventions\fP +warn about use of an unsupported calling convention +.TP +.B \fI\%\-Wunsupported\-llvm\-version\fP +Warn when using \fB\-fllvm\fP with an unsupported +version of LLVM. +.TP +.B \fI\%\-Wunticked\-promoted\-constructors\fP +warn if promoted constructors are not ticked +.TP +.B \fI\%\-Wunused\-binds\fP +warn about bindings that are unused. Alias for +\fI\%\-Wunused\-top\-binds\fP, \fI\%\-Wunused\-local\-binds\fP and +\fI\%\-Wunused\-pattern\-binds\fP +.TP +.B \fI\%\-Wunused\-do\-bind\fP +warn about do bindings that appear to throw away values of types +other than \fB()\fP +.TP +.B \fI\%\-Wunused\-foralls\fP +warn about type variables in user\-written +\fBforall\fP\es that are unused +.TP +.B \fI\%\-Wunused\-imports\fP +warn about unnecessary imports +.TP +.B \fI\%\-Wunused\-local\-binds\fP +warn about local bindings that are unused +.TP +.B \fI\%\-Wunused\-matches\fP +warn about variables in patterns that aren\(aqt used +.TP +.B \fI\%\-Wunused\-pattern\-binds\fP +warn about pattern match bindings that are unused +.TP +.B \fI\%\-Wunused\-top\-binds\fP +warn about top\-level bindings that are unused +.TP +.B \fI\%\-Wunused\-type\-patterns\fP +warn about unused type variables which arise from patterns +in type family and data family instances +.TP +.B \fI\%\-Wwarn\fP +make warnings non\-fatal +.TP +.B \fI\%\-Wwarnings\-deprecations\fP +warn about uses of functions & types that have warnings or +deprecated pragmas +.TP +.B \fI\%\-Wwrong\-do\-bind\fP +warn about do bindings that appear to throw away monadic values +that you should have bound instead +.UNINDENT +.SH COPYRIGHT +.sp +Copyright 2015. The University Court of the University of Glasgow. +All rights reserved. +.SH AUTHOR +The GHC Team +.SH COPYRIGHT +2015, GHC Team +.\" Generated by docutils manpage writer. +. diff --git a/haskell/ghc/ghc.SlackBuild b/haskell/ghc/ghc.SlackBuild index 5fe12c3d8099..fae2c37322a0 100644 --- a/haskell/ghc/ghc.SlackBuild +++ b/haskell/ghc/ghc.SlackBuild @@ -3,6 +3,7 @@ # Slackware build script for ghc # Copyright 2015 Mikko Värri, Finland +# Updated 2018 David Spencer, Baildon, West Yorkshire, U.K. # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -23,13 +24,13 @@ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PRGNAM=ghc -VERSION=${VERSION:-7.10.3} +VERSION=${VERSION:-8.4.3} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then case "$( uname -m )" in - i?86) ARCH=i486 ;; + i?86) ARCH=i586 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac @@ -40,8 +41,8 @@ TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} -if [ "$ARCH" = "i486" ]; then - SLKCFLAGS="-O2 -march=i486 -mtune=i686" +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" LIBDIRSUFFIX="" TARARCH=i386 elif [ "$ARCH" = "i686" ]; then @@ -62,45 +63,45 @@ set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT -if [ "${BOOTSTRAP:-yes}" == "yes" ] ; then - BOOTSTRAPDIR=$TMP/$PRGNAM-$VERSION-bootstrap - rm -rf $BOOTSTRAPDIR - - cd $TMP - rm -rf $PRGNAM-$VERSION - tar xvf $CWD/$PRGNAM-$VERSION-$TARARCH-deb8-linux.tar.xz - cd $PRGNAM-$VERSION - chown -R root:root . - find -L . \ - \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ - -o -perm 511 \) -exec chmod 755 {} \; -o \ - \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ - -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; - - CFLAGS="$SLKCFLAGS" \ - CXXFLAGS="$SLKCFLAGS" \ - ./configure \ - --prefix=$BOOTSTRAPDIR/usr \ - --mandir=$BOOTSTRAPDIR/usr/man \ - --docdir=$BOOTSTRAPDIR/usr/doc/$PRGNAM-$VERSION \ - --libdir=$BOOTSTRAPDIR/usr/lib${LIBDIRSUFFIX} - - # GHC binary distributions are compiled in an environment where - # libncurses is compiled as two separate libraries: libncurses and - # libtinfo. Slackware has all the symbols of libtinfo in libncurses, - # so we can soft link libtinfo to libncurses. But let's not do that - # system wide. The link is needed both during build ('make install') - # and during runtime (/usr/bin/ghc*). - LIBTINFO_DIR=$BOOTSTRAPDIR/usr/lib$LIBDIRSUFFIX - mkdir -p $LIBTINFO_DIR - ln -s /lib$LIBDIRSUFFIX/libncurses.so.5 $LIBTINFO_DIR/libtinfo.so.5 - LD_LIBRARY_PATH=$LIBTINFO_DIR \ - make install - sed -i -r -e "s|^exec |LD_LIBRARY_PATH=$LIBTINFO_DIR exec |" $BOOTSTRAPDIR/usr/bin/ghc{,-pkg}-$VERSION - - BOOTSTRAPGHC=$BOOTSTRAPDIR/usr/bin/ghc +if [ "${BOOTSTRAP:-yes}" = "yes" ] ; then + BOOTSTRAPDIR=$TMP/$PRGNAM-$VERSION-bootstrap + rm -rf $BOOTSTRAPDIR + + cd $TMP + rm -rf $PRGNAM-$VERSION + tar xvf $CWD/$PRGNAM-$VERSION-$TARARCH-deb8-linux.tar.xz + cd $PRGNAM-$VERSION + chown -R root:root . + find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + + CFLAGS="$SLKCFLAGS" \ + CXXFLAGS="$SLKCFLAGS" \ + ./configure \ + --prefix=$BOOTSTRAPDIR/usr \ + --mandir=$BOOTSTRAPDIR/usr/man \ + --docdir=$BOOTSTRAPDIR/usr/doc/$PRGNAM-$VERSION \ + --libdir=$BOOTSTRAPDIR/usr/lib${LIBDIRSUFFIX} + + # GHC binary distributions are compiled in an environment where + # libncurses is compiled as two separate libraries: libncurses and + # libtinfo. Slackware has all the symbols of libtinfo in libncurses, + # so we can soft link libtinfo to libncurses. But let's not do that + # system wide. The link is needed both during build ('make install') + # and during runtime (/usr/bin/ghc*). + LIBTINFO_DIR=$BOOTSTRAPDIR/usr/lib$LIBDIRSUFFIX + mkdir -p $LIBTINFO_DIR + ln -s /lib$LIBDIRSUFFIX/libncurses.so.5 $LIBTINFO_DIR/libtinfo.so.5 + LD_LIBRARY_PATH=$LIBTINFO_DIR \ + make install + sed -i -r -e "s|^exec |LD_LIBRARY_PATH=$LIBTINFO_DIR exec |" $BOOTSTRAPDIR/usr/bin/ghc{,-pkg}-$VERSION + + BOOTSTRAPGHC=$BOOTSTRAPDIR/usr/bin/ghc else - BOOTSTRAPGHC=$( which ghc 2>/dev/null ) + BOOTSTRAPGHC=$( which ghc 2>/dev/null ) fi cd $TMP @@ -117,18 +118,28 @@ find -L . \ CFLAGS="$SLKCFLAGS" \ CXXFLAGS="$SLKCFLAGS" \ ./configure \ - --prefix=/usr \ - --mandir=/usr/man \ - --docdir=/usr/doc/$PRGNAM-$VERSION \ - --libdir=/usr/lib${LIBDIRSUFFIX} \ - --with-ghc=$BOOTSTRAPGHC + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --docdir=/usr/doc/$PRGNAM-$VERSION \ + --with-ghc=$BOOTSTRAPGHC + make make install DESTDIR=$PKG find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true +# If docs were not built and installed, let's install the prebuilt manpage +# (taken from ghc-8.4.3-x86_64-deb8-linux.tar.xz) +if [ ! -d $PKG/usr/man ]; then + install -D -m0644 $CWD/ghc.1 $PKG/usr/man/man1 +fi + find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done cp -a LICENSE $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild diff --git a/haskell/ghc/ghc.info b/haskell/ghc/ghc.info index f193ad658dc3..d77ec3fb35f8 100644 --- a/haskell/ghc/ghc.info +++ b/haskell/ghc/ghc.info @@ -1,14 +1,14 @@ PRGNAM="ghc" -VERSION="7.10.3" -HOMEPAGE="http://haskell.org/ghc/" -DOWNLOAD="https://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3-i386-deb8-linux.tar.xz \ - https://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3-src.tar.xz" -MD5SUM="e695560e45251e70ae1fd433044ae120 \ - 00104e629bfda9f956c23752b5f38613" -DOWNLOAD_x86_64="https://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3-x86_64-deb8-linux.tar.xz \ - https://downloads.haskell.org/~ghc/7.10.3/ghc-7.10.3-src.tar.xz" -MD5SUM_x86_64="c9ea458e25a90bcce5fe1269e014bfed \ - 00104e629bfda9f956c23752b5f38613" +VERSION="8.4.3" +HOMEPAGE="https://haskell.org/ghc/" +DOWNLOAD="https://downloads.haskell.org/~ghc/8.4.3/ghc-8.4.3-i386-deb8-linux.tar.xz \ + https://downloads.haskell.org/~ghc/8.4.3/ghc-8.4.3-src.tar.xz" +MD5SUM="fcd2b5c34a3276146731dc34d0dc4694 \ + 5aebdda828eb544578b80132a1658315" +DOWNLOAD_x86_64="https://downloads.haskell.org/~ghc/8.4.3/ghc-8.4.3-x86_64-deb8-linux.tar.xz \ + https://downloads.haskell.org/~ghc/8.4.3/ghc-8.4.3-src.tar.xz" +MD5SUM_x86_64="99b63b934ed9f9659ac4adc3b711a3c0 \ + 5aebdda828eb544578b80132a1658315" REQUIRES="" -MAINTAINER="Mikko Värri" -EMAIL="vmj@linuxbox.fi" +MAINTAINER="David Spencer" +EMAIL="baildon.research@googlemail.com" diff --git a/haskell/ghc/slack-desc b/haskell/ghc/slack-desc index 31c96432cfbc..24549ecf1166 100644 --- a/haskell/ghc/slack-desc +++ b/haskell/ghc/slack-desc @@ -13,7 +13,7 @@ ghc: environment for the functional language Haskell. ghc: This is a complete build, including interactive system, profiling ghc: libraries and documentation. ghc: -ghc: Homepage: http://haskell.org/ghc/ +ghc: Homepage: https://haskell.org/ghc/ ghc: ghc: ghc: |