summaryrefslogtreecommitdiff
path: root/hadrian/src
diff options
context:
space:
mode:
Diffstat (limited to 'hadrian/src')
-rw-r--r--hadrian/src/Oracles/Setting.hs2
-rw-r--r--hadrian/src/Settings/Builders/Common.hs13
-rw-r--r--hadrian/src/Settings/Packages.hs7
3 files changed, 17 insertions, 5 deletions
diff --git a/hadrian/src/Oracles/Setting.hs b/hadrian/src/Oracles/Setting.hs
index 73fd1ce273..c10e3fc44d 100644
--- a/hadrian/src/Oracles/Setting.hs
+++ b/hadrian/src/Oracles/Setting.hs
@@ -36,6 +36,7 @@ data Setting = BuildArch
| BuildOs
| BuildPlatform
| BuildVendor
+ | CursesIncludeDir
| CursesLibDir
| DynamicExtension
| FfiIncludeDir
@@ -133,6 +134,7 @@ setting key = lookupValueOrError configFile $ case key of
BuildOs -> "build-os"
BuildPlatform -> "build-platform"
BuildVendor -> "build-vendor"
+ CursesIncludeDir -> "curses-include-dir"
CursesLibDir -> "curses-lib-dir"
DynamicExtension -> "dynamic-extension"
FfiIncludeDir -> "ffi-include-dir"
diff --git a/hadrian/src/Settings/Builders/Common.hs b/hadrian/src/Settings/Builders/Common.hs
index 8daa8a1f88..b6464fe357 100644
--- a/hadrian/src/Settings/Builders/Common.hs
+++ b/hadrian/src/Settings/Builders/Common.hs
@@ -26,15 +26,18 @@ cIncludeArgs = do
incDirs <- getContextData includeDirs
depDirs <- getContextData depIncludeDirs
stage <- getStage
- iconvIncludeDir <- getSetting IconvIncludeDir
- gmpIncludeDir <- getSetting GmpIncludeDir
- ffiIncludeDir <- getSetting FfiIncludeDir
- libdwIncludeDir <- getSetting FfiIncludeDir
+ -- TODO: Why is any of this necessary? We should have already told Cabal about these paths.
+ iconvIncludeDir <- getSetting IconvIncludeDir
+ gmpIncludeDir <- getSetting GmpIncludeDir
+ ffiIncludeDir <- getSetting FfiIncludeDir
+ libdwIncludeDir <- getSetting LibdwIncludeDir
+ numaIncludeDir <- getSetting LibnumaIncludeDir
+ cursesIncludeDir <- getSetting CursesIncludeDir
libPath <- expr $ stageLibPath stage
mconcat [ notStage0 ||^ package compiler ? arg "-Irts/include"
, arg $ "-I" ++ libPath
, arg $ "-I" ++ path
- , pure . map ("-I"++) . filter (/= "") $ [iconvIncludeDir, gmpIncludeDir]
+ , pure . map ("-I"++) . filter (/= "") $ [iconvIncludeDir, gmpIncludeDir, numaIncludeDir, cursesIncludeDir]
, flag UseSystemFfi ? if not (null ffiIncludeDir) then arg ("-I" ++ ffiIncludeDir) else mempty
, flag WithLibdw ? if not (null libdwIncludeDir) then arg ("-I" ++ libdwIncludeDir) else mempty
-- Add @incDirs@ in the build directory, since some files generated
diff --git a/hadrian/src/Settings/Packages.hs b/hadrian/src/Settings/Packages.hs
index c8258db82f..e3c6b92dbc 100644
--- a/hadrian/src/Settings/Packages.hs
+++ b/hadrian/src/Settings/Packages.hs
@@ -22,6 +22,9 @@ packageArgs = do
-- are building. This is used to build cross-compilers
bootCross = (==) <$> ghcVersionStage Stage0 <*> ghcVersionStage Stage1
+ cursesIncludeDir <- getSetting CursesIncludeDir
+ cursesLibraryDir <- getSetting CursesLibDir
+
mconcat
--------------------------------- base ---------------------------------
[ package base ? mconcat
@@ -163,6 +166,10 @@ packageArgs = do
, package haskeline ?
builder (Cabal Flags) ? notM cross `cabalFlag` "terminfo"
+ -------------------------------- terminfo ------------------------------
+ , package terminfo ?
+ builder (Cabal Setup) ? cabalExtraDirs cursesIncludeDir cursesLibraryDir
+
-------------------------------- hsc2hs --------------------------------
, package hsc2hs ?
builder (Cabal Flags) ? arg "in-ghc-tree"