diff options
author | Matthew Pickering <matthewtpickering@gmail.com> | 2020-03-30 20:04:16 +0100 |
---|---|---|
committer | Ben Gamari <ben@well-typed.com> | 2020-03-31 12:32:45 -0400 |
commit | de7bfdb12f665a7a7dcc49f42db9d3f2c895e148 (patch) | |
tree | a5b78c7b532678dadade1864586085c60cb3302c | |
parent | 4b9c586472bf99425f7bbcf346472d7c54f05028 (diff) | |
download | haskell-de7bfdb12f665a7a7dcc49f42db9d3f2c895e148.tar.gz |
Hadrian: Make -i paths absolutewip/absolute-i-paths
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.
-rw-r--r-- | hadrian/src/Settings/Builders/Ghc.hs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/hadrian/src/Settings/Builders/Ghc.hs b/hadrian/src/Settings/Builders/Ghc.hs index 17b0a4a359..81e52b42e2 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 @@ -212,18 +213,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 |