Commit | Line | Data |
---|---|---|
a9385e97 | 1 | BINS = step0_repl step1_read_print step2_eval step3_env step4_if_fn_do step5_tco |
8e53f705 | 2 | BINS += step6_file step7_quote step8_macros step9_try stepA_mal |
6c0968a6 | 3 | scheme_MODE ?= chibi |
244ac2d6 | 4 | |
fea8cfff VS |
5 | CLASSSTEPS = 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 | |
9 | STEPS = $(if $(filter kawa,$(scheme_MODE)),$(CLASSSTEPS),\ | |
10 | $(if $(filter chicken,$(scheme_MODE)),$(BINS),\ | |
11 | $(if $(filter cyclone,$(scheme_MODE)),$(BINS)))) | |
12 | ||
13 | KAWA_STEP1_DEPS = out/lib/util.class out/lib/reader.class \ | |
14 | out/lib/printer.class out/lib/types.class | |
15 | KAWA_STEP3_DEPS = $(KAWA_STEP1_DEPS) out/lib/env.class | |
16 | KAWA_STEP4_DEPS = $(KAWA_STEP3_DEPS) out/lib/core.class | |
f301fa6c VS |
17 | GAUCHE_STEP1_DEPS = lib/util.scm lib/reader.scm lib/printer.scm lib/types.scm |
18 | GAUCHE_STEP3_DEPS = $(GAUCHE_STEP1_DEPS) lib/env.scm | |
19 | GAUCHE_STEP4_DEPS = $(GAUCHE_STEP3_DEPS) lib/core.scm | |
fea8cfff VS |
20 | CHICKEN_STEP1_DEPS = eggs/lib.util.so eggs/lib.types.so \ |
21 | eggs/lib.reader.so eggs/lib.printer.so | |
22 | CHICKEN_STEP3_DEPS = $(CHICKEN_STEP1_DEPS) eggs/lib.env.so | |
23 | CHICKEN_STEP4_DEPS = $(CHICKEN_STEP3_DEPS) eggs/lib.core.so | |
24 | CYCLONE_STEP1_DEPS = lib/util.so lib/reader.so lib/printer.so lib/types.so | |
25 | CYCLONE_STEP3_DEPS = $(CYCLONE_STEP1_DEPS) lib/env.so | |
26 | CYCLONE_STEP4_DEPS = $(CYCLONE_STEP3_DEPS) lib/core.so | |
27 | ||
28 | STEP1_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 | 32 | STEP3_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 | 36 | STEP4_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 | |
41 | KAWALIB = kawa --r7rs --no-warn-unused -d out -C | |
42 | KAWA = kawa --r7rs --no-warn-unused -d out --main -C | |
43 | CHICKEN = CHICKEN_REPOSITORY=$(CURDIR)/eggs csc -O3 -R r7rs | |
44 | CHICKENLIB = $(CHICKEN) -sJ | |
45 | CYCLONELIB = cyclone -O2 | |
46 | CYCLONE = $(CYCLONELIB) | |
47 | ||
48 | SCMLIB = $(if $(filter kawa,$(scheme_MODE)),$(KAWALIB),\ | |
49 | $(if $(filter chicken,$(scheme_MODE)),$(CHICKENLIB),\ | |
50 | $(if $(filter cyclone,$(scheme_MODE)),$(CYCLONELIB)))) | |
51 | SCM = $(if $(filter kawa,$(scheme_MODE)),$(KAWA),\ | |
52 | $(if $(filter chicken,$(scheme_MODE)),$(CHICKEN),\ | |
53 | $(if $(filter cyclone,$(scheme_MODE)),$(CYCLONE)))) | |
54 | ||
dda1fe77 | 55 | MKDIR = mkdir -p |
6ca83567 VS |
56 | SYMLINK = ln -sfr |
57 | RM = rm -f | |
1d117aaf | 58 | RMR = rm -rf |
244ac2d6 | 59 | |
fea8cfff VS |
60 | all: $(STEPS) |
61 | ||
c4269f9b | 62 | .PHONY: clean |
fea8cfff VS |
63 | .PRECIOUS: lib/%.scm eggs/lib.%.scm |
64 | ||
65 | eggs/r7rs.so: | |
dda1fe77 VS |
66 | chicken-install -init eggs |
67 | CHICKEN_REPOSITORY=$(CURDIR)/eggs chicken-install r7rs | |
fea8cfff VS |
68 | |
69 | lib/%.scm: lib/%.sld | |
70 | $(SYMLINK) $< $@ | |
71 | ||
72 | eggs/lib.%.scm: lib/%.sld | |
73 | $(SYMLINK) $< $@ | |
74 | ||
75 | out/lib/%.class: lib/%.scm | |
76 | $(SCMLIB) $< | |
77 | ||
78 | out/%.class: %.scm | |
79 | $(SCM) $< | |
80 | ||
81 | eggs/lib.%.so: eggs/lib.%.scm | |
82 | $(SCMLIB) $< | |
83 | ||
84 | lib/%.so: lib/%.sld | |
85 | $(SCMLIB) $< | |
86 | ||
87 | %: %.scm | |
88 | $(SCM) $< | |
89 | ||
90 | out/step1_read_print.class out/step2_eval.class: $(STEP1_DEPS) | |
91 | out/step3_env.class: $(STEP3_DEPS) | |
92 | out/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 | ||
94 | step0_repl: $(if $(filter chicken,$(scheme_MODE)),eggs/r7rs.so,) | |
f301fa6c | 95 | |
fea8cfff VS |
96 | step1_read_print.scm step2_eval.scm: $(STEP1_DEPS) |
97 | step3_env.scm: $(STEP3_DEPS) | |
98 | step4_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 | |
100 | clean: | |
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 |