summaryrefslogtreecommitdiff
path: root/hadrian/src/Settings/Builders/Common.hs
diff options
context:
space:
mode:
Diffstat (limited to 'hadrian/src/Settings/Builders/Common.hs')
-rw-r--r--hadrian/src/Settings/Builders/Common.hs59
1 files changed, 59 insertions, 0 deletions
diff --git a/hadrian/src/Settings/Builders/Common.hs b/hadrian/src/Settings/Builders/Common.hs
new file mode 100644
index 0000000000..5ca594e645
--- /dev/null
+++ b/hadrian/src/Settings/Builders/Common.hs
@@ -0,0 +1,59 @@
+module Settings.Builders.Common (
+ module Base,
+ module Expression,
+ module Oracles.Flag,
+ module Oracles.PackageData,
+ module Oracles.Setting,
+ module Settings,
+ module UserSettings,
+ cIncludeArgs, ldArgs, cArgs, cWarnings, bootPackageDatabaseArgs
+ ) where
+
+import Base
+import Expression
+import Oracles.Flag
+import Oracles.PackageData
+import Oracles.Setting
+import Settings
+import UserSettings
+
+cIncludeArgs :: Args
+cIncludeArgs = do
+ pkg <- getPackage
+ root <- getBuildRoot
+ path <- getBuildPath
+ incDirs <- getPkgDataList IncludeDirs
+ depDirs <- getPkgDataList DepIncludeDirs
+ cross <- expr crossCompiling
+ compilerOrGhc <- package compiler ||^ package ghc
+ mconcat [ not (cross && compilerOrGhc) ? arg "-Iincludes"
+ , arg $ "-I" ++ root -/- generatedDir
+ , arg $ "-I" ++ path
+ , pure [ "-I" ++ pkgPath pkg -/- dir | dir <- incDirs ]
+ , pure [ "-I" ++ unifyPath dir | dir <- depDirs ] ]
+
+ldArgs :: Args
+ldArgs = mempty
+
+cArgs :: Args
+cArgs = mempty
+
+-- TODO: should be in a different file
+cWarnings :: Args
+cWarnings = do
+ let gccGe46 = notM (flag GccIsClang ||^ flag GccLt46)
+ mconcat [ arg "-Wall"
+ , flag GccIsClang ? arg "-Wno-unknown-pragmas"
+ , gccGe46 ? notM windowsHost ? arg "-Werror=unused-but-set-variable"
+ , gccGe46 ? arg "-Wno-error=inline" ]
+
+bootPackageDatabaseArgs :: Args
+bootPackageDatabaseArgs = do
+ stage <- getStage
+ dbPath <- expr $ packageDbPath stage
+ expr $ need [dbPath -/- packageDbStamp]
+ stage0 ? do
+ top <- expr topDirectory
+ root <- getBuildRoot
+ prefix <- ifM (builder Ghc) (return "-package-db ") (return "--package-db=")
+ arg $ prefix ++ top -/- root -/- stage0PackageDbDir