make gittagで、VERSIONファイル記載のバージョンがタグとして未登録の場合だけgit tagを実行するよう仕様変更
[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 GREP := grep
16 GTAGS := gtags
17 INSTALL := install
18 SED := sed
19 WHICH := which
20
21 prefix ?= ~
22 bindir ?= $(prefix)/bin
23
24 VERSION = $(shell $(CAT) VERSION)
25 VERSIONFILES = include/package.h \
26         test/system/casl2/opt_v/0.txt \
27         test/system/comet2/opt_v/0.txt \
28         test/system/dumpword/opt_v/0.txt
29
30 all: build doc gtags
31
32 build:
33         $(MAKE) -C src all
34         $(CP) $(addprefix src/,$(CMD)) ./
35
36 gtags:
37         $(if $(strip $(shell $(WHICH) $(GTAGS))),$(GTAGS),@$(ECHO) '$(GTAGS): not found')
38
39 doc:
40         $(MAKE) -C doc base
41         $(MAKE) INSTALL
42
43 INSTALL: doc/install.txt
44         $(CP) $< $@
45
46 alldoc:
47         $(MAKE) -C doc all
48
49 doc_inner:
50         $(MAKE) -C doc_inner all
51
52 check:
53         $(MAKE) -sC test/system
54
55 install: casl2 comet2 dumpword install-info install-casl2lib
56         $(INSTALL) -d $(bindir)
57         $(INSTALL) $(CMD) $(bindir)/
58
59 uninstall: uninstall-info uninstall-casl2lib
60         $(RM) $(prefix $(bindir)/,$(CMD))
61
62 version: $(VERSIONFILES)
63         @$(ECHO) "YACASL2 Version: $(VERSION)"
64
65 $(VERSIONFILES): VERSION
66         @$(SED) -e "s/@@VERSION@@/$(VERSION)/g" $@.version >$@
67
68 gittag: VERSION
69         $(GITTAG) | $(GREP) $(VERSION) || $(GITTAG) $(VERSION)
70
71 distclean: cmd-clean src-distclean gtags-clean version-clean clean
72
73 clean: src-clean doc-clean doc_inner-clean
74
75 cmd-clean:
76         $(RM) $(CMD)
77
78 src-clean:
79         $(MAKE) -sC src clean
80
81 src-distclean:
82         $(MAKE) -sC src distclean
83
84 gtags-clean:
85         $(RM) GPATH GRTAGS GSYMS GTAGS
86
87 doc-clean:
88         $(MAKE) -sC doc clean
89
90 doc_inner-clean:
91         $(MAKE) -sC doc_inner clean
92
93 version-clean:
94         $(RM) $(VERSIONFILES)
95
96 test-clean:
97         $(MAKE) -sC test clean