Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC

Commits:

9 changed files:

Changes:

  • hadrian/doc/flavours.md
    ... ... @@ -334,6 +334,8 @@ The supported transformers are listed below:
    334 334
             <td>Disable including self-recompilation information in interface files via <code>-fno-write-if-self-recomp</code>. If you are building a distribution you can enable this flag to produce more deterministic interface files.</td>
    
    335 335
             <td><code>hash_unit_ids</code></td>
    
    336 336
             <td>Include a package hash in the unit id of built packages</td>
    
    337
    +        <td><code>hie_files</code></td>
    
    338
    +        <td>Produce hie files for stage1 libraries</td>
    
    337 339
         </tr>
    
    338 340
     </table>
    
    339 341
     
    

  • hadrian/doc/user-settings.md
    ... ... @@ -47,7 +47,10 @@ data Flavour = Flavour {
    47 47
                     -> Bool,
    
    48 48
         -- | Whether to build docs and which ones
    
    49 49
         --   (haddocks, user manual, haddock manual)
    
    50
    -    ghcDocs :: Action DocTargets }
    
    50
    +    ghcDocs :: Action DocTargets,
    
    51
    +    -- | Whether to generate .hie files
    
    52
    +    ghcHieFiles :: Stage -> Bool
    
    53
    +    }
    
    51 54
     ```
    
    52 55
     Hadrian provides several built-in flavours (`default`, `quick`, and a few
    
    53 56
     others; see `hadrian/doc/flavours.md`), which can be activated from the command line,
    
    ... ... @@ -364,6 +367,13 @@ all of the documentation targets:
    364 367
     You can pass several `--docs=...` flags, Hadrian will combine
    
    365 368
     their effects.
    
    366 369
     
    
    370
    +### HIE files
    
    371
    +
    
    372
    +The `ghcHieFiles` field controls whether `.hie` files are generated
    
    373
    +for source files built with the stage1 compiler.
    
    374
    +
    
    375
    +For most flavours `.hie` files wil be generated by default.
    
    376
    +
    
    367 377
     ### Split sections
    
    368 378
     
    
    369 379
     You can build all or just a few packages with
    

  • hadrian/src/Context.hs
    ... ... @@ -3,7 +3,7 @@ module Context (
    3 3
         Context (..), vanillaContext, stageContext,
    
    4 4
     
    
    5 5
         -- * Expressions
    
    6
    -    getStage, getPackage, getWay, getBuildPath, getPackageDbLoc, getStagedTarget,
    
    6
    +    getStage, getPackage, getWay, getBuildPath, getHieBuildPath, getPackageDbLoc, getStagedTarget,
    
    7 7
     
    
    8 8
         -- * Paths
    
    9 9
         contextDir, buildPath, buildDir, pkgInplaceConfig, pkgSetupConfigFile, pkgSetupConfigDir,
    

  • hadrian/src/Context/Path.hs
    ... ... @@ -42,6 +42,10 @@ buildPath context = buildRoot <&> (-/- buildDir context)
    42 42
     getBuildPath :: Expr Context b FilePath
    
    43 43
     getBuildPath = expr . buildPath =<< getContext
    
    44 44
     
    
    45
    +-- | The output directory for hie files
    
    46
    +getHieBuildPath :: Expr Context b FilePath
    
    47
    +getHieBuildPath = (-/- "extra-compilation-artifacts" -/- "hie") <$> getBuildPath
    
    48
    +
    
    45 49
     -- | Path to the directory containing haddock timing files, used by
    
    46 50
     --   the haddock perf tests.
    
    47 51
     haddockStatsFilesDir :: Action FilePath
    

  • hadrian/src/Flavour.hs
    ... ... @@ -21,6 +21,7 @@ module Flavour
    21 21
       , enableHiCore
    
    22 22
       , useNativeBignum
    
    23 23
       , enableTextWithSIMDUTF
    
    24
    +  , enableHieFiles
    
    24 25
       , omitPragmas
    
    25 26
     
    
    26 27
       , completeSetting
    
    ... ... @@ -75,6 +76,7 @@ flavourTransformers = M.fromList
    75 76
         , "boot_nonmoving_gc" =: enableBootNonmovingGc
    
    76 77
         , "dump_stg"         =: enableDumpStg
    
    77 78
         , "hash_unit_ids"    =: enableHashUnitIds
    
    79
    +    , "hie_files"        =: enableHieFiles
    
    78 80
         ]
    
    79 81
       where (=:) = (,)
    
    80 82
     
    
    ... ... @@ -324,6 +326,9 @@ enableTextWithSIMDUTF flavour = flavour {
    324 326
     enableHashUnitIds :: Flavour -> Flavour
    
    325 327
     enableHashUnitIds flavour = flavour { hashUnitIds = True }
    
    326 328
     
    
    329
    +enableHieFiles :: Flavour -> Flavour
    
    330
    +enableHieFiles flavour = flavour { ghcHieFiles = (>= Stage1) }
    
    331
    +
    
    327 332
     -- | Build stage2 compiler with -fomit-interface-pragmas to reduce
    
    328 333
     -- recompilation.
    
    329 334
     omitPragmas :: Flavour -> Flavour
    

  • hadrian/src/Flavour/Type.hs
    ... ... @@ -51,7 +51,10 @@ data Flavour = Flavour {
    51 51
         ghcDocs :: Action DocTargets,
    
    52 52
     
    
    53 53
         -- | Whether to uses hashes or inplace for unit ids
    
    54
    -    hashUnitIds :: Bool
    
    54
    +    hashUnitIds :: Bool,
    
    55
    +
    
    56
    +    -- | Whether to generate .hie files
    
    57
    +    ghcHieFiles :: Stage -> Bool
    
    55 58
     
    
    56 59
         }
    
    57 60
     
    

  • hadrian/src/Settings/Builders/Ghc.hs
    ... ... @@ -35,6 +35,9 @@ compileAndLinkHs = (builder (Ghc CompileHs) ||^ builder (Ghc LinkHs)) ? do
    35 35
         useColor <- shakeColor <$> expr getShakeOptions
    
    36 36
         let hasVanilla = elem vanilla ways
    
    37 37
             hasDynamic = elem dynamic ways
    
    38
    +    hieFiles <- ghcHieFiles <$> expr flavour
    
    39
    +    stage <- getStage
    
    40
    +    hie_path <- getHieBuildPath
    
    38 41
         mconcat [ arg "-Wall"
    
    39 42
                 , arg "-Wcompat"
    
    40 43
                 , not useColor ? builder (Ghc CompileHs) ?
    
    ... ... @@ -49,6 +52,10 @@ compileAndLinkHs = (builder (Ghc CompileHs) ||^ builder (Ghc LinkHs)) ? do
    49 52
                 , ghcLinkArgs
    
    50 53
                 , defaultGhcWarningsArgs
    
    51 54
                 , builder (Ghc CompileHs) ? arg "-c"
    
    55
    +            , hieFiles stage ? builder (Ghc CompileHs) ? mconcat
    
    56
    +                  [ arg "-fwrite-ide-info"
    
    57
    +                  , arg "-hiedir", arg hie_path
    
    58
    +                  ]
    
    52 59
                 , getInputs
    
    53 60
                 , arg "-o", arg =<< getOutput ]
    
    54 61
     
    

  • hadrian/src/Settings/Default.hs
    ... ... @@ -283,6 +283,7 @@ defaultFlavour = Flavour
    283 283
         , ghcDebugAssertions = const False
    
    284 284
         , ghcSplitSections   = False
    
    285 285
         , ghcDocs            = cmdDocsArgs
    
    286
    +    , ghcHieFiles        = const False
    
    286 287
         , hashUnitIds        = False }
    
    287 288
     
    
    288 289
     -- | Default logic for determining whether to build
    

  • hadrian/src/Settings/Flavours/Release.hs
    ... ... @@ -11,4 +11,6 @@ releaseFlavour =
    11 11
       $ enableHaddock
    
    12 12
       -- 3. Include unit id hashes
    
    13 13
       $ enableHashUnitIds
    
    14
    +  -- 4. Include hie files (#16901)
    
    15
    +  -- $ enableHieFiles
    
    14 16
       $ performanceFlavour { name = "release" }