Use correct ar for host/target (#356)
authorBen Gamari <ben@smart-cactus.org>
Mon, 10 Jul 2017 17:40:54 +0000 (13:40 -0400)
committerAndrey Mokhov <andrey.mokhov@gmail.com>
Mon, 10 Jul 2017 17:40:54 +0000 (18:40 +0100)
Previously we would always use the ar of the target; this is incorrect.

Fixes #350.

cfg/system.config.in
src/Builder.hs
src/Oracles/Path.hs
src/Rules/Gmp.hs
src/Rules/Libffi.hs
src/Rules/Library.hs
src/Settings/Builders/GhcCabal.hs
src/Util.hs

index 078e1ec..34ef7b9 100644 (file)
@@ -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@
index b2fbca3..7937319 100644 (file)
@@ -28,7 +28,7 @@ data GhcPkgMode = Init | Update deriving (Eq, Generic, Show)
 -- @GhcPkg Stage0@ is the bootstrapping @GhcPkg@.
 -- @GhcPkg Stage1@ is the one built in Stage0.
 data Builder = Alex
-             | Ar
+             | Ar Stage
              | DeriveConstants
              | Cc CcMode Stage
              | Configure FilePath
index a1c56f5..2ec2773 100644 (file)
@@ -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!
index a3e32d3..ee8eb82 100644 (file)
@@ -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
 
index 57f6263..bac9970 100644 (file)
@@ -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"
index 455c57c..b746279 100644 (file)
@@ -72,8 +72,8 @@ buildPackageLibrary context@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
index 9ddfe15..18816e1 100644 (file)
@@ -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="
index da12e21..944e8e5 100644 (file)
@@ -53,7 +53,7 @@ customBuild rs opts target@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