-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
122 lines (93 loc) · 2.68 KB
/
Copy pathMakefile
File metadata and controls
122 lines (93 loc) · 2.68 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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# Coq sources
COQDIR = coq
COQLIBDIR = lib
# OCaml sources
MLDIR = ml
EXTRACTDIR = ml/extracted
ITREEDIR=lib/InteractionTrees
COQINCLUDES=$(foreach d, $(COQDIR), -R $(d) CCC) -R $(ITREEDIR)/theories/ ITree # -R $(EXTRACTDIR) Extract
COQC="$(COQBIN)coqc" -q $(COQINCLUDES) $(COQCOPTS)
COQDEP="$(COQBIN)coqdep" $(COQINCLUDES)
COQEXEC="$(COQBIN)coqtop" -q -w none $(COQINCLUDES) -batch -load-vernac-source
MENHIR=menhir
CP=cp
COQFILESINTERP := DiGraph STLC CCC
COQFILESOPT :=
OLLVMFILES :=
VFILES := $(COQFILESINTERP:%=coq/%.v) $(COQFILESOPT:%=coq/%.v)
VOFILES := $(COQFILESINTERP:%=coq/%.vo) $(COQFILESOPT:%=coq/%.vo)
all:
@test -f .depend || $(MAKE) depend
$(MAKE) coq
# $(MAKE) extracted
# $(MAKE) vellvm
interp:
@test -f .depend || $(MAKE) depend
$(MAKE) coqinterp
$(MAKE) extracted
$(MAKE) vellvm
coq: $(VOFILES)
coqinterp: $(COQFILESINTERP:%=coq/%.vo)
update-trees:
git submodule update -- $(ITREEDIR)
itrees:
make -C $(ITREEDIR)
.PHONY: extracted itrees
extracted: $(EXTRACTDIR)/STAMP $(VOFILES)
$(EXTRACTDIR)/STAMP: $(VOFILES) $(EXTRACTDIR)/Extract.v
@echo "Extracting"
rm -f $(EXTRACTDIR)/*.ml $(EXTRACTDIR)/*.mli
$(COQEXEC) $(EXTRACTDIR)/Extract.v
patch -p0 < CRelationClasses.mli.patch
touch $(EXTRACTDIR)/STAMP
%.vo: %.v
@rm -f doc/$(*F).glob
@echo "COQC $*.v"
@$(COQC) -dump-glob doc/$(*F).glob $*.v
depend: itrees $(VFILES)
@echo "Analyzing Coq dependencies"
@$(COQDEP) $^ > .depend
.PHONY: clean test qc restore
EXE=_build/default/ml/main.exe
$(EXE): extracted ml/dune ml/extracted/dune ml/testing/dune
@echo "Compiling Vellvm"
dune build ml/main.exe
vellvm: $(EXE)
cp $(EXE) vellvm
test: vellvm
./vellvm --test
print-includes:
@echo $(COQINCLUDES)
clean: clean-graph
clean-graph:
rm -f .depend
find $(COQDIR) -name "*.vo" -delete
find $(COQDIR) -name "*.vio" -delete
find $(COQDIR) -name "*.vok" -delete
find $(COQDIR) -name "*.vos" -delete
find $(COQLIBDIR) -name "*.vo" -delete
find $(COQLIBDIR) -name "*.vio" -delete
find $(COQLIBDIR) -name "*.vok" -delete
find $(COQLIBDIR) -name "*.vos" -delete
rm -f $(VOFILES)
rm -rf doc/html doc/*.glob
rm -f $(EXTRACTDIR)/STAMP $(EXTRACTDIR)/*.ml $(EXTRACTDIR)/*.mli
dune clean
rm -rf output
rm -f vellvm
rm -f doc/coq2html.ml doc/coq2html doc/*.cm? doc/*.o
clean-itrees:
make -C $(ITREEDIR) clean
.PHONY: clean-vellvm clean-itrees
doc/coq2html:
make -C ../lib/coq2html
cp ../lib/coq2html doc/coq2html
chmod +x doc/coq2html
.PHONY: documentation
documentation: doc/coq2html $(VFILES)
mkdir -p doc/html
rm -f doc/html/*.html
doc/coq2html -d doc/html doc/*.glob \
$(filter-out doc/coq2html cparser/Parser.v, $^)
cp ../lib/coq2html/coq2html.css ../lib/coq2html/coq2html.js doc/html/
-include .depend