Import Debian changes 20180207-1
[hcoop/debian/mlton.git] / doc / guide / Makefile
1 GIT := git
2 MLTON_VERSION := 20180207
3
4 export LC_ALL = C
5
6 NULL :=
7
8 ASCIIDOC := asciidoc
9 ifneq ($(shell which $(ASCIIDOC) 2> /dev/null),)
10 ASCIIDOC_CONF_DIR := $(shell $(ASCIIDOC) -v /dev/null 2>&1 | head -n 1 | sed 's|.*reading: \(.*\)/asciidoc.conf|\1|')
11 else
12 ASCIIDOC_CONF_DIR :=
13 endif
14 ASCIIDOC_MLTON_FLAGS := $(shell cat conf/asciidoc-mlton.flags | sed 's|^\#.*||' | sed "s|MLTON_VERSION|$(MLTON_VERSION)|")
15 ASCIIDOC_MLTON_DEPS := bin/InclGitFile.py conf/asciidoc-mlton.flags $(shell cat conf/asciidoc-mlton.flags | sed -n 's|^.*\(conf/.*\)$$|\1|p')
16 ASCIIDOC_HTML5_FLAGS := $(ASCIIDOC_MLTON_FLAGS) $(shell cat conf/asciidoc-html5.flags | sed 's|^\#.*||')
17 ASCIIDOC_HTML5_DEPS := $(ASCIIDOC_MLTON_DEPS) conf/asciidoc-html5.flags $(shell cat conf/asciidoc-html5.flags | sed -n 's|^.*\(conf/.*\)$$|\1|p')
18 ASCIIDOC_DOCBOOK45_FLAGS := $(ASCIIDOC_MLTON_FLAGS) $(shell cat conf/asciidoc-docbook45.flags | sed 's|^\#.*||')
19 ASCIIDOC_DOCBOOK45_DEPS := $(ASCIIDOC_MLTON_DEPS) conf/asciidoc-docbook45.flags $(shell cat conf/asciidoc-docbook45.flags | sed -n 's|^.*\(conf/.*\)$$|\1|p')
20
21 DBLATEX := dblatex
22
23 GEN_PAGES := Index mlton-guide
24 GEN_ATTACHMENTS := $(foreach size,16 32 64 128 256 512 1024,Logo.attachments/mlton-$(size).png Logo.attachments/mlton-$(size).pdf)
25
26 SRC_PAGES := $(filter-out $(GEN_PAGES),$(patsubst ./%.adoc,%,$(shell cd src ; find . -type f -name '*.adoc')))
27 SRC_ATTACHMENTS := $(filter-out $(GEN_ATTACHMENTS),$(patsubst ./%,%,$(foreach dir,$(shell cd src ; find . -type d -name '*.attachments'),$(shell cd src ; find $(dir) -type f ! -name '.gitignore' ! -name '.gitattributes'))))
28
29 HTML5_XTRA := asciidoc.css asciidoc.js pygments.css mlton.css mlton-gcse.js index.html
30 HTML5_XTRA_PAGES := Index
31
32 MLTON_ORG_XTRA := $(HTML5_XTRA)
33 MLTON_ORG_XTRA_PAGES := $(HTML5_XTRA_PAGES)
34 MLTON_ORG_XTRA_ATTACHMENTS := $(foreach size,16 32 64 128 256 512 1024,Logo.attachments/mlton-$(size).png)
35 MLTON_ORG := $(addprefix www.mlton.org/, $(SRC_PAGES) $(SRC_ATTACHMENTS) $(MLTON_ORG_XTRA) $(MLTON_ORG_XTRA_PAGES) $(MLTON_ORG_XTRA_ATTACHMENTS))
36 MLTON_ORG_TORM := $(filter-out $(MLTON_ORG),$(shell if [ -d www.mlton.org ]; then find www.mlton.org -type f; fi))
37
38 LOCALHOST_XTRA := $(filter-out mlton-gcse.js,$(HTML5_XTRA))
39 LOCALHOST_XTRA_PAGES := $(HTML5_XTRA_PAGES)
40 LOCALHOST_XTRA_ATTACHMENTS := $(foreach size,16 32 64 128 256 512 1024,Logo.attachments/mlton-$(size).png)
41 LOCALHOST := $(addprefix localhost/, $(SRC_PAGES) $(SRC_ATTACHMENTS) $(LOCALHOST_XTRA) $(LOCALHOST_XTRA_PAGES) $(LOCALHOST_XTRA_ATTACHMENTS))
42 LOCALHOST_TORM := $(filter-out $(LOCALHOST),$(shell if [ -d localhost ]; then find localhost -type f; fi))
43
44
45 ALL :=
46 ifneq ($(shell which $(ASCIIDOC) 2> /dev/null),)
47 ifneq ($(shell which pygmentize 2> /dev/null),)
48 ALL += $(LOCALHOST) localhost-rm
49 endif
50 ifneq ($(shell which $(DBLATEX) 2> /dev/null),)
51 ALL += mlton-guide.pdf
52 endif
53 endif
54
55
56 all: $(ALL)
57
58
59 ifneq ($(shell which gm 2> /dev/null),)
60 CONVERT := gm convert
61 else
62 ifneq ($(shell which convert 2> /dev/null),)
63 CONVERT := convert
64 else
65 CONVERT := no-convert
66 endif
67 endif
68
69 %-16.png : %.svg
70 $(CONVERT) $< -resize 16x16 $@
71 %-32.png : %.svg
72 $(CONVERT) $< -resize 32x32 $@
73 %-64.png : %.svg
74 $(CONVERT) $< -resize 64x64 $@
75 %-128.png : %.svg
76 $(CONVERT) $< -resize 128x128 $@
77 %-256.png : %.svg
78 $(CONVERT) $< -resize 256x256 $@
79 %-512.png : %.svg
80 $(CONVERT) $< -resize 512x512 $@
81 %-1024.png : %.svg
82 $(CONVERT) $< -resize 1024x1024 $@
83
84 %-16.pdf : %.svg
85 $(CONVERT) $< -resize 16x16 $@
86 %-32.pdf : %.svg
87 $(CONVERT) $< -resize 32x32 $@
88 %-64.pdf : %.svg
89 $(CONVERT) $< -resize 64x64 $@
90 %-128.pdf : %.svg
91 $(CONVERT) $< -resize 128x128 $@
92 %-256.pdf : %.svg
93 $(CONVERT) $< -resize 256x256 $@
94 %-512.pdf : %.svg
95 $(CONVERT) $< -resize 512x512 $@
96 %-1024.pdf : %.svg
97 $(CONVERT) $< -resize 1024x1024 $@
98
99
100 conf/specialsections.conf : $(ASCIIDOC_CONF_DIR)/lang-en.conf bin/mk-specialsections-conf.sh
101 ./bin/mk-specialsections-conf.sh $< $@
102
103 conf/html5-header.conf : $(ASCIIDOC_CONF_DIR)/html5.conf bin/mk-html5-header-conf.sh
104 ./bin/mk-html5-header-conf.sh $< $@
105
106 conf/html5-footer.conf : $(ASCIIDOC_CONF_DIR)/html5.conf bin/mk-html5-footer-conf.sh
107 ./bin/mk-html5-footer-conf.sh $< $@
108
109
110 src/Index.adoc : bin/mk-index.sh $(foreach page,$(SRC_PAGES),src/$(page).adoc)
111 ./bin/mk-index.sh $(SRC_PAGES) > $@
112
113 src/mlton-guide.adoc : bin/mk-mlton-guide.sh $(foreach page,$(SRC_PAGES),src/$(page).adoc)
114 ./bin/mk-mlton-guide.sh $(SRC_PAGES) > $@
115
116
117 $(ASCIIDOC_CONF_DIR)/stylesheets/asciidoc.css: ;
118 %/asciidoc.css : $(ASCIIDOC_CONF_DIR)/stylesheets/asciidoc.css
119 mkdir -p $(dir $@) ; cp $< $@
120
121 $(ASCIIDOC_CONF_DIR)/javascripts/asciidoc.js: ;
122 %/asciidoc.js : $(ASCIIDOC_CONF_DIR)/javascripts/asciidoc.js
123 mkdir -p $(dir $@) ; cp $< $@
124
125 $(ASCIIDOC_CONF_DIR)/stylesheets/pygments.css: ;
126 %/pygments.css : $(ASCIIDOC_CONF_DIR)/stylesheets/pygments.css
127 mkdir -p $(dir $@) ; cp $< $@
128
129 conf/mlton.css: ;
130 %/mlton.css : conf/mlton.css
131 mkdir -p $(dir $@) ; cp $< $@
132
133 conf/mlton-gcse.js: ;
134 %/mlton-gcse.js : conf/mlton-gcse.js
135 mkdir -p $(dir $@) ; cp $< $@
136
137 %/index.html : %/Home
138 rm -f $@ ; mkdir -p $(dir $@) ; ln -s Home $@ ; touch $@
139
140
141 www.mlton.org/% : src/%.adoc $(ASCIIDOC_HTML5_DEPS) bin/mk-git-attribute-entity-flags.sh
142 mkdir -p $(dir $@) ; $(ASCIIDOC) $(ASCIIDOC_HTML5_FLAGS) $(shell ./bin/mk-git-attribute-entity-flags.sh $<) -a mlton-guide-host=www.mlton.org -a mlton-guide-page=$(basename $(notdir $<)) -o $@ $<
143
144 www.mlton.org/% : src/%
145 mkdir -p $(dir $@) ; cp -prf $< $@
146
147 .PHONY: www.mlton.org-rm
148 www.mlton.org-rm: $(MLTON_ORG)
149 @rm -rf $(MLTON_ORG_TORM)
150
151 .PHONY: www.mlton.org
152 www.mlton.org: $(MLTON_ORG)
153
154 .PHONY: upload_www.mlton.org
155 upload_www.mlton.org: $(MLTON_ORG) www.mlton.org-rm
156 rsync -avzP --delete -e ssh www.mlton.org/ fluet,mlton@web.sourceforge.net:htdocs/wiki
157
158
159 localhost/% : src/%.adoc $(ASCIIDOC_HTML5_DEPS)
160 mkdir -p $(dir $@) ; $(ASCIIDOC) $(ASCIIDOC_HTML5_FLAGS) -a mlton-guide-host=localhost -a mlton-guide-page=$(basename $(notdir $<)) -o $@ $<
161
162 localhost/% : src/%
163 mkdir -p $(dir $@) ; cp -prf $< $@
164
165 .PHONY: localhost-rm
166 localhost-rm: $(LOCALHOST)
167 @rm -rf $(LOCALHOST_TORM)
168
169 .PHONY: localhost
170 localhost: $(LOCALHOST) localhost-rm
171
172 src/mlton-guide.xml : src/mlton-guide.adoc conf/asciidoc-docbook45.flags $(ASCIIDOC_DOCBOOK45_DEPS)
173 mkdir -p $(dir $@) ; $(ASCIIDOC) $(ASCIIDOC_DOCBOOK45_FLAGS) -o $@ $<
174 @true || xmllint --nonet --noout --valid $@ || true
175 mlton-guide.pdf : src/mlton-guide.xml src/Logo.attachments/mlton-128.pdf conf/mlton-dblatex.xsl conf/mlton-dblatex.sty
176 $(DBLATEX) -t pdf -p conf/mlton-dblatex.xsl -s conf/mlton-dblatex.sty -o $@ $<
177
178
179 .PHONY: check-git-links
180 check-git-links:
181 @./bin/check-git-links.sh $(SRC_PAGES)
182
183 .PHONY: clean
184 clean:
185 ../../bin/clean
186
187 .PHONY: vars
188 vars:
189 @echo ASCIIDOC_CONF_DIR=$(ASCIIDOC_CONF_DIR)
190 @echo ASCIIDOC_HTML5_FLAGS=$(ASCIIDOC_HTML5_FLAGS)
191 @echo ASCIIDOC_HTML5_DEPS=$(ASCIIDOC_HTML5_DEPS)
192 @echo GEN_PAGES=$(GEN_PAGES)
193 @echo GEN_ATTACHMENTS=$(GEN_ATTACHMENTS)
194 @echo SRC_PAGES=$(SRC_PAGES)
195 @echo SRC_ATTACHMENTS=$(SRC_ATTACHMENTS)