ブレークポイントを扱うハッシュ関数のテストを追加
[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 %: src/%
40         $(CP) $< $@
41
42 casl2 comet2 dumpword casl2rev: build
43
44 build:
45         $(MAKE) -C src all
46
47 gtags:
48         $(if $(strip $(shell $(WHICH) $(GTAGS))),$(GTAGS),@$(ECHO) '$(GTAGS): not found')
49
50 INSTALL: doc/install.txt
51         $(CP) $< $@
52
53 doc/install.txt:
54         $(MAKE) -C doc base
55
56 alldoc:
57         $(MAKE) -C doc all
58
59 doc_inner:
60         $(MAKE) -C doc_inner all
61
62 check:
63         $(MAKE) -sC test/system
64
65 valgrind:
66         $(MAKE) -sC test/system valgrind
67
68 install: casl2 comet2 dumpword install-info
69         $(INSTALL) -d $(bindir)
70         $(INSTALL) $(CMD) $(bindir)/
71
72 install-info:
73         $(MAKE) -C doc install-info
74
75 uninstall: uninstall-info
76         $(RM) $(prefix $(bindir)/,$(CMD))
77
78 version: $(VERSIONFILES)
79         @$(ECHO) "YACASL2 Version: $(VERSION)"
80
81 $(VERSIONFILES): VERSION
82         @$(SED) -e "s/@@VERSION@@/$(VERSION)/g" $@.version >$@
83
84 gittag:
85         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
86
87 distclean: cmd-clean src-distclean gtags-clean version-clean clean
88
89 clean: src-clean doc-clean doc_inner-clean
90
91 cmd-clean:
92         $(RM) $(CMD)
93
94 src-clean:
95         $(MAKE) -sC src clean
96
97 src-distclean:
98         $(MAKE) -sC src distclean
99
100 gtags-clean:
101         $(RM) GPATH GRTAGS GSYMS GTAGS
102
103 doc-clean:
104         $(MAKE) -sC doc clean
105
106 doc_inner-clean:
107         $(MAKE) -sC doc_inner clean
108
109 version-clean:
110         $(RM) $(VERSIONFILES)
111
112 test-clean:
113         $(MAKE) -sC test clean