diff ja/Makefile @ 776:019040fbf5f5

merged to upstream: phase 1
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Tue, 21 Apr 2009 00:36:40 +0900
parents en/Makefile@3b33dd6aba87 en/Makefile@73aa295a40da
children 896ab6eaf1c6
line wrap: on
line diff
--- a/ja/Makefile	Mon Apr 20 23:50:34 2009 +0900
+++ b/ja/Makefile	Tue Apr 21 00:36:40 2009 +0900
@@ -1,64 +1,26 @@
 # This makefile requires GNU make.
 
-sources := \
-	00book.tex \
-	99book.bib \
-	99defs.tex \
-	build_id.tex \
-	branch.tex \
-	cmdref.tex \
-	collab.tex \
-	concepts.tex \
-	daily.tex \
-	filenames.tex \
-	hg_id.tex \
-	hgext.tex \
-	hook.tex \
-	intro.tex \
-	mq.tex \
-	mq-collab.tex \
-	mq-ref.tex \
-	preface.tex \
-	srcinstall.tex \
-	template.tex \
-	tour-basic.tex \
-	tour-merge.tex \
-	undo.tex
+image-sources := $(wildcard figs/*.dot figs/*.gif figs/*.png figs/*.svg)
 
-image-sources := \
-	feature-branches.dot \
-	filelog.svg \
-	kdiff3.png \
-	metadata.svg \
-	mq-stack.svg \
-	note.png \
-	revlog.svg \
-	snapshot.svg \
-	tour-history.svg \
-	tour-merge-conflict.svg \
-	tour-merge-merge.svg \
-	tour-merge-pull.svg \
-	tour-merge-sep-repos.svg \
-	undo-manual.dot \
-	undo-manual-merge.dot \
-	undo-non-tip.dot \
-	undo-simple.dot \
-	wdir.svg \
-	wdir-after-commit.svg \
-	wdir-branch.svg \
-	wdir-merge.svg \
-	wdir-pre-branch.svg
+xml-src-files := \
+	00book.xml \
+	app*.xml \
+	ch*.xml
 
 image-dot := $(filter %.dot,$(image-sources))
 image-svg := $(filter %.svg,$(image-sources))
-image-png := $(filter %.png,$(image-sources))
+image-oth := $(filter %.gif %.png,$(image-sources))
+
+obj-web := html
+obj-websup := $(obj-web)/support
+obj-web-read := $(obj-web)/read
 
-image-pdf := $(image-dot:%.dot=%.pdf) $(image-svg:%.svg=%.pdf) $(image-png)
-image-html := $(image-dot:%.dot=%.png) $(image-svg:%.svg=%.png) $(image-png)
-#image-eps := $(image-dot:%.dot=%.eps) $(image-svg:%.svg=%.eps) $(image-png)
-image-eps := $(image-dot:%.dot=%.eps) $(image-svg:%.svg=%.eps) $(image-png:%.png=%.eps)
+image-web := \
+	$(image-dot:%.dot=$(obj-web-read)/%.png) \
+	$(image-svg:%.svg=$(obj-web-read)/%.png) \
+	$(image-oth:%=$(obj-web-read)/%)
 
-example-sources := \
+example-sources-by-name := \
 	backout \
 	bisect \
 	branching \
@@ -90,6 +52,49 @@
 	tour \
 	tour-merge-conflict
 
+example-sources := \
+	$(example-sources-by-name:%=examples/%) \
+	$(wildcard examples/ch*/*)
+
+extras-web-base := \
+	$(obj-web)/index.html \
+	$(obj-web)/robots.txt \
+	$(obj-websup)/form-min.js \
+	$(obj-websup)/form.js \
+	$(obj-websup)/hsbook.js \
+	$(obj-websup)/jquery-min.js \
+	$(obj-websup)/jquery.js \
+	$(obj-websup)/styles.css
+
+extras-web := $(extras-web-base) $(extras-web-base:%=%.gz)
+
+xsltproc := xsltproc
+xsltproc-opts := --nonet --xinclude --path '$(xml-path)'
+
+xmllint := xmllint
+xmllint-opts := --noout --nonet --valid
+
+system-xsl-dir := $(firstword $(wildcard \
+	/usr/share/sgml/docbook/xsl-stylesheets \
+	/usr/share/xml/docbook/stylesheet/nwalsh \
+	))
+
+# Bletcherousness.
+
+ifneq ($(wildcard /usr/share/sgml/docbook/xml-dtd-4.4-*),)
+dtd-dir := $(wildcard /usr/share/sgml/docbook/xml-dtd-4.4-*)
+else
+ifneq ($(wildcard /usr/share/xml/docbook/schema/dtd/4.4),)
+dtd-dir := $(wildcard /usr/share/xml/docbook/schema/dtd/4.4)
+else
+$(error Do not know where to look for DocBook XML 4.4 DTD)
+endif
+endif
+
+ifeq ($(system-xsl-dir),)
+$(error add a suitable directory to system-xsl-dir)
+endif
+
 example-prereqs := \
 	/usr/bin/merge
 
