summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMaxime Coste <mawww@kakoune.org>2018-04-09 12:56:17 +1000
committerMaxime Coste <mawww@kakoune.org>2018-04-09 16:57:15 +1000
commitfc86acd9f03db5ef8cd1eac1e9a34077ac643824 (patch)
tree22661b64e9abbebabebdaf96fd6e0fd1a60ece91 /src
parent6686d5513e78ee8b666eba6249f8a3cfbeb2b98c (diff)
Makefile: add a dist target to generate a tarball
Diffstat (limited to 'src')
-rw-r--r--src/Makefile27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/Makefile b/src/Makefile
index 9d66bf5f..ef7406c6 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -20,6 +20,8 @@ else
endif
endif
+version ?= $(shell if [ -f .version ]; then cat .version; elif [ -d ../.git ]; then git rev-parse --short HEAD; else echo "unknown"; fi )
+
sources := $(sort $(wildcard *.cc))
objects := $(addprefix ., $(sources:.cc=$(suffix).o))
deps := $(addprefix ., $(sources:.cc=$(suffix).d))
@@ -75,14 +77,21 @@ all : kak
kak : kak$(suffix)
ln -sf $< $@
-kak$(suffix) : $(objects)
- $(CXX) $(LDFLAGS) $(CXXFLAGS) $(objects) $(LIBS) -o $@
+kak$(suffix) : $(objects) .version.o
+ $(CXX) $(LDFLAGS) $(CXXFLAGS) $(objects) .version.o $(LIBS) -o $@
-include $(deps)
.%$(suffix).o: %.cc
$(CXX) $(CPPFLAGS) $(CXXFLAGS) -MD -MP -MF $(addprefix ., $(<:.cc=$(suffix).d)) -c -o $@ $<
+.version.o: .version.cc
+ $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c -o $@ $<
+
+.version.cc: FORCE
+ @printf "%s" 'namespace Kakoune { const char* version = "$(version)"; }' > .version.cc.tmp
+ @if cmp -s .version.cc.tmp .version.cc; then rm .version.cc.tmp; else mv .version.cc.tmp .version.cc; fi
+
# Generate the man page
ifeq ($(gzip_man),yes)
../doc/kak.1.gz: ../doc/kak.1.asciidoc
@@ -106,6 +115,16 @@ tags:
clean:
rm -f .*.o .*.d
+dist:
+ @if ! [ -d ../.git ]; then echo "make dist can only run from a git repo"; false; fi
+ @if git status -s | grep -qEv '^\?\?'; then echo "working tree is not clean"; false; fi
+ cd ../; \
+ git archive --format=tar --prefix=kakoune-$(version)/ HEAD -o kakoune-$(version).tar; \
+ echo "$(version)" > src/.version; \
+ tar --transform "s,^,kakoune-$(version)/," -rf kakoune-$(version).tar src/.version; \
+ rm src/.version; \
+ bzip2 kakoune-$(version).tar;
+
distclean: clean
rm -f kak kak$(suffix)
find ../doc -type f \( -name \*\\.gz -o -name \*\\.1 \) -exec rm -f '{}' +
@@ -146,5 +165,5 @@ uninstall:
$(mandir)/kak.1.gz \
$(mandir)/kak.1
-.PHONY: check TAGS clean distclean installdirs install install-strip uninstall
-.PHONY: tags test man kak
+.PHONY: check TAGS clean dist distclean installdirs install install-strip uninstall
+.PHONY: tags test man kak FORCE