summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hadrian/doc/user-settings.md17
-rw-r--r--hadrian/src/Flavour/Type.hs21
-rw-r--r--hadrian/src/Settings/Builders/RunTest.hs2
-rw-r--r--hadrian/src/Settings/Flavours/Development.hs4
-rw-r--r--hadrian/src/Settings/Packages.hs10
5 files changed, 33 insertions, 21 deletions
diff --git a/hadrian/doc/user-settings.md b/hadrian/doc/user-settings.md
index 6e98d8a02a..795f877557 100644
--- a/hadrian/doc/user-settings.md
+++ b/hadrian/doc/user-settings.md
@@ -25,7 +25,7 @@ data Flavour = Flavour {
packages :: Stage -> Action [Package],
-- | Bignum backend: 'native', 'gmp', 'ffi', etc.
bignumBackend :: String,
- -- | Check bignum backend against native
+ -- | Check selected bignum backend against native backend
bignumCheck :: Bool,
-- | Build libraries these ways.
libraryWays :: Ways,
@@ -34,15 +34,20 @@ data Flavour = Flavour {
-- | Build dynamic GHC programs.
dynamicGhcPrograms :: Action Bool,
-- | Enable GHCi debugger.
- ghciWithDebugger :: Bool,
+ ghciWithDebugger :: Stage -- ^ stage of the /built/ compiler
+ -> Bool,
-- | Build profiled GHC.
- ghcProfiled :: Bool,
+ ghcProfiled :: Stage -- ^ stage of the /built/ compiler
+ -> Bool,
-- | Build GHC with the debug RTS.
- ghcDebugged :: Bool,
+ ghcDebugged :: Stage -- ^ stage of the /built/ compiler
+ -> Bool,
-- | Build GHC with debug assertions (-DDEBUG).
- ghcDebugAssertions :: Bool,
+ ghcDebugAssertions :: Stage -- ^ stage of the /built/ compiler
+ -> Bool,
-- | Build the GHC executable against the threaded runtime system.
- ghcThreaded :: Bool,
+ ghcThreaded :: Stage -- ^ stage of the /built/ compiler
+ -> Bool,
-- | Whether to build docs and which ones
-- (haddocks, user manual, haddock manual)
ghcDocs :: Action DocTargets }
diff --git a/hadrian/src/Flavour/Type.hs b/hadrian/src/Flavour/Type.hs
index 7718d63d7f..60021268fa 100644
--- a/hadrian/src/Flavour/Type.hs
+++ b/hadrian/src/Flavour/Type.hs
@@ -18,9 +18,9 @@ data Flavour = Flavour {
args :: Args,
-- | Build these packages.
packages :: Stage -> Action [Package],
- -- | 'native', 'gmp', 'ffi'.
+ -- | Bignum backend: 'native', 'gmp', 'ffi', etc.
bignumBackend :: String,
- -- | Check selected backend against native backend
+ -- | Check selected bignum backend against native backend
bignumCheck :: Bool,
-- | Build libraries these ways.
libraryWays :: Ways,
@@ -29,15 +29,20 @@ data Flavour = Flavour {
-- | Build dynamic GHC programs.
dynamicGhcPrograms :: Action Bool,
-- | Enable GHCi debugger.
- ghciWithDebugger :: Stage -> Bool,
+ ghciWithDebugger :: Stage -- ^ stage of the /built/ compiler
+ -> Bool,
-- | Build profiled GHC.
- ghcProfiled :: Stage -> Bool,
+ ghcProfiled :: Stage -- ^ stage of the /built/ compiler
+ -> Bool,
-- | Build GHC with the debug RTS.
- ghcDebugged :: Stage -> Bool,
- -- | Build GHC with debug assertions.
- ghcDebugAssertions :: Stage -> Bool,
+ ghcDebugged :: Stage -- ^ stage of the /built/ compiler
+ -> Bool,
+ -- | Build GHC with debug assertions (-DDEBUG).
+ ghcDebugAssertions :: Stage -- ^ stage of the /built/ compiler
+ -> Bool,
-- | Build the GHC executable against the threaded runtime system.
- ghcThreaded :: Stage -> Bool,
+ ghcThreaded :: Stage -- ^ stage of the /built/ compiler
+ -> Bool,
-- | Whether to build docs and which ones
-- (haddocks, user manual, haddock manual)
ghcDocs :: Action DocTargets }
diff --git a/hadrian/src/Settings/Builders/RunTest.hs b/hadrian/src/Settings/Builders/RunTest.hs
index e7935a3a33..f450a13f91 100644
--- a/hadrian/src/Settings/Builders/RunTest.hs
+++ b/hadrian/src/Settings/Builders/RunTest.hs
@@ -101,7 +101,7 @@ inTreeCompilerArgs stg = do
unregisterised <- flag GhcUnregisterised
tables_next_to_code <- flag TablesNextToCode
withSMP <- targetSupportsSMP
- debugAssertions <- ($ stg) . ghcDebugAssertions <$> flavour
+ debugAssertions <- ($ succStage stg) . ghcDebugAssertions <$> flavour
profiled <- ghcProfiled <$> flavour <*> pure stg
os <- setting HostOs
diff --git a/hadrian/src/Settings/Flavours/Development.hs b/hadrian/src/Settings/Flavours/Development.hs
index 715532e08a..ccc592cdc6 100644
--- a/hadrian/src/Settings/Flavours/Development.hs
+++ b/hadrian/src/Settings/Flavours/Development.hs
@@ -16,12 +16,12 @@ developmentFlavour ghcStage = defaultFlavour
, libraryWays = pure $ Set.fromList [vanilla]
, rtsWays = Set.fromList <$> mconcat [pure [vanilla, debug], targetSupportsThreadedRts ? pure [threaded, threadedDebug]]
, dynamicGhcPrograms = return False
- , ghcDebugAssertions = (>= Stage2) }
+ , ghcDebugAssertions = (== ghcStage) }
where
stageString Stage2 = "2"
stageString Stage1 = "1"
stageString Stage3 = "3"
- stageString s = error ("developmentFlavour not support for " ++ show s)
+ stageString s = error ("developmentFlavour not supported for " ++ show s)
developmentArgs :: Stage -> Args
developmentArgs ghcStage = do
diff --git a/hadrian/src/Settings/Packages.hs b/hadrian/src/Settings/Packages.hs
index e99e639eb8..587dae16e8 100644
--- a/hadrian/src/Settings/Packages.hs
+++ b/hadrian/src/Settings/Packages.hs
@@ -13,7 +13,6 @@ packageArgs :: Args
packageArgs = do
stage <- getStage
path <- getBuildPath
- root <- getBuildRoot
compilerPath <- expr $ buildPath (vanillaContext stage compiler)
let -- Do not bind the result to a Boolean: this forces the configure rule
@@ -29,7 +28,10 @@ packageArgs = do
cursesLibraryDir <- getSetting CursesLibDir
ffiIncludeDir <- getSetting FfiIncludeDir
ffiLibraryDir <- getSetting FfiLibDir
- debugAssertions <- ghcDebugAssertions <$> expr flavour
+ debugAssertions <- ( `ghcDebugAssertions` (succStage stage) ) <$> expr flavour
+ -- NB: in this function, "stage" is the stage of the compiler we are
+ -- using to build, but ghcDebugAssertions wants the stage of the compiler
+ -- we are building, which we get using succStage.
mconcat
--------------------------------- base ---------------------------------
@@ -52,7 +54,7 @@ packageArgs = do
[ builder Alex ? arg "--latin1"
, builder (Ghc CompileHs) ? mconcat
- [ debugAssertions stage ? arg "-DDEBUG"
+ [ debugAssertions ? arg "-DDEBUG"
, inputs ["**/GHC.hs", "**/GHC/Driver/Make.hs"] ? arg "-fprof-auto"
, input "**/Parser.hs" ?
@@ -83,7 +85,7 @@ packageArgs = do
, package ghc ? mconcat
[ builder Ghc ? mconcat
[ arg ("-I" ++ compilerPath)
- , debugAssertions stage ? arg "-DDEBUG" ]
+ , debugAssertions ? arg "-DDEBUG" ]
, builder (Cabal Flags) ? mconcat
[ andM [expr ghcWithInterpreter, notStage0] `cabalFlag` "internal-interpreter"