diff options
-rw-r--r-- | hadrian/doc/user-settings.md | 17 | ||||
-rw-r--r-- | hadrian/src/Flavour/Type.hs | 21 | ||||
-rw-r--r-- | hadrian/src/Settings/Builders/RunTest.hs | 2 | ||||
-rw-r--r-- | hadrian/src/Settings/Flavours/Development.hs | 4 | ||||
-rw-r--r-- | hadrian/src/Settings/Packages.hs | 10 |
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" |