summaryrefslogtreecommitdiff
path: root/hadrian
diff options
context:
space:
mode:
authorMatthew Pickering <matthewtpickering@gmail.com>2020-03-30 20:04:16 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2020-04-14 23:30:24 -0400
commit7b41f21bbfa9e266ba6654b08c3f9fec549c8bca (patch)
treecca7905a0dcd9d37a526db2d1dd3d6e0b9698e13 /hadrian
parent9853fc5e3556e733b56976b0a2fce9e82130a9ef (diff)
downloadhaskell-7b41f21bbfa9e266ba6654b08c3f9fec549c8bca.tar.gz
Hadrian: Make -i paths absolute
The primary reason for this change is that ghcide does not work with relative paths. It also matches what cabal and stack do, they always pass absolute paths.
Diffstat (limited to 'hadrian')
-rw-r--r--hadrian/src/Settings/Builders/Ghc.hs13
1 files changed, 8 insertions, 5 deletions
diff --git a/hadrian/src/Settings/Builders/Ghc.hs b/hadrian/src/Settings/Builders/Ghc.hs
index 58f7132d9b..91e0f3d288 100644
--- a/hadrian/src/Settings/Builders/Ghc.hs
+++ b/hadrian/src/Settings/Builders/Ghc.hs
@@ -11,6 +11,7 @@ import Settings.Builders.Common
import Settings.Warnings
import qualified Context as Context
import Rules.Libffi (libffiName)
+import System.Directory
ghcBuilderArgs :: Args
ghcBuilderArgs = mconcat [ compileAndLinkHs, compileC, findHsDependencies
@@ -215,18 +216,20 @@ packageGhcArgs = do
includeGhcArgs :: Args
includeGhcArgs = do
pkg <- getPackage
- path <- getBuildPath
+ path <- exprIO . makeAbsolute =<< getBuildPath
context <- getContext
srcDirs <- getContextData srcDirs
- autogen <- expr $ autogenPath context
+ abSrcDirs <- exprIO $ mapM makeAbsolute [ (pkgPath pkg -/- dir) | dir <- srcDirs ]
+ autogen <- expr (autogenPath context)
+ cautogen <- exprIO (makeAbsolute autogen)
stage <- getStage
- libPath <- expr $ stageLibPath stage
+ libPath <- expr (stageLibPath stage)
let cabalMacros = autogen -/- "cabal_macros.h"
expr $ need [cabalMacros]
mconcat [ arg "-i"
, arg $ "-i" ++ path
- , arg $ "-i" ++ autogen
- , pure [ "-i" ++ pkgPath pkg -/- dir | dir <- srcDirs ]
+ , arg $ "-i" ++ cautogen
+ , pure [ "-i" ++ d | d <- abSrcDirs ]
, cIncludeArgs
, arg $ "-I" ++ libPath
, arg $ "-optc-I" ++ libPath