Commit | Line | Data |
---|---|---|
7f918cf1 CE |
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) |