File: Makefile

package info (click to toggle)
gitmagic 20100608-1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 340 kB
  • ctags: 14
  • sloc: makefile: 61; sh: 33
file content (76 lines) | stat: -rw-r--r-- 2,822 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# The language we are building.
# For example, Run "make LANG=es" to build the Spanish edition.
LANG := en
SHELL := /bin/bash

.PHONY: target clean sync push

target: book book/default.css book.html book.pdf

# The book consists of these text files in the following order:

TXTFILES := preface.txt intro.txt basic.txt clone.txt branch.txt history.txt \
    multiplayer.txt grandmaster.txt secrets.txt drawbacks.txt translate.txt

book.xml: $(addprefix $(LANG)/,$(TXTFILES))
	# Concatenate the text files and feed to AsciiDoc.
	# If a file has not yet been translated for the target language,
	# then substitute the English version.
	# Kludge to make preface sections work for languages besides English
	# for older AsciiDoc versions.
	if [[ `asciidoc --version | cut -f 2 -d ' '` < "8.4.5" ]]; then \
	echo '[specialsections]' > conf ; \
	sed -n '/^== .* ==$$/p' $(LANG)/preface.txt | sed 's/^== \(.*\) ==$$/^\1$$=sect-preface/' >> conf ; \
	else echo "" > conf ; fi; \
	( for FILE in $^ ; do if [ -f $$FILE ]; then cat $$FILE; else \
	cat en/$$(basename $$FILE); fi; echo ; done ) | \
	asciidoc -a lang=$(LANG) -d book -b docbook -f conf - > $@

# This rule allows unfinished translations to build.
# Report an error if the English version of the text file is missing.
$(addprefix $(LANG)/,$(TXTFILES)) :
ifeq ($(LANG),en)
	@if [ ! -f $@ ]; then echo English file missing: $@; exit 123; fi
else
	@if [ ! -f $@ ]; then echo $@ missing: using English version; fi
endif

# Ignore tidy's exit code because Asciidoc generates section IDs beginning with
# "_", which xmlto converts to "id" attributes of <a> tags. The standard
# insists that "id" attributes begin with a letter, which causes tidy to
# print a warning and return a nonzero code.
#
# When Asciidoc 8.3.0+ is widespread, I'll use its idprefix attribute instead
# of ignoring return codes.

book: book.xml
	xmlto -m custom-html.xsl -o book html book.xml
	sed -i 's/xmlns:fo[^ ]*//g' book/*.html
	sed -i -e 's|<a name="_|<a id="|g' -e 's|8230_and_then_some|and_then_some|g' -e 's|#_|#|g' book/*.html
	-ls book/*.html | xargs -n 1 tidy -utf8 -m -i -q
	./makeover
	sed -i -e 's|book\.html|../gitmagic.html|g' -e 's|book\.pdf|../gitmagic.pdf|g' book/index.html

book/default.css: book.css
	-mkdir book
	rsync book.css book/default.css

book.html: book.xml
	xmlto -m custom-nochunks.xsl html-nochunks $^
	-tidy -utf8 -imq $@

# Set SP_ENCODING to avoid "non SGML character" errors.
# Can also do SP_ENCODING="UTF-8".
book.pdf: book.xml
	SP_ENCODING="XML" docbook2pdf book.xml

clean:
	-rm -rf book.xml book.html book

sync: target
	rsync -r book.html book.pdf book/* blynn@xenon.stanford.edu:www/gitmagic/intl/$(LANG)/

public:
	git push blynn@git.or.cz:srv/git/gitmagic.git
	git push git@github.com:blynn/gitmagic.git
	git push git@gitorious.org:gitmagic/mainline.git