Step 4 of Make-a-Lisp for Erlang
[jackhill/mal.git] / erlang / Makefile
1 #####################
2
3 SOURCES_BASE = src/step0_repl.erl src/step1_read_print.erl src/step2_eval.erl src/step3_env.erl \
4 src/step4_if_fn_do.erl
5 SOURCES_LISP = src/core.erl src/env.erl src/printer.erl src/reader.erl src/types.erl
6 SOURCES = $(SOURCES_BASE) $(word $(words $(SOURCES_LISP)),${SOURCES_LISP})
7
8 #####################
9
10 SRCS = step0_repl.erl step1_read_print.erl step2_eval.erl step3_env.erl step4_if_fn_do.erl
11 BINS = $(SRCS:%.erl=%)
12
13 #####################
14
15 .PHONY: all mal clean stats stats-lisp
16
17 all: $(BINS) mal
18
19 mal: $(word $(words $(BINS)),$(BINS))
20 cp $< $@
21
22 define dep_template
23 .PHONY: $(1)
24 $(1): $(SOURCES_BASE) src/$(1).erl
25 MAL_STEP=$(1) rebar compile escriptize
26 endef
27
28 $(foreach b,$(BINS),$(eval $(call dep_template,$(b))))
29
30 clean:
31 rebar clean
32
33 stats: $(SOURCES)
34 @wc $^
35 stats-lisp: $(SOURCES_LISP)
36 @wc $^