Add basic support for -0 libraries.
authorAndrey Mokhov <andrey.mokhov@gmail.com>
Wed, 9 Dec 2015 01:58:53 +0000 (01:58 +0000)
committerAndrey Mokhov <andrey.mokhov@gmail.com>
Wed, 9 Dec 2015 01:58:53 +0000 (01:58 +0000)
src/Rules.hs
src/Rules/Library.hs

index e615c64..2e2963f 100644 (file)
@@ -5,6 +5,7 @@ import Oracles
 import Rules.Package
 import Rules.Resources
 import Settings
+import Settings.Builders.GhcCabal
 
 -- generateTargets needs top-level build targets
 generateTargets :: Rules ()
@@ -21,9 +22,12 @@ generateTargets = action $ do
             ways        <- interpretPartial target getWays
             let ghciLib = buildPath -/- "HS" ++ libName <.> "o"
                 haddock = pkgHaddockFile pkg
-            libs <- forM ways $ \way -> do
+            libs <- fmap concat . forM ways $ \way -> do
                 extension <- libsuf way
-                return $ buildPath -/- "libHS" ++ libName <.> extension
+                let name = buildPath -/- "libHS" ++ libName
+                dll0 <- needDll0 stage pkg
+                return $ [ name <.> extension ]
+                      ++ [ name ++ "-0" <.> extension | dll0 ]
 
             return $  [ ghciLib | needGhciLib == "YES" && stage == Stage1 ]
                    ++ [ haddock | needHaddock          && stage == Stage1 ]
index d51e2ad..9e4f7d5 100644 (file)
@@ -15,6 +15,7 @@ buildPackageLibrary _ target @ (PartialTarget stage pkg) = do
 
     -- TODO: handle dynamic libraries
     matchBuildResult buildPath "a" ?> \a -> do
+
         removeFileIfExists a
         cSrcs <- cSources target
         hSrcs <- hSources target
@@ -35,7 +36,9 @@ buildPackageLibrary _ target @ (PartialTarget stage pkg) = do
                 return . map (splitPath -/-)
                        . filter (not . all (== '.')) $ contents
 
-        build $ fullTarget target Ar (cObjs ++ splitObjs) [a]
+        if "//*-0.*" ?== a
+        then build $ fullTarget target Ar [] [a]
+        else build $ fullTarget target Ar (cObjs ++ splitObjs) [a]
 
         synopsis <- interpretPartial target $ getPkgData Synopsis
         putSuccess $ "/--------\n| Successfully built package library '"