Sven Tennie pushed to branch wip/supersven/hadrian-cross-stage3 at Glasgow Haskell Compiler / GHC

Commits:

1 changed file:

Changes:

  • hadrian/src/Rules/Generate.hs
    ... ... @@ -483,24 +483,24 @@ bindistRules = do
    483 483
           ("distrib" -/- "configure.ac" <.> "in")
    
    484 484
           (root -/- stageString stage -/- "distrib" -/- "configure.ac")
    
    485 485
           $ mconcat
    
    486
    -    [ interpolateSetting "ConfiguredEmsdkVersion" EmsdkVersion
    
    487
    -    , interpolateVar "LeadingUnderscore" $ yesNo <$> getTarget stage tgtSymbolsHaveLeadingUnderscore
    
    488
    -    , interpolateSetting "LlvmMaxVersion" LlvmMaxVersion
    
    489
    -    , interpolateSetting "LlvmMinVersion" LlvmMinVersion
    
    490
    -    , interpolateVar "LlvmTarget" $ getTarget stage tgtLlvmTarget
    
    491
    -    , interpolateSetting "ProjectVersion" ProjectVersion
    
    492
    -    , interpolateVar "EnableDistroToolchain" $ interp (staged (lookupStageBuildConfig "settings-use-distro-mingw"))
    
    493
    -    , interpolateVar "TablesNextToCode" $ yesNo <$> getTarget stage tgtTablesNextToCode
    
    494
    -    , interpolateVar "TargetHasLibm" $ yesNo <$> getTarget stage tgtHasLibm
    
    495
    -    , interpolateVar "TargetPlatform" $ getTarget stage targetPlatformTriple
    
    496
    -    , interpolateVar "TargetWordBigEndian" $ getTarget stage isBigEndian
    
    497
    -    , interpolateVar "TargetWordSize" $ getTarget stage wordSize
    
    498
    -    , interpolateVar "Unregisterised" $ yesNo <$> getTarget stage tgtUnregisterised
    
    499
    -    , interpolateVar "UseLibdw" $ fmap yesNo $ interp $ staged (fmap (isJust . tgtRTSWithLibdw) . targetStage)
    
    500
    -    , interpolateVar "UseLibffiForAdjustors" $ yesNo <$> getTarget stage tgtUseLibffiForAdjustors
    
    501
    -    , interpolateVar "GhcWithSMP" $ yesNo <$> targetSupportsSMP stage
    
    502
    -    , crossStageInterps
    
    503
    -    ]
    
    486
    +      [ interpolateSetting "ConfiguredEmsdkVersion" EmsdkVersion
    
    487
    +      , interpolateVar "LeadingUnderscore" $ yesNo <$> getLibTarget stage tgtSymbolsHaveLeadingUnderscore
    
    488
    +      , interpolateSetting "LlvmMaxVersion" LlvmMaxVersion
    
    489
    +      , interpolateSetting "LlvmMinVersion" LlvmMinVersion
    
    490
    +      , interpolateVar "LlvmTarget" $ getLibTarget stage tgtLlvmTarget
    
    491
    +      , interpolateSetting "ProjectVersion" ProjectVersion
    
    492
    +      , interpolateVar "EnableDistroToolchain" $ interp (staged (lookupStageBuildConfig "settings-use-distro-mingw"))
    
    493
    +      , interpolateVar "TablesNextToCode" $ yesNo <$> getLibTarget stage tgtTablesNextToCode
    
    494
    +      , interpolateVar "TargetHasLibm" $ yesNo <$> getLibTarget stage tgtHasLibm
    
    495
    +      , interpolateVar "TargetPlatform" $ getLibTarget stage targetPlatformTriple
    
    496
    +      , interpolateVar "TargetWordBigEndian" $ getLibTarget stage isBigEndian
    
    497
    +      , interpolateVar "TargetWordSize" $ getLibTarget stage wordSize
    
    498
    +      , interpolateVar "Unregisterised" $ yesNo <$> getLibTarget stage tgtUnregisterised
    
    499
    +      , interpolateVar "UseLibdw" $ yesNo <$> getLibTarget stage (isJust . tgtRTSWithLibdw)
    
    500
    +      , interpolateVar "UseLibffiForAdjustors" $ yesNo <$> getLibTarget stage tgtUseLibffiForAdjustors
    
    501
    +      , interpolateVar "GhcWithSMP" $ yesNo <$> libStageSupportsSMP stage
    
    502
    +      , crossStageInterps
    
    503
    +      ]
    
    504 504
     
    
    505 505
       -- We can build two kinds of bindists: Regular Stage2 (including
    
    506 506
       -- cross-compilers) and fully cross-compiled Stage3. To avoid
    
    ... ... @@ -555,6 +555,13 @@ bindistRules = do
    555 555
       where
    
    556 556
         interp = interpretInContext (semiEmptyTarget Stage2)
    
    557 557
         getTarget stage = interp . queryTarget stage
    
    558
    +    getLibTarget executableStage f = do
    
    559
    +      isCross <- crossStage executableStage
    
    560
    +      getTarget (if isCross then succStage executableStage else executableStage) f
    
    561
    +    -- | 'targetSupportsSMP' lifted to the library stage (see 'getLibTarget').
    
    562
    +    libStageSupportsSMP stage = do
    
    563
    +      isCross <- crossStage stage
    
    564
    +      targetSupportsSMP (if isCross then succStage stage else stage)
    
    558 565
     
    
    559 566
     -- | Given a 'String' replace characters '.' and '-' by underscores ('_') so that
    
    560 567
     -- the resulting 'String' is a valid C preprocessor identifier.