diff --git a/.gitignore b/.gitignore index 5a8d0c4124d429f7a6d980e1de6c5a4677eaaf68..39bf855af36aee50ca84353e1d331fcb3024a4a6 100644 --- a/.gitignore +++ b/.gitignore @@ -167,7 +167,6 @@ _darcs/ /libraries/ghc-boot-th/ghc-boot-th.cabal /libraries/ghc-boot-th/ghc.mk /libraries/ghc-heap/ghc-heap.cabal -/libraries/ghc-prim/ghc-prim.cabal /libraries/ghci/GNUmakefile /libraries/ghci/ghci.cabal /libraries/ghci/ghc.mk diff --git a/hadrian/src/Rules/Generate.hs b/hadrian/src/Rules/Generate.hs index d774fd9b6ac268cb4a44cf3049e4afa5bda3bc9e..7a3046381aa61340b7bbbe72582855509e65198f 100644 --- a/hadrian/src/Rules/Generate.hs +++ b/hadrian/src/Rules/Generate.hs @@ -268,17 +268,6 @@ runInterpolations (Interpolations mk_substs) input = do subst = foldr (.) id [replace ("@"++k++"@") v | (k,v) <- substs] return (subst input) -toCabalBool :: Bool -> String -toCabalBool True = "True" -toCabalBool False = "False" - --- | Interpolate the given variable with the value of the given 'Flag', using --- Cabal's boolean syntax. -interpolateCabalFlag :: String -> Flag -> Interpolations -interpolateCabalFlag name flg = interpolateVar name $ do - val <- flag flg - return (toCabalBool val) - -- | Interpolate the given variable with the value of the given 'Setting'. interpolateSetting :: String -> Setting -> Interpolations interpolateSetting name settng = interpolateVar name $ setting settng @@ -290,31 +279,6 @@ projectVersion = mconcat , interpolateSetting "ProjectVersionMunged" ProjectVersionMunged ] -rtsCabalFlags :: Interpolations -rtsCabalFlags = mconcat - [ flag "CabalHaveLibdw" UseLibdw - , flag "CabalHaveLibm" UseLibm - , flag "CabalHaveLibrt" UseLibrt - , flag "CabalHaveLibdl" UseLibdl - , flag "CabalNeedLibpthread" UseLibpthread - , flag "CabalHaveLibbfd" UseLibbfd - , flag "CabalHaveLibNuma" UseLibnuma - , flag "CabalHaveLibZstd" UseLibzstd - , flag "CabalStaticLibZstd" StaticLibzstd - , flag "CabalNeedLibatomic" NeedLibatomic - , flag "CabalUseSystemLibFFI" UseSystemFfi - , targetFlag "CabalLibffiAdjustors" tgtUseLibffiForAdjustors - , targetFlag "CabalLeadingUnderscore" tgtSymbolsHaveLeadingUnderscore - ] - where - flag = interpolateCabalFlag - targetFlag name q = interpolateVar name $ do - val <- queryTargetTarget q - return (toCabalBool val) - -ghcPrimCabalFlags :: Interpolations -ghcPrimCabalFlags = interpolateCabalFlag "CabalNeedLibatomic" NeedLibatomic - packageVersions :: Interpolations packageVersions = foldMap f [ base, ghcPrim, compiler, ghc, cabal, templateHaskell, ghcCompact, array ] where @@ -347,8 +311,6 @@ templateRule outPath interps = do templateRules :: Rules () templateRules = do templateRule "compiler/ghc.cabal" $ projectVersion - templateRule "rts/rts.cabal" $ rtsCabalFlags - templateRule "libraries/ghc-prim/ghc-prim.cabal" $ ghcPrimCabalFlags templateRule "driver/ghci/ghci-wrapper.cabal" $ projectVersion templateRule "ghc/ghc-bin.cabal" $ projectVersion templateRule "utils/iserv/iserv.cabal" $ projectVersion diff --git a/hadrian/src/Settings/Packages.hs b/hadrian/src/Settings/Packages.hs index 9959df6170bba24d3cf5b739df251fc017d74670..1bc52a2438999af642473c850067fc2aec4b8f42 100644 --- a/hadrian/src/Settings/Packages.hs +++ b/hadrian/src/Settings/Packages.hs @@ -114,7 +114,7 @@ packageArgs = do -------------------------------- ghcPrim ------------------------------- , package ghcPrim ? mconcat - [ builder (Cabal Flags) ? arg "include-ghc-prim" + [ builder (Cabal Flags) ? flag NeedLibatomic `cabalFlag` "need-atomic" , builder (Cc CompileC) ? (not <$> flag CcLlvmBackend) ? input "**/cbits/atomic.c" ? arg "-Wno-sync-nand" ] @@ -401,8 +401,19 @@ rtsPackageArgs = package rts ? do , any (wayUnit Debug) rtsWays `cabalFlag` "debug" , any (wayUnit Dynamic) rtsWays `cabalFlag` "dynamic" , any (wayUnit Threaded) rtsWays `cabalFlag` "threaded" + , flag UseLibm `cabalFlag` "libm" + , flag UseLibrt `cabalFlag` "librt" + , flag UseLibdl `cabalFlag` "libdl" , useSystemFfi `cabalFlag` "use-system-libffi" , useLibffiForAdjustors `cabalFlag` "libffi-adjustors" + , flag UseLibpthread `cabalFlag` "need-pthread" + , flag UseLibbfd `cabalFlag` "libbfd" + , flag NeedLibatomic `cabalFlag` "need-atomic" + , flag UseLibdw `cabalFlag` "libdw" + , flag UseLibnuma `cabalFlag` "libnuma" + , flag UseLibzstd `cabalFlag` "libzstd" + , flag StaticLibzstd `cabalFlag` "static-libzstd" + , queryTargetTarget tgtSymbolsHaveLeadingUnderscore `cabalFlag` "leading-underscore" , Debug `wayUnit` way `cabalFlag` "find-ptr" ] , builder (Cabal Setup) ? mconcat diff --git a/libraries/ghc-prim/ghc-prim.cabal.in b/libraries/ghc-prim/ghc-prim.cabal similarity index 99% rename from libraries/ghc-prim/ghc-prim.cabal.in rename to libraries/ghc-prim/ghc-prim.cabal index 004ab2ee6613d269403cb51ddf8842f3fa0c2136..345d91265c79b2258effca19f62f7eb6c61bca0b 100644 --- a/libraries/ghc-prim/ghc-prim.cabal.in +++ b/libraries/ghc-prim/ghc-prim.cabal @@ -28,7 +28,7 @@ custom-setup setup-depends: base >= 4 && < 5, process, filepath, directory, Cabal >= 1.23 && < 3.9 flag need-atomic - default: @CabalNeedLibatomic@ + default: False Library default-language: Haskell2010 diff --git a/rts/.gitignore b/rts/.gitignore index 657baa7c178508386d887f6b7b77006b16734c76..179d62d55cf747556cd14d1abaa03288c691bb85 100644 --- a/rts/.gitignore +++ b/rts/.gitignore @@ -2,8 +2,6 @@ /dist/ /dist-*/ -/rts.cabal - /include/ghcversion.h /package.conf.inplace diff --git a/rts/rts.cabal.in b/rts/rts.cabal similarity index 98% rename from rts/rts.cabal.in rename to rts/rts.cabal index 2ae39793256e3fa83ed21a24a7d26b9a2a4caa24..73b39bd7ca3272630eb8b080050114cecb585c12 100644 --- a/rts/rts.cabal.in +++ b/rts/rts.cabal @@ -29,31 +29,31 @@ source-repository head subdir: rts flag libm - default: @CabalHaveLibm@ + default: False flag librt - default: @CabalHaveLibrt@ + default: False flag libdl - default: @CabalHaveLibdl@ + default: False flag use-system-libffi - default: @CabalUseSystemLibFFI@ + default: False flag libffi-adjustors - default: @CabalLibffiAdjustors@ + default: False flag need-pthread - default: @CabalNeedLibpthread@ + default: False flag libbfd - default: @CabalHaveLibbfd@ + default: False flag need-atomic - default: @CabalNeedLibatomic@ + default: False flag libdw - default: @CabalHaveLibdw@ + default: False flag libnuma - default: @CabalHaveLibNuma@ + default: False flag libzstd - default: @CabalHaveLibZstd@ + default: False flag static-libzstd - default: @CabalStaticLibZstd@ + default: False flag leading-underscore - default: @CabalLeadingUnderscore@ + default: False flag smp default: True flag find-ptr