hgbook

annotate en/Makefile @ 307:fb5c0d56d7f1

Fix test 'tour'.

Executing 'tour' test now creates some files in /tmp to store the
revision numbers as they are created on the fly and appear in the output
files. When SVG files are to be converted to PNG or EPS files within the
Makefile, a tool 'fixsvg' will be invoked to substitute some placeholder
markup by the real version number which fits to the test output, before
the final conversion takes place.
author Guido Ostkamp <hg@ostkamp.fastmail.fm>
date Wed Aug 20 22:15:35 2008 +0200 (2008-08-20)
parents dc3d42f3a288
children 028543f67bea
rev   line source
bos@18 1 # This makefile requires GNU make.
bos@18 2
bos@2 3 sources := \
bos@2 4 00book.tex \
bos@2 5 99book.bib \
bos@2 6 99defs.tex \
bos@34 7 build_id.tex \
bos@187 8 branch.tex \
bos@132 9 cmdref.tex \
bos@159 10 collab.tex \
bos@59 11 concepts.tex \
bos@42 12 daily.tex \
bos@133 13 filenames.tex \
bos@177 14 hg_id.tex \
bos@223 15 hgext.tex \
bos@34 16 hook.tex \
bos@16 17 intro.tex \
bos@16 18 mq.tex \
bos@104 19 mq-collab.tex \
bos@104 20 mq-ref.tex \
bos@76 21 preface.tex \
bos@85 22 srcinstall.tex \
bos@84 23 template.tex \
bos@95 24 tour-basic.tex \
bos@121 25 tour-merge.tex \
bos@121 26 undo.tex
bos@0 27
bos@11 28 image-sources := \
bos@179 29 feature-branches.dot \
bos@108 30 filelog.svg \
bos@103 31 kdiff3.png \
bos@109 32 metadata.svg \
bos@96 33 mq-stack.svg \
bos@149 34 note.png \
bos@112 35 revlog.svg \
bos@110 36 snapshot.svg \
bos@99 37 tour-history.svg \
bos@103 38 tour-merge-conflict.svg \
bos@103 39 tour-merge-merge.svg \
bos@100 40 tour-merge-pull.svg \
bos@113 41 tour-merge-sep-repos.svg \
bos@124 42 undo-manual.dot \
bos@124 43 undo-manual-merge.dot \
bos@124 44 undo-non-tip.dot \
bos@124 45 undo-simple.dot \
bos@113 46 wdir.svg \
bos@115 47 wdir-after-commit.svg \
bos@115 48 wdir-branch.svg \
bos@115 49 wdir-merge.svg \
bos@115 50 wdir-pre-branch.svg
bos@103 51
bos@124 52 image-dot := $(filter %.dot,$(image-sources))
bos@103 53 image-svg := $(filter %.svg,$(image-sources))
bos@124 54 image-png := $(filter %.png,$(image-sources))
bos@11 55
bos@213 56 image-pdf := $(image-dot:%.dot=%.pdf) $(image-svg:%.svg=%.pdf) $(image-png)
bos@213 57 image-html := $(image-dot:%.dot=%.png) $(image-svg:%.svg=%.png) $(image-png)
bos@213 58
bos@4 59 example-sources := \
bos@124 60 backout \
bos@131 61 bisect \
bos@179 62 branching \
bos@202 63 branch-named \
bos@198 64 branch-repo \
bos@133 65 cmdref \
bos@117 66 daily.copy \
bos@86 67 daily.files \
bos@118 68 daily.rename \
bos@122 69 daily.revert \
bos@226 70 extdiff \
bos@133 71 filenames \
bos@86 72 hook.msglen \
bos@86 73 hook.simple \
bos@86 74 hook.ws \
bos@156 75 issue29 \
bos@104 76 mq.guards \
bos@86 77 mq.qinit-help \
bos@86 78 mq.dodiff \
bos@86 79 mq.id \
bos@86 80 mq.tarball \
bos@86 81 mq.tools \
bos@86 82 mq.tutorial \
bos@156 83 rename.divergent \
bos@121 84 rollback \
bos@196 85 tag \
bos@86 86 template.simple \
bos@87 87 template.svnstyle \
bos@103 88 tour \
bos@103 89 tour-merge-conflict
bos@4 90
bos@172 91 example-prereqs := \
bos@172 92 /usr/bin/merge
bos@172 93
bos@157 94 dist-sources := \
bos@159 95 ../html/hgicon.png \
bos@157 96 ../html/index.html.var \
bos@157 97 ../html/index.en.html
bos@157 98
bos@0 99 latex-options = \
bos@0 100 -interaction batchmode \
bos@0 101 -output-directory $(dir $(1)) \
bos@0 102 -jobname $(basename $(notdir $(1)))
bos@0 103
bos@177 104 hg = $(shell which hg)
bos@177 105
bos@269 106 hg-id = $(shell hg parents --template '{node|short}, dated {date|isodate},\n')
bos@177 107
bos@177 108 hg-version = $(shell hg version -q | \
bos@242 109 sed 's,.*(version \(unknown\|[a-f0-9+]*\)),\1,')
bos@177 110
bos@0 111 all: pdf html
bos@0 112
bos@0 113 pdf: pdf/hgbook.pdf
bos@0 114
bos@18 115 define pdf
bos@0 116 mkdir -p $(dir $@)
bos@21 117 TEXINPUTS=$(dir $<): pdflatex $(call latex-options,$@) $< || (rm -f $@; exit 1)
bos@2 118 cp 99book.bib $(dir $@)
bos@2 119 cd $(dir $@) && bibtex $(basename $(notdir $@))
bos@16 120 cd $(dir $@) && makeindex $(basename $(notdir $@))
bos@21 121 TEXINPUTS=$(dir $<): pdflatex $(call latex-options,$@) $< || (rm -f $@; exit 1)
bos@21 122 TEXINPUTS=$(dir $<): pdflatex $(call latex-options,$@) $< || (rm -f $@; exit 1)
bos@26 123 if grep 'Reference.*undefined' $(@:.pdf=.log); then exit 1; fi
bos@18 124 endef
bos@18 125
hg@307 126 pdf/hgbook.pdf: $(sources) examples $(image-pdf)
bos@18 127 $(call pdf)
bos@0 128
bos@149 129 html: onepage split
bos@149 130
bos@213 131 onepage: $(htlatex) html/onepage/hgbook.html html/onepage/hgbook.css $(image-html:%=html/onepage/%)
bos@213 132
bos@213 133 html/onepage/%: %
bos@213 134 cp $< $@
bos@213 135
bos@213 136 split: $(htlatex) html/split/hgbook.html html/split/hgbook.css $(image-html:%=html/split/%)
bos@213 137
bos@213 138 html/split/%: %
bos@213 139 cp $< $@
bos@0 140
bos@18 141 # This is a horrible hack to work around the fact that the htlatex
bos@18 142 # command in tex4ht is itself a horrible hack. I really don't want to
bos@18 143 # include verbatim the big wad of TeX that is repeated in that script,
bos@171 144 # but I've given up and run a hacked copy as htlatex.book here.
bos@18 145
bos@0 146 define htlatex
bos@0 147 mkdir -p $(dir $(1))
bos@170 148 cp 99book.bib $(dir $(1))
bos@170 149 TEXINPUTS=$(dir $(2)): ./htlatex.book $(2) "bookhtml,html4-uni,$(3)" " -cunihtf -utf8" "$(dir $(1))" "$(call latex-options,$(1))" || (rm -f $(1); exit 1)
bos@0 150 cd $(dir $(1)) && tex4ht -f/$(basename $(notdir $(1))) -cvalidate -cunihtf
bos@0 151 cd $(dir $(1)) && t4ht -f/$(basename $(notdir $(1)))
bos@149 152 ./fixhtml.py $(dir $(1))/*.html
bos@214 153 rm $(dir $(1))/hgbook.css
bos@0 154 endef
bos@0 155
hg@307 156 html/onepage/hgbook.html: $(sources) examples $(image-html) bookhtml.cfg
bos@0 157 $(call htlatex,$@,$<)
bos@213 158
bos@213 159 html/split/hgbook.html: $(sources) examples bookhtml.cfg
bos@0 160 $(call htlatex,$@,$<,2)
bos@18 161
bos@18 162 # Produce 90dpi PNGs for the web.
bos@18 163
bos@11 164 %.png: %.svg
hg@307 165 ./fixsvg $<
hg@307 166 mv $<.tmp foobar.svg
hg@307 167 inkscape -D -e $@ foobar.svg
bos@11 168
bos@124 169 %.svg: %.dot
bos@124 170 dot -Tsvg -o $@ $<
bos@124 171
jeffpc@30 172 # Produce eps & pdf for the pdf
bos@18 173
jeffpc@30 174 %.pdf: %.eps
jeffpc@30 175 epstopdf $<
jeffpc@30 176
jeffpc@30 177 %.eps: %.svg
hg@307 178 ./fixsvg $<
hg@307 179 mv $<.tmp foobar.svg
hg@307 180 inkscape -E $@ foobar.svg
bos@11 181
bos@124 182 %.eps: %.dot
bos@124 183 dot -Tps -o $@ $<
bos@124 184
bos@172 185 examples: $(example-prereqs) examples/.run
bos@4 186
bos@86 187 examples/.run: $(example-sources:%=examples/%.run)
bos@45 188 touch examples/.run
bos@45 189
bos@45 190 examples/%.run: examples/% examples/run-example
bos@45 191 cd examples && ./run-example $(notdir $<)
bos@4 192
bos@250 193 changelog := $(wildcard ../.hg/store/00changelog.[id])
bos@250 194 ifeq ($(changelog),)
bos@250 195 changelog := $(wildcard ../.hg/00changelog.[id])
bos@250 196 endif
bos@250 197
bos@250 198 build_id.tex: $(changelog)
wbunaarfubss@249 199 echo -n '$(hg-id)' > build_id.tex
bos@177 200
bos@177 201 hg_id.tex: $(hg)
wbunaarfubss@249 202 echo -n '$(hg-version)' > hg_id.tex
bos@16 203
bos@0 204 clean:
bos@153 205 rm -rf dist html pdf \
bos@124 206 $(image-dot:%.dot=%.pdf) \
bos@124 207 $(image-dot:%.dot=%.png) \
bos@103 208 $(image-svg:%.svg=%.pdf) \
bos@103 209 $(image-svg:%.svg=%.png) \
bos@177 210 examples/*.{lxo,run} examples/.run build_id.tex hg_id.tex
bos@153 211
bos@157 212 install: pdf split $(dist-sources)
bos@153 213 rm -rf dist
bos@153 214 mkdir -p dist
bos@153 215 cp pdf/hgbook.pdf dist
bos@153 216 cp html/split/*.{css,html,png} dist
bos@157 217 cp $(dist-sources) dist
bos@153 218
bos@153 219 rsync: install
bos@153 220 rsync -avz --delete dist sp.red-bean.com:public_html/hgbook