chiark / gitweb /
build and clean stuff with the top-level makefile, not debian/rules;
[developers-reference.git] / Makefile
1 # Makefile, used for the DDP manuals.sgml area
2
3 MANUAL          := $(notdir $(shell pwd))
4 PUBLISHDIR      := ../../../public_html/manuals.html
5
6 TARGETS         := $(foreach fmt,html txt pdf,developers-reference.$(fmt)) \
7                    $(foreach langext,.ja .fr, \
8                       $(foreach fmt,html txt pdf,developers-reference$(langext).$(fmt)))
9
10 # programs for creating output
11 DEBIANDOC2HTML  := debiandoc2html -d debiandoc.decl -c
12 DEBIANDOC2TEXT  := debiandoc2text -d debiandoc.decl
13 DEBIANDOC2LATEX := debiandoc2latex -d debiandoc.decl
14
15 MAX_TEX_RECURSION := 5
16
17 .PHONY: all
18 all:    $(TARGETS)
19
20 publish:        all
21         [ -d $(PUBLISHDIR) ] || exit 1
22         rm -f $(PUBLISHDIR)/$(MANUAL)/*.html
23         install -d -m 755 $(PUBLISHDIR)/$(MANUAL)
24         install -m 644 --preserve-timestamps $(MANUAL).html/*.html      \
25            $(PUBLISHDIR)/$(MANUAL)
26
27
28 developers-reference.html:      developers-reference.sgml
29         $(DEBIANDOC2HTML) -l C $<
30
31 developers-reference.%.html:    developers-reference.%.sgml
32         $(DEBIANDOC2HTML) -l $* $<
33
34 developers-reference.txt:       developers-reference.sgml
35         $(DEBIANDOC2TEXT) -l C -O $< > $@
36
37 developers-reference.%.txt:     developers-reference.%.sgml
38         $(DEBIANDOC2TEXT) -l $* -O $< > $@
39
40 developers-reference.tex:       developers-reference.sgml
41         $(DEBIANDOC2LATEX) -l C -O $< > $@
42
43 developers-reference.%.tex:     developers-reference.%.sgml
44         $(DEBIANDOC2LATEX) -l $* -O $< > $@
45
46 %.pdf:  %.tex
47 #        note that I have seen bi-stable .aux files, thus we check two levels deep
48         -cp -pf prior.aux pprior.aux 2>/dev/null
49         -cp -pf $(basename $<).aux prior.aux 2>/dev/null
50 #        fail if we don't have pdflatex correctly installed
51         kpsewhich pdflatex.fmt >/dev/null
52 #        due to a bug in debiandoc2latex2e output, this might fail
53         -pdflatex '\nonstopmode\input{$<}' >/dev/null # see $(@:.pdf=.log) for details
54         @set -e                                                         ;\
55         if ! cmp $(basename $<).aux prior.aux 2>/dev/null &&            \
56            ! cmp $(basename $<).aux pprior.aux 2>/dev/null; then        \
57                 if expr $(MAKELEVEL) '<' $(MAX_TEX_RECURSION) >/dev/null;\
58                 then                                                    \
59                    echo "remaking $@ (take $(MAKELEVEL))"               ;\
60                    rm -f $@                                             ;\
61                    $(MAKE) $@                                           ;\
62                 else                                                    \
63                    echo "E: $@ needs remaking, but we have reached max. level, $(MAX_TEX_RECURSION)" ;\
64                 fi                                                      \
65         fi
66         rm -f prior.aux pprior.aux
67
68
69
70 version.ent:
71         ./debian/rules $@
72
73 .PHONY: clean
74 clean:
75         rm -rf developers-reference*.html
76         rm -f developers-reference*.txt developers-reference*.pdf \
77               developers-reference*.ps developers-reference*.lout* lout.li \
78               developers-reference*.sasp* developers-reference*.tex \
79               developers-reference*.aux developers-reference*.toc \
80               developers-reference*.idx developers-reference*.log \
81               developers-reference*.out
82         rm -f version.ent
83         rm -f `find . -name "*~"`
84
85 developers-reference$(SRCEXT).sgml: version.ent common.ent