# Build flavours 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](https://github.com/snowleopard/hadrian/blob/master/doc/user-settings.md#build-flavour). ## Arguments 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 -O2 -O -O
quickest -O0
-H64m
-O0
-H64m
-O -O
perf -O
-H64m
-O
-H64m
-O2 -O2 -O2 -O -O2
prof -O0
-H64m
-O0
-H64m
-O -O2 -O -O
devel1 -O
-H64m
-O
-H64m
-dcore-lint -O0
-DDEBUG
-O0
-DDEBUG
devel2 -O
-H64m
-O
-H64m
-dcore-lint -O2 -O0
-DDEBUG
-O0
-DDEBUG
quick-llvm -O0
-H64m
-fllvm
-O0
-H64m
-fllvm
-O -O -O
perf-llvm -O
-H64m
-fllvm
-O
-H64m
-fllvm
-O2 -O -O2 -O -O2
prof-llvm -O0
-H64m
-fllvm
-O0
-H64m
-fllvm
-O -O -O -O -O
## Ways 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
perf-llvm
prof-llvm
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
quick-llvm
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