[svnbook commit] r1222 - trunk/src/en

maxb svnbook-dev at red-bean.com
Thu Apr 21 12:56:27 CDT 2005


Author: maxb
Date: Thu Apr 21 12:56:26 2005
New Revision: 1222

Modified:
   trunk/src/en/Makefile
Log:
Major attack of refactoring on Makefile. Amongst other things, generate the FO
file only once when building both PS and PDF, switch the XML validator to
xmllint, since it is faster and less complex to invoke (and so it should now
work regardless of platform), remove several obfuscating variables, tidy up
overlength lines, and move some more things into the "You may want to
customize these paths" section.

* en/Makefile: Lots!


Modified: trunk/src/en/Makefile
==============================================================================
--- trunk/src/en/Makefile	(original)
+++ trunk/src/en/Makefile	Thu Apr 21 12:56:26 2005
@@ -1,87 +1,78 @@
+# Paths which you may wish to customize:
 XSLTPROC = xsltproc
+XMLLINT = xmllint
 INSTALL_DIR = $(DESTDIR)/usr/share/doc/subversion
 INSTALL = install
+SVNVERSION = svnversion
 
-## You shouldn't normally need to edit anything below here.
+# You should not normally need to edit anything below here.
 SHELL = /bin/sh
-SVNVERSION = svnversion
 
-BOOK_TOP = .
 TOOLS_DIR = ../tools
+BOOK_DIR = book
 BOOK_HTML_CHUNK_DIR = $(BOOK_DIR)/html-chunk
-BOOK_DIR = ${BOOK_TOP}/book
 BOOK_HTML_TARGET = $(BOOK_DIR)/svn-book.html
-BOOK_HTML_CHUNK_TARGET = $(BOOK_HTML_CHUNK_DIR)/index.html  # index.html is created last
+# In the HTML chunk build, index.html is created last, so serves as an 
+# acceptable timestamp file for the entire multi-file output.
+BOOK_HTML_CHUNK_TARGET = $(BOOK_HTML_CHUNK_DIR)/index.html
 BOOK_PDF_TARGET = $(BOOK_DIR)/svn-book.pdf
 BOOK_PS_TARGET = $(BOOK_DIR)/svn-book.ps
 BOOK_FO_TARGET = $(BOOK_DIR)/svn-book.fo
 BOOK_XML_SOURCE = $(BOOK_DIR)/book.xml
