WritingDocumentationUsingDocBook: docbook.mk

File docbook.mk, 10.4 kB (added by dshipton, 1 year ago)

Simple makefile stub for generating from DocBook

Line 
1 # ************** <auto-copyright.pl BEGIN do not edit this line> **************
2 #
3 # VR Juggler is (C) Copyright 1998-2006 by Iowa State University
4 #
5 # Original Authors:
6 #   Allen Bierbaum, Christopher Just,
7 #   Patrick Hartling, Kevin Meinert,
8 #   Carolina Cruz-Neira, Albert Baker
9 #
10 # This library is free software; you can redistribute it and/or
11 # modify it under the terms of the GNU Library General Public
12 # License as published by the Free Software Foundation; either
13 # version 2 of the License, or (at your option) any later version.
14 #
15 # This library is distributed in the hope that it will be useful,
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18 # Library General Public License for more details.
19 #
20 # You should have received a copy of the GNU Library General Public
21 # License along with this library; if not, write to the
22 # Free Software Foundation, Inc., 59 Temple Place - Suite 330,
23 # Boston, MA 02111-1307, USA.
24 #
25 # *************** <auto-copyright.pl END do not edit this line> ***************
26
27 # -----------------------------------------------------------------------------
28 # This file provides all the settings and targets needed to generate HTML and
29 # PDF documents from DocBook XML and SGML input.  It requires GNU make 3.78 or
30 # newer.
31 # -----------------------------------------------------------------------------
32
33 .SUFFIXES: .html .xml .pdf .tex .fo .txt
34
35 # Software and stylesheet versions.
36 DOCBOOK_XSL_VERSION?=   1.70.1
37 XALAN_VERSION?=         2_7_0
38 SAXON_VERSION?=         6.5.5
39 FOP_VERSION?=           0.20.5
40 BATIK_VERSION?=         1.5.1
41
42 ifeq ($(FOP_VERSION), 0.20.5)
43 FOP_SCRIPT=     fop.sh
44 else
45 FOP_SCRIPT=     fop
46 endif
47
48 # Installation paths.
49 DOCBOOK_ROOT?=  /home/vr/Juggler/docbook
50 BATIK_ROOT?=    $(DOCBOOK_ROOT)/batik-$(BATIK_VERSION)
51 SGML_ROOT?=     /usr/share/sgml/docbook
52 TEX_DIR?=       $(DOCBOOK_ROOT)/TeX
53 TEX_BINDIR?=    $(TEX_DIR)/bin/i386-linux
54
55 # Application paths.
56 DVIPDF?=        dvipdf
57 DVIPS?=         dvips
58 FOP?=           sh $(DOCBOOK_ROOT)/fop-$(FOP_VERSION)/$(FOP_SCRIPT)
59 HTML2TXT?=      html2text
60 HTML2TXTOPTS?=  -ascii -nobs -style pretty -width 76 -rcfile html2text.rc
61 HTML2TXTFILE?=  file:$<
62 JADE?=          openjade -V tex-backend
63 JADEPROC?=      $(DOCBOOK_ROOT)/jadeproc.pl
64 JADETEX?=       $(TEX_BINDIR)/jadetex
65 PDFJADETEX?=    $(TEX_BINDIR)/pdfjadetex
66 PDFLATEX?=      $(TEX_BINDIR)/pdflatex
67 PDFTEX?=        $(TEX_BINDIR)/pdftex
68 PDFXMLTEX?=     $(TEX_BINDIR)/pdfxmltex
69 RASTERIZER?=    BATIK_ROOT="$(BATIK_ROOT)" $(BATIK_ROOT)/svgrasterizer
70 RM=             rm -f
71 SAXON_DIR?=     $(DOCBOOK_ROOT)/saxon-$(SAXON_VERSION)
72 SAXON?=         $(SAXON_DIR)/saxon.sh
73 TEX_ENV?=       PATH=$(TEX_BINDIR):$(PATH) VARTEXMF=$(TEX_DIR)/texmf-var
74 XALAN_DIR?=     $(DOCBOOK_ROOT)/xalan-j_$(XALAN_VERSION)
75 XALAN?=         $(XALAN_DIR)/bin/xalan.sh
76 XEP?=           sh $(DOCBOOK_ROOT)/XEP/run.sh
77 XSLTPROC?=      /usr/bin/xsltproc
78
79 FO_TOOL?=       FOP
80 XSLT_TOOL?=     Xalan
81
82 recursive_copy= tar --exclude .svn --exclude CVS -chvf - $(1) | tar -C $(2) -xpf -
83
84 # Use one of the following depending on what will be processing the generated
85 # FO.  The default is to use FOP.  XEP or Passive TeX can be used instead by
86 # defining $(USE_XEP) or $(USE_PASSIVE_TEX) respectively.
87 ifeq ($(FO_TOOL), FOP)
88 ifeq ($(FOP_VERSION), 0.20.5)
89    XALAN_FO_PARAMS=     -PARAM fop.extensions "1" -PARAM alignment "start"
90    SAXON_FO_PARAMS=     fop.extensions=1 alignment="start"
91 else
92    XALAN_FO_PARAMS=     -PARAM fop1.extensions "1" -PARAM alignment "start"
93    SAXON_FO_PARAMS=     fop1.extensions=1 alignment="start"
94 endif
95 endif
96 ifeq ($(FO_TOOL), XEP)
97    XALAN_FO_PARAMS=     -PARAM xep.extensions "1"
98    SAXON_FO_PARAMS=     xep.extensions=1
99 endif
100 ifeq ($(FO_TOOL), PASSIVE_TEX)
101    XALAN_FO_PARAMS=     -PARAM passivetex.extensions "1"                \
102                         -PARAM tex.math.in.alt "latex"
103    SAXON_FO_PARAMS=     passivetex.extensions=1 tex.math.in.alt=latex
104 endif
105
106 SAXON_HTML_PARAMS=      html.stylesheet=base_style.css
107 XALAN_HTML_PARAMS=      -PARAM html.stylesheet "base_style.css"
108
109 XALAN_TXT_PARAMS=       -PARAM page.margin.bottom "0in" \
110                         -PARAM page.margin.inner "0in"  \
111                         -PARAM page.margin.outer "0in"  \
112                         -PARAM page.margin.top "0in"    \
113                         -PARAM paper.type "A5"
114
115 DB_SGML_DTD?=   $(DOCBOOK_ROOT)/docbook-sgml-4.1.dtd
116 DSSSL_DIR?=     $(DOCBOOK_ROOT)/docbook-dsssl-1.76
117 XSL_DIR=        $(DOCBOOK_ROOT)/docbook-xsl-$(DOCBOOK_XSL_VERSION)
118
119 HTML_XSL?=              $(XSL_DIR)/html/docbook.xsl
120 CHUNK_HTML_XSL?=        $(XSL_DIR)/html/chunk.xsl
121 FO_XSL?=                $(XSL_DIR)/fo/docbook.xsl
122
123 ENV=            DOCBOOK_XSL=$(XSL_DIR) DOCBOOK_ROOT=$(DOCBOOK_ROOT)     \
124                 SAXON_DIR=$(SAXON_DIR) XALAN_DIR=$(XALAN_DIR)           \
125                 DOCBOOK_XSL_VERSION=$(DOCBOOK_XSL_VERSION)              \
126                 SAXON_VERSION=$(SAXON_VERSION)
127
128 ifdef NEED_DB_IMAGES
129 LINK_DEPS=      images
130 endif
131
132 HTML_FILES=             $(XML_FILES:.xml=.html)
133 CHUNK_HTML_FILES=       $(XML_FILES:.xml=/index.html)
134 FO_FILES=               $(XML_FILES:.xml=.fo)
135 PDF_FILES=              $(XML_FILES:.xml=.pdf)
136 TXT_FILES=              $(XML_FILES:.xml=.txt)
137
138 txt: $(TXT_FILES)
139 html: $(LINK_DEPS) $(HTML_FILES)
140 chunk-html: $(CHUNK_HTML_FILES)
141 pdf: $(LINK_DEPS) $(PDF_FILES)
142
143 # The method for specifying a path to the images that come with the DocBook
144 # XSL stylesheets sucks.  It requires a path relative to the current directory,
145 # and we do not necessarily know how to get to $(XSL_DIR) relative to the
146 # current directory.  This hack with a symlink works around that problem.
147 images:
148         -rm -f ./images
149         ln -s $(XSL_DIR)/images ./
150
151 install-txt: $(TXT_FILES)
152 ifndef prefix
153         $(error "No prefix set!")
154 else
155         if [ ! -d "$(prefix)" ]; then mkdir -p $(prefix); fi
156         cp $(TXT_FILES) $(prefix)/
157 endif
158
159 install-html: $(LINK_DEPS) $(HTML_FILES)
160 ifndef prefix
161         $(error "No prefix set!")
162 else
163         if [ ! -d "$(prefix)" ]; then mkdir -p $(prefix); fi
164         cp $(HTML_FILES) $(prefix)/
165 ifdef INSTALL_FILES
166         cp $(INSTALL_FILES) $(prefix)/
167 endif
168 ifdef INSTALL_DIRS
169         $(call recursive_copy, $(INSTALL_DIRS), $(prefix))
170 endif
171 ifdef NEED_DB_IMAGES
172         $(call recursive_copy, images, $(prefix))
173 endif
174 endif
175
176 install-chunk-html:
177 ifndef prefix
178         $(error "No prefix set!")
179 else
180         if [ ! -d "$(prefix)" ]; then mkdir -p $(prefix); fi
181         for file in $(XML_FILES) ; do \
182             dir=`echo $$file | sed -e 's/\.xml//'` ; \
183             $(call recursive_copy, $$dir, $(prefix)) ; \
184             if [ ! -z "$(INSTALL_FILES)" ]; then \
185                 cp $(INSTALL_FILES) $(prefix)/$$dir ; \
186             fi ; \
187             if [ ! -z "$(NEED_DB_IMAGES)" ]; then \
188                 $(call recursive_copy, images, $(prefix)/$$dir) ; \
189             fi ; \
190             if [ ! -z "$(INSTALL_DIRS)" ]; then \
191                 $(call recursive_copy, $(INSTALL_DIRS), $(prefix)/$$dir) ; \
192             fi ; \
193           done
194 endif
195
196 install-pdf: $(PDF_FILES)
197 ifndef prefix
198         $(error "No prefix set!")
199 else
200         cp $(PDF_FILES) $(prefix)/
201 endif
202
203 install install-all:
204         $(MAKE) install-html
205         $(MAKE) install-chunk-html
206         $(MAKE) install-pdf
207
208 # Image conversions -----------------------------------------------------------
209
210 %.png: %.svg
211         $(RASTERIZER) -bg 255.255.255.255 -m png $<
212
213 %.jpg %.jpeg: %.svg
214         $(RASTERIZER) -q .75 -bg 255.255.255.255 -m jpg $<
215
216 # Basic XSL conversions -------------------------------------------------------
217
218 %.html: %.xml
219 ifeq ($(XSLT_TOOL), Xalan)
220         $(ENV) $(XALAN) -in $< -xsl $(HTML_XSL) -out $@         \
221           $(XALAN_HTML_PARAMS) $(EXTRA_XALAN_HTML_PARAMS)
222 else
223         $(ENV) $(SAXON) -i $< -xsl $(HTML_XSL) -o $@            \
224           $(SAXON_HTML_PARAMS) $(EXTRA_SAXON_HTML_PARAMS)
225 endif
226
227 %/index.html: %.xml
228         for file in $(XML_FILES) ; do \
229             dir=`echo $$file | sed -e 's/\.xml//'` ; \
230             if [ ! -d $$dir ] ; then mkdir $$dir ; fi ; \
231             if [ ! -z "$(INSTALL_FILES)" ]; then \
232                 cp $(INSTALL_FILES) $$dir ; \
233             fi ; \
234             if [ ! -z "$(INSTALL_DIRS)" ]; then \
235                 $(call recursive_copy, $(INSTALL_DIRS), $$dir) ; \
236             fi ; \
237             cur_dir=`pwd` ; \
238             cd $$dir ; \
239             $(ENV) $(SAXON) -i $$cur_dir/$$file -xsl $(CHUNK_HTML_XSL) \
240               $(SAXON_HTML_PARAMS) $(EXTRA_SAXON_HTML_PARAMS) ; \
241             cd $$cur_dir ; \
242           done
243
244 %.fo: %.xml
245 ifeq ($(XSLT_TOOL), Xalan)
246         $(ENV) $(XALAN) -in $< -xsl $(FO_XSL) -out $@           \
247           $(XALAN_FO_PARAMS) $(EXTRA_XALAN_FO_PARAMS)
248 else
249         $(ENV) $(SAXON) -i $< -xsl $(FO_XSL) -o $@              \
250           $(SAXON_FO_PARAMS) $(EXTRA_SAXON_FO_PARAMS)
251 endif
252
253 %.txt: %.html
254         $(HTML2TXT) $(HTML2TXTOPTS) $(EXTRA_HTML2TXTOPTS) $(HTML2TXTFILE) > $@
255
256 #%.txt: %.xml
257 #ifeq ($(XSLT_TOOL), Xalan)
258 #       $(ENV) $(XALAN) -in $< -xsl $(FO_XSL) -out $@           \
259 #          $(XALAN_TXT_PARAMS) $(EXTRA_XALAN_TXT_PARAMS)
260 #else
261 #       $(ENV) $(SAXON) -i $< -xsl $(FO_XSL) -o $@              \
262 #          $(SAXON_TXT_PARAMS) $(EXTRA_SAXON_TXT_PARAMS)
263 #endif
264 #       $(FOP) -fo $< -txt $@
265
266 # Generate a PDF file from an FO file using FOP.
267 ifeq ($(FO_TOOL), FOP)
268 $(PDF_FILES): $(FO_FILES)
269 $(TXT_FILES): $(FO_FILES)
270
271 %.pdf: %.fo
272         $(FOP) $< $@
273
274 %.txt: %.fo
275         $(FOP) -fo $< -txt $@
276 endif
277
278 # Generate a PDF file from an XML file using FOP.
279 #%.pdf: %.xml
280 #       $(FOP) -xml $< -xsl $(FO_XSL) -pdf $@
281
282 # -----------------------------------------------------------------------------
283
284 # Jade/JadeTex conversions ----------------------------------------------------
285
286 # Generate a TeX file using Jade.
287 ifdef USE_JADEPROC
288 %.pdf: %.xml
289         $(TEX_ENV) $(JADEPROC) -i $< -o $@ -d $(DB_SGML_DTD)            \
290           -s $(DSSSL_DIR)/print/docbook.dsl
291          
292 else
293 %.tex: %.xml
294         $(JADE) -t tex -d $(DSSSL_DIR)/print/docbook.dsl $<
295
296 # $(PDFJADETEX) has to be run twice for page references to be calculated.  :(
297 %.pdf: %.xml
298         -$(TEX_ENV) $(PDFJADETEX) $<
299 endif
300
301 # -----------------------------------------------------------------------------
302
303 # PassiveTeX conversions ------------------------------------------------------
304
305 # Generate a PDF file from an XML file using PassiveTeX.  This one requires
306 # that a simple TeX file be generated from the XML first (see below).
307 ifeq ($(FO_TOOL), PASSIVE_TEX)
308 $(PDF_FILES): $(FO_FILES)
309
310 %.pdf: %.fo
311         $(TEX_ENV) $(PDFXMLTEX) $*.fo
312 #       $(TEX_ENV) $(PDFXMLTEX) $*.fo
313
314 # Generate a TeX file for use with PassiveTeX.
315 #%.tex: %.xml
316 #       @echo "Generating $*.tex from $<"
317 #       @echo '\def\xmlfile{$*.fo}' >$*.tex
318 #       @echo '\input xmltex' >>$*.tex
319 endif
320
321 # -----------------------------------------------------------------------------
322
323 # RenderX XEP conversions -----------------------------------------------------
324
325 # Generate a PDF file using XEP from RenderX.  This requires that an FO file
326 # be generated first.
327 ifeq ($(FO_TOOL), XEP)
328 $(PDF_FILES): $(FO_FILES)
329
330 %.pdf: %.fo
331         $(XEP) $*.fo
332 endif
333
334 # -----------------------------------------------------------------------------
335
336 clean:
337         $(RM) *.aux *.out *.tex *.log *.fo *~ $(CLEAN_FILES)
338 ifneq ($(CLEAN_DIRS), )
339         $(RM) -r $(CLEAN_DIRS)
340 endif
341
342 clobber:
343         @$(MAKE) clean
344         $(RM) -f *.html *.pdf $(LINK_DEPS) $(CLOBBER_FILES)
345         $(RM) -rf $(XML_FILES:.xml=)
346 ifneq ($(CLOBBER_DIRS), )
347         $(RM) -r $(CLOBBER_DIRS)
348 endif