forked from mirrors/nixpkgs
haskellPackages.mkDerivation: add doHaddockInterfaces option
This adds a new builder option `doHaddockInterfaces` to enable the -haddock flag in GHC, which results in Haddock comments parsed at compile-time and embedded in interface files. These are used by the :doc command in GHCi, as well as IDE tools like ghcide and hls to display docs on hover. The `-haddock` flag has been around since at least 8.2, even though it does not get a mention in the GHC Users guide. There are two downsides to turning on this flag: 1. Increased compile times, since Haddocks must be parsed and then encoded 2. Haddock parse errors now become compile errors for GHC < 9.0.1 (https://gitlab.haskell.org/ghc/ghc/-/issues/8944) Thus we only enable the feature if we have GHC 9.0.1 and haddock is enabled; when 9.0.1 becomes the default GHC, we may need to reevaluate the performance concern. Co-authored-by: sternenseemann <sternenseemann@systemli.org>
This commit is contained in:
parent
da2c9c6eab
commit
d68033afae
|
@ -56,6 +56,7 @@ in
|
||||||
, mainProgram ? null
|
, mainProgram ? null
|
||||||
, doCoverage ? false
|
, doCoverage ? false
|
||||||
, doHaddock ? !(ghc.isHaLVM or false)
|
, doHaddock ? !(ghc.isHaLVM or false)
|
||||||
|
, doHaddockInterfaces ? doHaddock && lib.versionAtLeast ghc.version "9.0.1"
|
||||||
, passthru ? {}
|
, passthru ? {}
|
||||||
, pkg-configDepends ? [], libraryPkgconfigDepends ? [], executablePkgconfigDepends ? [], testPkgconfigDepends ? [], benchmarkPkgconfigDepends ? []
|
, pkg-configDepends ? [], libraryPkgconfigDepends ? [], executablePkgconfigDepends ? [], testPkgconfigDepends ? [], benchmarkPkgconfigDepends ? []
|
||||||
, testDepends ? [], testHaskellDepends ? [], testSystemDepends ? [], testFrameworkDepends ? []
|
, testDepends ? [], testHaskellDepends ? [], testSystemDepends ? [], testFrameworkDepends ? []
|
||||||
|
@ -226,7 +227,11 @@ let
|
||||||
] ++ optionals isCross ([
|
] ++ optionals isCross ([
|
||||||
"--configure-option=--host=${stdenv.hostPlatform.config}"
|
"--configure-option=--host=${stdenv.hostPlatform.config}"
|
||||||
] ++ crossCabalFlags
|
] ++ crossCabalFlags
|
||||||
) ++ optionals enableSeparateBinOutput ["--bindir=${binDir}"];
|
) ++ optionals enableSeparateBinOutput [
|
||||||
|
"--bindir=${binDir}"
|
||||||
|
] ++ optionals (doHaddockInterfaces && isLibrary) [
|
||||||
|
"--ghc-options=-haddock"
|
||||||
|
];
|
||||||
|
|
||||||
setupCompileFlags = [
|
setupCompileFlags = [
|
||||||
(optionalString (!coreSetup) "-${nativePackageDbFlag}=$setupPackageConfDir")
|
(optionalString (!coreSetup) "-${nativePackageDbFlag}=$setupPackageConfDir")
|
||||||
|
|
Loading…
Reference in a new issue