12 COMMIT:=$(shell test -d .git && (git show 2>/dev/null | head -1 | cut -d' ' -f 2) || cat .tarball-version)
13 GUIX-HASH:=out/guix-hash
14 TARBALL_DIR:=$(PACKAGE)-$(VERSION)
15 TARBALL:=$(OUT)/$(TARBALL_DIR).tar.gz
17 OPT_CLEAN:=$(OPT_CLEAN) $(TARBALL) .tarball-version
19 GIT_ARCHIVE_HEAD:=git archive HEAD --
20 GIT_LS_FILES:=git ls-files
21 ifeq ($(wildcard .git),)
22 GIT_ARCHIVE_HEAD:=tar -cf-
26 .tarball-version: tree-clean-p
32 test ! -d .git || git diff --exit-code > /dev/null
33 test ! -d .git || git diff --cached --exit-code > /dev/null
34 @echo commit:$(COMMIT)
36 $(TARBALL): tree-clean-p .tarball-version ChangeLog
38 ($(GIT_LS_FILES) --exclude=$(OUT);\
39 echo $^ | tr ' ' '\n' | grep -Ev 'tree-clean-p')\
40 | tar --transform=s,^,$(TARBALL_DIR)/,S -T- -czf $@
43 build-aux/gitlog-to-changelog > $@
45 install: all ChangeLog
46 mkdir -p $(DESTDIR)$(PREFIX)/bin
47 install mes $(DESTDIR)$(PREFIX)/bin/mes
48 install scripts/elf.mes $(DESTDIR)$(PREFIX)/bin/elf.mes
49 install scripts/include.mes $(DESTDIR)$(PREFIX)/bin/include.mes
50 install scripts/mescc.mes $(DESTDIR)$(PREFIX)/bin/mescc.mes
51 install scripts/repl.mes $(DESTDIR)$(PREFIX)/bin/repl.mes
52 install scripts/paren.mes $(DESTDIR)$(PREFIX)/bin/paren.mes
53 mkdir -p $(DESTDIR)$(PREFIX)/share/mes
54 $(GIT_ARCHIVE_HEAD) module\
55 | tar -C $(DESTDIR)$(PREFIX)/share/mes -xf-
56 cp module/mes/read-0.mo $(DESTDIR)$(PREFIX)/share/mes/module/mes
57 sed -i -e 's@module/@$(PREFIX)/share/mes/module/@' \
58 $(DESTDIR)$(PREFIX)/share/mes/module/mes/base-0.mes \
59 $(DESTDIR)$(PREFIX)/bin/elf.mes \
60 $(DESTDIR)$(PREFIX)/bin/mescc.mes \
61 $(DESTDIR)$(PREFIX)/bin/repl.mes \
62 $(DESTDIR)$(PREFIX)/bin/paren.mes
63 mkdir -p $(DESTDIR)$(PREFIX)/share/doc/mes
64 $(GIT_ARCHIVE_HEAD) $(READMES) \
65 | tar -C $(DESTDIR)$(PREFIX)/share/doc/mes -xf-
66 $(GIT_ARCHIVE_HEAD) doc \
67 | tar -C $(DESTDIR)$(PREFIX)/share/doc/mes --strip=1 -xf-
68 cp ChangeLog $(DESTDIR)$(PREFIX)/share/doc/mes
70 release: tree-clean-p check dist
72 git push --tags origin master
73 git push origin master
75 $(GUIX-HASH): tree-clean-p
76 rm -rf out/mes && mkdir -p out && git clone . out/mes && guix hash -rx out/mes > $@
78 update-hash: $(GUIX-HASH) .tarball-version
82 -e 's,(base32 "[^"]*"),(base32 "$(shell cat $<)"),'\
83 -e 's,(commit "[^"]*"),(commit "$(shell cat .tarball-version)"),'\
84 -e 's,(version "[^"]*"),(version "$(VERSION).$(shell cut -b1-8 .tarball-version)"),'\
86 ! git diff --exit-code
87 git commit -m 'guix hash: $(shell cat $<)' guix.scm