53cc5dd545024d4b59a3fad14148bc40a025a6f6
[jackhill/mal.git] / wasm / Makefile
1 MODE ?= $(strip \
2 $(if $(filter wasmtime,$(wasm_MODE)),\
3 wasi,\
4 $(if $(filter node js wace_fooboot warpy,$(wasm_MODE)),\
5 direct,\
6 libc)))
7
8 WASM_AS ?= wasm-as
9 WAMP ?= node_modules/.bin/wamp
10
11 STEP0_DEPS = $(WAMP) platform_$(MODE).wam string.wam printf.wam
12 STEP1_DEPS = $(STEP0_DEPS) types.wam mem.wam debug.wam reader.wam printer.wam
13 STEP3_DEPS = $(STEP1_DEPS) env.wam
14 STEP4_DEPS = $(STEP3_DEPS) core.wam
15
16 STEPS = step0_repl step1_read_print step2_eval step3_env \
17 step4_if_fn_do step5_tco step6_file step7_quote \
18 step8_macros step9_try stepA_mal
19
20 all: $(foreach s,$(STEPS),$(s).wasm)
21
22 node_modules/.bin/wamp:
23 npm install
24
25 %.wasm: %.wam
26 $(WAMP) $(filter %.wam,$^) > $*.wat
27 $(WASM_AS) $*.wat -o $@
28
29 step0_repl.wasm: $(STEP0_DEPS)
30 step1_read_print.wasm step2_eval.wasm: $(STEP1_DEPS)
31 step3_env.wasm: $(STEP3_DEPS)
32 step4_if_fn_do.wasm step5_tco.wasm step6_file.wasm: $(STEP4_DEPS)
33 step7_quote.wasm step8_macros.wasm step9_try.wasm stepA_mal.wasm: $(STEP4_DEPS)
34
35 .PHONY: clean
36
37 clean:
38 rm -f *.wat *.wasm