| ### These are all generic; we set all the variables we need |
| |
| # intermediary build path |
| BUILDDIR = build |
| # same for images |
| BUILDIMAGESDIR = $(BUILDDIR)/images |
| |
| # images |
| # right now, we only allow .png and .fig as source |
| # we might add more later if we feel the need |
| |
| # PNG's can be source or built from .fig |
| PNG = $(strip $(PNG_SRC) $(FIG_SRC:.fig=.png)) |
| # EPS .ps files can be built from .png or .fig |
| EPS = $(strip $(FIG_SRC:.fig=.ps) $(PNG_SRC:.png=.ps)) |
| # PDF .pdf files can be built from .png or .fig |
| PDF = $(strip $(FIG_SRC:.fig=.pdf) $(PNG_SRC:.png=.pdf)) |
| |
| # where we expect to find images during building, whether by copying |
| # or by generating them |
| PNG_BUILT = $(foreach file, $(PNG), $(BUILDIMAGESDIR)/$(file)) |
| EPS_BUILT = $(foreach file, $(EPS), $(BUILDIMAGESDIR)/$(file)) |
| PDF_BUILT = $(foreach file, $(PDF), $(BUILDIMAGESDIR)/$(file)) |
| |
| SRC = $(XML) $(PNG_SRC) $(FIG_SRC) $(CSS) $(EXTRA_SRC) |
| |
| # generate A4 docs |
| PAPER_LOCALE = nl_NL |
| |
| ### generate all documentation by default |
| # hook in html generation |
| all-local: html |
| |
| # can we generate HTML ? |
| if DOC_HTML |
| HTML_DAT = html |
| HTML_TARGET = html/index.html |
| else #!DOC_HTML |
| HTML_DAT = |
| HTML_TARGET = |
| endif #DOC_HTML |
| html: $(HTML_TARGET) |
| |
| # can we generate PS ? |
| if DOC_PS |
| PS_DAT = $(DOC).ps |
| else #!DOC_PS |
| PS_DAT = |
| endif #DOC_PS |
| ps: $(PS_DAT) |
| |
| # can we generate PDF ? |
| if DOC_PDF |
| PDF_DAT = $(DOC).pdf |
| else #!DOC_PDF |
| PDF_DAT = |
| endif #DOC_PDF |
| pdf: $(PDF_DAT) |
| |
| debug: |
| @echo "outputting some useful debug information" |
| @echo "Source XML:" |
| @echo "XML: '$(XML)'" |
| @echo "CSS: '$(CSS)'" |
| @echo "Source image files:" |
| @echo "PNG_SRC: '$(PNG_SRC)'" |
| @echo "FIG_SRC: '$(FIG_SRC)'" |
| @echo "All used image files:" |
| @echo "PNG: '$(PNG)'" |
| @echo "EPS: '$(EPS)'" |
| @echo "PDF: '$(PDF)'" |
| @echo "All used image files in their built path:" |
| @echo "PNG_BUILT: '$(PNG_BUILT)'" |
| @echo "EPS_BUILT: '$(EPS_BUILT)'" |
| @echo "PDF_BUILT: '$(PDF_BUILT)'" |
| @echo "End result products:" |
| @echo "HTML_DAT: '$(HTML_DAT)'" |
| @echo "PS_DAT: '$(PS_DAT)'" |
| @echo "PDF_DAT: '$(PDF_DAT)'" |
| |
| # a rule to copy all of the source for docs into $(builddir)/build |
| $(BUILDDIR)/$(MAIN): $(XML) $(CSS) $(EXTRA_SRC) |
| @-mkdir -p $(BUILDDIR); \ |
| if test "x$(EXTRA_SRC)" != "x"; then for a in $(EXTRA_SRC); do cp $(srcdir)/$$a $(BUILDDIR); done; fi ; \ |
| for a in $(XML); do cp $(srcdir)/$$a $(BUILDDIR); done ; \ |
| for a in $(CSS); do cp $(srcdir)/$$a $(BUILDDIR); done ; \ |
| cp ../version.entities $(BUILDDIR) ; \ |
| cp $(top_srcdir)/docs/url.entities $(BUILDDIR) |
| |
| html/index.html: $(BUILDDIR)/$(MAIN) $(PNG_BUILT) $(FIG_SRC) |
| @$(MAKE) check-local |
| @echo "*** Generating HTML output ***" |
| @-mkdir -p html |
| @cp -f $(srcdir)/../image-png $(BUILDDIR)/image.entities |
| @cd $(BUILDDIR) && $(XSLTPROC) -o ../html/ --stringparam chunker.output.encoding UTF-8 --stringparam use.id.as.filename 1 $(XSLTPROC_FLAGS) "http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl" $(MAIN) |
| @test "x$(CSS)" != "x" && \ |
| echo "Copying .css files: $(CSS)" && \ |
| cp $(srcdir)/$(CSS) html |
| @test "x$(PNG)" != "x" && \ |
| echo "Copying .png images: $(PNG_BUILT)" && \ |
| mkdir -p html/images && \ |
| cp $(PNG_BUILT) html/images || true |
| |
| $(DOC).ps: $(BUILDDIR)/$(MAIN) $(EPS_BUILT) $(PNG_SRC) $(FIG_SRC) |
| @$(MAKE) check-local |
| @echo "*** Generating PS output ***" |
| @cp -f $(srcdir)/../image-eps $(BUILDDIR)/image.entities |
| cd $(BUILDDIR) && SP_ENCODING="UTF-8" docbook2ps -o .. $(MAIN) |
| # export LC_PAPER=$(PAPER_LOCALE) && cd $(BUILDDIR) && xmlto ps -o .. $(MAIN) |
| |
| $(DOC).pdf: $(DOC).ps |
| @$(MAKE) check-local |
| @echo "*** Generating PDF output ***" |
| @ps2pdf $(DOC).ps |
| |
| #$(DOC).pdf: $(MAIN) $(PDF) $(FIG_SRC) |
| # @echo "*** Generating PDF output ***" |
| # @cp -f $(srcdir)/../image-pdf image.entities |
| # @export LC_PAPER=$(PAPER_LOCALE) && xmlto pdf $(MAIN) |
| # @rm image.entities |
| |
| clean-local: |
| -$(RM) -r $(BUILDDIR) |
| -$(RM) -r html |
| -$(RM) $(DOC).ps |
| -$(RM) $(DOC).pdf |
| -$(RM) -r www |
| |
| ### image generation |
| |
| # copy png from source dir png |
| $(BUILDIMAGESDIR)/%.png: $(srcdir)/%.png |
| @echo "Copying $< to $@" |
| @mkdir -p $(BUILDIMAGESDIR) |
| @cp $< $@ |
| # make png from fig |
| $(BUILDIMAGESDIR)/%.png: %.fig |
| @echo "Generating $@ from $<" |
| @mkdir -p $(BUILDIMAGESDIR) |
| @fig2dev -Lpng $< $@ |
| |
| # make ps(EPS) from fig |
| $(BUILDIMAGESDIR)/%.ps: %.fig |
| @echo "Generating $@ from $<" |
| @mkdir -p $(BUILDIMAGESDIR) |
| @fig2dev -Leps $< $@ |
| |
| # make pdf from fig |
| $(BUILDIMAGESDIR)/%.pdf: %.fig |
| @echo "Generating $@ from $<" |
| @mkdir -p $(BUILDIMAGESDIR) |
| @fig2dev -Lpdf $< $@ |
| |
| # make pdf from png |
| $(BUILDIMAGESDIR)/%.pdf: %.png |
| @echo "Generating $@ from $<" |
| @mkdir -p $(BUILDIMAGESDIR) |
| @cat $< | pngtopnm | pnmtops -noturn 2> /dev/null | epstopdf --filter --outfile $@ 2> /dev/null |
| |
| # make ps(EPS) from png |
| $(BUILDIMAGESDIR)/%.ps: %.png |
| @echo "Generating $@ from $<" |
| @mkdir -p $(BUILDIMAGESDIR) |
| @cat $< | pngtopnm | pnmtops -noturn > $@ 2> /dev/null |
| |
| # make sure xml validates properly |
| check-local: $(BUILDDIR)/$(MAIN) |
| @cp -f $(srcdir)/../image-png $(BUILDDIR)/image.entities |
| @cd $(BUILDDIR) && xmllint -noout -valid $(MAIN) |
| @cd $(BUILDDIR) && \ |
| if [ `which curl` ]; then \ |
| links=`$(XSLTPROC) $(XSLTPROC_FLAGS) --xinclude $(abs_top_srcdir)/docs/list-ulink.xsl $(MAIN) | egrep '^http' | sort | uniq` && \ |
| have_error=0 && \ |
| for link in $$links; do \ |
| code=`curl -s -m20 -o /dev/null -I -w "%{http_code}" $$link`; \ |
| if [ \( $$? -ne 0 \) -o \( $$code -gt 399 \) ]; then \ |
| echo "exit_status=$$?, http_code=$$code: $$link"; \ |
| grep -Hnr "$$link" .; \ |
| have_error=1; \ |
| fi; \ |
| done \ |
| fi |
| |
| # avoid 'cp: cannot create regular file `build/image.entities': File exists' |
| # errors during 'make distcheck' by disabling parallel builds |
| .NOTPARALLEL: |