@@ -37,7 +37,7 @@ CAMLP5_VERSION=`camlp5 -v 2>&1 | cut -f3 -d' ' | cut -f1-3 -d'.' | cut -f1 -d'-'
37
37
38
38
# If set to 1, build hol_lib.cmo and make hol.sh to use it.
39
39
# NOTE: This extends the trusted base of HOL Light to include the inliner
40
- # script, inline_loads .ml. inline_loads .ml is an OCaml program that receives
40
+ # script, inline_load .ml. inline_load .ml is an OCaml program that receives
41
41
# an HOL Light proof and replaces the loads/loadt/needs function invocations
42
42
# with their actual contents. Please turn this flag on only if having this
43
43
# additional trusted base is considered okay.
@@ -53,7 +53,7 @@ default: update_database.ml pa_j.cmo hol.sh;
53
53
# HOL Light.
54
54
# ledit is installed for line editing of OCaml REPL
55
55
switch :; \
56
- opam update ; \
56
+ opam update ; \
57
57
opam switch create . ocaml-base-compiler.4.14.0 ; \
58
58
eval $(opam env) ; \
59
59
opam install -y zarith ledit ; \
@@ -115,14 +115,35 @@ bignum.cmo: bignum_zarith.ml bignum_num.ml ; \
115
115
else ocamlc -c -o bignum.cmo bignum_num.ml ; \
116
116
fi
117
117
118
+ bignum.cmx : bignum_zarith.ml bignum_num.ml ; \
119
+ if test ${OCAML_VERSION} = "4.14" -o ${OCAML_UNARY_VERSION} = "5" ; \
120
+ then ocamlfind ocamlopt -package zarith -c -o bignum.cmx bignum_zarith.ml ; \
121
+ else ocamlopt -c -o bignum.cmx bignum_num.ml ; \
122
+ fi
123
+
118
124
hol_loader.cmo : hol_loader.ml ; \
119
125
ocamlc -verbose -c hol_loader.ml -o hol_loader.cmo
120
126
121
- hol_lib.cmo : inline_load.ml hol_lib.ml hol_loader.cmo ; \
122
- ocaml inline_load.ml hol_lib.ml hol_lib_inlined.ml ; \
123
- ocamlc -verbose -c -pp "camlp5r pa_lexer.cmo pa_extend.cmo q_MLast.cmo -I . pa_j.cmo" hol_loader.cmo hol_lib_inlined.ml bignum.cmo -o hol_lib.cmo ; \
127
+ hol_loader.cmx : hol_loader.ml ; \
128
+ ocamlopt -verbose -c hol_loader.ml -o hol_loader.cmx
129
+
130
+ hol_lib_inlined.ml : hol_lib.ml inline_load.ml ; \
131
+ HOLLIGHT_DIR ="` pwd ` " ocaml inline_load.ml hol_lib.ml hol_lib_inlined.ml -omit-prelude
132
+
133
+ hol_lib.cmo : pa_j.cmo hol_lib_inlined.ml hol_loader.cmo bignum.cmo ; \
134
+ ocamlc -verbose -c -pp "camlp5r pa_lexer.cmo pa_extend.cmo q_MLast.cmo -I . pa_j.cmo" hol_loader.cmo hol_lib_inlined.ml bignum.cmo -o hol_lib.cmo
135
+
136
+ hol_lib.cma : hol_lib.cmo bignum.cmo hol_loader.cmo ; \
124
137
ocamlfind ocamlc -package zarith -linkpkg -a -o hol_lib.cma bignum.cmo hol_loader.cmo hol_lib.cmo
125
138
139
+ hol_lib.cmx : pa_j.cmo hol_lib_inlined.ml hol_loader.cmx bignum.cmx ; \
140
+ OCAMLRUNPARAM=l =1000000000 ocamlopt.byte -verbose -c \
141
+ -pp "camlp5r pa_lexer.cmo pa_extend.cmo q_MLast.cmo -I . pa_j.cmo" \
142
+ hol_lib_inlined.ml hol_loader.cmx bignum.cmx -o hol_lib.cmx
143
+
144
+ hol_lib.cmxa : hol_lib.cmx hol_loader.cmx bignum.cmx ; \
145
+ ocamlfind ocamlopt -package zarith -a -o hol_lib.cmxa bignum.cmx hol_loader.cmx hol_lib.cmx
146
+
126
147
# Create a bash script 'hol.sh' that loads 'hol.ml' in OCaml REPL.
127
148
128
149
hol.sh : pa_j.cmo ${HOLSRC} bignum.cmo hol_loader.cmo update_database.ml
@@ -140,9 +161,20 @@ hol.sh: pa_j.cmo ${HOLSRC} bignum.cmo hol_loader.cmo update_database.ml
140
161
fi
141
162
142
163
# If HOLLIGHT_USE_MODULE is set, add hol_lib.cmo to dependency of hol.sh
164
+ # Also, build unit_tests using OCaml bytecode compiler as well as OCaml native compiler.
143
165
144
166
ifeq ($(HOLLIGHT_USE_MODULE ) ,1)
145
167
hol.sh : hol_lib.cmo
168
+ unit_tests_inlined.ml : unit_tests.ml inline_load.ml ; \
169
+ HOLLIGHT_DIR ="` pwd ` " ocaml inline_load.ml unit_tests.ml unit_tests_inlined.ml
170
+ unit_tests.byte : unit_tests_inlined.ml hol_lib.cmo inline_load.ml hol.sh ; \
171
+ ocamlfind ocamlc -package zarith -linkpkg -pp "`./hol.sh -pp`" \
172
+ -I . bignum.cmo hol_loader.cmo hol_lib.cmo unit_tests_inlined.ml -o unit_tests.byte
173
+ unit_tests.native : unit_tests_inlined.ml hol_lib.cmx inline_load.ml hol.sh ; \
174
+ ocamlfind ocamlopt -package zarith -linkpkg -pp "`./hol.sh -pp`" \
175
+ -I . bignum.cmx hol_loader.cmx hol_lib.cmx unit_tests_inlined.ml -o unit_tests.native
176
+
177
+ default : hol_lib.cma unit_tests.byte unit_tests.native
146
178
endif
147
179
148
180
# TODO: update this and hol.* commands to use one of checkpointing tools
@@ -205,7 +237,9 @@ install: hol.sh hol hol.multivariate hol.sosa hol.card hol.complex; cp hol hol.m
205
237
# Clean up all compiled files
206
238
207
239
clean :; \
208
- rm -f bignum.cmo update_database.ml pa_j.ml pa_j.cmi pa_j.cmo \
209
- hol_lib.cmo hol_lib.cmi hol_lib.cma hol_lib_inlined.ml \
210
- hol_loader.cmo hol_loader.cmi \
240
+ rm -f bignum.c* bignum.o \
241
+ update_database.ml pa_j.ml pa_j.cmi pa_j.cmo \
242
+ hol_lib.a hol_lib.c* hol_lib.o hol_lib_inlined.ml \
243
+ hol_loader.c* hol_loader.o \
244
+ unit_tests_inlined.* unit_tests.native unit_tests.byte \
211
245
ocaml-hol hol.sh hol hol.multivariate hol.sosa hol.card hol.complex
0 commit comments