Makefileの推敲
[YACASL2.git] / Makefile
1 .PHONY: all build gtags \
2         check \
3         doc alldoc doc_inner \
4         install uninstall \
5         version gittag \
6         clean src-clean gtags-clean \
7         test-clean doc-clean doc_inner-clean
8
9 CMD := casl2 comet2 dumpword
10
11 CAT := cat
12 CP := cp
13 ECHO := echo
14 GITTAG := git tag
15 GTAGS := gtags
16 INSTALL := install
17 SED := sed
18 WHICH := which
19
20 prefix ?= ~
21 bindir ?= $(prefix)/bin
22
23 VERSION = $(shell $(CAT) VERSION)
24 VERSIONFILES = include/package.h test/system/casl2/opt_v/0.txt test/system/comet2/opt_v/0.txt test/system/dumpword/opt_v/0.txt
25
26 all: build doc gtags
27
28 build:
29         $(MAKE) -C src all
30         $(CP) $(addprefix src/,$(CMD)) ./
31
32 gtags:
33         $(if $(strip $(shell $(WHICH) $(GTAGS))),$(GTAGS),@$(ECHO) '$(GTAGS): not found')
34
35 doc:
36         $(MAKE) -C doc base
37         $(MAKE) INSTALL
38
39 INSTALL: doc/install.txt
40         $(CP) $< $@
41
42 alldoc:
43         $(MAKE) -C doc all
44
45 doc_inner:
46         $(MAKE) -C doc_inner all
47
48 check:
49         $(MAKE) -sC test/system
50
51 install: casl2 comet2 dumpword install-info install-casl2lib
52         $(INSTALL) -d $(bindir)
53         $(INSTALL) $(CMD) $(bindir)/
54
55 uninstall: uninstall-info uninstall-casl2lib
56         $(RM) $(prefix $(bindir)/,$(CMD))
57
58 version: $(VERSIONFILES)
59         @$(ECHO) "YACASL2 Version: $(VERSION)"
60
61 $(VERSIONFILES): VERSION
62         @$(SED) -e "s/@@VERSION@@/$(VERSION)/g" $@.version >$@
63
64 gittag: VERSION
65         $(GITTAG) $(VERSION)
66
67 distclean: cmd-clean src-distclean gtags-clean version-clean clean
68
69 clean: src-clean doc-clean doc_inner-clean
70
71 cmd-clean:
72         $(RM) $(CMD)
73
74 src-clean:
75         $(MAKE) -sC src clean
76
77 src-distclean:
78         $(MAKE) -sC src distclean
79
80 gtags-clean:
81         $(RM) GPATH GRTAGS GSYMS GTAGS
82
83 doc-clean:
84         $(MAKE) -sC doc clean
85
86 doc_inner-clean:
87         $(MAKE) -sC doc_inner clean
88
89 version-clean:
90         $(RM) $(VERSIONFILES)
91
92 test-clean:
93         $(MAKE) -sC test clean