Add documentation.
[string-lerp.git] / Makefile
1 #!/usr/bin/make -f
2
3 JSTEST ?= node_modules/.bin/jstest
4 JSHINT ?= node_modules/.bin/jshint
5 UGLIFY ?= node_modules/.bin/uglifyjs
6 SOURCES = string-lerp.js
7 UGLIFIED = $(SOURCES:.js=.min.js)
8
9 TESTS = $(wildcard tests/*.js);
10 LINT_TARGETS = $(addprefix build/stamp/,$(addsuffix .lint,$(SOURCES)))
11 TEST_TARGETS = $(addprefix build/stamp/,$(addsuffix .test,$(SOURCES)))
12
13 .PHONY: all check lint test min
14
15 all:
16 @echo "Interesting targets:"
17 @echo " lint - validate source (with jshint)"
18 @echo " test - run tests (with jstest)"
19 @echo " ugly - generate minified/mangled source files"
20 @echo
21 @echo "(Running these will download packages from NPM.)"
22 @echo
23
24 %.min.js: %.js $(UGLIFY)
25 $(UGLIFY) -m < $< > $@
26
27 build:
28 mkdir -p build/stamp build/dist
29
30 build/stamp/%.lint: % build
31 @mkdir -p $(@D)
32 $(JSHINT) $<
33 @touch $@
34
35 build/stamp/%.test: tests/% % build
36 @mkdir -p $(@D)
37 @echo $(JSTEST) $<
38 @$(JSTEST) $< > $@ || (cat $@ && rm -f $@ && exit 1)
39 @touch $@
40
41 ugly: $(UGLIFIED)
42
43 check: lint test
44
45 lint: $(JSHINT) $(LINT_TARGETS)
46
47 test: $(JSTEST) $(TEST_TARGETS)
48
49 clean:
50 rm -rf build
51 rm -f $(UGLIFIED)
52
53 distclean: clean
54 rm -rf node_modules
55
56 $(JSTEST):
57 npm install jstest
58
59 $(JSHINT):
60 npm install jshint
61
62 $(UGLIFY):
63 npm install uglify-js