Sven Tennie pushed to branch wip/romes/hadrian-cross-stage2-rebase_SVEN_FIXED at Glasgow Haskell Compiler / GHC
Commits:
-
4a44d00d
by Sven Tennie at 2025-10-05T18:45:50+02:00
3 changed files:
Changes:
| ... | ... | @@ -136,17 +136,21 @@ configureEnvironment stage@Stage1 = do |
| 136 | 136 | [ cArgs
|
| 137 | 137 | , getStagedCCFlags ]
|
| 138 | 138 | ldFlags <- interpretInContext context ldArgs
|
| 139 | - sequence [ builderEnvironment "CC" $ Cc CompileC stage
|
|
| 140 | - , builderEnvironment "CXX" $ Cc CompileC stage
|
|
| 141 | - , builderEnvironment "AR" (Ar Unpack stage)
|
|
| 142 | - -- , builderEnvironment "LD" (Ld stage)
|
|
| 143 | - , builderEnvironment "NM" (Nm stage)
|
|
| 144 | - , builderEnvironment "RANLIB" (Ranlib stage)
|
|
| 145 | - , remBuilderEnvironment "OBJDUMP"
|
|
| 146 | - , remBuilderEnvironment "STRIP"
|
|
| 147 | - , remBuilderEnvironment "LD"
|
|
| 148 | - , return . AddEnv "CFLAGS" $ unwords cFlags ++ " -w"
|
|
| 149 | - , return . AddEnv "LDFLAGS" $ unwords ldFlags ++ " -w" ]
|
|
| 139 | + winTarget <- isWinTarget (succStage stage)
|
|
| 140 | + sequence $ [ builderEnvironment "CC" $ Cc CompileC stage
|
|
| 141 | + , builderEnvironment "CXX" $ Cc CompileC stage
|
|
| 142 | + , builderEnvironment "AR" (Ar Unpack stage)
|
|
| 143 | + , builderEnvironment "NM" (Nm stage)
|
|
| 144 | + , builderEnvironment "RANLIB" (Ranlib stage)
|
|
| 145 | + , remBuilderEnvironment "OBJDUMP"
|
|
| 146 | + , remBuilderEnvironment "STRIP"
|
|
| 147 | + , return . AddEnv "CFLAGS" $ unwords cFlags ++ " -w"
|
|
| 148 | + , return . AddEnv "LDFLAGS" $ unwords ldFlags ++ " -w" ]
|
|
| 149 | + ++ (if winTarget then
|
|
| 150 | + -- TODO: Use staged LD for winTarget. This is only a hack because the wrong staged LD was provided.
|
|
| 151 | + [remBuilderEnvironment "LD"]
|
|
| 152 | + else
|
|
| 153 | + [builderEnvironment "LD" (Ld stage)])
|
|
| 150 | 154 | |
| 151 | 155 | configureEnvironment stage = do
|
| 152 | 156 | context <- libffiContext stage
|
| ... | ... | @@ -154,15 +158,19 @@ configureEnvironment stage = do |
| 154 | 158 | [ cArgs
|
| 155 | 159 | , getStagedCCFlags ]
|
| 156 | 160 | ldFlags <- interpretInContext context ldArgs
|
| 157 | - sequence [ builderEnvironment "CC" $ Cc CompileC stage
|
|
| 158 | - , builderEnvironment "CXX" $ Cc CompileC stage
|
|
| 159 | - , builderEnvironment "AR" (Ar Unpack stage)
|
|
| 160 | - , builderEnvironment "NM" (Nm stage)
|
|
| 161 | - , builderEnvironment "RANLIB" (Ranlib stage)
|
|
| 162 | - -- TODO: Staged LD for mingw is wrong. Uses clang instead of the provided $LD
|
|
| 163 | --- , builderEnvironment "LD" (Ld stage)
|
|
| 164 | - , return . AddEnv "CFLAGS" $ unwords cFlags ++ " -w"
|
|
| 165 | - , return . AddEnv "LDFLAGS" $ unwords ldFlags ++ " -w" ]
|
|
| 161 | + winTarget <- isWinTarget stage
|
|
| 162 | + sequence $ [ builderEnvironment "CC" $ Cc CompileC stage
|
|
| 163 | + , builderEnvironment "CXX" $ Cc CompileC stage
|
|
| 164 | + , builderEnvironment "AR" (Ar Unpack stage)
|
|
| 165 | + , builderEnvironment "NM" (Nm stage)
|
|
| 166 | + , builderEnvironment "RANLIB" (Ranlib stage)
|
|
| 167 | + , return . AddEnv "CFLAGS" $ unwords cFlags ++ " -w"
|
|
| 168 | + , return . AddEnv "LDFLAGS" $ unwords ldFlags ++ " -w" ]
|
|
| 169 | + ++ (if winTarget then
|
|
| 170 | + -- TODO: We should use the staged LD here. Unfortunately, that differs from what's expected via $LD.
|
|
| 171 | + []
|
|
| 172 | + else
|
|
| 173 | + [builderEnvironment "LD" (Ld stage)])
|
|
| 166 | 174 | |
| 167 | 175 | -- Need the libffi archive and `trackAllow` all files in the build directory.
|
| 168 | 176 | -- See [Libffi indicating inputs].
|
| ... | ... | @@ -317,8 +317,8 @@ timeoutProgBuilder = do |
| 317 | 317 | needTestsuitePackages :: Stage -> Action ()
|
| 318 | 318 | needTestsuitePackages stg = do
|
| 319 | 319 | allpkgs <- packages <$> flavour
|
| 320 | - -- We need the libraries of the successor stage
|
|
| 321 | - libpkgs <- map (Stage1,) . filter isLibrary <$> allpkgs (succStage stg)
|
|
| 320 | + -- TODO: This used to force the packages to Stage1. Check if the tuple dance is still useful now.
|
|
| 321 | + libpkgs <- map (stg,) . filter isLibrary <$> allpkgs stg
|
|
| 322 | 322 | -- And the executables of the current stage
|
| 323 | 323 | exepkgs <- map (stg,) . filter isProgram <$> allpkgs stg
|
| 324 | 324 | -- Don't require lib:ghc or lib:cabal when testing the stage1 compiler
|
| ... | ... | @@ -53,8 +53,8 @@ import Settings.Builders.Win32Tarballs |
| 53 | 53 | defaultPackages :: Stage -> Action [Package]
|
| 54 | 54 | defaultPackages (Stage0 GlobalLibs) = stageBootPackages
|
| 55 | 55 | defaultPackages (Stage0 InTreeLibs) = stage0Packages
|
| 56 | -defaultPackages Stage1 = stage1Packages
|
|
| 57 | -defaultPackages Stage2 = stage2Packages
|
|
| 56 | +defaultPackages Stage1 = stagedPackages Stage1
|
|
| 57 | +defaultPackages Stage2 = stagedPackages Stage2
|
|
| 58 | 58 | defaultPackages Stage3 = return []
|
| 59 | 59 | |
| 60 | 60 | -- | Default bignum backend.
|
| ... | ... | @@ -120,8 +120,8 @@ stage0Packages = do |
| 120 | 120 | ++ [ timeout | windowsHost ]
|
| 121 | 121 | |
| 122 | 122 | -- | Packages built in 'Stage1' by default. You can change this in "UserSettings".
|
| 123 | -stage1Packages :: Action [Package]
|
|
| 124 | -stage1Packages = do
|
|
| 123 | +stagedPackages :: Stage -> Action [Package]
|
|
| 124 | +stagedPackages stage = do
|
|
| 125 | 125 | let good_stage0_package p
|
| 126 | 126 | -- we only keep libraries for some reason
|
| 127 | 127 | | not (isLibrary p) = False
|
| ... | ... | @@ -135,7 +135,7 @@ stage1Packages = do |
| 135 | 135 | |
| 136 | 136 | libraries0 <- filter good_stage0_package <$> stage0Packages
|
| 137 | 137 | cross <- flag CrossCompiling
|
| 138 | - winTarget <- isWinTarget Stage1
|
|
| 138 | + winTarget <- isWinTarget stage
|
|
| 139 | 139 | |
| 140 | 140 | let when c xs = if c then xs else mempty
|
| 141 | 141 | |
| ... | ... | @@ -186,10 +186,6 @@ stage1Packages = do |
| 186 | 186 | ]
|
| 187 | 187 | ]
|
| 188 | 188 | |
| 189 | --- | Packages built in 'Stage2' by default. You can change this in "UserSettings".
|
|
| 190 | -stage2Packages :: Action [Package]
|
|
| 191 | -stage2Packages = stage1Packages
|
|
| 192 | - |
|
| 193 | 189 | -- | Packages that are built only for the testsuite.
|
| 194 | 190 | testsuitePackages :: Action [Package]
|
| 195 | 191 | testsuitePackages = return ([ timeout | windowsHost ] ++ [ checkPpr, checkExact, countDeps, lintCodes, ghcConfig, dumpDecls ])
|