Hadrian supports a few predefined build flavours, i.e. collections of build
settings that fully define a GHC build (see src/Flavour.hs
). Users can add their
own build flavours if need be, as described
here.
The following table summarises extra arguments passed to GHC in different build flavours.
There are four groups of arguments: arguments in hsDefault
are passed to GHC for all Haskell
source files, hsLibrary
arguments are added when compiling libraries, hsCompiler
when compiling the compiler
library, and hsGhc
when compiling/linking the GHC program.
Flavour | Extra arguments | |||||||
---|---|---|---|---|---|---|---|---|
hsDefault | hsLibrary | hsCompiler | hsGhc | |||||
stage0 | stage1+ | stage0 | stage1+ | stage0 | stage1+ | stage0 | stage1+ | |
default | -O -H64m |
-O2 -H64m |
||||||
quick | -O0 -H64m |
-O0 -H64m |
-O | -O | -O | |||
quickest | -O0 -H64m |
-O0 -H64m |
-O | -O | ||||
perf | -O -H64m |
-O -H64m |
-O2 | -O | -O2 | -O | -O2 | |
prof | -O0 -H64m |
-O0 -H64m |
-O | -O | -O | -O | -O | |
devel1 | -O -H64m |
-O -H64m |
-dcore-lint | -O0 -DDEBUG |
-O0 -DDEBUG |
|||
devel2 | -O -H64m |
-O -H64m |
-dcore-lint | -O0 -DDEBUG |
-O0 -DDEBUG |
Libraries and GHC can be built in different ways, e.g. with or without profiling information. The following table lists ways that are built in different flavours.
Flavour | Library ways | RTS ways | Profiled GHC | |||
---|---|---|---|---|---|---|
stage0 | stage1+ | stage0 | stage1+ | stage0 | stage1+ | |
default perf prof devel1 devel2 | vanilla | vanilla profiling dynamic |
logging debug threaded threadedDebug threadedLogging debugDynamic threadedDynamic threadedDebugDynamic loggingDynamic threadedLoggingDynamic |
logging debug threaded threadedDebug threadedLogging threadedProfiling debugDynamic threadedDynamic threadedDebugDynamic loggingDynamic threadedLoggingDynamic |
Only in prof flavour |
Only in prof flavour |
quick | vanilla | vanilla dynamic |
logging debug threaded threadedDebug threadedLogging debugDynamic threadedDynamic threadedDebugDynamic loggingDynamic threadedLoggingDynamic |
logging debug threaded threadedDebug threadedLogging debugDynamic threadedDynamic threadedDebugDynamic loggingDynamic threadedLoggingDynamic |
No | No |
quickest | vanilla | vanilla | vanilla threaded |
vanilla threaded |
No | No |