Merge pull request #378 from asarhaddon/test-macro-not-changing-function
[jackhill/mal.git] / scheme / Makefile
CommitLineData
a9385e97 1BINS = step0_repl step1_read_print step2_eval step3_env step4_if_fn_do step5_tco
8e53f705 2BINS += step6_file step7_quote step8_macros step9_try stepA_mal
6c0968a6 3scheme_MODE ?= chibi
244ac2d6 4
fea8cfff
VS
5CLASSSTEPS = out/step0_repl.class out/step1_read_print.class \
6 out/step3_env.class out/step4_if_fn_do.class out/step5_tco.class \
7 out/step6_file.class out/step7_quote.class out/step8_macros.class \
8 out/step9_try.class out/stepA_mal.class
9STEPS = $(if $(filter kawa,$(scheme_MODE)),$(CLASSSTEPS),\
10 $(if $(filter chicken,$(scheme_MODE)),$(BINS),\
11 $(if $(filter cyclone,$(scheme_MODE)),$(BINS))))
12
13KAWA_STEP1_DEPS = out/lib/util.class out/lib/reader.class \
14 out/lib/printer.class out/lib/types.class
15KAWA_STEP3_DEPS = $(KAWA_STEP1_DEPS) out/lib/env.class
16KAWA_STEP4_DEPS = $(KAWA_STEP3_DEPS) out/lib/core.class
f301fa6c
VS
17GAUCHE_STEP1_DEPS = lib/util.scm lib/reader.scm lib/printer.scm lib/types.scm
18GAUCHE_STEP3_DEPS = $(GAUCHE_STEP1_DEPS) lib/env.scm
19GAUCHE_STEP4_DEPS = $(GAUCHE_STEP3_DEPS) lib/core.scm
fea8cfff
VS
20CHICKEN_STEP1_DEPS = eggs/lib.util.so eggs/lib.types.so \
21 eggs/lib.reader.so eggs/lib.printer.so
22CHICKEN_STEP3_DEPS = $(CHICKEN_STEP1_DEPS) eggs/lib.env.so
23CHICKEN_STEP4_DEPS = $(CHICKEN_STEP3_DEPS) eggs/lib.core.so
24CYCLONE_STEP1_DEPS = lib/util.so lib/reader.so lib/printer.so lib/types.so
25CYCLONE_STEP3_DEPS = $(CYCLONE_STEP1_DEPS) lib/env.so
26CYCLONE_STEP4_DEPS = $(CYCLONE_STEP3_DEPS) lib/core.so
27
28STEP1_DEPS = $(if $(filter kawa,$(scheme_MODE)),$(KAWA_STEP1_DEPS),\
f301fa6c 29 $(if $(filter gauche,$(scheme_MODE)),$(GAUCHE_STEP1_DEPS),\
fea8cfff 30 $(if $(filter chicken,$(scheme_MODE)),$(CHICKEN_STEP1_DEPS),\
f301fa6c 31 $(if $(filter cyclone,$(scheme_MODE)),$(CYCLONE_STEP1_DEPS)))))
fea8cfff 32STEP3_DEPS = $(if $(filter kawa,$(scheme_MODE)),$(KAWA_STEP3_DEPS),\
f301fa6c 33 $(if $(filter gauche,$(scheme_MODE)),$(GAUCHE_STEP3_DEPS),\
fea8cfff 34 $(if $(filter chicken,$(scheme_MODE)),$(CHICKEN_STEP3_DEPS),\
f301fa6c 35 $(if $(filter cyclone,$(scheme_MODE)),$(CYCLONE_STEP3_DEPS)))))
fea8cfff 36STEP4_DEPS = $(if $(filter kawa,$(scheme_MODE)),$(KAWA_STEP4_DEPS),\
f301fa6c 37 $(if $(filter gauche,$(scheme_MODE)),$(GAUCHE_STEP4_DEPS),\
fea8cfff 38 $(if $(filter chicken,$(scheme_MODE)),$(CHICKEN_STEP4_DEPS),\
f301fa6c 39 $(if $(filter cyclone,$(scheme_MODE)),$(CYCLONE_STEP4_DEPS)))))
fea8cfff
VS
40
41KAWALIB = kawa --r7rs --no-warn-unused -d out -C
42KAWA = kawa --r7rs --no-warn-unused -d out --main -C
43CHICKEN = CHICKEN_REPOSITORY=$(CURDIR)/eggs csc -O3 -R r7rs
44CHICKENLIB = $(CHICKEN) -sJ
45CYCLONELIB = cyclone -O2
46CYCLONE = $(CYCLONELIB)
47
48SCMLIB = $(if $(filter kawa,$(scheme_MODE)),$(KAWALIB),\
49 $(if $(filter chicken,$(scheme_MODE)),$(CHICKENLIB),\
50 $(if $(filter cyclone,$(scheme_MODE)),$(CYCLONELIB))))
51SCM = $(if $(filter kawa,$(scheme_MODE)),$(KAWA),\
52 $(if $(filter chicken,$(scheme_MODE)),$(CHICKEN),\
53 $(if $(filter cyclone,$(scheme_MODE)),$(CYCLONE))))
54
dda1fe77 55MKDIR = mkdir -p
6ca83567
VS
56SYMLINK = ln -sfr
57RM = rm -f
1d117aaf 58RMR = rm -rf
244ac2d6 59
fea8cfff
VS
60all: $(STEPS)
61
c4269f9b 62.PHONY: clean
fea8cfff
VS
63.PRECIOUS: lib/%.scm eggs/lib.%.scm
64
65eggs/r7rs.so:
dda1fe77
VS
66 chicken-install -init eggs
67 CHICKEN_REPOSITORY=$(CURDIR)/eggs chicken-install r7rs
fea8cfff
VS
68
69lib/%.scm: lib/%.sld
70 $(SYMLINK) $< $@
71
72eggs/lib.%.scm: lib/%.sld
73 $(SYMLINK) $< $@
74
75out/lib/%.class: lib/%.scm
76 $(SCMLIB) $<
77
78out/%.class: %.scm
79 $(SCM) $<
80
81eggs/lib.%.so: eggs/lib.%.scm
82 $(SCMLIB) $<
83
84lib/%.so: lib/%.sld
85 $(SCMLIB) $<
86
87%: %.scm
88 $(SCM) $<
89
90out/step1_read_print.class out/step2_eval.class: $(STEP1_DEPS)
91out/step3_env.class: $(STEP3_DEPS)
92out/step4_if_fn_do.class out/step5_tco.class out/step6_file.class out/step7_quote.class out/step8_macros.class out/step9_try.class out/stepA_mal.class: $(STEP4_DEPS)
93
94step0_repl: $(if $(filter chicken,$(scheme_MODE)),eggs/r7rs.so,)
f301fa6c 95
fea8cfff
VS
96step1_read_print.scm step2_eval.scm: $(STEP1_DEPS)
97step3_env.scm: $(STEP3_DEPS)
98step4_if_fn_do.scm step5_tco.scm step6_file.scm step7_quote.scm step8_macros.scm step9_try.scm stepA_mal.scm: $(STEP4_DEPS)
6ca83567
VS
99
100clean:
101 $(RM) lib/*.scm lib/*.so lib/*.c lib/*.o lib/*.meta
102 $(RM) lib.*.scm *.so *.c *.o $(BINS)
fea8cfff 103 $(RM) eggs/*
1d117aaf 104 $(RMR) out