1 # Makefile, used for the developers-reference in DocBook XML
3 # Note: This Makefile should work perfectly without the debian/ directory.
5 SOURCES := $(wildcard *.dbk) common.ent version.ent
7 FORMATS := html txt pdf
9 TARGETS := $(foreach fmt,$(FORMATS),developers-reference.$(fmt)) \
10 $(foreach lng,$(LANGS), \
11 $(foreach fmt,$(FORMATS), \
12 $(lng)/developers-reference.$(fmt)))
13 # list of targets, that currently cannot build
14 #BLACKLIST := ja/developers-reference.pdf
16 # hopefully overwritten by caller, e.g. debian/rules
20 # programs for creating output
21 XP=xsltproc --nonet --novalid --xinclude
22 XL=xmllint --nonet --noout --postvalid --xinclude
23 # dblatex 0.2.8 has some problems (e.g. #465221 and Japanese does
26 # - docbook2pdf (seems to die on UTF-8, #431085); and
27 # - fop is currently in contrib, but can go to main, see #366783
28 # - xmlroff (not mature enough, #182445)
29 DBLATEX=dblatex --style=db2latex
30 TRANSLATE=po4a po4a/po4a.cfg
32 # XSL files and parameters
33 # note: the URL is used as identifier, no HTTP is used!
34 DOCBOOK_XSL=http://docbook.sourceforge.net/release/xsl/current
36 DBK2HTML=$(CURDIR)/html.xsl
37 # all in one file for text output
38 DBK2HTML1=$(CURDIR)/txt.xsl
41 all: $(filter-out $(BLACKLIST), $(TARGETS))
47 %/validate: $(addprefix %/,$(SOURCES))
48 cd $(@D) && $(XL) index.dbk
50 # This rule controls the build and installation on the website
51 # Logs are here: http://www-master.debian.org/build-logs/ddp/
54 [ -d $(PUBLISHDIR) ] || exit 1
55 install -d -m 755 $(PUBLISHDIR)/developers-reference
56 rm -f $(PUBLISHDIR)/developers-reference/*.html
57 rm -f en && ln -sf . en
58 $(foreach format,$(FORMATS),$(foreach lang,en $(LANGS),for file in $(lang)/*.$(format); do if [ -e "$$file" ]; then cp --preserve=timestamps $$file $(PUBLISHDIR)/developers-reference/$$(basename $$file .$(format)).$(lang).$(format); fi; done;))
59 ln -sf index.en.html $(PUBLISHDIR)/developers-reference/index.html
60 ln -sf developers-reference.en.pdf $(PUBLISHDIR)/developers-reference/developers-reference.pdf
61 ln -sf developers-reference.en.txt $(PUBLISHDIR)/developers-reference/developers-reference.txt
63 .PHONY: developers-reference.html %/developers-reference.html
64 developers-reference.html: $(CURDIR)/index.html
65 %/developers-reference.html: $(addprefix %/,index.html)
68 .PRECIOUS: %/index.html
69 index.html: $(CURDIR)/developers-reference.html
70 %/index.html: $(addprefix %/,$(SOURCES))
71 cd $(@D) && $(XP) $(DBK2HTML) index.dbk
73 # There must be an easier way than recursive make!
74 .PRECIOUS: %.dbk %.ent
78 $(MAKE) $@ LINGUA=`basename $(@D)`
82 $(LINGUA)/%.dbk: %.dbk po4a/$(LINGUA).po
85 $(LINGUA)/common.ent: common.ent
86 cd $(@D) && ln -sf ../$(@F) .
89 developers-reference.txt: $(CURDIR)/developers-reference.txt
90 %/developers-reference.txt: $(addprefix %/,$(SOURCES))
91 $(XP) $(DBK2HTML1) $(@D)/index.dbk \
92 | LC_ALL=C.UTF-8 w3m -o display_charset=UTF-8 -cols 70 -dump -no-graph -T text/html > $@
96 developers-reference.pdf: $(CURDIR)/developers-reference.pdf
97 %/developers-reference.pdf: $(addprefix %/,$(SOURCES))
98 $(DBLATEX) $(@D)/index.dbk \
100 --xsl-user=$(XSLT)/user_param.xsl \
101 --xsl-user=$(XSLT)/xetex_param.xsl \
102 --param=lingua=$(@D) \
103 && mv $(@D)/index.dbk.pdf $@
106 pot: po4a/po/developers-reference.pot
107 po4a/po/developers-reference.pot: %.dbk
112 updatepo: po4a/po/$(LINGUA).po
113 po4a/po/$(LINGUA).po: %.dbk
118 for po in po4a/po/*.po; do \
119 msgcat -o $$po $$po; \
123 @for po in po4a/po/*.po; do \
128 echo '<!ENTITY version "$(VERSION)">' > $@
129 echo '<!ENTITY pubdate "$(PUBDATE)">' >> $@
133 rm -f *.fo *.html *.pdf *.txt
134 for L in $(LANGS); do rm -rf `basename ./"$$L"/`; done
136 rm -f `find . -name "*~" -o -name "*.bak"`
137 rm -f *~ *.bak .#* core
143 # if rule bomb out, delete the target