182 lines
6.5 KiB
Text
Vendored
182 lines
6.5 KiB
Text
Vendored
# $Source$
|
|
# $Author: xmldoc $
|
|
# $Date: 2007-03-04 22:28:18 -0800 (Sun, 04 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
|