fallback = $(firstword $(shell command -v $(1)) $(2))
-git = $(shell GIT_DIR=$(firstword $(2) $(srcdir) .)/.git $(GIT) $(1))
-git_ls-tree = $(call git,ls-tree -r --name-only $(1),$(2))
-git_tag = $(call git,name-rev --tags --name-only $(call git,rev-parse $(1),$(2)),$(2))
-
GIT ?= git
+git_ls-tree = $(shell $(GIT) ls-tree -r --name-only $(1))
+git_tag = $(shell $(GIT) name-rev --tags --name-only $(shell $(GIT) rev-parse $(1)))
+
NPM ?= npm
NPMBINDIR := ./node_modules/.bin
JSTEST ?= $(NPMBINDIR)/jstest
TEST_TARGETS = $(patsubst %.js,build/stamp/%.test,$(SOURCES)) \
$(patsubst tests/%.js,build/stamp/%.test,$(TESTS))
-.PHONY: all check lint test ugly dist clean distclean
+.PHONY: all check lint test ugly dist clean distclean install
all:
@echo "Interesting targets:"
@echo " ugly - generate minified/mangled source files"
@echo " dist - generate redistributables (if git tagged)"
@echo
- @echo "(Running these may download packages from NPM.)"
+ @echo "(Running these may download packages from npm.)"
@echo
%.min.js: %.js | $(UGLIFY)
.SECONDEXPANSION:
build/dist/$(PKGNAME)-%.zip: $$(call git_ls-tree,$$*)
@mkdir -p $(@D)
- git archive --prefix=$(PKGNAME)-$*/ --output=$@ $*
+ $(GIT) archive --prefix=$(PKGNAME)-$*/ --output=$@ $* || ($(RM) $@ && exit 1)
.SECONDEXPANSION:
build/dist/$(PKGNAME)-%.tar.gz: $$(call git_ls-tree,$$*)
@mkdir -p $(@D)
- git archive --prefix=$(PKGNAME)-$*/ --output=$@ $*
+ $(GIT) archive --prefix=$(PKGNAME)-$*/ --output=$@ $* || ($(RM) $@ && exit 1)
dist: check $(addprefix build/dist/$(PKGNAME)-$(call git_tag,HEAD),.zip .tar.gz)
distclean: clean
$(RM) -r node_modules
+install: check
+ $(NPM) install -g .
+
$(JSTEST):
$(NPM) install jstest