Sven Tennie pushed to branch wip/romes/hadrian-cross-stage2-rebase_SVEN_FIXED at Glasgow Haskell Compiler / GHC

Commits:

3 changed files:

Changes:

  • hadrian/src/Rules/Libffi.hs
    ... ... @@ -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].
    

  • hadrian/src/Rules/Test.hs
    ... ... @@ -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
    

  • hadrian/src/Settings/Default.hs
    ... ... @@ -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 ])