summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hadrian/cfg/system.config.in3
-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
-rw-r--r--m4/fp_curses.m46
5 files changed, 25 insertions, 6 deletions
diff --git a/hadrian/cfg/system.config.in b/hadrian/cfg/system.config.in
index 2c341230cf..e8a300d401 100644
--- a/hadrian/cfg/system.config.in
+++ b/hadrian/cfg/system.config.in
@@ -177,7 +177,8 @@ target-arm-version = @ARM_ISA@
# Include and library directories:
#=================================
-curses-lib-dir = @CURSES_LIB_DIRS@
+curses-lib-dir = @CURSES_LIB_DIRS@
+curses-include-dir = @CURSES_INCLUDE_DIRS@
iconv-include-dir = @ICONV_INCLUDE_DIRS@
iconv-lib-dir = @ICONV_LIB_DIRS@
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"
diff --git a/m4/fp_curses.m4 b/m4/fp_curses.m4
index a0c30637cb..36303f8937 100644
--- a/m4/fp_curses.m4
+++ b/m4/fp_curses.m4
@@ -6,10 +6,16 @@ AC_DEFUN([FP_CURSES],
dnl * Deal with arguments telling us curses is somewhere odd
dnl--------------------------------------------------------------------
+ AC_ARG_WITH([curses-includes],
+ [AS_HELP_STRING([--with-curses-includes],
+ [directory containing curses headers])],
+ [CURSES_INCLUDE_DIRS=$withval])
+
AC_ARG_WITH([curses-libraries],
[AS_HELP_STRING([--with-curses-libraries],
[directory containing curses libraries])],
[CURSES_LIB_DIRS=$withval])
+ AC_SUBST(CURSES_INCLUDE_DIRS)
AC_SUBST(CURSES_LIB_DIRS)
])# FP_CURSES