Use Cabal directly in place of ghc-cabal + make build root configurable (#531)
[hadrian.git] / src / Settings / Builders / Cc.hs
index 36a172e..c78a19d 100644 (file)
@@ -1,45 +1,28 @@
 module Settings.Builders.Cc (ccBuilderArgs) where
 
-import Base
-import Oracles.Config.Setting
-import Oracles.PackageData
-import Predicate
+import Hadrian.Haskell.Cabal.PackageData as PD
 import Settings.Builders.Common
-import Settings
 
--- TODO: handle custom $1_$2_MKDEPENDC_OPTS and
 ccBuilderArgs :: Args
-ccBuilderArgs = mconcat
-    [ builder (Cc CompileC) ?
-        mconcat [ commonCcArgs
-                , arg "-c", arg =<< getInput
-                , arg "-o", arg =<< getOutput ]
+ccBuilderArgs = do
+    way <- getWay
+    builder Cc ? mconcat
+        [ getPackageData PD.ccOpts
+        , getStagedSettingList ConfCcArgs
 
-    , builder (Cc FindCDependencies) ? do
-        output <- getOutput
-        mconcat [ arg "-E"
-                , arg "-MM"
-                , commonCcArgs
-                , arg "-MF"
-                , arg output
-                , arg "-MT"
-                , arg $ dropExtension output -<.> "o"
-                , arg "-x"
-                , arg "c"
-                , arg =<< getInput ]
+        , builder (Cc CompileC) ? mconcat
+            [ arg "-Wall"
+            , cIncludeArgs
+            , Dynamic `wayUnit` way ? pure [ "-fPIC", "-DDYNAMIC" ]
+            , arg "-c", arg =<< getInput
+            , arg "-o", arg =<< getOutput ]
 
-    , builder (Cc FindMissingInclude) ? do
-        mconcat [ arg "-E"
-                , arg "-MM"
-                , arg "-MG"
-                , commonCcArgs
-                , arg "-MF"
-                , arg =<< getOutput
-                , arg =<< getInput
-                ]
-    ]
-
-commonCcArgs :: Args
-commonCcArgs = mconcat [ append =<< getPkgDataList CcArgs
-                       , append =<< getSettingList . ConfCcArgs =<< getStage
-                       , cIncludeArgs ]
+        , 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 ] ]