diff options
Diffstat (limited to 'GNUmakefile')
-rw-r--r-- | GNUmakefile | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/GNUmakefile b/GNUmakefile new file mode 100644 index 0000000..f0f8cdf --- /dev/null +++ b/GNUmakefile @@ -0,0 +1,90 @@ +# Copyright (C) 2013, Eric Wong <normalperson@yhbt.net> and all contributors +# License: GPLv3 or later (https://www.gnu.org/licenses/gpl-3.0.txt) +all:: +pkg = yahns +RUBY = ruby +GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE + @./GIT-VERSION-GEN +-include GIT-VERSION-FILE +lib := lib + +all:: test +test_units := $(wildcard test/test_*.rb) +test: $(test_units) +$(test_units): + $(RUBY) -w -I $(lib) $@ -v + +test-mt: export N = $(shell nproc 2>/dev/null || echo 4) +test-mt: + $(RUBY) -w -I $(lib) $(addprefix -r./,$(test_units)) -eexit -- + +check-warnings: + @(for i in $$(git ls-files '*.rb'| grep -v '^setup\.rb$$'); \ + do $(RUBY) -d -W2 -c $$i; done) | grep -v '^Syntax OK$$' || : + +check: test +coverage: export COVERAGE=1 +coverage: + > coverage.dump + $(MAKE) check + $(RUBY) ./test/covshow.rb + +coverage-mt: export COVERAGE=1 +coverage-mt: + > coverage.dump + $(MAKE) test-mt + $(RUBY) ./test/covshow.rb + +pkggem := pkg/$(pkg)-$(VERSION).gem +pkgtgz := pkg/$(pkg)-$(VERSION).tar.gz + +fix-perms: + git ls-tree -r HEAD | awk '/^100644 / {print $$NF}' | xargs chmod 644 + git ls-tree -r HEAD | awk '/^100755 / {print $$NF}' | xargs chmod 755 + +gem: $(pkggem) + +install-gem: $(pkggem) + gem install $(CURDIR)/$< + +$(pkggem): .gem-manifest + VERSION=$(VERSION) gem build $(pkg).gemspec + mkdir -p pkg + mv $(@F) $@ + +pkg_extra := GIT-VERSION-FILE lib/yahns/version.rb NEWS +NEWS: + rake -s $@ + +gem-man: + $(MAKE) -C Documentation/ gem-man +tgz-man: + $(MAKE) -C Documentation/ install-man mandir=$(CURDIR)/man +.PHONY: tgz-man gem-man + +.gem-manifest: .manifest + # (ls man/*.?; cat .manifest) | LC_ALL=C sort > $@+ + LC_ALL=C sort < .manifest > $@+ + cmp $@+ $@ || mv $@+ $@; rm -f $@+ +.tgz-manifest: .manifest + LC_ALL=C sort < .manifest > $@+ + cmp $@+ $@ || mv $@+ $@; rm -f $@+ +.manifest: NEWS fix-perms + rm -rf man + (git ls-files; \ + for i in $(pkg_extra); do echo $$i; done) | \ + LC_ALL=C sort > $@+ + cmp $@+ $@ || mv $@+ $@; rm -f $@+ +$(pkgtgz): distdir = pkg/$(pkg)-$(VERSION) +$(pkgtgz): .tgz-manifest + @test -n "$(distdir)" + $(RM) -r $(distdir) + mkdir -p $(distdir) + tar cf - $$(cat .tgz-manifest) | (cd $(distdir) && tar xf -) + cd pkg && tar cf - $(pkg)-$(VERSION) | gzip -9 > $(@F)+ + mv $@+ $@ + +package: $(pkgtgz) $(pkggem) + +.PHONY: all .FORCE-GIT-VERSION-FILE test $(test_units) NEWS +.PHONY: check-warnings fix-perms |