-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathGNUmakefile
74 lines (59 loc) · 1.91 KB
/
GNUmakefile
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
.PHONY: \
all clean check \
wiki readme manpage \
install uninstall \
install-dev uninstall-dev
default: all
.ONESHELL:
SHELL := /bin/bash
README_LAYOUT = \
docs/readme_header.md \
docs/readme_install.md \
docs/readme_about.md \
docs/_readme_table.md \
docs/readme_issues.md \
docs/readme_license.md \
docs/readme_links.md
ass_dirs := $(wildcard src/*)
wiki_mds := $(ass_dirs:src/%=wiki/doc/%.md)
wiki_src := $(ass_dirs:%=%/.cache/wiki.md)
$(wiki_src):
@[[ $@ =~ ^(src/[^/]+) ]] && trg=$${BASH_REMATCH[1]}
$(MAKE) -C $$trg .cache/wiki.md
wiki: $(wiki_mds)
$(wiki_mds): wiki/doc/%.md : src/%/.cache/wiki.md
cat $< > $@
readme: README.md
README.md: $(README_LAYOUT)
cat $^ > $@
docs/_readme_table.md: $(addsuffix /config.mak,$(ass_dirs))
@{
echo
printf '%s\n' "script | description" "|:-|:-|"
gawk '
$$1 == "NAME" {name=$$3}
$$1 == "DESCRIPTION" {
printf ("[%s] | %s \n", name , gensub(".+:= ","",1,$$0))
}' $^
} > $@
ass_names := $(ass_dirs:src/%=%)
each_check := $(ass_names:%=%-check)
each_all := $(ass_names:%=%-all)
each_clean := $(ass_names:%=%-clean)
each_manpage := $(ass_names:%=%-manpage)
each_install := $(ass_names:%=%-install)
each_install-dev := $(ass_names:%=%-install-dev)
each_uninstall := $(ass_names:%=%-uninstall)
each_uninstall-dev := $(ass_names:%=%-uninstall-dev)
each_each := $(each_check) $(each_all) $(each_clean) $(each_manpage) $(each_install) $(each_install-dev) $(each_uninstall) $(each_uninstall-dev)
check: $(each_check)
all: $(each_all)
clean: $(each_clean)
manpage: $(each_manpage)
install: $(each_install)
install-dev: $(each_install-dev)
uninstall: $(each_uninstall)
uninstall-dev: $(each_uninstall-dev)
$(each_each):
@v=$@ action=$${v#*-} name=$${v%%-*}
$(MAKE) -C src/$$name $$action