aboutsummaryrefslogtreecommitdiff
path: root/aux/dev.mk
blob: 5af332908b8236ac7da28854fbc14b5096c56e0f (plain) (blame)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
.POSIX:

.SUFFIXES:
.SUFFIXES: .in .md .html

.in:
	sed \
		-e "s:@TLD@:`cat aux/tld.txt`:g" \
		-e "s:@NAME@:`basename $$PWD`:g" \
		-e 's:@MAILING_LIST@:$(MAILING_LIST):g' \
		< $< > $@

.in.html:
	pandoc -s -r man -w html \
		-H aux/headers.html \
		--metadata lang="`echo $< | awk -F. '{ print $$(NF-2) }'`" \
		< $(<D)/`basename $(<F) .in` > $@

.md.html:
	pandoc -s -r commonmark -w html \
		-H aux/headers.html \
		--metadata lang="`echo $(<F) | cut -d. -f2`" \
		--metadata title="`basename $$PWD` - `echo $(<F) | cut -d. -f1`" \
		--toc --toc-depth=2 \
		--highlight-style pygments \
		< $< > $@

manpages.html = $(manpages.in:.in=.html)

md_files.html = $(md_files:.md=.html)

public: manpages.sentinel public/makefile.svg po/po4a.cfg md.sentinel          \
		public/index.html public/ci public/TODOs.html public/style.css \
		public/favicon.svg
	touch $@

public/index.html:
	mkdir -p $(@D)
	ln -rs public/en/index.html $@

public/ci:
	sh aux/ci/report.sh -n `basename "$$PWD"` -o $@

public/TODOs.html: TODOs.md aux/preamble-md
	mkdir -p $(@D)
	td -H | cat aux/preamble-md - | pandoc -s -r commonmark -w html \
		-H aux/headers.html \
		--metadata lang=en \
		--metadata title="`basename $$PWD` - TODOs" \
		--toc --toc-depth=2 \
		--highlight-style pygments \
		> $@

public/favicon.svg: aux/favicon.svg
	mkdir -p $(@D)
	cp aux/favicon.svg $@

public/style.css:
	mkdir -p $(@D)
	td -S > $@

md.sentinel: $(md_files.html)
	mkdir -p public
	sh aux/ext2subdir.sh -o public $?
	for d in public/*/; do ln -rfs public/style.css $$d/style.css; done
	touch $@

manpages.sentinel: $(manpages.html)
	mkdir -p public
	sh aux/ext2subdir.sh -o public $?
	touch $@

public/makefile.svg: Makefile
	mkdir -p $(@D)
	LANG=en.UTF-8 make -Bnd dev | make2graph | dot -Tsvg >$@

po/po4a.cfg: $(en_files) po
	sh aux/po4a-cfg.sh -f '$(en_files) aux/checks/manpages/footer.en.0.in' > $@


test-files = \
	aux/checks/changelog.sh  \
	aux/checks/manpages.sh   \
	aux/checks/readme.sh     \
	aux/checks/shellcheck.sh \
	aux/checks/spelling.sh   \
	aux/checks/todos.sh      \
	aux/checks/repo.sh       \

$(test-files): ALWAYS manfooter.sentinel
	env MAILING_LIST='$(MAILING_LIST)' sh $@

aux/checks/assert-manpages.sh: manfooter.sentinel

manfooter.sentinel:
	for f in aux/checks/manpages/*.in; do $(MAKE) -f aux/dev.mk "$${f%.in}"; done
	touch $@

check: $(test-files)

ALWAYS: