88bb32e59cc175210375a263f89d9cdfa7d5d6f9
[mes.git] / make / install.make
1 COMMIT:=$(shell test -d .git && (git show 2>/dev/null | head -1 | cut -d' ' -f 2) || cat .tarball-version)
2 TARBALL_DIR:=$(PACKAGE)-$(VERSION)
3 TARBALL:=$(OUT)/$(TARBALL_DIR).tar.gz
4
5 OPT_CLEAN:=$(OPT_CLEAN) $(TARBALL) .tarball-version
6
7 GIT_ARCHIVE_HEAD:=git archive HEAD --
8 GIT_LS_FILES:=git ls-files
9 ifeq ($(wildcard .git),)
10 GIT_ARCHIVE_HEAD:=tar -cf-
11 GIT_LS_FILES:=find
12 endif
13
14 .tarball-version:
15         echo $(COMMIT) > $@
16
17 dist: $(TARBALL)
18
19 tree-clean-p:
20         test ! -d .git || git diff --exit-code > /dev/null
21         test ! -d .git || git diff --cached --exit-code > /dev/null
22         @echo commit:$(COMMIT)
23
24 $(TARBALL): tree-clean-p .tarball-version ChangeLog
25         mkdir -p $(OUT)
26         ($(GIT_LS_FILES) --exclude=$(OUT);\
27                 echo $^ | tr ' ' '\n' | grep -Ev 'tree-clean-p')\
28                 | tar --transform=s,^,$(TARBALL_DIR)/,S -T- -czf $@
29
30 ChangeLog: tree-clean-p
31         build-aux/gitlog-to-changelog > $@
32
33 install:
34         mkdir -p  $(DESTDIR)$(PREFIX)/bin
35         install mes $(DESTDIR)$(PREFIX)/bin/mes
36         install scripts/elf.mes $(DESTDIR)$(PREFIX)/bin/elf.mes
37         install scripts/mescc.mes $(DESTDIR)$(PREFIX)/bin/mescc.mes
38         install scripts/repl.mes $(DESTDIR)$(PREFIX)/bin/repl.mes
39         install scripts/paren.mes $(DESTDIR)$(PREFIX)/bin/paren.mes
40         mkdir -p $(DESTDIR)$(PREFIX)/share/mes
41         $(GIT_ARCHIVE_HEAD) module\
42                 | tar -C $(DESTDIR)$(PREFIX)/share/mes -xf-
43
44 release: tree-clean-p check dist
45         git tag v$(VERSION)
46         git push --tags origin master
47         git push origin master