Use Cabal directly in place of ghc-cabal + make build root configurable (#531)
[hadrian.git] / src / Settings / Builders / Cc.hs
index 38a1665..c78a19d 100644 (file)
@@ -1,24 +1,28 @@
 module Settings.Builders.Cc (ccBuilderArgs) where
 
+import Hadrian.Haskell.Cabal.PackageData as PD
 import Settings.Builders.Common
 
 ccBuilderArgs :: Args
-ccBuilderArgs = builder Cc ? mconcat
-    [ append =<< getPkgDataList CcArgs
-    , argSettingList . ConfCcArgs =<< getStage
-    , cIncludeArgs
+ccBuilderArgs = do
+    way <- getWay
+    builder Cc ? mconcat
+        [ getPackageData PD.ccOpts
+        , getStagedSettingList ConfCcArgs
 
-    , builder (Cc CompileC) ? mconcat [ arg "-Werror"
-                                      -- mk/warning.mk:
-                                      --  SRC_CC_OPTS     += -Wall $(WERROR)
-                                      , arg "-c", arg =<< getInput
-                                      , arg "-o", arg =<< getOutput ]
+        , builder (Cc CompileC) ? mconcat
+            [ arg "-Wall"
+            , cIncludeArgs
+            , Dynamic `wayUnit` way ? pure [ "-fPIC", "-DDYNAMIC" ]
+            , arg "-c", arg =<< getInput
+            , arg "-o", arg =<< getOutput ]
 
-    , builder (Cc FindCDependencies) ? do
-        output <- getOutput
-        mconcat [ arg "-E"
-                , arg "-MM", arg "-MG"
-                , arg "-MF", arg output
-                , arg "-MT", arg $ dropExtension output -<.> "o"
-                , arg "-x", arg "c"
-                , arg =<< getInput ] ]
+        , builder (Cc FindCDependencies) ? do
+            output <- getOutput
+            mconcat [ arg "-E"
+                    , arg "-MM", arg "-MG"
+                    , arg "-MF", arg output
+                    , arg "-MT", arg $ dropExtension output -<.> "o"
+                    , cIncludeArgs
+                    , arg "-x", arg "c"
+                    , arg =<< getInput ] ]