2021-12-16 10:01:08 +00:00
|
|
|
# build recompiles and links all files (no incemental builds)
|
|
|
|
build:
|
|
|
|
# fromStdlib manages things that need to be exposed from the standard library
|
|
|
|
ocamlopt -i fromStdlib.ml > fromStdlib.mli
|
|
|
|
ocamlopt -S -O3 -c fromStdlib.mli fromStdlib.ml
|
|
|
|
|
2021-12-18 21:08:10 +00:00
|
|
|
# exposed types and functions, that can be opened module wide
|
|
|
|
ocamlopt -S -O3 -nopervasives -c exposed.mli exposed.ml
|
2021-12-16 10:01:08 +00:00
|
|
|
|
|
|
|
# the following files make up the core custom standard library code
|
2021-12-18 09:20:30 +00:00
|
|
|
ocamlopt -S -O3 -nopervasives -c int.mli int.ml
|
|
|
|
ocamlopt -S -O3 -nopervasives -c float.mli float.ml
|
2021-12-18 21:08:10 +00:00
|
|
|
ocamlopt -S -O3 -nopervasives -c option.mli option.ml
|
2021-12-16 10:01:08 +00:00
|
|
|
ocamlopt -S -O3 -nopervasives -c stack.mli stack.ml
|
|
|
|
ocamlopt -S -O3 -nopervasives -c list.mli list.ml
|
|
|
|
ocamlopt -S -O3 -nopervasives -c map.mli map.ml
|
|
|
|
ocamlopt -S -O3 -nopervasives -c queue.mli queue.ml
|
|
|
|
ocamlopt -S -O3 -nopervasives -c set.mli set.ml
|
|
|
|
ocamlopt -S -O3 -nopervasives -c tree.mli tree.ml
|
|
|
|
|
|
|
|
# main is the main file to run code in
|
|
|
|
ocamlopt -i main.ml > main.mli
|
|
|
|
ocamlopt -S -O3 -nopervasives -c main.mli main.ml
|
|
|
|
|
|
|
|
# after all files are individually compiled with -nopervasives, this is compiled with it so that fromStdlib has the necessary linking
|
2021-12-18 21:08:10 +00:00
|
|
|
ocamlopt -S -O3 fromStdlib.cmx exposed.cmx int.cmx float.cmx option.cmx stack.cmx list.cmx map.cmx queue.cmx set.cmx tree.cmx main.cmx -o program
|
2021-12-16 10:01:08 +00:00
|
|
|
|
|
|
|
# clean removes all except source files. autogenerated mli files are also removed.
|
|
|
|
clean:
|
|
|
|
rm -f *.o *.a *.s *.cmi *.cmx *.cmxa *.cmo *.cma fromStdlib.mli main.mli program
|
|
|
|
|
|
|
|
# mostlyclean removes all except source files and the final executable. autogenerated mli files are also removed.
|
|
|
|
mostlyclean:
|
|
|
|
rm -f *.o *.a *.s *.cmi *.cmx *.cmxa *.cmo *.cma fromStdlib.mli main.mli
|
|
|
|
|
|
|
|
# install builds, mostlycleans and runs
|
|
|
|
install:
|
|
|
|
make build
|
|
|
|
make mostlyclean
|
|
|
|
./program
|
|
|
|
|
|
|
|
# just runs the executable if it has been produced by make build
|
|
|
|
make run:
|
|
|
|
./program
|
|
|
|
|