GNUmakefile: "release" steps
[clogger.git] / GNUmakefile
blob913f821f704cc24057baa09d3c1d669554154e72
1 all:: test
2 ruby = ruby
4 -include local.mk
6 ifeq ($(DLEXT),) # "so" for Linux
7 DLEXT := $(shell $(ruby) -rrbconfig -e 'puts Config::CONFIG["DLEXT"]')
8 endif
10 ifeq ($(RUBY_VERSION),)
11 RUBY_VERSION := $(shell $(ruby) -e 'puts RUBY_VERSION')
12 endif
14 ext/clogger_ext/Makefile: ext/clogger_ext/clogger.c ext/clogger_ext/extconf.rb
15 cd ext/clogger_ext && $(ruby) extconf.rb
17 ext/clogger_ext/clogger.$(DLEXT): ext/clogger_ext/Makefile
18 $(MAKE) -C ext/clogger_ext
20 clean:
21 -$(MAKE) -C ext/clogger_ext clean
22 $(RM) ext/clogger_ext/Makefile lib/clogger_ext.$(DLEXT)
24 test-ext: ext/clogger_ext/clogger.$(DLEXT)
25 $(ruby) -Iext/clogger_ext:lib test/test_clogger.rb
27 test-pure:
28 $(ruby) -Ilib test/test_clogger.rb
30 test: test-ext test-pure
32 Manifest.txt:
33 git ls-files > $@+
34 cmp $@+ $@ || mv $@+ $@
35 $(RM) $@+
37 VERSION := $(shell git describe 2>/dev/null | sed 's/^v//')
39 ifneq ($(VERSION),)
40 v := /^v$(VERSION)$$/
41 vPREV := $(shell git tag -l 2>/dev/null | sed -n -e '$(v)!h' -e '$(v){x;p;q}')
42 release_notes := release_notes-$(VERSION).txt
43 release_changes := release_changes-$(VERSION).txt
44 $(release_changes): verify
45 git diff --stat $(vPREV) v$(VERSION) > $@+
46 echo >> $@+
47 git log $(vPREV) v$(VERSION) >> $@+
48 $(VISUAL) $@+ && test -s $@+ && mv $@+ $@
49 $(release_notes): verify package
50 gem spec pkg/clogger-$(VERSION).gem description | sed -ne '/\w/p' > $@+
51 git cat-file tag v$(VERSION) | awk 'p>1{print $$0}/^$$/{++p}' >> $@+
52 $(VISUAL) $@+ && test -s $@+ && mv $@+ $@
53 verify:
54 @test -n "$(VERSION)" || { echo >&2 VERSION= not defined; exit 1; }
55 git rev-parse --verify refs/tags/v$(VERSION)^{}
56 @test -n "$(VISUAL)" || { echo >&2 VISUAL= not defined; exit 1; }
58 package: verify
59 git diff-index --quiet HEAD^0
60 test `git rev-parse --verify HEAD^0` = \
61 `git rev-parse --verify refs/tags/v$(VERSION)^{}`
62 $(RM) -r pkg
63 unset CLOGGER_EXT; rake package VERSION=$(VERSION)
64 CLOGGER_EXT=1 rake package VERSION=$(VERSION)
66 # not using Hoe's release system since we release 2 gems but only one tgz
67 release: package Manifest.txt $(release_notes) $(release_changes)
68 rubyforge add_release -f -n $(release_notes) -c $(release_changes) \
69 clogger clogger $(VERSION) pkg/clogger-$(VERSION).gem
70 rubyforge add_file \
71 clogger clogger $(VERSION) pkg/clogger-$(VERSION).tgz
72 rubyforge add_release -f -n $(release_notes) -c $(release_changes) \
73 clogger clogger_ext $(VERSION) pkg/clogger_ext-$(VERSION).gem
74 endif
76 .PHONY: test doc Manifest.txt release