chiark / gitweb /
tagging improvements and editorial improvements in config-wise-debconf
[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 SOURCES         := $(wildcard *.sgml)
7
8 TARGETS         := $(foreach fmt,html txt pdf,developers-reference.$(fmt)) \
9                      $(filter-out developers-reference.ja.pdf, \
10                        $(foreach langext,.ja .fr, \
11                          $(foreach fmt,html txt pdf,developers-reference$(langext).$(fmt))))
12
13 # programs for creating output
14 DEBIANDOC2HTML  := debiandoc2html -c
15 DEBIANDOC2TEXT  := debiandoc2text
16 DEBIANDOC2LATEX := debiandoc2latex
17
18 make_directory  := install -d -m 755
19 install_file    := install -m 644 -p
20
21 MAX_TEX_RECURSION := 5
22
23 .PHONY: all
24 all:    $(TARGETS)
25
26 .PHONY: validate
27 validate:       $(addsuffix .validate,$(SOURCES))
28
29 # hmmm, this rule may need to be revised/tested
30 publish:        all
31         [ -d $(PUBLISHDIR) ] || exit 1
32         rm -f $(PUBLISHDIR)/$(MANUAL)/*.html
33         $(make_directory) $(PUBLISHDIR)/$(MANUAL)
34         $(install_file) developers-reference*.html/*.html       \
35            $(PUBLISHDIR)/$(MANUAL)
36
37 developers-reference.html:      developers-reference.sgml
38         $(DEBIANDOC2HTML) -l C $<
39
40 developers-reference.html/*:    developers-reference.html
41
42 developers-reference.%.html:    developers-reference.%.sgml
43         $(DEBIANDOC2HTML) -l $* $<
44
45 developers-reference.txt:       developers-reference.sgml
46         $(DEBIANDOC2TEXT) -l C -O $< > $@
47
48 developers-reference.%.txt:     developers-reference.%.sgml
49         $(DEBIANDOC2TEXT) -l $* -O $< > $@
50
51 developers-reference.tex:       developers-reference.sgml
52         $(DEBIANDOC2LATEX) -l C -O $< > $@
53
54 developers-reference.%.tex:     developers-reference.%.sgml
55         $(DEBIANDOC2LATEX) -l $* -O $< > $@
56
57 %.pdf:  %.tex
58 #        note that I have seen bi-stable .aux files, thus we check two levels deep
59         -cp -pf prior.aux pprior.aux 2>/dev/null
60         -cp -pf $*.aux prior.aux 2>/dev/null
61 #        fail if we don't have pdflatex correctly installed
62         kpsewhich pdflatex.fmt >/dev/null
63 #        due to a bug in debiandoc2latex2e output, this might fail
64         -pdflatex '\nonstopmode\input{$<}' >/dev/null # see $(@:.pdf=.log) for details
65         @set -e                                                         ;\
66         if ! cmp $*.aux prior.aux 2>/dev/null &&                \
67            ! cmp $*.aux pprior.aux 2>/dev/null; then    \
68                 if expr $(MAKELEVEL) '<' $(MAX_TEX_RECURSION) >/dev/null;\
69                 then                                                    \
70                    echo "remaking $@ (take $(MAKELEVEL))"               ;\
71                    rm -f $@                                             ;\
72                    $(MAKE) $@                                           ;\
73                 else                                                    \
74                    echo "E: $@ needs remaking, but we have reached max. level, $(MAX_TEX_RECURSION)" ;\
75                 fi                                                      \
76         fi
77         rm -f prior.aux pprior.aux
78
79 version.ent:    debian/changelog
80         ./debian/rules $@
81
82 %.validate : %
83         nsgmls -wall -gues $<
84         touch $@
85
86 USERMAP := ../../ddp/CVSROOT/users
87 .PHONY: prepare
88 prepare:
89         @[ -f CVS/Root -a -f $(USERMAP) ] || \
90                 ( echo "silly rabbit, prepare is for Adam" 1>&2; exit 1 )
91         cvs2cl -r --usermap $(USERMAP)
92         cvs ci -m "update for next release" ChangeLog
93
94 .PHONY: clean
95 clean:
96         rm -rf developers-reference*.html
97         rm -f developers-reference*.txt developers-reference*.pdf \
98               developers-reference*.ps developers-reference*.lout* lout.li \
99               developers-reference*.sasp* developers-reference*.tex \
100               developers-reference*.aux developers-reference*.toc \
101               developers-reference*.idx developers-reference*.log \
102               developers-reference*.out developers-reference*.dvi
103         rm -f version.ent
104         rm -f `find . -name "*~" -o -name "*.bak"`
105         rm -f *.validate
106         rm -f *~ *.bak .#* core
107
108 .PHONY: distclean
109 distclean: clean
110         rm -f *.rej *.orig
111
112 developers-reference$(SRCEXT).sgml: version.ent common.ent
113
114 html: $(MANUAL).html