tools: build haddocks by package, using cabal

This commit is contained in:
Simon Michael 2014-07-08 11:52:06 -07:00
parent 9f991fa94b
commit 71beb27503

106
Makefile
View File

@ -55,17 +55,21 @@ SOURCEFILES:= \
hledger-web/Hledger/*.hs \ hledger-web/Hledger/*.hs \
hledger-web/Settings/*.hs hledger-web/Settings/*.hs
# a more careful list suitable for for haddock # # a more careful list suitable for for haddock-all
HADDOCKSOURCEFILES:= \ # HADDOCKSOURCEFILES:= \
hledger-lib/Hledger.hs \ # hledger-lib/Hledger.hs \
hledger-lib/Hledger/*hs \ # hledger-lib/Hledger/*hs \
hledger-lib/Hledger/*/*hs \ # hledger-lib/Hledger/*/*hs \
hledger/Hledger/*hs \ # hledger/Hledger/*hs \
hledger/Hledger/*/*hs \ # hledger/Hledger/*/*hs \
# hledger-web/Hledger/*hs \ # hledger-web/Application.hs \
# hledger-web/Hledger/*/*hs \ # hledger-web/Foundation.hs \
# hledger-web/app/*.hs \ # hledger-web/Hledger/*hs \
# hledger-web/Settings/*.hs # hledger-web/Hledger/*/*hs \
# hledger-web/Import.hs \
# hledger-web/Settings.hs \
# hledger-web/Settings/*hs \
# hledger-web/app/*hs \
CABALFILES:= \ CABALFILES:= \
hledger/hledger.cabal \ hledger/hledger.cabal \
@ -660,31 +664,63 @@ savehelp:
# generate api & other code docs # generate api & other code docs
codedocs: haddock hscolour coverage #sourcegraph #hoogle codedocs: haddock hscolour coverage #sourcegraph #hoogle
#http://www.haskell.org/haddock/doc/html/invoking.html # cf http://www.haskell.org/haddock/doc/html/invoking.html
# --ghc-options=-optP-P is a workaround for http://trac.haskell.org/haddock/ticket/284
HADDOCKFLAGS= \
--haddock-options='--no-warnings' \
--ghc-options='-optP-P' \
# build per-package haddocks using cabal
haddock: haddock-lib haddock-cli haddock-web
haddock-lib:
(cd hledger-lib; cabal haddock $(HADDOCKFLAGS))
haddock-cli:
(cd hledger; cabal haddock $(HADDOCKFLAGS))
haddock-web:
(cd hledger-web; cabal haddock $(HADDOCKFLAGS))
# view-haddock-cli
view-haddock-cli:
$(VIEWHTML) hledger/dist/doc/html/hledger/index.html
# view-haddock-lib, view-haddock-web
view-haddock-%:
$(VIEWHTML) hledger-$*/dist/doc/html/hledger-$*/index.html
# HADDOCKALLFLAGS= \
# --no-warnings \
# --prologue .haddockallprologue \
# --optghc='-optP-include' \
# --optghc='-optPhledger/dist/build/autogen/cabal_macros.h'
# # --optghc='-XCPP'
# # --optghc="$(WEBLANGEXTS)"
# # --optghc='-hide-package monads-tf'
#$(subst -D,--optghc=-D,$(DEFINEFLAGS)) #$(subst -D,--optghc=-D,$(DEFINEFLAGS))
HADDOCKFLAGS= --no-warnings --prologue .haddockprologue \ #
--optghc='-optP-include' --optghc='-optPhledger/dist/build/autogen/cabal_macros.h' # # .haddockallsynopsis: hledger/hledger.cabal
#--optghc='-hide-package monads-tf' # # grep synopsis $< | sed -e 's/synopsis: *//' >$@
#
.haddocksynopsis: hledger/hledger.cabal # .haddockallprologue: hledger/hledger.cabal
grep synopsis $< | sed -e 's/synopsis: *//' >$@ # cat $< | perl -ne 'print if (/^description:/../^$$/)' | sed -e 's/^description: *//' >$@
# printf "\nThis haddock covers all hledger-* packages, for individual package haddocks see hackage.\n" >>$@
.haddockprologue: hledger/hledger.cabal #
cat $< | perl -ne 'print if (/^description:/../^$$/)' | sed -e 's/^description: *//' >$@ # # build haddock docs for the whole project
printf "\nThis haddock covers all hledger-* packages, for individual package haddocks see hackage.\n" >>$@ # haddock-all: .haddockallprologue
# $(HADDOCK) \
# generate api docs for the whole project # $(HADDOCKALLFLAGS) \
haddock: .haddockprologue # --title "hledger-* API docs" \
$(HADDOCK) $(HADDOCKFLAGS) --title "hledger-* API docs" \ # -o site/api \
-o site/api \ # --html \
--html \ # --source-module=src/%{MODULE/./-}.html \
--source-module=src/%{MODULE/./-}.html \ # --source-entity=src/%{MODULE/./-}.html#%N \
--source-entity=src/%{MODULE/./-}.html#%N \ # $(HADDOCKSOURCEFILES)
$(HADDOCKSOURCEFILES) #
# # browse the whole-project haddock
# browse the api docs # view-haddock-all:
viewhaddock: # $(VIEWHTML) site/api/frames.html
$(VIEWHTML) site/api/frames.html
# http://www.cs.york.ac.uk/fp/darcs/hscolour/ # http://www.cs.york.ac.uk/fp/darcs/hscolour/
HSCOLOUR=HsColour -css HSCOLOUR=HsColour -css