-BOOK_VERSION_SOURCE =  $(BOOK_DIR)/version.xml
+BOOK_VERSION_SOURCE = $(BOOK_DIR)/version.xml
 BOOK_ALL_SOURCE = $(BOOK_DIR)/*.xml
 BOOK_IMAGES = $(BOOK_DIR)/images/*.png
 BOOK_INSTALL_DIR = $(INSTALL_DIR)/book
 
-XSL_FO = $(TOOLS_DIR)/fo-stylesheet.xsl
-XSL_HTML = $(TOOLS_DIR)/html-stylesheet.xsl
-XSL_HTML_CHUNK = $(TOOLS_DIR)/chunk-stylesheet.xsl
-
 ENSURE_XSL = if ! test -e "$(TOOLS_DIR)/xsl"; \
 	     then $(TOOLS_DIR)/bin/find-xsl.py; fi
-RUN_FOP = $(TOOLS_DIR)/bin/run-fop.sh
 
-# Book xsltproc options for HTML output
-# Note: --stringparam arguments no longer go here; 
-# see ../tools/html-stylesheet.xsl and ../tools/chunk-stylesheet.xsl
+# Customization hooks for xsltproc options
 BOOK_HTML_XSLTPROC_OPTS = 
+BOOK_FO_XSLTPROC_OPTS =
+# FO example: --stringparam page.height 9in --stringparam page.width 6.4in
 
-# Book xsltproc options for PDF and PostScript output
-# BOOK_PDF_XSLTPROC_OPTS = --stringparam page.height 9in --stringparam page.width 6.4in
-# BOOK_PS_XSLTPROC_OPTS = --stringparam page.height 9in --stringparam page.width 6.4in
-
-# Uncomment the following lines if you'd like to print on A4 paper
-# BOOK_PDF_XSLTPROC_OPTS = --stringparam paper.type A4
-# BOOK_PS_XSLTPROC_OPTS = --stringparam paper.type A4
-
-all: all-html all-pdf all-ps
-
-install: install-book
+# Uncomment the following line if you'd like to print on A4 paper
+# BOOK_FO_XSLTPROC_OPTS = --stringparam paper.type A4
 
+# Grouping targets
+all: all-book
+all-book: book-html book-html-chunk book-pdf book-ps
 all-html: book-html book-html-chunk
-
 all-pdf: book-pdf
-
 all-ps: book-ps
 
-all-book: book-html book-html-chunk book-pdf book-ps
-
-install-book: install-book-html install-book-html-chunk install-book-pdf install-book-ps
+install: install-book
+install-book: install-book-html install-book-html-chunk \
+	      install-book-pdf install-book-ps
 
 clean: book-clean
 
+# Build targets
 $(BOOK_VERSION_SOURCE): book-version
 
 book-version:
 	@if $(SVNVERSION) . > /dev/null; then \
-	echo '<!ENTITY svn.version "Revision '`$(SVNVERSION) .`'">' > $(BOOK_VERSION_SOURCE).tmp; \
+	  echo '<!ENTITY svn.version "Revision '`$(SVNVERSION) .`'">' \
+	    > $(BOOK_VERSION_SOURCE).tmp; \
 	else \
-	echo '<!ENTITY svn.version "">' > $(BOOK_VERSION_SOURCE).tmp; \
+	  echo '<!ENTITY svn.version "">' > $(BOOK_VERSION_SOURCE).tmp; \
 	fi
 	@if cmp -s $(BOOK_VERSION_SOURCE) $(BOOK_VERSION_SOURCE).tmp; then \
-	rm $(BOOK_VERSION_SOURCE).tmp; \
+	  rm $(BOOK_VERSION_SOURCE).tmp; \
 	else \
-	mv $(BOOK_VERSION_SOURCE).tmp $(BOOK_VERSION_SOURCE); \
+	  mv $(BOOK_VERSION_SOURCE).tmp $(BOOK_VERSION_SOURCE); \
 	fi
 
 book-html: $(BOOK_HTML_TARGET)
-
 $(BOOK_HTML_TARGET): $(BOOK_ALL_SOURCE) $(BOOK_VERSION_SOURCE)
 	$(ENSURE_XSL)
-	$(XSLTPROC) $(BOOK_HTML_XSLTPROC_OPTS) \
-           --output $(BOOK_HTML_TARGET) $(XSL_HTML) $(BOOK_XML_SOURCE)
+	$(XSLTPROC) $(BOOK_HTML_XSLTPROC_OPTS) --output $(BOOK_HTML_TARGET) \
+	  $(TOOLS_DIR)/html-stylesheet.xsl $(BOOK_XML_SOURCE)
 
+# The trailing slash on the xsltproc --output option is essential to
+# output pages into the directory
 book-html-chunk: $(BOOK_HTML_CHUNK_TARGET)
-
-## This trailing slash is essential that xsltproc will output pages to the dir
 $(BOOK_HTML_CHUNK_TARGET): $(BOOK_ALL_SOURCE) $(BOOK_VERSION_SOURCE) \
                            $(BOOK_DIR)/styles.css $(BOOK_IMAGES)
 	mkdir -p $(BOOK_HTML_CHUNK_DIR)
@@ -89,26 +80,26 @@
 	$(ENSURE_XSL)
 	$(XSLTPROC) $(BOOK_HTML_XSLTPROC_OPTS) \
            --output $(BOOK_HTML_CHUNK_DIR)/ \
-	   $(XSL_HTML_CHUNK) $(BOOK_XML_SOURCE)
+	   $(TOOLS_DIR)/chunk-stylesheet.xsl $(BOOK_XML_SOURCE)
 	cp $(BOOK_DIR)/styles.css $(BOOK_HTML_CHUNK_DIR)
 	cp $(BOOK_IMAGES) $(BOOK_HTML_CHUNK_DIR)/images
 
+$(BOOK_FO_TARGET): $(BOOK_ALL_SOURCE) $(BOOK_VERSION_SOURCE) $(BOOK_IMAGES)
+	$(ENSURE_XSL)
+	$(XSLTPROC) $(BOOK_FO_XSLTPROC_OPTS) --output $(BOOK_FO_TARGET) \
+	  $(TOOLS_DIR)/fo-stylesheet.xsl $(BOOK_XML_SOURCE)
+
 book-pdf: $(BOOK_PDF_TARGET)
+$(BOOK_PDF_TARGET): $(BOOK_FO_TARGET) $(BOOK_IMAGES)
+	$(TOOLS_DIR)/bin/run-fop.sh . -fo $(BOOK_FO_TARGET) \
+	  -pdf $(BOOK_PDF_TARGET)
 
 book-ps: $(BOOK_PS_TARGET)
+$(BOOK_PS_TARGET): $(BOOK_FO_TARGET) $(BOOK_IMAGES)
+	$(TOOLS_DIR)/bin/run-fop.sh . -fo $(BOOK_FO_TARGET) \
+	  -ps $(BOOK_PS_TARGET)
 
-$(BOOK_PDF_TARGET): $(BOOK_ALL_SOURCE) $(BOOK_VERSION_SOURCE) $(BOOK_IMAGES)
-	$(ENSURE_XSL)
-	$(XSLTPROC) $(BOOK_PDF_XSLTPROC_OPTS) \
-	   --output $(BOOK_FO_TARGET) $(XSL_FO) $(BOOK_XML_SOURCE)
-	$(RUN_FOP) $(BOOK_TOP) -fo $(BOOK_FO_TARGET) -pdf $(BOOK_PDF_TARGET)
-
-$(BOOK_PS_TARGET): $(BOOK_ALL_SOURCE) $(BOOK_VERSION_SOURCE) $(BOOK_IMAGES)
-	$(ENSURE_XSL)
-	$(XSLTPROC) $(BOOK_PS_XSLTPROC_OPTS) \
-	   --output $(BOOK_FO_TARGET) $(XSL_FO) $(BOOK_XML_SOURCE)
-	$(RUN_FOP) $(BOOK_TOP) -fo $(BOOK_FO_TARGET) -ps $(BOOK_PS_TARGET)
-
+# Install targets
 $(BOOK_INSTALL_DIR):
 	$(INSTALL) -d $(BOOK_INSTALL_DIR)
 
@@ -130,16 +121,14 @@
 install-book-ps: $(BOOK_PS_TARGET) $(BOOK_INSTALL_DIR)
 	$(INSTALL) $(BOOK_PS_TARGET) $(BOOK_INSTALL_DIR)
 
+# Clean targets
 book-clean:
 	rm -f $(BOOK_VERSION_SOURCE)
 	rm -f $(BOOK_HTML_TARGET) $(BOOK_FO_TARGET)
 	rm -rf $(BOOK_HTML_CHUNK_DIR)
 	rm -f $(BOOK_PDF_TARGET) $(BOOK_PS_TARGET) 
 
-# The path to xml.soc is going to vary wildly from system to system.
-# I suppose we need another find-foo script - unless anyone has a better idea?
-valid:
-	SP_CHARSET_FIXED=YES SP_ENCODING=XML \
-	SGML_CATALOG_FILES="/usr/share/OpenSP/xml.soc" \
-	onsgmls -wxml -ges book/book.xml
+# Utility targets
+valid: $(BOOK_VERSION_SOURCE)
+	$(XMLLINT) --noout --nonet --valid $(BOOK_XML_SOURCE)
 



More information about the svnbook-dev mailing list