-all: $(TARGETS)
-
-# hmmm, this rule may need to be revised/tested
-publish: all
- [ -d $(PUBLISHDIR) ] || exit 1
- rm -f $(PUBLISHDIR)/$(MANUAL)/*.html
- $(make_directory) $(PUBLISHDIR)/$(MANUAL)
- $(install_file) developers-reference*.html/*.html \
- $(PUBLISHDIR)/$(MANUAL)
-
-developers-reference.html: developers-reference.sgml
- $(DEBIANDOC2HTML) -l C $<
-
-developers-reference.%.html: developers-reference.%.sgml
- $(DEBIANDOC2HTML) -l $* $<
-
-developers-reference.txt: developers-reference.sgml
- $(DEBIANDOC2TEXT) -l C -O $< > $@
-
-developers-reference.%.txt: developers-reference.%.sgml
- $(DEBIANDOC2TEXT) -l $* -O $< > $@
-
-developers-reference.tex: developers-reference.sgml
- $(DEBIANDOC2LATEX) -l C -O $< > $@
-
-developers-reference.%.tex: developers-reference.%.sgml
- $(DEBIANDOC2LATEX) -l $* -O $< > $@
-
-%.pdf: %.tex
-# note that I have seen bi-stable .aux files, thus we check two levels deep
- -cp -pf prior.aux pprior.aux 2>/dev/null
- -cp -pf $(basename $<).aux prior.aux 2>/dev/null
-# fail if we don't have pdflatex correctly installed
- kpsewhich pdflatex.fmt >/dev/null
-# due to a bug in debiandoc2latex2e output, this might fail
- -pdflatex '\nonstopmode\input{$<}' >/dev/null # see $(@:.pdf=.log) for details
- @set -e ;\
- if ! cmp $(basename $<).aux prior.aux 2>/dev/null && \
- ! cmp $(basename $<).aux pprior.aux 2>/dev/null; then \
- if expr $(MAKELEVEL) '<' $(MAX_TEX_RECURSION) >/dev/null;\
- then \
- echo "remaking $@ (take $(MAKELEVEL))" ;\
- rm -f $@ ;\
- $(MAKE) $@ ;\
- else \
- echo "E: $@ needs remaking, but we have reached max. level, $(MAX_TEX_RECURSION)" ;\
- fi \
- fi
- rm -f prior.aux pprior.aux
-
-
-
-version.ent: debian/changelog
- ./debian/rules $@
+all: $(filter-out $(BLACKLIST), $(TARGETS))
+
+.PHONY: validate
+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
+ $(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.pdf: $(PWD)/developers-reference.pdf
+%/developers-reference.pdf: $(addprefix %/,$(SOURCES))
+ TOP=`pwd` && cd $(@D) && $(DBLATEX) index.dbk \
+ && mv index.dbk.pdf $(@F)
+
+.PHONY: pot
+pot: $(patsubst %.dbk,po4a/po/%.pot,$(SOURCES))
+po4a/po/%.pot: %.dbk
+ po4a-gettextize --format docbook --master $< --po $@
+
+ifdef LINGUA
+.PHONY: updatepo
+updatepo: $(patsubst %.dbk,po4a/$(LINGUA)/%.po,$(SOURCES))
+po4a/$(LINGUA)/%.po: %.dbk
+ po4a-updatepo --format docbook --master $< --po $@
+endif
+
+%/version.ent:
+ echo '<!ENTITY version "$(VERSION)">' > $@
+ echo '<!ENTITY pubdate "$(PUBDATE)">' >> $@