summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Pickering <matthewtpickering@gmail.com>2019-07-02 17:44:57 +0100
committerMatthew Pickering <matthewtpickering@gmail.com>2019-08-05 11:28:25 +0100
commitdf849aa64d8bfc4a271cb7135333abecedbd14a0 (patch)
tree9db8dfd47cbaf636a172da0f26bdf2e52e2c8c80
parenta5227080b57cb51ac34d4c9de1accdf6360b818b (diff)
downloadhaskell-wip/hadrian-hie.tar.gz
Hadrian: Add option to generate .hie files for stage1 librarieswip/hadrian-hie
-rw-r--r--hadrian/doc/user-settings.md14
-rw-r--r--hadrian/src/Flavour.hs4
-rw-r--r--hadrian/src/Settings/Builders/Ghc.hs2
-rw-r--r--hadrian/src/Settings/Default.hs3
-rw-r--r--hadrian/src/Settings/Flavours/Quick.hs1
-rw-r--r--hadrian/src/Settings/Flavours/Quickest.hs3
6 files changed, 22 insertions, 5 deletions
diff --git a/hadrian/doc/user-settings.md b/hadrian/doc/user-settings.md
index 6a1d5be847..805bb650b5 100644
--- a/hadrian/doc/user-settings.md
+++ b/hadrian/doc/user-settings.md
@@ -34,10 +34,13 @@ data Flavour = Flavour {
-- | Build profiled GHC.
ghcProfiled :: Bool,
-- | Build GHC with debug information.
- ghcDebugged :: Bool
+ ghcDebugged :: Bool,
-- | Whether to build docs and which ones
-- (haddocks, user manual, haddock manual)
- ghcDocs :: Action DocTargets }
+ ghcDocs :: Action DocTargets,
+ -- | Whether to generate .hie files
+ ghcHieFiles :: Bool
+ }
```
Hadrian provides several built-in flavours (`default`, `quick`, and a few
others; see `hadrian/doc/flavours.md`), which can be activated from the command line,
@@ -290,6 +293,13 @@ all of the documentation targets:
You can pass several `--docs=...` flags, Hadrian will combine
their effects.
+### HIE files
+
+The `ghcHieFiles` field controls whether `.hie` files are generated
+for source files built with the stage1 compiler.
+
+For most flavours `.hie` files wil be generated by default.
+
### Split sections
You can build all or just a few packages with
diff --git a/hadrian/src/Flavour.hs b/hadrian/src/Flavour.hs
index 230272ec62..9ceba2d136 100644
--- a/hadrian/src/Flavour.hs
+++ b/hadrian/src/Flavour.hs
@@ -38,7 +38,9 @@ data Flavour = Flavour {
ghcDebugged :: Bool,
-- | Whether to build docs and which ones
-- (haddocks, user manual, haddock manual)
- ghcDocs :: Action DocTargets }
+ ghcDocs :: Action DocTargets,
+ -- | Whether to generate .hie files
+ ghcHieFiles :: Bool }
-- | A set of documentation targets
type DocTargets = Set DocTarget
diff --git a/hadrian/src/Settings/Builders/Ghc.hs b/hadrian/src/Settings/Builders/Ghc.hs
index 2db62aa4e1..504fd4a7c0 100644
--- a/hadrian/src/Settings/Builders/Ghc.hs
+++ b/hadrian/src/Settings/Builders/Ghc.hs
@@ -30,11 +30,13 @@ toolArgs = do
compileAndLinkHs :: Args
compileAndLinkHs = (builder (Ghc CompileHs) ||^ builder (Ghc LinkHs)) ? do
+ hieFiles <- ghcHieFiles <$> expr flavour
mconcat [ arg "-Wall"
, commonGhcArgs
, ghcLinkArgs
, defaultGhcWarningsArgs
, builder (Ghc CompileHs) ? arg "-c"
+ , hieFiles ? notStage0 ? builder (Ghc CompileHs) ? arg "-fwrite-ide-info"
, getInputs
, arg "-o", arg =<< getOutput ]
diff --git a/hadrian/src/Settings/Default.hs b/hadrian/src/Settings/Default.hs
index 5963a7687c..ccffd5dbcd 100644
--- a/hadrian/src/Settings/Default.hs
+++ b/hadrian/src/Settings/Default.hs
@@ -214,7 +214,8 @@ defaultFlavour = Flavour
, ghciWithDebugger = False
, ghcProfiled = False
, ghcDebugged = False
- , ghcDocs = cmdDocsArgs }
+ , ghcDocs = cmdDocsArgs
+ , ghcHieFiles = True }
-- | Default logic for determining whether to build
-- dynamic GHC programs.
diff --git a/hadrian/src/Settings/Flavours/Quick.hs b/hadrian/src/Settings/Flavours/Quick.hs
index 16ff99a091..36ed5afb68 100644
--- a/hadrian/src/Settings/Flavours/Quick.hs
+++ b/hadrian/src/Settings/Flavours/Quick.hs
@@ -11,6 +11,7 @@ quickFlavour :: Flavour
quickFlavour = defaultFlavour
{ name = "quick"
, args = defaultBuilderArgs <> quickArgs <> defaultPackageArgs
+ , ghcHieFiles = False
, libraryWays = mconcat
[ pure [vanilla]
, notStage0 ? platformSupportsSharedLibs ? pure [dynamic] ]
diff --git a/hadrian/src/Settings/Flavours/Quickest.hs b/hadrian/src/Settings/Flavours/Quickest.hs
index c0fd72764f..c732ad2dec 100644
--- a/hadrian/src/Settings/Flavours/Quickest.hs
+++ b/hadrian/src/Settings/Flavours/Quickest.hs
@@ -12,7 +12,8 @@ quickestFlavour = defaultFlavour
, args = defaultBuilderArgs <> quickestArgs <> defaultPackageArgs
, libraryWays = pure [vanilla]
, rtsWays = pure [vanilla, threaded]
- , dynamicGhcPrograms = return False }
+ , dynamicGhcPrograms = return False
+ , ghcHieFiles = False }
quickestArgs :: Args
quickestArgs = sourceArgs SourceArgs