Haddock is the standard tool for generating documentation from Haskell code.
Full documentation about Haddock itself can be found in the doc/ subdirectory,
in reStructedText format format.
This project consists of three packages:
-
haddock: provides thehaddockexecutable. It is implemented as a tiny wrapper aroundhaddock-api'sDocumentation.Haddock.haddockfunction. -
haddock-api: contains the program logic of thehaddocktool. The haddocks for theDocumentation.Haddockmodule offer a good overview of the functionality. -
haddock-library: is concerned with the parsing and processing of the Haddock markup language. Unlike the other packages, it is expected to build on a fairly wide range of GHC versions.
Please create issues when you have any problems and pull requests if you have some code.
To get started you'll need the latest GHC release installed.
Clone the repository:
git clone https://github.com/haskell/haddock.git
cd haddockand then proceed using your favourite build tool.
Using cabal v2-build
cabal v2-build -w ghc-8.10.1
cabal v2-test -w ghc-8.10.1 allstack init
stack build
export HADDOCK_PATH="$(stack exec which haddock)"
stack testcabal sandbox init
cabal sandbox add-source haddock-library
cabal sandbox add-source haddock-api
cabal sandbox add-source haddock-test
# adjust -j to the number of cores you want to use
cabal install -j4 --dependencies-only --enable-tests
cabal configure --enable-tests
cabal build -j4
# run the test suite
export HADDOCK_PATH="dist/build/haddock/haddock"
cabal testIf you're a GHC developer and want to update Haddock to work with your changes,
you should be working on the ghc-head branch. See instructions at
https://gitlab.haskell.org/ghc/ghc/-/wikis/working-conventions/git/submodules
for an example workflow.
If you've changed Haddock's output, you will probably need to accept the new
output of Haddock's golden test suites (html-test, latex-test,
hoogle-test, and hypsrc-test). This can be done by passing the --accept
argument to these test suites. With a new enough version of cabal-install:
cabal v2-test html-test latex-test hoogle-test hypsrc-test \
--test-option='--accept'