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