summaryrefslogtreecommitdiff
path: root/hadrian/src/Settings/Builders/Cc.hs
diff options
context:
space:
mode:
Diffstat (limited to 'hadrian/src/Settings/Builders/Cc.hs')
-rw-r--r--hadrian/src/Settings/Builders/Cc.hs26
1 files changed, 26 insertions, 0 deletions
diff --git a/hadrian/src/Settings/Builders/Cc.hs b/hadrian/src/Settings/Builders/Cc.hs
new file mode 100644
index 0000000000..70d043f76d
--- /dev/null
+++ b/hadrian/src/Settings/Builders/Cc.hs
@@ -0,0 +1,26 @@
+module Settings.Builders.Cc (ccBuilderArgs) where
+
+import Settings.Builders.Common
+
+ccBuilderArgs :: Args
+ccBuilderArgs = do
+ way <- getWay
+ builder Cc ? mconcat
+ [ getPkgDataList CcArgs
+ , getStagedSettingList ConfCcArgs
+ , cIncludeArgs
+
+ , builder (Cc CompileC) ? mconcat
+ [ pure ["-Wall", "-Werror"]
+ , 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 ] ]