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/HEAD),)
22 GIT_ARCHIVE_HEAD:=tar -cf-
27 DATADIR:=$(PREFIX)/share/mes
28 DOCDIR:=$(DATADIR)/doc/mes
30 DATADIR:=$(PREFIX)/share
31 DOCDIR:=$(DATADIR)/doc
34 MODULEDIR:=$(PREFIX)/share/guile/site/$(GUILE_EFFECTIVE_VERSION)
35 GODIR:=$(LIBDIR)/guile/$(GUILE_EFFECTIVE_VERSION)/site-ccache
37 .tarball-version: tree-clean-p
43 test ! -d .git || git diff --exit-code > /dev/null
44 test ! -d .git || git diff --cached --exit-code > /dev/null
45 @echo commit:$(COMMIT)
47 $(TARBALL): tree-clean-p .tarball-version ChangeLog
49 ($(GIT_LS_FILES) --exclude=$(OUT);\
50 echo $^ | tr ' ' '\n' | grep -Ev 'tree-clean-p')\
51 | tar --transform=s,^,$(TARBALL_DIR)/,S -T- -czf $@
54 build-aux/gitlog-to-changelog > $@
57 #FIXME: INSTALL like CLEAN
60 install: $(CLEAN) ChangeLog
61 mkdir -p $(DESTDIR)$(PREFIX)/bin
62 install $(OUT)/mes $(DESTDIR)$(PREFIX)/bin/mes
63 install mes.mes $(DESTDIR)$(PREFIX)/bin/mes.mes
64 install scripts/mescc.mes $(DESTDIR)$(PREFIX)/bin/mescc.mes
65 install scripts/repl.mes $(DESTDIR)$(PREFIX)/bin/repl.mes
66 install guile/mescc.scm $(DESTDIR)$(PREFIX)/bin/mescc.scm
67 mkdir -p $(DESTDIR)$(DATADIR)
68 $(GIT_ARCHIVE_HEAD) module\
69 | tar -C $(DESTDIR)$(DATADIR) -xf-
70 $(GIT_ARCHIVE_HEAD) guile\
71 | tar -C $(DESTDIR)$(DATADIR) -xf-
73 -e 's,module/,$(DATADIR)/module/,' \
74 -e 's,@DATADIR@,$(DATADIR)/,g' \
75 -e 's,@DOCDIR@,$(DOCDIR)/,g' \
76 -e 's,@GODIR@,$(GODIR)/,g' \
77 -e 's,@MODULEDIR@,$(MODULEDIR)/,g' \
78 -e 's,@PREFIX@,$(PREFIX)/,g' \
79 -e 's,@VERSION@,$(VERSION),g' \
80 $(DESTDIR)$(DATADIR)/module/mes/base-0.mes \
81 $(DESTDIR)$(DATADIR)/module/language/c99/compiler.mes \
82 $(DESTDIR)$(PREFIX)/bin/mescc.mes \
83 $(DESTDIR)$(PREFIX)/bin/mescc.scm \
84 $(DESTDIR)$(PREFIX)/bin/repl.mes
85 cp module/mes/read-0.mo $(DESTDIR)$(DATADIR)/module/mes
86 cp module/mes/read-0-32.mo $(DESTDIR)$(DATADIR)/module/mes
87 mkdir -p $(DESTDIR)$(DOCDIR)
88 $(GIT_ARCHIVE_HEAD) $(READMES) \
89 | tar -C $(DESTDIR)$(DOCDIR) -xf-
90 $(GIT_ARCHIVE_HEAD) doc \
91 | tar -C $(DESTDIR)$(DOCDIR) --strip=1 -xf-
92 cp ChangeLog $(DESTDIR)$(DOCDIR)
93 mkdir -p $(DESTDIR)$(MODULEDIR)
94 tar -cf- -C module $(INSTALL_SCM_FILES:module/%=%)\
95 | tar -C $(DESTDIR)$(MODULEDIR) -xf-
96 mkdir -p $(DESTDIR)$(GODIR)
97 tar -cf- -C module $(INSTALL_GO_FILES:module/%=%)\
98 | tar -C $(DESTDIR)$(GODIR) -xf-
100 release: tree-clean-p check dist
102 git push --tags origin master
103 git push origin master
105 $(GUIX-HASH): tree-clean-p
106 rm -rf out/mes && mkdir -p out && git clone . out/mes && guix hash -rx out/mes > $@
108 update-hash: $(GUIX-HASH) .tarball-version
112 -e 's,(base32 "[^"]*"),(base32 "$(shell cat $<)"),'\
113 -e 's,(commit "[^"]*"),(commit "$(shell cat .tarball-version)"),'\
114 -e 's,(version "[^g][^"]*"),(version "$(VERSION).$(shell cut -b1-8 .tarball-version)"),'\
116 ! git diff --exit-code
117 git commit -m 'guix hash: $(shell cat $<)' guix.scm