# A-A-P recipe for generating HTML files from the DocBook documentation.
#
# To use this recipe you will need the XML docbook tools at the very least.
# To generate exec.txt, the text version, you will need 'links" or "lynx".
# To generate exec.pdf you need "htmldoc".
#
# Where to get these tools is documented in the README file.
# USER SERVICABLE PARTS:
# Set these to the directories where your
# XML docbook files and XSL stylesheets reside (there should be a
# docbook/ directory under each of these).
XMLdir = /usr/local/share/xml
XSLdir = /usr/local/share/xsl
# List of the edited files. There is no list of HTML files, since these are
# generated and their names depend on the sgml files.
DocSource =
exec.sgml
`glob("tutor*.sgml")`
`glob("user*.sgml")`
`glob("ref*.sgml")`
license.sgml
_top.DocDistFiles = $DocSource version.sgml aap.mod
# Clean up the HTML files through "aap clean".
# Also clean up the xsl files.
CLEANFILES += `sufreplace(".sgml", ".html", DocSource)`
index.html user.html tutorial.html reference.html appendix.html
chunk.xsl onechunk.xsl
exec.html exec.txt exec.pdf
# NO USER SERVICABLE PARTS BELOW (maybe)
# Only produce HTML when no target specified.
all: index.html
html {virtual} {comment = Build all HTML files} : exec.html index.html
txt {virtual} {comment = Build the text version of the docs} : exec.txt
pdf {virtual} {comment = Make a PDF from the big HTML file} : exec.pdf
# Build the "small files" HTML version, with one file for every chapter.
index.html {signfile = mysign} : $_top.DocDistFiles chunk.xsl
# generate the separate HTML files
:sys SGML_CATALOG_FILES=$XMLdir/docbook/4.2/docbook.cat
xsltproc --catalogs chunk.xsl exec.sgml
# Build the "big" HTML file containing everything.
exec.html {signfile = mysign} : $_top.DocDistFiles onechunk.xsl
# generate the single big HTML file. Our onechunk.xsl
# uses docbook.xsl, which prints to stdout, not to a file.
:sys SGML_CATALOG_FILES=$XMLdir/docbook/4.2/docbook.cat
xsltproc --catalogs onechunk.xsl exec.sgml > exec.html
# Convert big HTML file to text as best we can
exec.txt { signfile = mysign } : exec.html
# Convert the single HTML file to plain text.
# Works well with older versions of links, but newer versions don't support
# -dump! Fall back to Lynx then.
@try:
:sys links -dump exec.html >exec.txt
@except:
:print "links" doesn't work, now trying to use "lynx"...
:sys lynx -dump -nolist exec.html >exec.txt
# Convert big HTML file to PDF
exec.pdf {signfile = mysign} : exec.html
@try:
:sys htmldoc -f exec.pdf exec.html
@except:
:pass
# Generate the version.sgml file, containing the date and version numbers
version.sgml {signfile = mysign} : $DocSource
:print Generating $-target
:syseval ../aap --version | :assign vers
:print $vers |
:eval re.sub('.* version ', '', stdin) |
:eval re.sub(';.*\\s*', '', stdin) |
:assign aapversion
:print $vers |
:eval re.sub('.* released ', '', stdin) |
:assign builddate
:print >! $target $lt!-- vim: set ft=dtd:
:print >> $target THIS IS AN AUTOMATICALLY-GENERATED FILE. DO NOT EDIT.
:print >> $target --$gt
:print >> $target $lt!ENTITY builddate "$builddate"$gt
:print >> $target $lt!ENTITY aapversion "$aapversion"$gt
# Create the chunk.xsl stylesheet, which contains a path
# to the XSL standard stylesheets (which is set by XSLdir,
# so it might be different from what the distributed stylesheets say).
chunk.xsl :
:do makexsl chunk
onechunk.xsl :
:do makexsl docbook
# Action to generate a simple xsl file. $source is the name of the xsl
# docbook file to import.
:action makexsl default
:print >! $target $(lt)xsl:stylesheet
:print >> $target xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
:print >> $target version="1.0"$(gt)
:print >> $target $(lt)xsl:import href="$XSLdir/docbook/html/$(source).xsl"/$(gt)
:print >> $target $(lt)xsl:include href="aap.xsl"/$(gt)
:print >> $target $(lt)/xsl:stylesheet$(gt)
:print Created $target
# vim: set sw=4 sts=4: