diff options
author | Matthew Pickering <matthewtpickering@gmail.com> | 2019-07-02 17:44:57 +0100 |
---|---|---|
committer | Matthew Pickering <matthewtpickering@gmail.com> | 2019-08-05 11:28:25 +0100 |
commit | df849aa64d8bfc4a271cb7135333abecedbd14a0 (patch) | |
tree | 9db8dfd47cbaf636a172da0f26bdf2e52e2c8c80 | |
parent | a5227080b57cb51ac34d4c9de1accdf6360b818b (diff) | |
download | haskell-wip/hadrian-hie.tar.gz |
Hadrian: Add option to generate .hie files for stage1 librarieswip/hadrian-hie
-rw-r--r-- | hadrian/doc/user-settings.md | 14 | ||||
-rw-r--r-- | hadrian/src/Flavour.hs | 4 | ||||
-rw-r--r-- | hadrian/src/Settings/Builders/Ghc.hs | 2 | ||||
-rw-r--r-- | hadrian/src/Settings/Default.hs | 3 | ||||
-rw-r--r-- | hadrian/src/Settings/Flavours/Quick.hs | 1 | ||||
-rw-r--r-- | hadrian/src/Settings/Flavours/Quickest.hs | 3 |
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 |