Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC

Commits:

4 changed files:

Changes:

  • hadrian/README.md
    ... ... @@ -101,7 +101,9 @@ Stage2 GHC.
    101 101
     
    
    102 102
     * `--skip-depends`: skips rebuilding Haskell module dependency files.
    
    103 103
     
    
    104
    -* `--bignum={native,gmp,check-gmp,ffi}`: choose which bignum implementation to use. The default is `gmp`.
    
    104
    +* `--bignum={native,gmp,check-gmp,ffi}`: **Deprecated.** Use the `+native_bignum` flavour
    
    105
    +  transformer instead (e.g. `--flavour=default+native_bignum`). When building for the
    
    106
    +  JavaScript target, the native bignum backend is enabled automatically.
    
    105 107
     
    
    106 108
     * `--color` and `--no-color`: choose whether to use colors when printing build
    
    107 109
     progress info. By default, Hadrian tries to determine if the terminal supports
    

  • hadrian/src/CommandLine.hs
    1 1
     module CommandLine (
    
    2 2
         optDescrs, cmdLineArgsMap, cmdFlavour, lookupFreeze1, lookupFreeze2, lookupSkipDepends,
    
    3
    +    lookupBignum,
    
    3 4
         cmdBignum, cmdBignumCheck, cmdProgressInfo, cmdCompleteSetting,
    
    4 5
         cmdDocsArgs, cmdUnitIdHash, lookupBuildRoot, TestArgs(..), TestSpeed(..), defaultTestArgs,
    
    5 6
         cmdPrefix, DocArgs(..), defaultDocArgs
    
    ... ... @@ -389,6 +390,9 @@ lookupFreeze2 = freeze2 . lookupExtra defaultCommandLineArgs
    389 390
     lookupSkipDepends :: Map.HashMap TypeRep Dynamic -> Bool
    
    390 391
     lookupSkipDepends = skipDepends . lookupExtra defaultCommandLineArgs
    
    391 392
     
    
    393
    +lookupBignum :: Map.HashMap TypeRep Dynamic -> Maybe String
    
    394
    +lookupBignum = bignum . lookupExtra defaultCommandLineArgs
    
    395
    +
    
    392 396
     cmdUnitIdHash :: Action Bool
    
    393 397
     cmdUnitIdHash = unitIdHash <$> cmdLineArgs
    
    394 398
     
    

  • hadrian/src/Main.hs
    ... ... @@ -34,6 +34,13 @@ main = do
    34 34
         -- Provide access to command line arguments and some user settings through
    
    35 35
         -- Shake's type-indexed map 'shakeExtra'.
    
    36 36
         argsMap <- CommandLine.cmdLineArgsMap
    
    37
    +    case CommandLine.lookupBignum argsMap of
    
    38
    +      Just _ -> hPutStrLn stderr $ unlines
    
    39
    +        [ "Warning: --bignum is deprecated."
    
    40
    +        , "  Use the '+native_bignum' flavour transformer instead (e.g. --flavour=default+native_bignum)."
    
    41
    +        , "  When building for the JavaScript target, native bignum is now enabled automatically."
    
    42
    +        ]
    
    43
    +      Nothing -> return ()
    
    37 44
         let extra = insertExtra UserSettings.buildProgressColour
    
    38 45
                   $ insertExtra UserSettings.successColour
    
    39 46
                   $ argsMap
    

  • hadrian/src/Settings.hs
    ... ... @@ -30,6 +30,7 @@ import Settings.Flavours.Release
    30 30
     import Hadrian.Oracles.TextFile
    
    31 31
     import GHC.Toolchain.Target
    
    32 32
     import GHC.Platform.ArchOS
    
    33
    +import Oracles.Setting (isJsTarget)
    
    33 34
     
    
    34 35
     getExtraArgs :: Args
    
    35 36
     getExtraArgs = expr flavour >>= extraArgs
    
    ... ... @@ -44,9 +45,7 @@ getRtsWays :: Ways
    44 45
     getRtsWays = expr flavour >>= rtsWays
    
    45 46
     
    
    46 47
     getBignumBackend :: Expr String
    
    47
    -getBignumBackend = expr $ cmdBignum >>= \case
    
    48
    -   Nothing -> bignumBackend <$> flavour
    
    49
    -   Just b  -> pure b
    
    48
    +getBignumBackend = bignumBackend <$> expr flavour
    
    50 49
     
    
    51 50
     getBignumCheck :: Expr Bool
    
    52 51
     getBignumCheck = expr $ cmdBignum >>= \case
    
    ... ... @@ -90,9 +89,17 @@ flavour = do
    90 89
           $ "failed to apply key-value settings:\n\t" ++ unlines (map (" - " ++) settingErrs) ++
    
    91 90
             "\t   Entries should look something like \"stage1.containers.ghc.hs.opts += -Werror\""
    
    92 91
     
    
    92
    +    -- Handle --bignum (deprecated) and JS auto-detection
    
    93
    +    bignumTweak <- cmdBignum >>= \case
    
    94
    +        Just "native"  -> return useNativeBignum
    
    95
    +        Just b         -> return $ \f -> f { bignumBackend = b }
    
    96
    +        Nothing        -> do
    
    97
    +          js <- isJsTarget
    
    98
    +          return $ if js then useNativeBignum else id
    
    99
    +
    
    93 100
         case parseFlavour flavours flavourTransformers flavourName of
    
    94 101
           Left err -> fail err
    
    95
    -      Right f -> return $ flagsTweak (tweak f)
    
    102
    +      Right f -> return $ bignumTweak (flagsTweak (tweak f))
    
    96 103
     
    
    97 104
     -- TODO: switch to Set Package as the order of packages should not matter?
    
    98 105
     -- Otherwise we have to keep remembering to sort packages from time to time.