fcbbb70d4554f578fbd3413a522fbedf8275c1be
[ghc.git] / hadrian / src / Flavour.hs
1 module Flavour (Flavour (..)) where
2
3 import Expression
4
5 -- Please update doc/{flavours.md, user-settings.md} when changing this file.
6 -- | 'Flavour' is a collection of build settings that fully define a GHC build.
7 -- Note the following type semantics:
8 -- * @Bool@: a plain Boolean flag whose value is known at compile time.
9 -- * @Action Bool@: a flag whose value can depend on the build environment.
10 -- * @Predicate@: a flag whose value can depend on the build environment and
11 -- on the current build target.
12 data Flavour = Flavour {
13 -- | Flavour name, to select this flavour from command line.
14 name :: String,
15 -- | Use these command line arguments.
16 args :: Args,
17 -- | Build these packages.
18 packages :: Stage -> Action [Package],
19 -- | Either 'integerGmp' or 'integerSimple'.
20 integerLibrary :: Action Package,
21 -- | Build libraries these ways.
22 libraryWays :: Ways,
23 -- | Build RTS these ways.
24 rtsWays :: Ways,
25 -- | Build split objects.
26 splitObjects :: Predicate,
27 -- | Build dynamic GHC programs.
28 dynamicGhcPrograms :: Bool,
29 -- | Enable GHCi debugger.
30 ghciWithDebugger :: Bool,
31 -- | Build profiled GHC.
32 ghcProfiled :: Bool,
33 -- | Build GHC with debug information.
34 ghcDebugged :: Bool }