1 | # $Source$
|
---|
2 | # $Author: xmldoc $
|
---|
3 | # $Date: 2007-03-05 06:28:18 +0000 (Mon, 05 Mar 2007) $
|
---|
4 | # $Revision: 6666 $
|
---|
5 | # vim: number
|
---|
6 | #
|
---|
7 | # -----------------------------------------------------------------
|
---|
8 | # ** Makefile.combine -- combine source files **
|
---|
9 | # -----------------------------------------------------------------
|
---|
10 | #
|
---|
11 | # This file is part of the DocBook Project XSL Stylesheet
|
---|
12 | # distribution.
|
---|
13 | #
|
---|
14 | # See http://docbook.sourceforge.net/release/xsl/current/
|
---|
15 | # for copyright and other information.
|
---|
16 | #
|
---|
17 | # This makefile creates "wrapper" files that combine sets of
|
---|
18 | # individual DocBook source files. The purpose of combining the
|
---|
19 | # files is to speed up processing time. By default it puts 20
|
---|
20 | # files into each wrapper. Use CHUNKSIZE to configure the number
|
---|
21 | # of files per wrapper.
|
---|
22 | #
|
---|
23 | # Currently, this makefile has only a "man" target and is mainly
|
---|
24 | # intended to speed up processing of large numbers of individual
|
---|
25 | # refentry instances.
|
---|
26 |
|
---|
27 | # What file extension do you use for DocBook source files?
|
---|
28 | DOCBOOK_FILE_EXTENSION = .xml
|
---|
29 | SOURCE_FILES_DBK = $(wildcard *$(DOCBOOK_FILE_EXTENSION))
|
---|
30 |
|
---|
31 | MAKEFILE_DOCBOOK = Makefile.DocBook
|
---|
32 |
|
---|
33 | XSLTPROC=xsltproc
|
---|
34 | XSLTPROC_FLAGS=
|
---|
35 |
|
---|
36 | SED=sed
|
---|
37 | SED_FLAGS=-i
|
---|
38 |
|
---|
39 | CHUNKSIZE ?= 20
|
---|
40 |
|
---|
41 | WRAPPER_ELEMENT = reference
|
---|
42 | WRAPPER_TITLE=Combined contents
|
---|
43 |
|
---|
44 | COMBINE_XSL = <?xml version="1.0"?> \
|
---|
45 | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" \
|
---|
46 | xmlns:exsl="http://exslt.org/common" \
|
---|
47 | xmlns:xi="http://www.w3.org/2001/XInclude" \
|
---|
48 | exclude-result-prefixes="exsl xi" \
|
---|
49 | extension-element-prefixes="exsl" \
|
---|
50 | version="1.0"> \
|
---|
51 | <xsl:param name="files"/> \
|
---|
52 | <xsl:param name="chunk.size"/> \
|
---|
53 | <xsl:template match="/"> \
|
---|
54 | <xsl:call-template name="make.file"/> \
|
---|
55 | </xsl:template> \
|
---|
56 | \
|
---|
57 | <xsl:template name="make.file"> \
|
---|
58 | <xsl:param name="count" select="1"/> \
|
---|
59 | <xsl:param name="current.files" select="concat(normalize-space($$files), ^^ ^^)"/> \
|
---|
60 | <xsl:param name="more.files" \
|
---|
61 | select="concat(normalize-space(substring-after($$current.files, ^^ ^^)),^^ ^^)"/> \
|
---|
62 | <xsl:param name="file.number" select="1"/> \
|
---|
63 | <xsl:param name="filename" select="concat(^^./build/^^,$$file.number,^^.xml^^)"/> \
|
---|
64 | \
|
---|
65 | <xsl:choose> \
|
---|
66 | <xsl:when test="$$more.files = ^^ ^^"/> \
|
---|
67 | <xsl:when test="$$count mod $$chunk.size = 0"> \
|
---|
68 | <xsl:variable name="fileset" select="concat($$current.files, ^^ ^^, \
|
---|
69 | substring-before($$more.files, ^^ ^^))"/> \
|
---|
70 | <exsl:document href="{$$filename}" \
|
---|
71 | method="xml" \
|
---|
72 | encoding="UTF-8" \
|
---|
73 | indent="yes" \
|
---|
74 | omit-xml-declaration="yes" \
|
---|
75 | media-type="" \
|
---|
76 | standalone="no"> \
|
---|
77 | <$(WRAPPER_ELEMENT)> \
|
---|
78 | <title>$(WRAPPER_TITLE)</title> \
|
---|
79 | <xsl:call-template name="make.xinclude"> \
|
---|
80 | <xsl:with-param name="file"> \
|
---|
81 | <xsl:choose> \
|
---|
82 | <xsl:when test="contains($$fileset, ^^ ^^)"> \
|
---|
83 | <xsl:value-of \
|
---|
84 | select="normalize-space(substring-before($$fileset, ^^ ^^))"/> \
|
---|
85 | </xsl:when> \
|
---|
86 | <xsl:otherwise> \
|
---|
87 | <xsl:value-of select="$$fileset"/> \
|
---|
88 | </xsl:otherwise> \
|
---|
89 | </xsl:choose> \
|
---|
90 | </xsl:with-param> \
|
---|
91 | <xsl:with-param \
|
---|
92 | name="remaining.files" \
|
---|
93 | select="concat(normalize-space(substring-after($$fileset, ^^ ^^)),^^ ^^)"/> \
|
---|
94 | </xsl:call-template> \
|
---|
95 | </$(WRAPPER_ELEMENT)> \
|
---|
96 | </exsl:document> \
|
---|
97 | <xsl:call-template name="make.file"> \
|
---|
98 | <xsl:with-param name="count" select="1"/> \
|
---|
99 | <xsl:with-param name="current.files" \
|
---|
100 | select="$$more.files"/> \
|
---|
101 | <xsl:with-param name="file.number" select="number($$file.number) + 1"/> \
|
---|
102 | <xsl:with-param name="filename" select="concat(^^./build/^^,$$file.number,^^.xml^^)"/> \
|
---|
103 | </xsl:call-template> \
|
---|
104 | </xsl:when> \
|
---|
105 | <xsl:otherwise> \
|
---|
106 | <xsl:call-template name="make.file"> \
|
---|
107 | <xsl:with-param name="count" select="$$count + 1"/> \
|
---|
108 | <xsl:with-param name="current.files"> \
|
---|
109 | <xsl:choose> \
|
---|
110 | <xsl:when test="$$count = 1 and $$file.number = 1"> \
|
---|
111 | <xsl:value-of \
|
---|
112 | select="concat(substring-before($$current.files, ^^ ^^), \
|
---|
113 | ^^ ^^, \
|
---|
114 | substring-before($$more.files, ^^ ^^))"/> \
|
---|
115 | </xsl:when> \
|
---|
116 | <xsl:when test="$$count = 1"> \
|
---|
117 | <xsl:value-of \
|
---|
118 | select="substring-before($$more.files, ^^ ^^)"/> \
|
---|
119 | </xsl:when> \
|
---|
120 | <xsl:otherwise> \
|
---|
121 | <xsl:value-of \
|
---|
122 | select="concat($$current.files, ^^ ^^, \
|
---|
123 | substring-before($$more.files, ^^ ^^))"/> \
|
---|
124 | </xsl:otherwise> \
|
---|
125 | </xsl:choose> \
|
---|
126 | </xsl:with-param> \
|
---|
127 | <xsl:with-param name="more.files" \
|
---|
128 | select="substring-after($$more.files, ^^ ^^)"/> \
|
---|
129 | <xsl:with-param name="file.number" select="$$file.number"/> \
|
---|
130 | </xsl:call-template> \
|
---|
131 | </xsl:otherwise> \
|
---|
132 | </xsl:choose> \
|
---|
133 | </xsl:template> \
|
---|
134 | \
|
---|
135 | <xsl:template name="make.xinclude"> \
|
---|
136 | <xsl:param name="file"/> \
|
---|
137 | <xsl:param name="remaining.files"/> \
|
---|
138 | <xsl:param name="count" select="1"/> \
|
---|
139 | <xsl:if test="not($$file = ^^^^)"> \
|
---|
140 | <xi:include href="../{$$file}"/> \
|
---|
141 | <xsl:call-template name="make.xinclude"> \
|
---|
142 | <xsl:with-param \
|
---|
143 | name="file" \
|
---|
144 | select="substring-before($$remaining.files, ^^ ^^)"/> \
|
---|
145 | <xsl:with-param \
|
---|
146 | name="remaining.files" \
|
---|
147 | select="substring-after($$remaining.files, ^^ ^^)"/> \
|
---|
148 | <xsl:with-param name="count" select="$$count + 1"/> \
|
---|
149 | </xsl:call-template> \
|
---|
150 | </xsl:if> \
|
---|
151 | </xsl:template> \
|
---|
152 | \
|
---|
153 | </xsl:stylesheet>
|
---|
154 |
|
---|
155 | all: man
|
---|
156 |
|
---|
157 | man: build/man
|
---|
158 |
|
---|
159 | build/Makefile:
|
---|
160 | if [ ! -d build ]; then mkdir build; fi
|
---|
161 | cp $(MAKEFILE_DOCBOOK) $@
|
---|
162 |
|
---|
163 | combine.xsl: Makefile
|
---|
164 | @echo '$(COMBINE_XSL)' > $@
|
---|
165 | $(SED) $(SED_FLAGS) "s/\^\^/'/g" $@
|
---|
166 |
|
---|
167 | build/1.xml: combine.xsl
|
---|
168 | $(XSLTPROC) $(XSLTPROC_FLAGS) \
|
---|
169 | --stringparam files "$(SOURCE_FILES_DBK)" \
|
---|
170 | --stringparam chunk.size $(CHUNKSIZE) \
|
---|
171 | $< $<
|
---|
172 |
|
---|
173 | build/man: build/Makefile build/1.xml
|
---|
174 | time $(MAKE) -C build man \
|
---|
175 | MAN_PARAMS="--stringparam man.output.quietly 1 \
|
---|
176 | --stringparam refentry.meta.get.quietly 1 \
|
---|
177 | --stringparam man.charmap.enabled 0"
|
---|
178 |
|
---|
179 | debug:
|
---|
180 |
|
---|
181 | clean:
|
---|
182 | $(RM) -r build
|
---|