Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC
Commits:
-
c8238375
by Sylvain Henry at 2026-03-06T06:34:23-05:00
4 changed files:
Changes:
| ... | ... | @@ -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
|
| 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 |
| ... | ... | @@ -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
|
| ... | ... | @@ -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.
|