root/juggler/trunk/doc/docbook.mk

Revision 20974, 10.7 kB (checked in by patrick, 8 months ago)

Copyright update.

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