@@ -98,11 +103,6 @@
 	../html/index.html.var \
 	../html/index.en.html
 
-latex-options = \
-	-interaction batchmode \
-	-output-directory $(dir $(1)) \
-	-jobname $(basename $(notdir $(1)))
-
 hg = $(shell which hg)
 
 hg-id = $(shell hg parents --template '{node|short}, dated {date|isodate},\n')
@@ -110,132 +110,111 @@
 hg-version = $(shell hg version -q | \
 		     sed 's,.*(version \(unknown\|[a-f0-9+]*\)),\1,')
 
-all: dvi
-
-#dvi: $(sources) $(image-eps) examples
-dvi: $(sources) $(image-eps)
-	platex 00book.tex
+all: web complete.xml
 
-	cp 00book.aux hgbook.aux
-	bibtex hgbook
+../stylesheets/system-xsl: $(system-xsl-dir)
+	ln -s $< $@
 
-	platex 00book.tex
-	platex 00book.tex
-	platex 00book.tex
+web: ../stylesheets/system-xsl websup html
 
-
-
-
+html: $(obj-web-read)/index.html
 
-
-pdf: pdf/hgbook.pdf
-
-define pdf
-	mkdir -p $(dir $@)
-	TEXINPUTS=$(dir $<): pdflatex $(call latex-options,$@) $< || (rm -f $@; exit 1)
+../web/index-read.html.in: ../web/genindex.py $(xml-src-files)
+	cd ../web && ./genindex.py
 
