| # $Source$ |
| # $Author: xmldoc $ |
| # $Date: 2007-03-05 06:28:18 +0000 (Mon, 05 Mar 2007) $ |
| # $Revision: 6666 $ |
| # vim: number |
| # |
| # ----------------------------------------------------------------- |
| # ** Makefile.combine -- combine source files ** |
| # ----------------------------------------------------------------- |
| # |
| # This file is part of the DocBook Project XSL Stylesheet |
| # distribution. |
| # |
| # See http://docbook.sourceforge.net/release/xsl/current/ |
| # for copyright and other information. |
| # |
| # This makefile creates "wrapper" files that combine sets of |
| # individual DocBook source files. The purpose of combining the |
| # files is to speed up processing time. By default it puts 20 |
| # files into each wrapper. Use CHUNKSIZE to configure the number |
| # of files per wrapper. |
| # |
| # Currently, this makefile has only a "man" target and is mainly |
| # intended to speed up processing of large numbers of individual |
| # refentry instances. |
| |
| # What file extension do you use for DocBook source files? |
| DOCBOOK_FILE_EXTENSION = .xml |
| SOURCE_FILES_DBK = $(wildcard *$(DOCBOOK_FILE_EXTENSION)) |
| |
| MAKEFILE_DOCBOOK = Makefile.DocBook |
| |
| XSLTPROC=xsltproc |
| XSLTPROC_FLAGS= |
| |
| SED=sed |
| SED_FLAGS=-i |
| |
| CHUNKSIZE ?= 20 |
| |
| WRAPPER_ELEMENT = reference |
| WRAPPER_TITLE=Combined contents |
| |
| COMBINE_XSL = <?xml version="1.0"?> \ |
| <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \ |
| xmlns:exsl="http://exslt.org/common" \ |
| xmlns:xi="http://www.w3.org/2001/XInclude" \ |
| exclude-result-prefixes="exsl xi" \ |
| extension-element-prefixes="exsl" \ |
| version="1.0"> \ |
| <xsl:param name="files"/> \ |
| <xsl:param name="chunk.size"/> \ |
| <xsl:template match="/"> \ |
| <xsl:call-template name="make.file"/> \ |
| </xsl:template> \ |
| \ |
| <xsl:template name="make.file"> \ |
| <xsl:param name="count" select="1"/> \ |
| <xsl:param name="current.files" select="concat(normalize-space($$files), ^^ ^^)"/> \ |
| <xsl:param name="more.files" \ |
| select="concat(normalize-space(substring-after($$current.files, ^^ ^^)),^^ ^^)"/> \ |
| <xsl:param name="file.number" select="1"/> \ |
| <xsl:param name="filename" select="concat(^^./build/^^,$$file.number,^^.xml^^)"/> \ |
| \ |
| <xsl:choose> \ |
| <xsl:when test="$$more.files = ^^ ^^"/> \ |
| <xsl:when test="$$count mod $$chunk.size = 0"> \ |
| <xsl:variable name="fileset" select="concat($$current.files, ^^ ^^, \ |
| substring-before($$more.files, ^^ ^^))"/> \ |
| <exsl:document href="{$$filename}" \ |
| method="xml" \ |
| encoding="UTF-8" \ |
| indent="yes" \ |
| omit-xml-declaration="yes" \ |
| media-type="" \ |
| standalone="no"> \ |
| <$(WRAPPER_ELEMENT)> \ |
| <title>$(WRAPPER_TITLE)</title> \ |
| <xsl:call-template name="make.xinclude"> \ |
| <xsl:with-param name="file"> \ |
| <xsl:choose> \ |
| <xsl:when test="contains($$fileset, ^^ ^^)"> \ |
| <xsl:value-of \ |
| select="normalize-space(substring-before($$fileset, ^^ ^^))"/> \ |
| </xsl:when> \ |
| <xsl:otherwise> \ |
| <xsl:value-of select="$$fileset"/> \ |
| </xsl:otherwise> \ |
| </xsl:choose> \ |
| </xsl:with-param> \ |
| <xsl:with-param \ |
| name="remaining.files" \ |
| select="concat(normalize-space(substring-after($$fileset, ^^ ^^)),^^ ^^)"/> \ |
| </xsl:call-template> \ |
| </$(WRAPPER_ELEMENT)> \ |
| </exsl:document> \ |
| <xsl:call-template name="make.file"> \ |
| <xsl:with-param name="count" select="1"/> \ |
| <xsl:with-param name="current.files" \ |
| select="$$more.files"/> \ |
| <xsl:with-param name="file.number" select="number($$file.number) + 1"/> \ |
| <xsl:with-param name="filename" select="concat(^^./build/^^,$$file.number,^^.xml^^)"/> \ |
| </xsl:call-template> \ |
| </xsl:when> \ |
| <xsl:otherwise> \ |
| <xsl:call-template name="make.file"> \ |
| <xsl:with-param name="count" select="$$count + 1"/> \ |
| <xsl:with-param name="current.files"> \ |
| <xsl:choose> \ |
| <xsl:when test="$$count = 1 and $$file.number = 1"> \ |
| <xsl:value-of \ |
| select="concat(substring-before($$current.files, ^^ ^^), \ |
| ^^ ^^, \ |
| substring-before($$more.files, ^^ ^^))"/> \ |
| </xsl:when> \ |
| <xsl:when test="$$count = 1"> \ |
| <xsl:value-of \ |
| select="substring-before($$more.files, ^^ ^^)"/> \ |
| </xsl:when> \ |
| <xsl:otherwise> \ |
| <xsl:value-of \ |
| select="concat($$current.files, ^^ ^^, \ |
| substring-before($$more.files, ^^ ^^))"/> \ |
| </xsl:otherwise> \ |
| </xsl:choose> \ |
| </xsl:with-param> \ |
| <xsl:with-param name="more.files" \ |
| select="substring-after($$more.files, ^^ ^^)"/> \ |
| <xsl:with-param name="file.number" select="$$file.number"/> \ |
| </xsl:call-template> \ |
| </xsl:otherwise> \ |
| </xsl:choose> \ |
| </xsl:template> \ |
| \ |
| <xsl:template name="make.xinclude"> \ |
| <xsl:param name="file"/> \ |
| <xsl:param name="remaining.files"/> \ |
| <xsl:param name="count" select="1"/> \ |
| <xsl:if test="not($$file = ^^^^)"> \ |
| <xi:include href="../{$$file}"/> \ |
| <xsl:call-template name="make.xinclude"> \ |
| <xsl:with-param \ |
| name="file" \ |
| select="substring-before($$remaining.files, ^^ ^^)"/> \ |
| <xsl:with-param \ |
| name="remaining.files" \ |
| select="substring-after($$remaining.files, ^^ ^^)"/> \ |
| <xsl:with-param name="count" select="$$count + 1"/> \ |
| </xsl:call-template> \ |
| </xsl:if> \ |
| </xsl:template> \ |
| \ |
| </xsl:stylesheet> |
| |
| all: man |
| |
| man: build/man |
| |
| build/Makefile: |
| if [ ! -d build ]; then mkdir build; fi |
| cp $(MAKEFILE_DOCBOOK) $@ |
| |
| combine.xsl: Makefile |
| @echo '$(COMBINE_XSL)' > $@ |
| $(SED) $(SED_FLAGS) "s/\^\^/'/g" $@ |
| |
| build/1.xml: combine.xsl |
| $(XSLTPROC) $(XSLTPROC_FLAGS) \ |
| --stringparam files "$(SOURCE_FILES_DBK)" \ |
| --stringparam chunk.size $(CHUNKSIZE) \ |
| $< $< |
| |
| build/man: build/Makefile build/1.xml |
| time $(MAKE) -C build man \ |
| MAN_PARAMS="--stringparam man.output.quietly 1 \ |
| --stringparam refentry.meta.get.quietly 1 \ |
| --stringparam man.charmap.enabled 0" |
| |
| debug: |
| |
| clean: |
| $(RM) -r build |