ソース中のコメントを修正
[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 := /bin/echo
14 EXPR := expr
15 GIT := git
16 GREP := grep
17 GTAGS := gtags
18 INSTALL := install
19 SED := sed
20 WC := wc
21 WHICH := which
22 XARGS := xargs
23
24 prefix ?= ~
25 bindir ?= $(prefix)/bin
26
27 VERSION := $(shell $(CAT) VERSION)
28
29 VERSIONGITREF := $(shell $(GIT) show-ref -s --tags $(VERSION))
30
31 MASTERGITREF := $(shell $(GIT) show-ref -s refs/heads/master)
32
33 VERSIONFILES = include/package.h \
34         test/system/casl2/opt_v/0.txt \
35         test/system/comet2/opt_v/0.txt \
36         test/system/dumpword/opt_v/0.txt
37
38 all: build doc gtags
39
40 build:
41         $(MAKE) -C src all
42         $(CP) $(addprefix src/,$(CMD)) ./
43
44 gtags:
45         $(if $(strip $(shell $(WHICH) $(GTAGS))),$(GTAGS),@$(ECHO) '$(GTAGS): not found')
46
47 doc:
48         $(MAKE) -C doc base
49         $(MAKE) INSTALL
50
51 INSTALL: doc/install.txt
52         $(CP) $< $@
53
54 alldoc:
55         $(MAKE) -C doc all
56
57 doc_inner:
58         $(MAKE) -C doc_inner all
59
60 check:
61         $(MAKE) -sC test/system
62
63 install: casl2 comet2 dumpword install-info install-casl2lib
64         $(INSTALL) -d $(bindir)
65         $(INSTALL) $(CMD) $(bindir)/
66
67 uninstall: uninstall-info uninstall-casl2lib
68         $(RM) $(prefix $(bindir)/,$(CMD))
69
70 version: $(VERSIONFILES)
71         @$(ECHO) "YACASL2 Version: $(VERSION)"
72
73 $(VERSIONFILES): VERSION
74         @$(SED) -e "s/@@VERSION@@/$(VERSION)/g" $@.version >$@
75
76 gittag:
77         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
78
79 distclean: cmd-clean src-distclean gtags-clean version-clean clean
80
81 clean: src-clean doc-clean doc_inner-clean
82
83 cmd-clean:
84         $(RM) $(CMD)
85
86 src-clean:
87         $(MAKE) -sC src clean
88
89 src-distclean:
90         $(MAKE) -sC src distclean
91
92 gtags-clean:
93         $(RM) GPATH GRTAGS GSYMS GTAGS
94
95 doc-clean:
96         $(MAKE) -sC doc clean
97
98 doc_inner-clean:
99         $(MAKE) -sC doc_inner clean
100
101 version-clean:
102         $(RM) $(VERSIONFILES)
103
104 test-clean:
105         $(MAKE) -sC test clean