hgbook

annotate Makefile @ 863:84eb02cbf057

Be more Pythonic.
author gpiancastelli
date Tue Sep 01 22:55:17 2009 +0200 (2009-09-01)
parents 55e2953f82d6
children a821682ea3a5
rev   line source
dongsheng@626 1 #
dongsheng@626 2 # Makefile for the hgbook, top-level
dongsheng@626 3 #
songdongsheng@657 4 include Makefile.vars
dongsheng@626 5
dongsheng@661 6 FORMATS=html html-single pdf epub
dongsheng@626 7
dongsheng@626 8 PO_LANGUAGES := zh
dongsheng@626 9 DBK_LANGUAGES := en
dongsheng@626 10 LANGUAGES := $(DBK_LANGUAGES) $(PO_LANGUAGES)
dongsheng@626 11
songdongsheng@657 12 UPDATEPO = PERLLIB=$(PO4A_LIB) $(PO4A_HOME)/po4a-updatepo -M UTF-8 \
dongsheng@661 13 -f docbook -o doctype=docbook -o includeexternal \
dongsheng@661 14 -o nodefault="<programlisting> <screen>" \
dongsheng@661 15 -o untranslated="<programlisting> <screen>"
songdongsheng@657 16 TRANSLATE = PERLLIB=$(PO4A_LIB) $(PO4A_HOME)/po4a-translate -M UTF-8 \
songdongsheng@668 17 -f docbook -o doctype=docbook -o includeexternal \
songdongsheng@668 18 -o nodefault="<programlisting> <screen>" \
songdongsheng@668 19 -o untranslated="<programlisting> <screen>" \
dongsheng@626 20 -k 0
dongsheng@626 21
dongsheng@626 22 #rev_id = $(shell hg parents --template '{node|short} ({date|isodate})')
dongsheng@626 23 rev_id = $(shell hg parents --template '{node|short} ({date|shortdate})')
dongsheng@626 24
dongsheng@626 25 images := \
songdongsheng@718 26 en/figs/bad-merge-1.png \
songdongsheng@718 27 en/figs/bad-merge-2.png \
songdongsheng@718 28 en/figs/bad-merge-3.png \
songdongsheng@718 29 en/figs/bad-merge-4.png \
songdongsheng@718 30 en/figs/bad-merge-5.png \
dongsheng@654 31 en/figs/feature-branches.png \
dongsheng@654 32 en/figs/filelog.png \
dongsheng@654 33 en/figs/metadata.png \
dongsheng@654 34 en/figs/mq-stack.png \
dongsheng@654 35 en/figs/revlog.png \
dongsheng@654 36 en/figs/snapshot.png \
dongsheng@654 37 en/figs/tour-history.png \
dongsheng@654 38 en/figs/tour-merge-conflict.png \
dongsheng@654 39 en/figs/tour-merge-merge.png \
dongsheng@654 40 en/figs/tour-merge-pull.png \
dongsheng@654 41 en/figs/tour-merge-sep-repos.png \
dongsheng@654 42 en/figs/undo-manual-merge.png \
dongsheng@654 43 en/figs/undo-manual.png \
dongsheng@654 44 en/figs/undo-non-tip.png \
dongsheng@654 45 en/figs/undo-simple.png \
dongsheng@654 46 en/figs/wdir-after-commit.png \
dongsheng@654 47 en/figs/wdir-branch.png \
dongsheng@654 48 en/figs/wdir-merge.png \
dongsheng@654 49 en/figs/wdir.png \
dongsheng@654 50 en/figs/wdir-pre-branch.png
dongsheng@626 51
dongsheng@626 52 help:
dongsheng@661 53 @echo " make epub [LINGUA=en|zh|...]"
dongsheng@626 54 @echo " make html [LINGUA=en|zh|...]"
dongsheng@626 55 @echo " make html-single [LINGUA=en|zh|...]"
dongsheng@626 56 @echo " make pdf [LINGUA=en|zh|...]"
dongsheng@626 57 @echo " make validate [LINGUA=en|zh|...] # always before commit!"
dongsheng@626 58 @echo " make tidypo [LINGUA=zh|...] # always before commit!"
dongsheng@626 59 @echo " make updatepo [LINGUA=zh|...] # update po files."
dongsheng@626 60 @echo " make all [LINGUA=en|zh|...]"
dongsheng@626 61 @echo " make stat # print statistics about po files."
dongsheng@626 62 @echo " make clean # Remove the build files."
dongsheng@626 63
dongsheng@626 64 clean:
dongsheng@654 65 @rm -fr build po/*.mo hello en/hello en/html en/.validated-00book.xml en/examples/.run en/examples/results \
dongsheng@654 66 stylesheets/system-xsl en/figs/*-tmp.svg \
songdongsheng@718 67 web/index-read.html.in \
songdongsheng@718 68 en/figs/bad-merge-1.png \
songdongsheng@718 69 en/figs/bad-merge-2.png \
songdongsheng@718 70 en/figs/bad-merge-3.png \
songdongsheng@718 71 en/figs/bad-merge-4.png \
songdongsheng@718 72 en/figs/bad-merge-5.png \
dongsheng@654 73 en/figs/feature-branches.png \
dongsheng@654 74 en/figs/filelog.png \
dongsheng@654 75 en/figs/feature-branches.png \
dongsheng@654 76 en/figs/filelog.png \
dongsheng@654 77 en/figs/metadata.png \
dongsheng@654 78 en/figs/mq-stack.png \
dongsheng@654 79 en/figs/revlog.png \
dongsheng@654 80 en/figs/snapshot.png \
dongsheng@654 81 en/figs/tour-history.png \
dongsheng@654 82 en/figs/tour-merge-conflict.png \
dongsheng@654 83 en/figs/tour-merge-merge.png \
dongsheng@654 84 en/figs/tour-merge-pull.png \
dongsheng@654 85 en/figs/tour-merge-sep-repos.png \
dongsheng@654 86 en/figs/undo-manual-merge.png \
dongsheng@654 87 en/figs/undo-manual.png \
dongsheng@654 88 en/figs/undo-non-tip.png \
dongsheng@654 89 en/figs/undo-simple.png \
dongsheng@654 90 en/figs/wdir-after-commit.png \
dongsheng@654 91 en/figs/wdir-branch.png \
dongsheng@654 92 en/figs/wdir-merge.png \
dongsheng@654 93 en/figs/wdir-pre-branch.png \
dongsheng@654 94 en/figs/wdir.png
dongsheng@626 95
dongsheng@626 96 all:
dongsheng@626 97 ifdef LINGUA
dongsheng@626 98 for f in $(FORMATS); do \
dongsheng@626 99 $(MAKE) LINGUA=$(LINGUA) $$f; \
dongsheng@626 100 done
dongsheng@626 101 else
dongsheng@626 102 for l in $(LANGUAGES); do \
dongsheng@626 103 for f in $(FORMATS); do \
dongsheng@626 104 $(MAKE) LINGUA=$$l $$f; \
dongsheng@626 105 done; \
dongsheng@626 106 done
dongsheng@626 107 endif
dongsheng@626 108
dongsheng@626 109 stat:
dongsheng@626 110 @( \
dongsheng@626 111 LANG=C; export LANG; cd po; \
dongsheng@626 112 for f in *.po; do \
dongsheng@626 113 printf "%s\t" $$f; \
dongsheng@626 114 msgfmt --statistics -c $$f; \
dongsheng@626 115 done; \
dongsheng@626 116 )
dongsheng@626 117
dongsheng@626 118 tidypo:
dongsheng@626 119 ifdef LINGUA
dongsheng@626 120 msgcat --sort-by-file --width=80 po/$(LINGUA).po > po/$(LINGUA).tmp && \
dongsheng@626 121 mv po/$(LINGUA).tmp po/$(LINGUA).po;
dongsheng@626 122 else
dongsheng@626 123 for po in $(wildcard po/*.po); do \
dongsheng@626 124 msgcat --sort-by-file --width=80 $$po > $$po.tmp && mv $$po.tmp $$po; \
dongsheng@626 125 done
dongsheng@626 126 endif
dongsheng@626 127
dongsheng@626 128 ifndef LINGUA
dongsheng@626 129 updatepo:
dongsheng@626 130 for l in $(PO_LANGUAGES); do \
dongsheng@626 131 $(MAKE) $@ LINGUA=$$l; \
dongsheng@626 132 done
dongsheng@626 133 else
dongsheng@626 134 updatepo:
dongsheng@626 135 ifneq "$(findstring $(LINGUA),$(PO_LANGUAGES))" ""
dongsheng@661 136 (cd po; \
dongsheng@661 137 $(UPDATEPO) -m ../en/00book.xml -p $(LINGUA).po; \
dongsheng@661 138 )
dongsheng@626 139 $(MAKE) tidypo LINGUA=$(LINGUA)
dongsheng@626 140 endif
dongsheng@626 141 endif
dongsheng@626 142
dongsheng@626 143 ifndef LINGUA
dongsheng@626 144 validate:
dongsheng@626 145 for l in $(LANGUAGES); do \
dongsheng@626 146 $(MAKE) $@ LINGUA=$$l; \
dongsheng@626 147 done
dongsheng@626 148 else
dongsheng@626 149 validate: build/$(LINGUA)/source/hgbook.xml
dongsheng@626 150 xmllint --nonet --noout --postvalid --xinclude $<
dongsheng@626 151
dongsheng@626 152 ifneq "$(findstring $(LINGUA),$(DBK_LANGUAGES))" ""
dongsheng@654 153 $(LINGUA)/examples/.run:
dongsheng@654 154 (cd $(LINGUA)/examples; ./run-example -v -a)
dongsheng@654 155
songdongsheng@668 156 build/$(LINGUA)/source/hgbook.xml: $(wildcard $(LINGUA)/*.xml) $(images) $(LINGUA)/examples/.run
dongsheng@654 157 mkdir -p build/$(LINGUA)/source/figs
dongsheng@654 158 cp $(LINGUA)/figs/*.png build/$(LINGUA)/source/figs
dongsheng@661 159 cp stylesheets/hgbook.css build/$(LINGUA)/source
dongsheng@654 160 (cd $(LINGUA); xmllint --nonet --noent --xinclude --postvalid --output ../$@.tmp 00book.xml)
dongsheng@626 161 cat $@.tmp | sed 's/\$$rev_id\$$/${rev_id}/' > $@
dongsheng@626 162 else
dongsheng@654 163 en/examples/.run:
dongsheng@654 164 (cd en/examples; ./run-example -v -a)
dongsheng@654 165
dongsheng@654 166 build/en/source/hgbook.xml:
dongsheng@654 167 ${MAKE} LINGUA=en $@
dongsheng@654 168
songdongsheng@668 169 build/$(LINGUA)/source/hgbook.xml: $(wildcard en/*.xml) po/$(LINGUA).po $(images)
dongsheng@654 170 mkdir -p build/$(LINGUA)/source/figs
songdongsheng@657 171 cp en/figs/*.png build/$(LINGUA)/source/figs
dongsheng@661 172 cp stylesheets/hgbook.css build/$(LINGUA)/source
songdongsheng@668 173 $(TRANSLATE) -m en/00book.xml -p po/$(LINGUA).po -l en/hgbook.xml.$(LINGUA)
songdongsheng@668 174 xmllint --nonet --noent --xinclude --postvalid --output $@.tmp en/hgbook.xml.$(LINGUA)
dongsheng@626 175 cat $@.tmp | sed 's/\$$rev_id\$$/${rev_id}/' > $@
songdongsheng@668 176 mv en/hgbook.xml.$(LINGUA) build/$(LINGUA)/source
dongsheng@626 177 endif
dongsheng@626 178
dongsheng@626 179 endif
dongsheng@626 180
dongsheng@626 181 ifndef LINGUA
dongsheng@661 182 epub:
dongsheng@661 183 for l in $(LANGUAGES); do \
dongsheng@661 184 $(MAKE) $@ LINGUA=$$l; \
dongsheng@661 185 done
dongsheng@661 186 else
dongsheng@661 187 epub: build/$(LINGUA)/epub/hgbook.epub
dongsheng@661 188
dongsheng@661 189 build/$(LINGUA)/epub/hgbook.epub: build/$(LINGUA)/source/hgbook.xml
dongsheng@661 190 mkdir -p build/$(LINGUA)/epub
dongsheng@661 191 (cd build/$(LINGUA)/source; $(DB2EPUB) -c hgbook.css -v hgbook.xml; mv hgbook.epub ../epub)
dongsheng@661 192 endif
dongsheng@661 193
dongsheng@661 194 ifndef LINGUA
dongsheng@626 195 html:
dongsheng@626 196 for l in $(LANGUAGES); do \
dongsheng@626 197 $(MAKE) $@ LINGUA=$$l; \
dongsheng@626 198 done
dongsheng@626 199 else
dongsheng@626 200 html: build/$(LINGUA)/html/index.html
dongsheng@626 201
dongsheng@629 202 build/$(LINGUA)/html/index.html: build/$(LINGUA)/source/hgbook.xml stylesheets/html.xsl stylesheets/$(LINGUA)/html.xsl
dongsheng@654 203 mkdir -p build/$(LINGUA)/html/figs
dongsheng@654 204 cp en/figs/*.png build/$(LINGUA)/html/figs
dongsheng@629 205 cp stylesheets/hgbook.css build/$(LINGUA)/html
dongsheng@626 206 xsltproc --output build/$(LINGUA)/html/ \
dongsheng@629 207 stylesheets/$(LINGUA)/html.xsl build/$(LINGUA)/source/hgbook.xml
dongsheng@626 208 endif
dongsheng@626 209
dongsheng@626 210 ifndef LINGUA
dongsheng@626 211 html-single:
dongsheng@626 212 for l in $(LANGUAGES); do \
dongsheng@626 213 $(MAKE) $@ LINGUA=$$l; \
dongsheng@626 214 done
dongsheng@626 215 else
dongsheng@626 216 html-single: build/$(LINGUA)/html-single/hgbook.html
dongsheng@626 217
dongsheng@629 218 build/$(LINGUA)/html-single/hgbook.html: build/$(LINGUA)/source/hgbook.xml stylesheets/html-single.xsl stylesheets/$(LINGUA)/html-single.xsl
dongsheng@654 219 mkdir -p build/$(LINGUA)/html-single/figs
dongsheng@654 220 cp en/figs/*.png build/$(LINGUA)/html-single/figs
dongsheng@629 221 cp stylesheets/hgbook.css build/$(LINGUA)/html-single
dongsheng@626 222 xsltproc --output build/$(LINGUA)/html-single/hgbook.html \
dongsheng@629 223 stylesheets/$(LINGUA)/html-single.xsl build/$(LINGUA)/source/hgbook.xml
dongsheng@626 224 endif
dongsheng@626 225
dongsheng@626 226 ifndef LINGUA
dongsheng@626 227 pdf:
dongsheng@626 228 for l in $(LANGUAGES); do \
dongsheng@626 229 $(MAKE) $@ LINGUA=$$l; \
dongsheng@626 230 done
dongsheng@626 231 else
dongsheng@626 232 pdf: build/$(LINGUA)/pdf/hgbook.pdf
dongsheng@626 233
dongsheng@629 234 build/$(LINGUA)/pdf/hgbook.pdf: build/$(LINGUA)/source/hgbook.xml stylesheets/fo.xsl stylesheets/$(LINGUA)/fo.xsl
dongsheng@626 235 mkdir -p build/$(LINGUA)/pdf
songdongsheng@668 236 java -classpath $(JAVA_LIB)/saxon65.jar:$(JAVA_LIB)/saxon65-dbxsl.jar:$(JAVA_LIB)/xml-commons-resolver-1.2.jar:$(JAVA_LIB) \
dongsheng@626 237 com.icl.saxon.StyleSheet \
dongsheng@626 238 -x org.apache.xml.resolver.tools.ResolvingXMLReader \
dongsheng@626 239 -y org.apache.xml.resolver.tools.ResolvingXMLReader \
dongsheng@626 240 -r org.apache.xml.resolver.tools.CatalogResolver \
dongsheng@626 241 -o build/$(LINGUA)/source/hgbook.fo \
dongsheng@626 242 build/$(LINGUA)/source/hgbook.xml \
dongsheng@629 243 stylesheets/$(LINGUA)/fo.xsl \
dongsheng@626 244 fop1.extensions=1
dongsheng@626 245
dongsheng@659 246 (cd build/$(LINGUA)/source && $(FOP_HOME)/fop.sh -c $(FOP_HOME)/conf/userconfig.xml hgbook.fo ../pdf/hgbook.pdf)
dongsheng@626 247 endif
dongsheng@626 248
dongsheng@654 249 en/figs/%.png: en/figs/%.svg en/fixsvg
dongsheng@633 250 en/fixsvg $<
dongsheng@633 251 inkscape -D -d 120 -e $@ $<-tmp.svg
dongsheng@626 252
dongsheng@654 253 en/figs/%.svg: en/figs/%.dot
dongsheng@626 254 dot -Tsvg -o $@ $<