-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
62 lines (48 loc) · 1.73 KB
/
Makefile
File metadata and controls
62 lines (48 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
OCAMLC := ocamlopt
SCHEME_IMPL := chez
SCHEME_COMMAND_chicken := csi compat_chicken.scm prelude.scm -script
SCHEME_COMMAND_chez := scheme --script compat_chez.scm
SCHEME_COMMAND := $(SCHEME_COMMAND_$(SCHEME_IMPL))
SCHEME_COMPAT_LIB := compat_$(SCHEME_IMPL).scm
BACKEND := scheme
.PHONY: default
default: target/stage2.scm
target:
mkdir -p target
COMPILER_SOURCES := \
compiler/util.ml \
compiler/token.ml \
compiler/common_syntax.ml \
compiler/ast.ml \
compiler/initial_ctx.ml \
compiler/core.ml \
compiler/lex.ml \
compiler/parser.ml \
compiler/ctx.ml \
compiler/elab.ml \
compiler/compile.ml \
compiler/compile_scheme.ml \
compiler/main.ml
TARGET_SOURCES := $(patsubst compiler/%.ml,target/%.ml,$(COMPILER_SOURCES))
$(TARGET_SOURCES): target/%.ml: compiler/%.ml | target
cp $< $@
target/ocamlshim.cmx: ocamlshim.ml | target
$(OCAMLC) -o $@ -c $<
target/stage1.exe: $(TARGET_SOURCES) target/ocamlshim.cmx
$(OCAMLC) -o $@ -I target ocamlshim.cmx -open Ocamlshim $(TARGET_SOURCES)
target/stage2.scm: target/stage1.exe $(TARGET_SOURCES)
$< $(BACKEND) $(TARGET_SOURCES) >target/tmp2.scm
cp target/tmp2.scm $@
target/stage3.scm: target/stage2.scm $(TARGET_SOURCES) prelude.scm $(SCHEME_COMPAT_LIB)
$(SCHEME_COMMAND) $< $(BACKEND) $(TARGET_SOURCES) >target/tmp3.scm
cp target/tmp3.scm $@
target/stage4.scm: target/stage3.scm $(TARGET_SOURCES) prelude.scm $(SCHEME_COMPAT_LIB)
$(SCHEME_COMMAND) $< $(BACKEND) $(TARGET_SOURCES) >target/tmp4.scm
cp target/tmp4.scm $@
.PHONY: verify_fixpoint
verify_fixpoint: target/stage3.scm target/stage4.scm
diff $^
@printf "\x1b[32m""fixpoint successful!""\x1b[m""\n"
.PHONY: clean
clean:
rm -rf target