Pass way to buildPackageLibrary via Context, minor revision.
authorAndrey Mokhov <andrey.mokhov@gmail.com>
Tue, 16 Feb 2016 03:01:56 +0000 (03:01 +0000)
committerAndrey Mokhov <andrey.mokhov@gmail.com>
Tue, 16 Feb 2016 03:01:56 +0000 (03:01 +0000)
See #207.

src/Rules.hs
src/Rules/Documentation.hs
src/Rules/Library.hs
src/Way.hs

index a3d67cb..4592b4a 100644 (file)
@@ -64,16 +64,19 @@ packageRules = do
     let contexts        = liftM3 Context        allStages knownPackages allWays
         vanillaContexts = liftM2 vanillaContext allStages knownPackages
 
-    traverse_ (compilePackage           readPackageDb) contexts
-    traverse_ (buildPackageDependencies readPackageDb) vanillaContexts
+    for_ contexts $ mconcat
+        [ compilePackage readPackageDb
+        , buildPackageLibrary ]
+
+    for_ vanillaContexts $ mconcat
+        [ buildPackageData
+        , buildPackageDependencies readPackageDb
+        , buildPackageDocumentation
+        , generatePackageCode ]
 
     for_ allStages $ \stage ->
         for_ knownPackages $ \package -> do
             let context = vanillaContext stage package
-            buildPackageData                         context
-            buildPackageDocumentation                context
-            generatePackageCode                      context
-            buildPackageLibrary                      context
             buildProgram                             context
             registerPackage           writePackageDb context
 
index 848a3fa..e3b0e7d 100644 (file)
@@ -37,6 +37,7 @@ buildPackageDocumentation context @ (Context {..}) =
                 build $ Target context GhcCabalHsColour [cabalFile] []
 
             -- Build Haddock documentation
+            -- TODO: pass the correct way from Rules via Context
             let haddockWay = if dynamicGhcPrograms then dynamic else vanilla
             build $ Target (context {way = haddockWay}) Haddock srcs [file]
 
index 79b4952..d77d58e 100644 (file)
@@ -14,24 +14,21 @@ import Rules.Gmp
 import Settings
 import Target
 
--- TODO: Use way from Context, #207
 buildPackageLibrary :: Context -> Rules ()
 buildPackageLibrary context @ (Context {..}) = do
     let buildPath = targetPath stage package -/- "build"
 
     -- TODO: handle dynamic libraries
-    matchBuildResult buildPath "a" ?> \a -> do
-
+    buildPath <//> "*" ++ waySuffix way ++ ".a" %> \a -> do
         removeFileIfExists a
         cSrcs <- cSources context
         hSrcs <- hSources context
 
-        -- TODO: simplify handling of AutoApply.cmm
-        let w     = detectWay a -- TODO: eliminate differences below
-            cObjs = [ buildPath -/- src -<.> osuf w | src <- cSrcs
+        -- TODO: simplify handling of AutoApply.cmm, eliminate differences below
+        let cObjs = [ buildPath -/- src -<.> osuf way | src <- cSrcs
                     , not ("//AutoApply.cmm" ?== src) ]
-                 ++ [ src -<.> osuf w | src <- cSrcs, "//AutoApply.cmm" ?== src ]
-            hObjs = [ buildPath -/- src  <.> osuf w | src <- hSrcs ]
+                 ++ [ src -<.> osuf way | src <- cSrcs, "//AutoApply.cmm" ?== src ]
+            hObjs = [ buildPath -/- src  <.> osuf way | src <- hSrcs ]
 
         -- This will create split objects if required (we don't track them
         -- explicitly as this would needlessly bloat the Shake database).
index 668ed63..c393437 100644 (file)
@@ -6,8 +6,8 @@ module Way (
     threadedDebugProfiling, threadedDebugDynamic, threadedProfilingDynamic,
     threadedLoggingDynamic, debugProfiling, debugDynamic, loggingDynamic,
 
-    allWays, wayPrefix, hisuf, osuf, hcsuf, obootsuf, hibootsuf, ssuf, libsuf,
-    safeDetectWay, detectWay, matchBuildResult
+    allWays, wayPrefix, waySuffix, hisuf, osuf, hcsuf, obootsuf, hibootsuf, ssuf,
+    libsuf, safeDetectWay, detectWay, matchBuildResult
     ) where
 
 import Base hiding (unit)