#!/usr/bin/make -f JSTEST ?= node_modules/.bin/jstest JSHINT ?= node_modules/.bin/jshint UGLIFY ?= node_modules/.bin/uglifyjs SOURCES = string-lerp.js UGLIFIED = $(SOURCES:.js=.min.js) TESTS = $(wildcard tests/*.js); LINT_TARGETS = $(addprefix build/stamp/,$(addsuffix .lint,$(SOURCES))) TEST_TARGETS = $(addprefix build/stamp/,$(addsuffix .test,$(SOURCES))) .PHONY: all check lint test min clean distclean all: @echo "Interesting targets:" @echo " lint - validate source (with jshint)" @echo " test - run tests (with jstest)" @echo " ugly - generate minified/mangled source files" @echo @echo "(Running these will download packages from NPM.)" @echo %.min.js: %.js $(UGLIFY) $(UGLIFY) --comments -m < $< > $@ build: mkdir -p build/stamp build/dist build/stamp/%.lint: % build @mkdir -p $(@D) $(JSHINT) $< @touch $@ build/stamp/%.test: tests/% % build @mkdir -p $(@D) @echo $(JSTEST) $< @$(JSTEST) $< > $@ || (cat $@ && rm -f $@ && exit 1) @touch $@ ugly: $(UGLIFIED) check: lint test lint: $(JSHINT) $(LINT_TARGETS) test: $(JSTEST) $(TEST_TARGETS) clean: rm -rf build rm -f $(UGLIFIED) distclean: clean rm -rf node_modules $(JSTEST): npm install jstest $(JSHINT): npm install jshint $(UGLIFY): npm install uglify-js