hgbook

view Makefile @ 654:1c13ed2130a7

Merge with http://hg.serpentine.com/mercurial/book
author Dongsheng Song <dongsheng.song@gmail.com>
date Mon Mar 30 16:23:33 2009 +0800 (2009-03-30)
parents 74da9b315396
children 1e020cb7d417
line source
1 #
2 # Makefile for the hgbook, top-level
3 #
5 FORMATS=html html-single pdf
7 PO_LANGUAGES := zh
8 DBK_LANGUAGES := en
9 LANGUAGES := $(DBK_LANGUAGES) $(PO_LANGUAGES)
11 UPDATEPO = PERLLIB=../tools/po4a/lib/ ../tools/po4a/po4a-updatepo -M UTF-8 \
12 -f docbook -o doctype='docbook' -o includeexternal \
13 -o nodefault='<programlisting> <screen>' \
14 -o untranslated='<programlisting> <screen>'
15 TRANSLATE = PERLLIB=tools/po4a/lib/ tools/po4a/po4a-translate -M UTF-8 \
16 -f docbook -o doctype='docbook' \
17 -k 0
19 #rev_id = $(shell hg parents --template '{node|short} ({date|isodate})')
20 rev_id = $(shell hg parents --template '{node|short} ({date|shortdate})')
22 images := \
23 en/figs/feature-branches.png \
24 en/figs/filelog.png \
25 en/figs/metadata.png \
26 en/figs/mq-stack.png \
27 en/figs/revlog.png \
28 en/figs/snapshot.png \
29 en/figs/tour-history.png \
30 en/figs/tour-merge-conflict.png \
31 en/figs/tour-merge-merge.png \
32 en/figs/tour-merge-pull.png \
33 en/figs/tour-merge-sep-repos.png \
34 en/figs/undo-manual-merge.png \
35 en/figs/undo-manual.png \
36 en/figs/undo-non-tip.png \
37 en/figs/undo-simple.png \
38 en/figs/wdir-after-commit.png \
39 en/figs/wdir-branch.png \
40 en/figs/wdir-merge.png \
41 en/figs/wdir.png \
42 en/figs/wdir-pre-branch.png
44 help:
45 @echo " make html [LINGUA=en|zh|...]"
46 @echo " make html-single [LINGUA=en|zh|...]"
47 @echo " make pdf [LINGUA=en|zh|...]"
48 @echo " make validate [LINGUA=en|zh|...] # always before commit!"
49 @echo " make tidypo [LINGUA=zh|...] # always before commit!"
50 @echo " make updatepo [LINGUA=zh|...] # update po files."
51 @echo " make all [LINGUA=en|zh|...]"
52 @echo " make stat # print statistics about po files."
53 @echo " make clean # Remove the build files."
55 clean:
56 @rm -fr build po/*.mo hello en/hello en/html en/.validated-00book.xml en/examples/.run en/examples/results \
57 stylesheets/system-xsl en/figs/*-tmp.svg \
58 en/figs/feature-branches.png \
59 en/figs/filelog.png \
60 en/figs/feature-branches.png \
61 en/figs/filelog.png \
62 en/figs/metadata.png \
63 en/figs/mq-stack.png \
64 en/figs/revlog.png \
65 en/figs/snapshot.png \
66 en/figs/tour-history.png \
67 en/figs/tour-merge-conflict.png \
68 en/figs/tour-merge-merge.png \
69 en/figs/tour-merge-pull.png \
70 en/figs/tour-merge-sep-repos.png \
71 en/figs/undo-manual-merge.png \
72 en/figs/undo-manual.png \
73 en/figs/undo-non-tip.png \
74 en/figs/undo-simple.png \
75 en/figs/wdir-after-commit.png \
76 en/figs/wdir-branch.png \
77 en/figs/wdir-merge.png \
78 en/figs/wdir-pre-branch.png \
79 en/figs/wdir.png
81 all:
82 ifdef LINGUA
83 for f in $(FORMATS); do \
84 $(MAKE) LINGUA=$(LINGUA) $$f; \
85 done
86 else
87 for l in $(LANGUAGES); do \
88 for f in $(FORMATS); do \
89 $(MAKE) LINGUA=$$l $$f; \
90 done; \
91 done
92 endif
94 stat:
95 @( \
96 LANG=C; export LANG; cd po; \
97 for f in *.po; do \
98 printf "%s\t" $$f; \
99 msgfmt --statistics -c $$f; \
100 done; \
101 )
103 tidypo:
104 ifdef LINGUA
105 msgcat --sort-by-file --width=80 po/$(LINGUA).po > po/$(LINGUA).tmp && \
106 mv po/$(LINGUA).tmp po/$(LINGUA).po;
107 else
108 for po in $(wildcard po/*.po); do \
109 msgcat --sort-by-file --width=80 $$po > $$po.tmp && mv $$po.tmp $$po; \
110 done
111 endif
113 ifndef LINGUA
114 updatepo:
115 for l in $(PO_LANGUAGES); do \
116 $(MAKE) $@ LINGUA=$$l; \
117 done
118 else
119 updatepo:
120 ifneq "$(findstring $(LINGUA),$(PO_LANGUAGES))" ""
121 (cd po && $(UPDATEPO) -m ../en/00book.xml -p $(LINGUA).po)
122 $(MAKE) tidypo LINGUA=$(LINGUA)
123 endif
124 endif
126 ifndef LINGUA
127 validate:
128 for l in $(LANGUAGES); do \
129 $(MAKE) $@ LINGUA=$$l; \
130 done
131 else
132 validate: build/$(LINGUA)/source/hgbook.xml
133 xmllint --nonet --noout --postvalid --xinclude $<
135 ifneq "$(findstring $(LINGUA),$(DBK_LANGUAGES))" ""
136 $(LINGUA)/examples/.run:
137 (cd $(LINGUA)/examples; ./run-example -v -a)
139 build/$(LINGUA)/source/hgbook.xml: $(wildcard $(LINGUA)/*.xml) $(images) $(LINGUA)/examples/.run $(images)
140 mkdir -p build/$(LINGUA)/source/figs
141 cp $(LINGUA)/figs/*.png build/$(LINGUA)/source/figs
142 (cd $(LINGUA); xmllint --nonet --noent --xinclude --postvalid --output ../$@.tmp 00book.xml)
143 cat $@.tmp | sed 's/\$$rev_id\$$/${rev_id}/' > $@
144 else
145 en/examples/.run:
146 (cd en/examples; ./run-example -v -a)
148 build/en/source/hgbook.xml:
149 ${MAKE} LINGUA=en $@
151 build/$(LINGUA)/source/hgbook.xml: build/en/source/hgbook.xml po/$(LINGUA).po $(images)
152 mkdir -p build/$(LINGUA)/source/figs
153 $(TRANSLATE) -m build/en/source/hgbook.xml -p po/$(LINGUA).po -l $@.tmp
154 cat $@.tmp | sed 's/\$$rev_id\$$/${rev_id}/' > $@
155 endif
157 endif
159 ifndef LINGUA
160 html:
161 for l in $(LANGUAGES); do \
162 $(MAKE) $@ LINGUA=$$l; \
163 done
164 else
165 html: build/$(LINGUA)/html/index.html
167 build/$(LINGUA)/html/index.html: build/$(LINGUA)/source/hgbook.xml stylesheets/html.xsl stylesheets/$(LINGUA)/html.xsl
168 mkdir -p build/$(LINGUA)/html/figs
169 cp en/figs/*.png build/$(LINGUA)/html/figs
170 cp stylesheets/hgbook.css build/$(LINGUA)/html
171 xsltproc --output build/$(LINGUA)/html/ \
172 stylesheets/$(LINGUA)/html.xsl build/$(LINGUA)/source/hgbook.xml
173 endif
175 ifndef LINGUA
176 html-single:
177 for l in $(LANGUAGES); do \
178 $(MAKE) $@ LINGUA=$$l; \
179 done
180 else
181 html-single: build/$(LINGUA)/html-single/hgbook.html
183 build/$(LINGUA)/html-single/hgbook.html: build/$(LINGUA)/source/hgbook.xml stylesheets/html-single.xsl stylesheets/$(LINGUA)/html-single.xsl
184 mkdir -p build/$(LINGUA)/html-single/figs
185 cp en/figs/*.png build/$(LINGUA)/html-single/figs
186 cp stylesheets/hgbook.css build/$(LINGUA)/html-single
187 xsltproc --output build/$(LINGUA)/html-single/hgbook.html \
188 stylesheets/$(LINGUA)/html-single.xsl build/$(LINGUA)/source/hgbook.xml
189 endif
191 ifndef LINGUA
192 pdf:
193 for l in $(LANGUAGES); do \
194 $(MAKE) $@ LINGUA=$$l; \
195 done
196 else
197 pdf: build/$(LINGUA)/pdf/hgbook.pdf
199 build/$(LINGUA)/pdf/hgbook.pdf: build/$(LINGUA)/source/hgbook.xml stylesheets/fo.xsl stylesheets/$(LINGUA)/fo.xsl
200 mkdir -p build/$(LINGUA)/pdf
201 java -classpath tools/fop/lib/saxon65.jar:tools/fop/lib/saxon65-dbxsl.jar:tools/fop/lib/xml-commons-resolver-1.2.jar:tools/fop/conf \
202 com.icl.saxon.StyleSheet \
203 -x org.apache.xml.resolver.tools.ResolvingXMLReader \
204 -y org.apache.xml.resolver.tools.ResolvingXMLReader \
205 -r org.apache.xml.resolver.tools.CatalogResolver \
206 -o build/$(LINGUA)/source/hgbook.fo \
207 build/$(LINGUA)/source/hgbook.xml \
208 stylesheets/$(LINGUA)/fo.xsl \
209 fop1.extensions=1
211 (cd build/$(LINGUA)/source && ../../../tools/fop/fop.sh hgbook.fo ../pdf/hgbook.pdf)
212 endif
214 en/figs/%.png: en/figs/%.svg en/fixsvg
215 en/fixsvg $<
216 inkscape -D -d 120 -e $@ $<-tmp.svg
218 en/figs/%.svg: en/figs/%.dot
219 dot -Tsvg -o $@ $<