# for copyright and other information.
# -----------------------------------------------------------------
-# *** Variables ***
+# *** TOOLS and other DEPENDENCIES ***
# -----------------------------------------------------------------
-TMP ?= /tmp
-
-TMPNUM := $(shell echo $$$$)
-
-DOCBOOK_TMP := $(TMP)/docbook-make-$(TMPNUM)
-
+# possible values for PDF_MAKER are:
+# dblatex|fop|xep|xmlroff|passivetex
PDF_MAKER = fop
+# possible values for TXT_MAKER are:
+# links|lynx|w3m|w3mmee
TXT_MAKER = links
-#TXT_MAKER = lynx
-
TXT_MAKER_FLAGS = -dump
-XSLTPROC = xsltproc
-XSLTPROC_FLAGS = --xinclude
+# xsl
+XSLT = xsltproc
+XSLT_FLAGS = --xinclude
+# http://dblatex.sourceforge.net/
DBLATEX = dblatex
-DBLATEX_FLAGS =
+DBLATEX_FLAGS = -b pdftex
FOP = fop
-FOP_FLAGS =
+FOP_FLAGS =
XEP = xep
XEP_FLAGS =
+# http://xmlroff.sourceforge.net/
XMLROFF = xmlroff
XMLROFF_FLAGS =
PDFTEX = pdftex
PDFTEX_FLAGS =
+# used by PassiveTeX
PDFXMLTEX = pdfxmltex
-XMLROFF = xmlroff
-XMLROFF_FLAGS =
-
+# http://docbook2x.sourceforge.net/
DB2X_XSLTPROC = db2x_xsltproc
DB2X_XSLTPROC_FLAGS =
DB2X_TEXIXML = db2x_texixml
DB2X_TEXIXML_FLAGS =
+# we call the man(1) command to generate "foo.N.pdf output
+# (see the "man-pdf" target)
MAN = man
MAN_FLAGS = -l
+# part of GhostSript (gs) distro
PS2PDF = ps2pdf
PS2PDF_FLAGS =
+# value of DOCBOOK_XSL should eithe be the canonical
+# (docbook.sourceforge.net) URL for the DocBook Project XSL
+# stylesheets OR it can be a local system path
DOCBOOK_XSL = http://docbook.sourceforge.net/release/xsl/current
+# -----------------------------------------------------------------
+# names of some DIRECTORIES and FILES we need
+# -----------------------------------------------------------------
+# we create a tmp directory once-per-make invocation; it is needed
+# keeping track of what man pages have been generated and also for
+# holding a temporary copy of the customer DBLaTeX stylesheet
+# (because dblatex(1) currently can't read a stylesheet from stdin
+TMP ?= /tmp
+TMPNUM := $(shell echo $$$$)
+DOCBOOK_TMP := $(TMP)/docbook-make-$(TMPNUM)
+
+# MAN_MANIFEST_EXT is file extension added to individual manifest
+# files
MAN_MANIFEST_EXT = man.manifest
MAN_MANIFEST_MASTER = MAN.MANIFEST
MAN_LOG = $(DOCBOOK_TMP)/MAN.log
+# -----------------------------------------------------------------
+# assorted OPTIONS
+# -----------------------------------------------------------------
+# HTML_STYLESHEET -> $html.stylesheet stylesheet param
+# http://docbook.sourceforge.net/snapshots/xsl/doc/html/html.stylesheet.html
HTML_STYLESHEET = style.css
+# HTML_IMAGES -> $admon.graphics.path
+# http://docbook.sourceforge.net/snapshots/xsl/doc/html/admon.graphics.path.html
HTML_IMAGES = images/
+# HTML_IMAGES_EXT -> $admon.graphics.extension
+# http://docbook.sourceforge.net/snapshots/xsl/doc/html/admon.graphics.extension.html
HTML_IMAGES_EXT = .png
-DOCBOOK_XSL_MAN := $(DOCBOOK_XSL_TMP)/manpages/docbook.xsl
-DOCBOOK_XSL_HTML := $(DOCBOOK_XSL_TMP)/html/docbook.xsl
-DOCBOOK_XSL_CHNK := $(DOCBOOK_XSL_TMP)/html/chunk.xsl
-DOCBOOK_XSL_FO := $(DOCBOOK_XSL_TMP)/fo/docbook.xsl
+# use these to set params on the command-line
+# format is, e.g., HTML_PARAMS="--stringparam variablelist.as.table 1..."
+FO_PARAMS =
+HTML_PARAMS =
+MAN_PARAMS =
-FO_PARAMS =
-HTML_PARAMS =
-MAN_PARAMS =
+# DBX_PARAMS is for dblatex(1); format uses "-p":
+# DBX_PARAMS="-p doc.publisher.show 1 -p term.breakline 1...
+DBX_PARAMS=
+# What file extension to you use for DocBook source files?
DOCBOOK_FILE_EXTENSION = .xml
+# -----------------------------------------------------------------
+# make(1) functions for building file lists
+# -----------------------------------------------------------------
+#
+# the values of the following are used for determing what needs
+# to be built and/or cleaned up
+
SOURCE_FILES_DBK = $(wildcard *$(DOCBOOK_FILE_EXTENSION))
FILES_FO = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).fo)
# -----------------------------------------------------------------
# ** Stylesheet Customization Layers **
# -----------------------------------------------------------------
+#
+# for DBLaTeX
+DBX_CUSTOM := <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \
+ version="1.0"> \
+ <xsl:param name="co.linkends.show">0</xsl:param> \
+ <xsl:param name="callout.markup.circled">1</xsl:param> \
+ <xsl:param name="callout.linkends.hot">0</xsl:param> \
+ <xsl:param name="doc.publisher.show">1</xsl:param> \
+ <xsl:param name="term.breakline">1</xsl:param> \
+ <xsl:param name="doc.alignment">left</xsl:param> \
+ <xsl:param name="latex.hyperparam"/> \
+ <xsl:param name="latex.style">docbook</xsl:param> \
+ <xsl:param name="latex.biblio.output">all</xsl:param> \
+ <xsl:param name="latex.bibfiles">""</xsl:param> \
+ <xsl:param name="latex.bibwidelabel">WIDELABEL</xsl:param> \
+ <xsl:param name="latex.output.revhistory">0</xsl:param> \
+ <xsl:param name="latex.figure.position">[htbp]</xsl:param> \
+ <xsl:param name="latex.figure.boxed">0</xsl:param> \
+ <xsl:param name="latex.babel.use">1</xsl:param> \
+ <xsl:param name="latex.babel.language"></xsl:param> \
+ <xsl:param name="latex.class.options">twoside</xsl:param> \
+ <xsl:param name="biblioentry.item.separator">, </xsl:param> \
+ <xsl:param name="refentry.xref.manvolnum">1</xsl:param> \
+ <xsl:param name="refsynopsis.title">Synopsis</xsl:param> \
+ <xsl:param name="refnamediv.title"></xsl:param> \
+ <xsl:param name="funcsynopsis.style">ansi</xsl:param> \
+ <xsl:param name="funcsynopsis.decoration">1</xsl:param> \
+ <xsl:param name="function.parens">0</xsl:param> \
+ <xsl:param name="classsynopsis.default.language">java</xsl:param> \
+ <xsl:param name="show.comments">0</xsl:param> \
+</xsl:stylesheet>
+# for FO output
FO_CUSTOM := <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \
xmlns:fo="http://www.w3.org/1999/XSL/Format" \
version="1.0"> \
</xsl:attribute-set> \
</xsl:stylesheet>
+# for single-file HTML outpout
HTML_CUSTOM := <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \
version="1.0"> \
<xsl:import href="$(DOCBOOK_XSL)/html/docbook.xsl"/> \
<xsl:param name="admon.graphics">0</xsl:param> \
</xsl:stylesheet>
-
+# for chunked HTML output
CHNK_CUSTOM := <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \
version="1.0"> \
<xsl:import href="$(DOCBOOK_XSL)/html/chunk.xsl"/> \
<xsl:param name="chunker.output.indent">yes</xsl:param> \
</xsl:stylesheet>
-
+# for man-page output
MAN_CUSTOM := <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \
version="1.0"> \
<xsl:import href="$(DOCBOOK_XSL)/manpages/docbook.xsl"/> \
man: $(FILES_MANM)
+# we can generated PDFs from man pages if we want
man-pdf: man
$(MAKE) $(FILES_MANP)
html: $(FILES_HTML)
html-chunk: $(HTML_MANIFEST)
- $(XSLTPROC) $(XSLTPROC_FLAGS) $(DOCBOOK_XSL_CHNK) $<
+ $(XSLT) $(XSLT_FLAGS) $(DOCBOOK_XSL_CHNK) $<
txt: $(FILES_TXT)
# pattern rule for making HTML and plain-text output
# -----------------------------------------------------------------
%.html: %.xml
- echo '$(HTML_CUSTOM)' | $(XSLTPROC) $(XSLTPROC_FLAGS) $(HTML_PARAMS) - $< > $@
+ echo '$(HTML_CUSTOM)' | $(XSLT) $(XSLT_FLAGS) $(HTML_PARAMS) - $< > $@
%.txt: %.html
$(TXT_MAKER) $(TXT_MAKER_FLAGS) ./$< \
# -----------------------------------------------------------------
%.fo: %.xml
echo '$(FO_CUSTOM)' \
- | $(XSLTPROC) $(XSLTPROC_FLAGS) $(FO_PARAMS) - $< > $@
+ | $(XSLT) $(XSLT_FLAGS) $(FO_PARAMS) - $< > $@
ifeq ($(PDF_MAKER),dblatex)
%.pdf: %.xml
- $(DBLATEX) $(DBLATEX_FLAGS) -o $@ $<
+ mkdir -p $(DOCBOOK_TMP)
+ echo '$(DBX_CUSTOM)' > $(DOCBOOK_TMP)/dblatex.xsl
+ $(DBLATEX) $(DBLATEX_FLAGS)\
+ -p $(DOCBOOK_TMP)/dblatex.xsl \
+ -o $@ \
+ $<
+ $(RM) -r $(DOCBOOK_TMP)
endif
%.pdf: %.fo
# pattern rules for making TeXinfo stuff
# -----------------------------------------------------------------
%.txml: %.xml
- $(DB2X_XSLTPROC) $(DB2X_XSLTPROC_FLAGS) -s texi -o $@ $<
+ $(DB2X_XSLT) $(DB2X_XSLT_FLAGS) -s texi -o $@ $<
%.texi: %.txml
$(DB2X_TEXIXML) $(DB2X_TEXIXML_FLAGS) $<
# -----------------------------------------------------------------
%.$(MAN_MANIFEST_EXT): %.xml
mkdir $(DOCBOOK_TMP)
- echo '$(MAN_CUSTOM)' | $(XSLTPROC) $(XSLTPROC_FLAGS) $(MAN_PARAMS) \
+ echo '$(MAN_CUSTOM)' | $(XSLT) $(XSLT_FLAGS) $(MAN_PARAMS) \
--stringparam man.manifest.filename $@ \
- \
$< \
mkdir -p $(DOCBOOK_TMP); \
mv $(MAN_MANIFEST) $(DOCBOOK_TMP)/$(MAN_MANIFEST).old; \
fi; \
- echo '$(MAN_CUSTOM)' | $(XSLTPROC) $(XSLTPROC_FLAGS) $(MAN_PARAMS) \
+ echo '$(MAN_CUSTOM)' | $(XSLT) $(XSLT_FLAGS) $(MAN_PARAMS) \
- \
$<; \
if [ -f $(DOCBOOK_TMP)/$(MAN_MANIFEST).old ]; then \
$(RM) -r $(DOCBOOK_TMP)
# -----------------------------------------------------------------
-# targets for cleaning up the mess
+# target(s) for cleaning up the mess
# -----------------------------------------------------------------
clean:
ifneq ($(FILES_TXT),)