# Makefile, used for the developers-reference in DocBook XML
-SOURCES := $(wildcard *.dbk)
+# Note: This Makefile should work perfectly without the debian/ directory.
-LANGS := fr
-TARGETS := $(foreach fmt,html txt pdf,developers-reference.$(fmt)) \
- $(foreach langext,$(LANGS), \
- $(foreach fmt,html txt pdf,developers-reference.$(langext).$(fmt)))
+SOURCES := $(wildcard *.dbk) common.ent version.ent
-# programs for creating output
-DEBIANDOC2HTML := debiandoc2html -c
-DEBIANDOC2TEXT := debiandoc2text
-DEBIANDOC2LATEX := debiandoc2latex
-DEBIANDOC2PS := debiandoc2latexps
-DEBIANDOC2PDF := debiandoc2latexpdf
-
-htmllink := echo "<!entity % htmltext \"INCLUDE\">" > dynamic.ent
-nohtmllink := echo "<!entity % htmltext \"IGNORE\">" > dynamic.ent
+FORMATS := html txt pdf
+LANGS := fr ja
+TARGETS := $(foreach fmt,$(FORMATS),developers-reference.$(fmt)) \
+ $(foreach lng,$(LANGS), \
+ $(foreach fmt,$(FORMATS), \
+ $(lng)/developers-reference.$(fmt)))
-make_directory := install -d -m 755
-install_file := install -m 644 -p
+# hopefully overwritten by caller, e.g. debian/rules
+VERSION=unknown
+PUBDATE=unknown
+# programs for creating output
XP=xsltproc --nonet --novalid --xinclude
-
XL=xmllint --nonet --noout --postvalid --xinclude
-
+# dblatex 0.2.8 has some problems (e.g. #465221), but we can
+# live with that for now (but: Japanese PDF seems to need
+# non-free cyberbit font.)
+# Alternatives:
+# - docbook2pdf (seems to die on UTF-8, #431085); and
+# - fop is currently in contrib, but can go to main, see #366783
+# - xmlroff (not mature enough, #182445)
+DBLATEX=dblatex --style=db2latex
+# The "--keep 0" should be removed as soon as the translations are ready
+TRANSLATE=po4a-translate --format docbook --keep 0
+
+# XSL files and parameters
# note: the URL is used as identifier, no HTTP is used!
DOCBOOK_XSL=http://docbook.sourceforge.net/release/xsl/current
-
# one file per chapter
DBK2HTML=--stringparam chunk.section.depth 0 \
--stringparam section.autolabel 1 \
--stringparam use.id.as.filename 1 \
$(DOCBOOK_XSL)/xhtml/chunk.xsl
-
# all in one file
DBK2HTML1=--stringparam section.autolabel 1 \
$(DOCBOOK_XSL)/xhtml/docbook.xsl
-DBK2FO=--stringparam double.sided 1 \
- --stringparam draft.mode no \
- --stringparam paper.type A4 \
- $(DOCBOOK_XSL)/fo/docbook.xsl
-# fop is currently in contrib, but can go to main now, AFAIK
-# alternatives: docbook2pdf (seems to die on UTF-8), dblatex (0.2.4
-# just hangs here) and xmllint (not mature enough, waits in NEW)
-FOP=fop
-
-.PHONY: all dropold
-all: $(TARGETS) dropold
-
-dropold:
- -rm -rf developers-reference.ja.html
+.PHONY: all
+all: $(TARGETS)
.PHONY: validate
-validate:
+validate: $(SOURCES)
$(XL) index.dbk
-.PHONY: developers-reference.html
-developers-reference.html: $(SOURCES)
- $(XP) $(DBK2HTML) index.dbk
-
-developers-reference.%.html: developers-reference.%.sgml
- $(htmllink)
- $(DEBIANDOC2HTML) -l $* $<
-
-developers-reference.txt: $(SOURCES)
- $(XP) $(DBK2HTML1) index.dbk \
+%/validate: $(addprefix %/,$(SOURCES))
+ cd $(@D) && $(XL) index.dbk
+
+.PHONY: developers-reference.html %/developers-reference.html
+developers-reference.html: $(PWD)/index.html
+%/developers-reference.html: $(addprefix %/,index.html)
+ @true
+
+.PRECIOUS: %/index.html
+index.html: $(PWD)/developers-reference.html
+%/index.html: $(addprefix %/,$(SOURCES))
+ cd $(@D) && $(XP) $(DBK2HTML) index.dbk
+
+# There must be an easier way than recursive make!
+.PRECIOUS: %.dbk %.ent
+ifndef LINGUA
+%.dbk %.ent: FORCE
+ $(MAKE) $@ LINGUA=$(@D)
+
+FORCE:
+else
+$(LINGUA)/%.dbk: %.dbk $(patsubst %.dbk,po4a/$(LINGUA)/%.po,%.dbk)
+ $(TRANSLATE) -m $< -p po4a/$(@:.dbk=.po) -l $@
+
+$(LINGUA)/common.ent: common.ent
+ cd $(@D) && ln -sf ../$(@F) .
+endif
+
+developers-reference.txt: $(PWD)/developers-reference.txt
+%/developers-reference.txt: $(addprefix %/,$(SOURCES))
+ $(XP) $(DBK2HTML1) $(@D)/index.dbk \
| w3m -cols 65 -dump -T text/html > $@
-developers-reference.%.txt: developers-reference.%.sgml
- $(nohtmllink)
- $(DEBIANDOC2TEXT) -l $* -O $< > $@
-
-developers-reference.fo: $(SOURCES)
- $(XP) $(DBK2FO) index.dbk > $@
-
-developers-reference.pdf: developers-reference.fo
- $(FOP) -fo $< -pdf $@
+developers-reference.pdf: $(PWD)/developers-reference.pdf
+%/developers-reference.pdf: $(addprefix %/,$(SOURCES))
+ TOP=`pwd` && cd $(@D) && $(DBLATEX) index.dbk \
+ && mv index.dbk.pdf $(@F)
-developers-reference.%.pdf: developers-reference.%.sgml
- $(nohtmllink)
- $(DEBIANDOC2PDF) -l $* $<
+.PHONY: pot
+pot: $(patsubst %.dbk,po4a/po/%.pot,$(SOURCES))
+po4a/po/%.pot: %.dbk
+ po4a-gettextize --format docbook --master $< --po $@
-version.ent: debian/changelog
- ./debian/rules $@
+ifdef LINGUA
+.PHONY: updatepo
+updatepo: $(patsubst %.dbk,po4a/$(LINGUA)/%.po,$(SOURCES))
+po4a/$(LINGUA)/%.po: %.dbk
+ po4a-updatepo --format docbook --master $< --po $@
+endif
-%.validate : % version.ent
- nsgmls -wall -gues $<
- touch $@
+%/version.ent:
+ echo '<!ENTITY version "$(VERSION)">' > $@
+ echo '<!ENTITY pubdate "$(PUBDATE)">' >> $@
.PHONY: clean
clean:
rm -f *.fo *.html *.pdf *.txt
+ rm -rf $(LANGS)
rm -f version.ent
rm -f `find . -name "*~" -o -name "*.bak"`
- rm -f *.validate
rm -f *~ *.bak .#* core
.PHONY: distclean