chiark / gitweb /
Fixed all examples, fixed many (not all, yet) entities.
[developers-reference.git] / Makefile
index c3f5a8249dbc92b46a85aa4dfc40d532eadc3e62..2dfbe39998ed8c11d1521fdcae819c004595fb2e 100644 (file)
--- a/Makefile
+++ b/Makefile
-# Makefile, used for the DDP manuals.sgml area
+# Makefile, used for the developers-reference in DocBook XML
 
-MANUAL         := $(notdir $(shell pwd))
-PUBLISHDIR     := /org/www.debian.org/www/doc/manuals
-
-SOURCES                := $(wildcard *.sgml)
-
-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 *.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)))
 # 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
-
-make_directory := install -d -m 755
-install_file   := install -m 644 -p
-
-MAX_TEX_RECURSION := 5
-
-.PHONY:        all dropold
-all:    $(TARGETS) dropold
-
-dropold:
-       -rm -rf developers-reference.ja.html
-
+XP=xsltproc --nonet --novalid --xinclude
+XL=xmllint --nonet --noout --postvalid --xinclude
+# fop is currently in contrib, but can go to main, see #366783
+# Alternatives:
+# - dblatex (0.2.6 has a minor problem with programlisting inside of
+#   footnote, and a major one with lang="ja");
+# - docbook2pdf (seems to die on UTF-8, #431085); and
+# - xmllint (not mature enough, waits in NEW, #182445)
+FOP=fop
+# The "-k 0" should be removed as soon as the translations are ready
+TRANSLATE=po4a-translate -f docbook -k 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=$$TOP/fop.xsl
+#    $(DOCBOOK_XSL)/fo/docbook.xsl
+
+.PHONY:        all
+all:    $(TARGETS)
 
 .PHONY: validate
-validate:      $(addsuffix .validate,$(SOURCES))
-
-# hmmm, this rule may need to be revised/tested
-.PHONY: publish
-publish:       all
-       [ -d $(PUBLISHDIR) ] || exit 1
-       rm -f $(PUBLISHDIR)/$(MANUAL)/*.html
-       $(make_directory) $(PUBLISHDIR)/$(MANUAL)
-       $(install_file) developers-reference*.html/*.html developers-reference*pdf      \
-          $(PUBLISHDIR)/$(MANUAL)
-       ln -sf index.en.html $(PUBLISHDIR)/$(MANUAL)/index.html
-       ln -sf developers-reference.pdf $(PUBLISHDIR)/$(MANUAL)/developers-reference.en.pdf
-
-developers-reference.html:     developers-reference.sgml
-       $(htmllink)
-       $(DEBIANDOC2HTML) -l en $<
-
-developers-reference.html/*:   developers-reference.html
-
-developers-reference.%.html:   developers-reference.%.sgml
-       $(htmllink)
-       $(DEBIANDOC2HTML) -l $* $<
-
-developers-reference.txt:      developers-reference.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2TEXT) -l en -O $< > $@
-
-developers-reference.%.txt:    developers-reference.%.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2TEXT) -l $* -O $< > $@
-
-developers-reference.tex:      developers-reference.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2LATEX) -l en -O $< > $@
-
-developers-reference.%.tex:    developers-reference.%.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2LATEX) -l $* -O $< > $@
-
-developers-reference.ps:        developers-reference.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2PS) -l en $<
-
-developers-reference.%.ps:      developers-reference.%.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2PS) -l $* $<
-
-developers-reference.pdf:       developers-reference.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2PDF) -l en $<
-
-developers-reference.%.pdf:     developers-reference.%.sgml
-       $(nohtmllink)
-       $(DEBIANDOC2PDF) -l $* $<
+validate:                      $(SOURCES)
+       $(XL) 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
+       [ "$$LINGUA" = . ] || $(MAKE) $@ LINGUA=$(@D)
+FORCE:
+else
+$(LINGUA)/%.dbk:       %.dbk $(patsubst %.dbk,po4a/$(LINGUA)/%.po,%.dbk)
+       $(TRANSLATE) -m $< -p po4a/$(@:.dbk=.po) -l $@
+
+$(LINGUA)/%.ent:       %.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.fo:       $(PWD)/developers-reference.fo
+       @true
+
+%/developers-reference.fo:     $(addprefix %/,$(SOURCES)) fop.xsl
+       TOP=`pwd` && cd $(@D) && $(XP) $(DBK2FO) index.dbk > $(@F)
+
+developers-reference.pdf:       $(PWD)/developers-reference.pdf
+%/developers-reference.pdf:     %/developers-reference.fo
+       $(FOP) -fo $< -pdf $@
 
 version.ent:   debian/changelog
        ./debian/rules $@
 
-%.validate : % version.ent
-       nsgmls -wall -gues $<
-       touch $@
-
-USERMAP        := ../../ddp/CVSROOT/users
-.PHONY: prepare
-prepare:       ChangeLog
-       cvs ci -m "update for next release" ChangeLog
-
-.PHONY: ChangeLog
-ChangeLog:
-       @[ -f CVS/Root -a -f $(USERMAP) ] || \
-               ( echo "usermap file '$(USERMAP)' not found" 1>&2; exit 1 )
-       cvs2cl -r --usermap $(USERMAP)
-
 .PHONY: clean
 clean:
-       rm -rf developers-reference*.html
-       rm -f developers-reference*.txt developers-reference*.pdf \
-             developers-reference*.ps developers-reference*.lout* lout.li \
-             developers-reference*.sasp* developers-reference*.tex \
-             developers-reference*.aux developers-reference*.toc \
-             developers-reference*.idx developers-reference*.log \
-             developers-reference*.out developers-reference*.dvi \
-             developers-reference*.tpt
+       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
 distclean: clean
        rm -f *.rej *.orig
 
-developers-reference$(SRCEXT).sgml: version.ent common.ent
-
-html: $(MANUAL).html
-
 # if rule bomb out, delete the target
 .DELETE_ON_ERROR: