aboutsummaryrefslogtreecommitdiff
path: root/haskell
diff options
context:
space:
mode:
Diffstat (limited to 'haskell')
-rw-r--r--haskell/ghc/README6
-rw-r--r--haskell/ghc/ghc.12061
-rw-r--r--haskell/ghc/ghc.SlackBuild105
-rw-r--r--haskell/ghc/ghc.info24
-rw-r--r--haskell/ghc/slack-desc2
5 files changed, 2133 insertions, 65 deletions
diff --git a/haskell/ghc/README b/haskell/ghc/README
index a63dd0582bced..85310df7efcf6 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 0000000000000..aa378816a0834
--- /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 5fe12c3d8099c..fae2c37322a0c 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 f193ad658dc3a..d77ec3fb35f80 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 31c96432cfbc0..24549ecf11664 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: