X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=developers-reference.git;a=blobdiff_plain;f=Makefile;h=5c19b3bbf7f65b18688230e5f8c91a1ab3b04821;hp=8dfc96d0efd28f729c5a3786b91f6718cb0b3e68;hb=refs%2Fheads%2Fmaster;hpb=d928475162090aef787889eb6211ad9c6e98f746 diff --git a/Makefile b/Makefile index 8dfc96d..5c19b3b 100644 --- a/Makefile +++ b/Makefile @@ -1,88 +1,142 @@ # Makefile, used for the developers-reference in DocBook XML -SOURCES := $(wildcard *.dbk) +# Note: This Makefile should work perfectly without the debian/ directory. -FORMATS := html txt pdf -LANGS := fr ja +SOURCES := $(wildcard *.dbk) common.ent version.ent + +FORMATS := html txt pdf epub +LANGS := de fr ja TARGETS := $(foreach fmt,$(FORMATS),developers-reference.$(fmt)) \ $(foreach lng,$(LANGS), \ $(foreach fmt,$(FORMATS), \ $(lng)/developers-reference.$(fmt))) +# list of targets, that currently cannot build +#BLACKLIST := ja/developers-reference.pdf + +# 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 -# fop is currently in contrib, but can go to main, see #366783 -# 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 -# The "-k 0" should be removed as soon as the translations are ready -TRANSLATE=po4a-translate -f docbook -k 0 +# dblatex 0.2.8 has some problems (e.g. #465221 and Japanese does +# not build) +# 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 +TRANSLATE=po4a po4a/po4a.cfg # 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=$$TOP/fop.xsl -# $(DOCBOOK_XSL)/fo/docbook.xsl +# for HTML output +DBK2HTML=$(CURDIR)/html.xsl +# all in one file for text output +DBK2HTML1=$(CURDIR)/txt.xsl .PHONY: all -all: $(TARGETS) +all: $(filter-out $(BLACKLIST), $(TARGETS)) .PHONY: validate -validate: +validate: $(SOURCES) $(XL) index.dbk +%/validate: $(addprefix %/,$(SOURCES)) + cd $(@D) && $(XL) index.dbk + +# This rule controls the build and installation on the website +# Logs are here: http://www-master.debian.org/build-logs/ddp/ +.PHONY: publish +publish: all + [ -d $(PUBLISHDIR) ] || exit 1 + install -d -m 755 $(PUBLISHDIR)/developers-reference + rm -f $(PUBLISHDIR)/developers-reference/*.html + rm -f en && ln -sf . en + $(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;)) + ln -sf index.en.html $(PUBLISHDIR)/developers-reference/index.html + ln -sf developers-reference.en.pdf $(PUBLISHDIR)/developers-reference/developers-reference.pdf + ln -sf developers-reference.en.txt $(PUBLISHDIR)/developers-reference/developers-reference.txt + ln -sf developers-reference.en.epub $(PUBLISHDIR)/developers-reference/developers-reference.epub + .PHONY: developers-reference.html %/developers-reference.html -developers-reference.html: $(PWD)/index.html +developers-reference.html: $(CURDIR)/index.html %/developers-reference.html: $(addprefix %/,index.html) @true .PRECIOUS: %/index.html -index.html: $(PWD)/developers-reference.html +index.html: $(CURDIR)/developers-reference.html %/index.html: $(addprefix %/,$(SOURCES)) - mkdir -p $(@D) || true cd $(@D) && $(XP) $(DBK2HTML) index.dbk # There must be an easier way than recursive make! -.PRECIOUS: %.dbk +.PRECIOUS: %.dbk %.ent ifndef LINGUA -%.dbk: FORCE - [ "$$LINGUA" = . ] || make $@ LINGUA=$(@D) +%.dbk %.ent: FORCE + $(TRANSLATE) + $(MAKE) $@ LINGUA=`basename $(@D)` + FORCE: else -$(LINGUA)/%.dbk: %.dbk $(patsubst %.dbk,po4a/$(LINGUA)/%.po,%.dbk) - $(TRANSLATE) -m $< -p po4a/$(@:.dbk=.po) -l $@ +$(LINGUA)/%.dbk: %.dbk po4a/$(LINGUA).po + $(TRANSLATE) + +$(LINGUA)/common.ent: common.ent + cd $(@D) && ln -sf ../$(@F) . endif -developers-reference.txt: $(PWD)/developers-reference.txt +developers-reference.txt: $(CURDIR)/developers-reference.txt %/developers-reference.txt: $(addprefix %/,$(SOURCES)) $(XP) $(DBK2HTML1) $(@D)/index.dbk \ - | w3m -cols 65 -dump -T text/html > $@ - -developers-reference.fo: $(PWD)/developers-reference.fo - @true + | LC_ALL=C.UTF-8 w3m -o display_charset=UTF-8 -cols 70 -dump -no-graph -T text/html > $@ + +XSLT := xslt + +developers-reference.pdf: $(CURDIR)/developers-reference.pdf +%/developers-reference.pdf: $(addprefix %/,$(SOURCES)) + $(DBLATEX) $(@D)/index.dbk \ + --backend=xetex \ + --xsl-user=$(XSLT)/user_param.xsl \ + --xsl-user=$(XSLT)/xetex_param.xsl \ + --param=lingua=$(@D) \ + && mv $(@D)/index.dbk.pdf $@ + +developers-reference.epub: $(CURDIR)/developers-reference.epub +%/developers-reference.epub: $(addprefix %/,$(SOURCES)) + TOP=`pwd` && cd $(@D) && xmlto epub index.dbk && mv index.epub $(@F) + +.PHONY: pot +pot: po4a/po/developers-reference.pot +po4a/po/developers-reference.pot: %.dbk + $(TRANSLATE) + +ifdef LINGUA +.PHONY: updatepo +updatepo: po4a/po/$(LINGUA).po +po4a/po/$(LINGUA).po: %.dbk + $(TRANSLATE) +endif -%/developers-reference.fo: $(addprefix %/,$(SOURCES)) fop.xsl - TOP=`pwd` && cd $(@D) && $(XP) $(DBK2FO) index.dbk > $(@F) +tidypo: + for po in po4a/po/*.po; do \ + msgcat -o $$po $$po; \ + done -developers-reference.pdf: $(PWD)/developers-reference.pdf -%/developers-reference.pdf: %/developers-reference.fo - $(FOP) -fo $< -pdf $@ +checkpo: + @for po in po4a/po/*.po; do \ + msgfmt -vv $$po; \ + done -version.ent: debian/changelog - ./debian/rules $@ +%/version.ent: + echo '' > $@ + echo '' >> $@ .PHONY: clean clean: - rm -f *.fo *.html *.pdf *.txt - rm -rf $(LANGS) + rm -f *.fo *.html *.pdf *.txt *.epub + for L in $(LANGS); do rm -rf `basename ./"$$L"/`; done rm -f version.ent rm -f `find . -name "*~" -o -name "*.bak"` rm -f *~ *.bak .#* core