# A very simple Makefile to generate the HTML docs # @author Vinod Kurup (vinod@kurup.com) # @author Modified by Roberto Mello (rmello@fslc.usu.edu) to have PDF generation # plus refactored it a bit to have rules and dependencies. # @author davis@xarg.net Added automatic creation of an XSL link so we don't edit openacs.xsl, # added a lint target which runs xmllint, changed pdf generation to use FOP. Made it # work on the mac. # macOS note: xmllint from fink does not work, use /usr/bin/xmllint # xmllint from fink seems to work fine on osx 10.4.x # # @creation-date 2002-08-10 # @modified-date 2003-12-06 # # This simply copies all the 'files' and 'images' # to the appropriate directory in www so that they are accessible # # It then moves into the www directory and runs the XSLT generation # and runs htmldoc to generate PDFs. # # I'm a Makefile newbie, so feel free to comment/slash/change. # Paths XSLTPROC=xsltproc HTMLDOC=htmldoc all: html XSL: if [ ! -d XSL -a ! -L XSL ]; then \ echo -e "\n\nNo XSL directory here. I am looking for one...\n"; \ for d in \ /opt/local/share/xsl/docbook-xsl \ /sw/share/xml/docbook-xsl \ /usr/share/sgml/docbook/xsl-stylesheets-* \ /usr/share/sgml/docbook/xsl-stylesheets \ /usr/share/sgml/docbook/stylesheet/xsl/nwalsh; \ do \ if [ -d $$d ]; then \ echo "Found $$d"; \ EXISTS=$$d; \ fi; \ done; \ if [ "$$EXISTS" = "" ]; then \ echo -e "\ \nNo xsl stylesheets found in /usr/share/sgml/docbook/\n\ You need to install them on your system or if they exist already,\n\ symlink them here so that XSL/html/chunk.xsl exists\n\ see http://sourceforge.net/projects/docbook/ for the docbook-xsl stylesheets\n"; \ exit 1; \ else \ echo "I think $$EXISTS is the best one\n\n"; \ ln -s $$EXISTS XSL; \ fi; \ fi; prelim: images cp images/*.{pdf,png,gif,jpg} ../images/ # all non-regenerated html is kept in a sub-dir so that we can delete html # in the main directory before regenerating # this helps avoid meaningless cvs conflicts in second-hand files rm -f ../*html target: non-xml # the dash u part of cp -u is redundant in the context of make/Makefile cp non-xml/*.html .. cp openacs.css .. html: prelim XSL # adding --nonet --novalid is much faster but generates a bunch of bogus error messages cd .. ; $(XSLTPROC) --xinclude xml/openacs.xsl xml/index.xml # I got this to work with FOP 0.20.5 and docbook-xsl 1.62, and Jimi 1.0 # see README.fop for some notes. pdf: XSL cd ..; fop -d -fo fop.fo -pdf full.pdf fopdf: XSL cd ..; $(XSLTPROC) --xinclude --output fop.fo xml/fo.xsl xml/index.xml cd ..; fop -d -fo fop.fo -pdf full.pdf # Validate with xmllint. --postvalid is needed so validation takes place after xincludes. # In emacs do M-x compile then make lint; then C-x ` to walk through the resulting errors. # /usr/bin/xmllint --xinclude --noout --postvalid index.xml 2>&1 | grep -v 'No declaration for attribute base of element' # /sw/bin/xmllint --xinclude --noout --postvalid index.xml 2>&1 | grep -v 'No declaration for attribute base of element' # I skip adding the grep at the end because it returns an ambiguous error when there are no messages at end of compiling.. due to no errors. lint: XSL /sw/bin/xmllint --xinclude --noout --postvalid index.xml 2>&1