バージョンアップ
[YACASL2.git] / Makefile
1 .PHONY: all build gtags \
2         check valgrind \
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 CAT := cat
10 CP := cp
11 ECHO := /bin/echo
12 EXPR := expr
13 GIT := git
14 GREP := grep
15 GTAGS := gtags
16 INSTALL := install
17 SED := sed
18 WC := wc
19 WHICH := which
20 XARGS := xargs
21
22 prefix ?= ~
23 bindir ?= $(prefix)/bin
24 libdir ?= $(prefix)/share
25
26 VERSION := $(shell $(CAT) VERSION)
27
28 VERSIONGITREF := $(shell $(GIT) show-ref -s --tags $(VERSION))
29
30 MASTERGITREF := $(shell $(GIT) show-ref -s refs/heads/master)
31
32 VERSIONFILES = include/version.h \
33         test/system/casl2_opt/opt_v/0.txt \
34         test/system/comet2_opt/opt_v/0.txt \
35         test/system/dumpword/opt_v/0.txt
36
37 all: casl2 comet2 dumpword casl2rev INSTALL gtags
38
39 casl2: src/casl2
40         $(CP) $< $@
41
42 comet2: src/comet2
43         $(CP) $< $@
44
45 dumpword: src/dumpword
46         $(CP) $< $@
47
48 casl2rev: src/casl2rev
49         $(CP) $< $@
50
51 src/casl2 src/comet2 src/dumpword src/casl2rev:
52         $(MAKE) -C src all
53
54 gtags:
55         $(if $(strip $(shell $(WHICH) $(GTAGS))),$(GTAGS),@$(ECHO) '$(GTAGS): not found')
56
57 INSTALL: doc/install.txt
58         $(CP) $< $@
59
60 doc/install.txt:
61         $(MAKE) -C doc base
62
63 alldoc:
64         $(MAKE) -C doc all
65
66 doc_inner:
67         $(MAKE) -C doc_inner all
68
69 check:
70         $(MAKE) -sC test/system
71
72 valgrind:
73         $(MAKE) -sC test/system valgrind
74
75 install: casl2 comet2 dumpword install-info
76         $(INSTALL) -d $(bindir)
77         $(INSTALL) $(CMD) $(bindir)/
78
79 install-info:
80         $(MAKE) -C doc install-info
81
82 uninstall: uninstall-info
83         $(RM) $(prefix $(bindir)/,$(CMD))
84
85 version: $(VERSIONFILES)
86         @$(ECHO) "YACASL2 Version: $(VERSION)"
87
88 $(VERSIONFILES): VERSION
89         @$(SED) -e "s/@@VERSION@@/$(VERSION)/g" $@.version >$@
90
91 gittag:
92         if test `$(GIT) status -s | $(WC) -l` -gt 0; then $(ECHO) "Error: commit, first."; exit 1; fi; if test "$(VERSIONGITREF)" != "$(MASTERGITREF)"; then $(GIT) tag $(VERSION); fi
93
94 distclean: cmd-clean src-distclean gtags-clean version-clean clean
95
96 clean: src-clean doc-clean doc_inner-clean
97
98 cmd-clean:
99         $(RM) $(CMD)
100
101 src-clean:
102         $(MAKE) -sC src clean
103
104 src-distclean:
105         $(MAKE) -sC src distclean
106
107 gtags-clean:
108         $(RM) GPATH GRTAGS GSYMS GTAGS
109
110 doc-clean:
111         $(MAKE) -sC doc clean
112
113 doc_inner-clean:
114         $(MAKE) -sC doc_inner clean
115
116 version-clean:
117         $(RM) $(VERSIONFILES)
118
119 test-clean:
120         $(MAKE) -sC test clean