READMEのCASL II仕様書へのリンクを修正
[YACASL2.git] / Makefile
1 .PHONY: all srcall gtags \
2         check valgrind \
3         doc alldoc doc_inner \
4         install uninstall \
5         version gittag copyright \
6         clean src-clean gtags-clean \
7         test-clean doc-clean doc_inner-clean
8
9 CAT := cat
10 CP := cp -v
11 DATE := date
12 ECHO := /bin/echo
13 EXPR := expr
14 GIT := git
15 GREP := grep
16 GTAGS := gtags
17 INSTALL := install
18 SED := sed
19 SEDI := $(SED) -i
20 WC := wc
21 WHICH := which
22 XARGS := xargs
23
24 prefix ?= ~
25 bindir ?= $(prefix)/bin
26 libdir ?= $(prefix)/share
27
28 VERSION := $(shell $(CAT) VERSION)
29
30 VERSIONGITREF := $(shell $(GIT) show-ref -s --tags $(VERSION))
31
32 MASTERGITREF := $(shell $(GIT) show-ref -s refs/heads/master)
33
34 VERSIONFILES := include/version.h \
35         test/system/casl2_opt/opt_v/0.txt \
36         test/system/comet2_opt/opt_v/0.txt \
37         test/system/dumpword/opt_v/0.txt
38
39 CMDFILES := casl2 comet2 dumpword casl2rev comet2monitor
40
41 YEAR := $(shell $(DATE) '+%Y')
42
43 all: copyright INSTALL build gtags
44
45 build: version
46         $(MAKE) -C src all
47         @(for f in $(CMDFILES); do if test ! -e $$f -o src/$$f -nt $$f; then $(CP) src/$$f $$f; fi; done)
48
49 gtags:
50         $(if $(strip $(shell $(WHICH) $(GTAGS))),$(GTAGS),@$(ECHO) '$(GTAGS): not found')
51
52 INSTALL: doc/install.txt
53         $(CP) $< $@
54
55 doc/install.txt:
56         $(MAKE) -C doc base
57
58 alldoc:
59         $(MAKE) -C doc all
60
61 doc_inner:
62         $(MAKE) -C doc_inner all
63
64 check:
65         $(MAKE) -sC test/system
66
67 smoke:
68         $(MAKE) -sC test/system smoke
69
70 smoke-valgrind:
71         $(MAKE) -sC test/system smoke-valgrind
72
73 valgrind:
74         $(MAKE) -sC test/system valgrind
75
76 install: $(CMDFILES) install-info
77         $(INSTALL) -d $(bindir)
78         $(INSTALL) $(CMDFILES) $(bindir)/
79
80 install-info:
81         $(MAKE) -C doc install-info
82
83 uninstall: uninstall-info
84         $(RM) $(prefix $(bindir)/,$(CMDFILES))
85
86 version: $(VERSIONFILES)
87         @$(ECHO) "YACASL2 Version: $(VERSION)"
88
89 $(VERSIONFILES): VERSION
90         @$(SED) -e "s/@@VERSION@@/$(VERSION)/g" $@.version >$@
91
92 gittag:
93         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
94
95 copyright:
96         $(SEDI) 's/Copyright (c) 2010-20[0-9][0-9]/Copyright (c) 2010-$(YEAR)/g' LICENSE README
97         $(SEDI) 's/Copyright @copyright{} 2010-20[0-9][0-9]/Copyright @copyright{} 2010-$(YEAR)/g' doc/*.texi
98
99 distclean: cmd-clean src-distclean gtags-clean version-clean clean
100
101 clean: src-clean doc-clean doc_inner-clean
102
103 cmd-clean:
104         $(RM) $(CMDFILES)
105
106 src-clean:
107         $(MAKE) -sC src clean
108
109 src-distclean:
110         $(MAKE) -sC src distclean
111
112 gtags-clean:
113         $(RM) GPATH GRTAGS GSYMS GTAGS
114
115 doc-clean:
116         $(MAKE) -sC doc clean
117
118 doc_inner-clean:
119         $(MAKE) -sC doc_inner clean
120
121 version-clean:
122         $(RM) $(VERSIONFILES)
123
124 test-clean:
125         $(MAKE) -sC test clean