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