-	cp 99book.bib $(dir $@)
-
-	cd $(dir $@) && bibtex $(basename $(notdir $@))
-	cd $(dir $@) && makeindex $(basename $(notdir $@))
-
-	TEXINPUTS=$(dir $<): pdflatex $(call latex-options,$@) $< || (rm -f $@; exit 1)
-	TEXINPUTS=$(dir $<): pdflatex $(call latex-options,$@) $< || (rm -f $@; exit 1)
-	if grep 'Reference.*undefined' $(@:.pdf=.log); then exit 1; fi
-endef
+$(obj-web-read)/index.html: ../stylesheets/system-xsl .validated-00book.xml ../web/index-read.html.in
+	xsltproc $(xsltproc-opts) -o $(obj-web-read)/x ../stylesheets/chunk-stylesheet.xsl 00book.xml
+	python ../web/texpand.py ../web/index-read.html.in html/read/index.html
+	for i in $(obj-web-read)/*.html; do \
+	  gzip -9 -c $$i > $$i.gz; \
+	done
 
-#pdf/hgbook.pdf: $(sources) $(image-pdf) examples
-pdf/hgbook.pdf: $(sources) $(image-pdf)
-	$(call pdf)
-
-html: onepage split
-
-onepage: $(htlatex) html/onepage/hgbook.html html/onepage/hgbook.css $(image-html:%=html/onepage/%)
+websup: $(extras-web) $(image-web)
+	mkdir -p $(obj-websup)/figs $(obj-web-read)/figs
+	cp ../stylesheets/system-xsl/images/*.png $(obj-websup)/figs
+	cp -f ../web/icons/*.png $(obj-websup)/figs
 
-html/onepage/%: %
-	cp $< $@
-
-split: $(htlatex) html/split/hgbook.html html/split/hgbook.css $(image-html:%=html/split/%)
-
-html/split/%: %
-	cp $< $@
+complete.xml: .validated-00book.xml
+	$(xsltproc) $(xsltproc-opts) -o $@ ../stylesheets/dtd-profile.xsl 00book.xml
 
-# This is a horrible hack to work around the fact that the htlatex
-# command in tex4ht is itself a horrible hack.  I really don't want to
-# include verbatim the big wad of TeX that is repeated in that script,
-# but I've given up and run a hacked copy as htlatex.book here.
+all-ids.dat: ../stylesheets/all-ids.xsl $(xml-src-files)
+	$(xsltproc) $(xsltproc-opts) -o $@ ../stylesheets/all-ids.xsl 00book.xml
+
+web: websup
 
-define htlatex
-	mkdir -p $(dir $(1))
-	cp 99book.bib $(dir $(1))
-	TEXINPUTS=$(dir $(2)): ./htlatex.book $(2) "bookhtml,html4-uni,$(3)" " -cunihtf -utf8" "$(dir $(1))" "$(call latex-options,$(1))" || (rm -f $(1); exit 1)
-	cd $(dir $(1)) && tex4ht -f/$(basename $(notdir $(1))) -cvalidate -cunihtf
-	cd $(dir $(1)) && t4ht -f/$(basename $(notdir $(1)))
-	./fixhtml.py $(dir $(1))/*.html
-	rm $(dir $(1))/hgbook.css
-endef
+valid: .validated-00book.xml
 
-#html/onepage/hgbook.html: $(sources) $(image-html) examples bookhtml.cfg
-html/onepage/hgbook.html: $(sources) $(image-html) bookhtml.cfg
-	$(call htlatex,$@,$<)
-
-#html/split/hgbook.html: $(sources) examples bookhtml.cfg
-html/split/hgbook.html: $(sources) bookhtml.cfg
-	$(call htlatex,$@,$<,2)
+.validated-00book.xml: $(xml-src-files) examples/.run
+	$(xmllint) --path '$(dtd-dir):$(xml-path)' $(xmllint-opts) $<
+	touch $@
 
 # Produce 90dpi PNGs for the web.
 
-%.png: %.svg
-	inkscape -D -e $@ $<
-
-%.svg: %.dot
-	dot -Tsvg -o $@ $<
-
-# Produce eps & pdf for the pdf
+$(obj-web-read)/figs/%.png: $(obj-web-read)/figs/%.svg fixsvg
+	mkdir -p $(dir $@)
+	./fixsvg $<
+	inkscape -D -e $@ $<-tmp.svg
+	rm $<-tmp.svg
 
-%.pdf: %.eps
-	epstopdf $<
-
-%.eps: %.svg
-	inkscape -E $@ $<
+$(obj-web-read)/figs/%.png: figs/%.svg fixsvg
+	mkdir -p $(dir $@)
+	./fixsvg $<
+	inkscape -D -e $@ $<-tmp.svg
+	rm $<-tmp.svg
 
-%.eps: %.dot
-	dot -Tps -o $@ $<
+$(obj-web-read)/figs/%.gif: figs/%.gif
+	cp $< $@
 
-%.eps: %.png
-	convert $< ps:$@
+$(obj-web-read)/figs/%.png: figs/%.png
+	cp $< $@
+
+$(obj-web-read)/figs/%.svg: figs/%.dot
+	mkdir -p $(dir $@)
+	dot -Tsvg -o $@ $<
 
 examples: $(example-prereqs) examples/.run
 
-examples/.run: $(example-sources:%=examples/%.run)
-	touch examples/.run
+examples/.run: $(example-sources)
+	cd examples && ./run-example -a
 
 examples/%.run: examples/% examples/run-example
-	cd examples && ./run-example $(notdir $<)
-
-changelog := $(wildcard ../.hg/store/00changelog.[id])
-ifeq ($(changelog),)
-changelog := $(wildcard ../.hg/00changelog.[id])
-endif
-
-build_id.tex: $(changelog)
-	echo -n '$(hg-id)' > build_id.tex
-
-hg_id.tex: $(hg)
-	echo -n '$(hg-version)' > hg_id.tex
 
 clean:
-	rm -rf dist html pdf \
-		$(image-dot:%.dot=%.pdf) \
-		$(image-dot:%.dot=%.png) \
-		$(image-svg:%.svg=%.pdf) \
-		$(image-svg:%.svg=%.png) \
-		examples/*.{lxo,run} examples/.run build_id.tex hg_id.tex
+	-rm -rf dist html $(image-dot:%.dot=%.pdf) $(image-dot:%.dot=%.png) \
+	  $(image-svg:%.svg=%.png) examples/*.{lxo,run} examples/.run
 
-install: pdf split $(dist-sources)
+install: html $(dist-sources)
 	rm -rf dist
 	mkdir -p dist
-	cp pdf/hgbook.pdf dist
-	cp html/split/*.{css,html,png} dist
+	cp html/*.{css,html,png} dist
 	cp $(dist-sources) dist
 
+rsync: install
+	rsync -avz --delete dist sp.red-bean.com:public_html/hgbook
+
+vpath %.css ../web
+vpath %.html.in ../web
+vpath %.js ../web/javascript
+
+$(obj-websup)/%.css: %.css
+	@mkdir -p $(dir $@)
+	cp $< $@
+
+$(obj-websup)/%.jpg: %.jpg
+	@mkdir -p $(dir $@)
+	cp $< $@
+
+$(obj-websup)/%.js: %.js
+	@mkdir -p $(dir $@)
+	cp $< $@
+
+$(obj-web)/%: ../web/%
+	@mkdir -p $(dir $@)
+	cp $< $@
+
+$(obj-web)/%.html: %.html.in
+	@mkdir -p $(dir $@)
+	python ../web/texpand.py $< $@
+
+%.gz: %
+	gzip -9 -c $< > $@