fsharp: step5: Added tail call optimization.
[jackhill/mal.git] / fsharp / Makefile
1 #####################
2
3 DEBUG =
4
5 TESTS =
6
7 SOURCES_BASE = types.fs printer.fs core.fs tokenizer.fs reader.fs env.fs \
8 eval.fs readline.fs
9 SOURCES_LISP =
10 SOURCES = $(SOURCES_BASE) $(SOURCES_LISP)
11
12 TERMINAL_SOURCES = terminal.cs
13
14 #####################
15
16 SRCS = step0_repl.fs step1_read_print.fs step2_eval.fs step3_env.fs \
17 step4_if_fn_do.fs step5_tco.fs
18
19 FSFLAGS = $(if $(strip $(DEBUG)),--debug+,--debug- --optimize+ --tailcalls+)
20 CSFLAGS = $(if $(strip $(DEBUG)),-debug+,)
21 #####################
22
23 all: $(patsubst %.fs,%.exe,$(SRCS))
24
25 Mono.Terminal.dll: $(TERMINAL_SOURCES)
26 mcs $(CSFLAGS) -target:library $+ -out:$@
27
28 mal.dll: $(SOURCES) Mono.Terminal.dll
29 fsharpc $(FSFLAGS) -o $@ -r Mono.Terminal.dll -a $(SOURCES)
30
31 %.exe: %.fs mal.dll
32 fsharpc $(FSFLAGS) -o $@ -r mal.dll $<
33
34 clean:
35 rm -f *.dll *.exe *.mdb
36
37 .PHONY: stats tests $(TESTS)
38
39 stats: $(SOURCES)
40 @wc $^
41 stats-lisp: $(SOURCES_LISP)
42 @wc $^
43
44 tests: $(TESTS)
45
46 $(TESTS):
47 @echo "Running $@"; \
48 ./$@ || exit 1; \