| ... |
... |
@@ -26,6 +26,7 @@ import Utilities |
|
26
|
26
|
import qualified Data.Set as Set
|
|
27
|
27
|
import qualified Text.Parsec as Parsec
|
|
28
|
28
|
import Oracles.Flavour
|
|
|
29
|
+import BindistConfig
|
|
29
|
30
|
|
|
30
|
31
|
docRoot :: FilePath
|
|
31
|
32
|
docRoot = "doc"
|
| ... |
... |
@@ -242,10 +243,16 @@ buildLibraryDocumentation = do |
|
242
|
243
|
need neededDocs
|
|
243
|
244
|
build $ target docContext (Haddock BuildIndex) libDocs [file]
|
|
244
|
245
|
|
|
|
246
|
+-- | The stage whose libraries are documented. For cross builds this is
|
|
|
247
|
+-- Stage2 (the wasm32/cross-target libraries); for native builds Stage1.
|
|
|
248
|
+pkgDocStage :: Action Stage
|
|
|
249
|
+pkgDocStage = library_stage <$> implicitBindistConfig
|
|
|
250
|
+
|
|
245
|
251
|
allHaddocks :: Action [FilePath]
|
|
246
|
252
|
allHaddocks = do
|
|
247
|
|
- pkgs <- stagePackages Stage1
|
|
248
|
|
- sequence [ pkgHaddockFile $ vanillaContext Stage1 pkg
|
|
|
253
|
+ docStage <- pkgDocStage
|
|
|
254
|
+ pkgs <- stagePackages docStage
|
|
|
255
|
+ sequence [ pkgHaddockFile $ vanillaContext docStage pkg
|
|
249
|
256
|
| pkg <- pkgs, isLibrary pkg, pkgName pkg `notElem` haddockExclude ]
|
|
250
|
257
|
|
|
251
|
258
|
-- Note: this build rule creates plenty of files, not just the .haddock one.
|
| ... |
... |
@@ -257,14 +264,14 @@ buildPackageDocumentation = do |
|
257
|
264
|
|
|
258
|
265
|
-- Per-package haddocks
|
|
259
|
266
|
root -/- htmlRoot -/- "libraries/*/haddock-prologue.txt" %> \file -> do
|
|
260
|
|
- ctx <- pkgDocContext <$> getPkgDocTarget root file
|
|
|
267
|
+ ctx <- pkgDocContext =<< getPkgDocTarget root file
|
|
261
|
268
|
syn <- pkgSynopsis (Context.package ctx)
|
|
262
|
269
|
desc <- pkgDescription (Context.package ctx)
|
|
263
|
270
|
let prologue = if null desc then syn else desc
|
|
264
|
271
|
liftIO $ writeFile file prologue
|
|
265
|
272
|
|
|
266
|
273
|
root -/- htmlRoot -/- "libraries/*/*.haddock" %> \file -> do
|
|
267
|
|
- context <- pkgDocContext <$> getPkgDocTarget root file
|
|
|
274
|
+ context <- pkgDocContext =<< getPkgDocTarget root file
|
|
268
|
275
|
need [ takeDirectory file -/- "haddock-prologue.txt"]
|
|
269
|
276
|
haddocks <- haddockDependencies context
|
|
270
|
277
|
|
| ... |
... |
@@ -290,8 +297,10 @@ buildPackageDocumentation = do |
|
290
|
297
|
data PkgDocTarget = DotHaddock PackageName | HaddockPrologue PackageName
|
|
291
|
298
|
deriving (Eq, Show)
|
|
292
|
299
|
|
|
293
|
|
-pkgDocContext :: PkgDocTarget -> Context
|
|
294
|
|
-pkgDocContext target = Context Stage1 (unsafeFindPackageByName name) vanilla Final
|
|
|
300
|
+pkgDocContext :: PkgDocTarget -> Action Context
|
|
|
301
|
+pkgDocContext target = do
|
|
|
302
|
+ docStage <- pkgDocStage
|
|
|
303
|
+ return $ Context docStage (unsafeFindPackageByName name) vanilla Final
|
|
295
|
304
|
where
|
|
296
|
305
|
name = case target of DotHaddock n -> n
|
|
297
|
306
|
HaddockPrologue n -> n
|
| ... |
... |
@@ -417,5 +426,5 @@ buildManPage = do |
|
417
|
426
|
haddockDependencies :: Context -> Action [(Package, FilePath)]
|
|
418
|
427
|
haddockDependencies context = do
|
|
419
|
428
|
depNames <- interpretInContext context (getContextData depNames)
|
|
420
|
|
- sequence [ (,) <$> pure depPkg <*> (pkgHaddockFile $ vanillaContext Stage1 depPkg)
|
|
|
429
|
+ sequence [ (,) <$> pure depPkg <*> (pkgHaddockFile $ vanillaContext (stage context) depPkg)
|
|
421
|
430
|
| Just depPkg <- map findPackageByName depNames, (pkgName depPkg) `notElem` haddockExclude ] |