[commit: ghc] wip/nfs-locking: Use correct ar for host/target (#356) (b7550b2)

git at git.haskell.org git at git.haskell.org
Fri Oct 27 00:34:05 UTC 2017


Repository : ssh://git@git.haskell.org/ghc

On branch  : wip/nfs-locking
Link       : http://ghc.haskell.org/trac/ghc/changeset/b7550b2bdbd148e80e3d5b06419549bcb7ca92ee/ghc

>---------------------------------------------------------------

commit b7550b2bdbd148e80e3d5b06419549bcb7ca92ee
Author: Ben Gamari <ben at smart-cactus.org>
Date:   Mon Jul 10 13:40:54 2017 -0400

    Use correct ar for host/target (#356)
    
    Previously we would always use the ar of the target; this is incorrect.
    
    Fixes #350.


>---------------------------------------------------------------

b7550b2bdbd148e80e3d5b06419549bcb7ca92ee
 cfg/system.config.in              | 1 +
 src/Builder.hs                    | 2 +-
 src/Oracles/Path.hs               | 3 ++-
 src/Rules/Gmp.hs                  | 4 ++--
 src/Rules/Libffi.hs               | 2 +-
 src/Rules/Library.hs              | 4 ++--
 src/Settings/Builders/GhcCabal.hs | 4 ++--
 src/Util.hs                       | 2 +-
 8 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/cfg/system.config.in b/cfg/system.config.in
index 078e1ec..34ef7b9 100644
--- a/cfg/system.config.in
+++ b/cfg/system.config.in
@@ -16,6 +16,7 @@ make           = @MakeCmd@
 nm             = @NmCmd@
 objdump        = @ObjdumpCmd@
 ranlib         = @REAL_RANLIB_CMD@
+system-ar      = @AR_STAGE0@
 system-cc      = @CC_STAGE0@
 system-ghc     = @WithGhc@
 system-ghc-pkg = @GhcPkgCmd@
diff --git a/src/Builder.hs b/src/Builder.hs
index b2fbca3..7937319 100644
--- a/src/Builder.hs
+++ b/src/Builder.hs
@@ -28,7 +28,7 @@ data GhcPkgMode = Init | Update deriving (Eq, Generic, Show)
 -- @GhcPkg Stage0@ is the bootstrapping @GhcPkg at .
 -- @GhcPkg Stage1@ is the one built in Stage0.
 data Builder = Alex
-             | Ar
+             | Ar Stage
              | DeriveConstants
              | Cc CcMode Stage
              | Configure FilePath
diff --git a/src/Oracles/Path.hs b/src/Oracles/Path.hs
index a1c56f5..2ec2773 100644
--- a/src/Oracles/Path.hs
+++ b/src/Oracles/Path.hs
@@ -24,7 +24,8 @@ getTopDirectory = lift topDirectory
 systemBuilderPath :: Builder -> Action FilePath
 systemBuilderPath builder = case builder of
     Alex            -> fromKey "alex"
-    Ar              -> fromKey "ar"
+    Ar Stage0       -> fromKey "system-ar"
+    Ar _            -> fromKey "ar"
     Cc  _  Stage0   -> fromKey "system-cc"
     Cc  _  _        -> fromKey "cc"
     -- We can't ask configure for the path to configure!
diff --git a/src/Rules/Gmp.hs b/src/Rules/Gmp.hs
index a3e32d3..ee8eb82 100644
--- a/src/Rules/Gmp.hs
+++ b/src/Rules/Gmp.hs
@@ -25,7 +25,7 @@ gmpMakefile = gmpBuildPath -/- "Makefile"
 
 configureEnvironment :: Action [CmdOption]
 configureEnvironment = sequence [ builderEnvironment "CC" $ Cc CompileC Stage1
-                                , builderEnvironment "AR" Ar
+                                , builderEnvironment "AR" (Ar Stage1)
                                 , builderEnvironment "NM" Nm ]
 
 gmpRules :: Rules ()
@@ -43,7 +43,7 @@ gmpRules = do
             putBuild "| No GMP library/framework detected; in tree GMP will be built"
             need [gmpLibrary]
             createDirectory gmpObjects
-            build $ Target gmpContext Ar [gmpLibrary] [gmpObjects]
+            build $ Target gmpContext (Ar Stage1) [gmpLibrary] [gmpObjects]
             copyFile (gmpBuildPath -/- "gmp.h") header
             copyFile (gmpBuildPath -/- "gmp.h") gmpLibraryInTreeH
 
diff --git a/src/Rules/Libffi.hs b/src/Rules/Libffi.hs
index 57f6263..bac9970 100644
--- a/src/Rules/Libffi.hs
+++ b/src/Rules/Libffi.hs
@@ -31,7 +31,7 @@ configureEnvironment = do
     sequence [ builderEnvironment "CC" $ Cc CompileC Stage1
              , builderEnvironment "CXX" $ Cc CompileC Stage1
              , builderEnvironment "LD" Ld
-             , builderEnvironment "AR" Ar
+             , builderEnvironment "AR" (Ar Stage1)
              , builderEnvironment "NM" Nm
              , builderEnvironment "RANLIB" Ranlib
              , return . AddEnv  "CFLAGS" $ unwords  cFlags ++ " -w"
diff --git a/src/Rules/Library.hs b/src/Rules/Library.hs
index 455c57c..b746279 100644
--- a/src/Rules/Library.hs
+++ b/src/Rules/Library.hs
@@ -72,8 +72,8 @@ buildPackageLibrary context at Context {..} = do
 
         asuf <- libsuf way
         let isLib0 = ("//*-0" ++ asuf) ?== a
-        if isLib0 then build $ Target context Ar []   [a] -- TODO: Scan for dlls
-                  else build $ Target context Ar objs [a]
+        if isLib0 then build $ Target context (Ar stage) []   [a] -- TODO: Scan for dlls
+                  else build $ Target context (Ar stage) objs [a]
 
         synopsis <- interpretInContext context $ getPkgData Synopsis
         unless isLib0 . putSuccess $ renderLibrary
diff --git a/src/Settings/Builders/GhcCabal.hs b/src/Settings/Builders/GhcCabal.hs
index 9ddfe15..18816e1 100644
--- a/src/Settings/Builders/GhcCabal.hs
+++ b/src/Settings/Builders/GhcCabal.hs
@@ -25,7 +25,7 @@ ghcCabalBuilderArgs = builder GhcCabal ? do
             , packageConstraints
             , withStaged $ Cc CompileC
             , notStage0 ? with Ld
-            , with Ar
+            , withStaged Ar
             , with Alex
             , with Happy
             , verbosity < Chatty ? append [ "-v0", "--configure-option=--quiet"
@@ -91,7 +91,7 @@ cppArgs = arg $ "-I" ++ generatedPath
 
 withBuilderKey :: Builder -> String
 withBuilderKey b = case b of
-    Ar         -> "--with-ar="
+    Ar _       -> "--with-ar="
     Ld         -> "--with-ld="
     Cc  _ _    -> "--with-gcc="
     Ghc _ _    -> "--with-ghc="
diff --git a/src/Util.hs b/src/Util.hs
index da12e21..944e8e5 100644
--- a/src/Util.hs
+++ b/src/Util.hs
@@ -53,7 +53,7 @@ customBuild rs opts target at Target {..} = do
     withResources rs $ do
         putInfo target
         quietlyUnlessVerbose $ case builder of
-            Ar -> do
+            Ar _ -> do
                 output <- interpret target getOutput
                 if "//*.a" ?== output
                 then arCmd path argList



More information about the ghc-commits mailing list