Skip to content
Snippets Groups Projects
Commit 0bd8bf55 authored by charguer's avatar charguer
Browse files

makefile

parent 856579f8
No related branches found
No related tags found
No related merge requests found
......@@ -7,13 +7,7 @@
#
# requires: opam switch 4.02.1; eval `opam config env`
###############################################################
# Global options
.PHONY: all clean
all:
# TODO: test/lambda is not longer supported
###############################################################
# Paths
......@@ -26,6 +20,14 @@ TESTS_ML := $(wildcard $(TESTS_DIR)/*.ml)
JSREF_ML := $(wildcard $(TESTS_DIR)/$(JSREF_DIR)/*.ml)
JSREF_MLI := $(wildcard $(TESTS_DIR)/$(JSREF_DIR)/*.mli)
###############################################################
# Global options
.PHONY: all full log unlog clean .log.js .unlog.js .token.js
# Do not delete intermediate files.
.SECONDARY:
###############################################################
# Tools
......@@ -39,10 +41,6 @@ GENERATOR := ./main.byte
LINEOF := ./lineof.byte
# Do not delete intermediate files.
.SECONDARY:
.PRECIOUS: *.vio
###############################################################
# Dependencies
......@@ -55,43 +53,21 @@ endif
###############################################################
# Short targets
# Rules
all: main.byte
%.byte: *.ml _tags
$(OCAMLBUILD) $@
stdlib:
$(CC) stdlib_ml/stdlib.mli
%.inferred.mli: _tags
$(OCAMLBUILD) $@
cp _build/$@ .
##### Compilation of STDLIB
# In case we want to rebuild any .v, but we're likely to be modifying the resulting .mls now anyway...
.PRECIOUS: tests/%.ml
tests/%.ml: tests/%.v
$(MAKE) -C $(CURDIR)/../../../lib/tlc/src
cd $(<D) && coqc -I $(CURDIR)/../../../lib/tlc/src $(<F)
cd $(@D) && rm *.mli
cd $(@D) && $(CURDIR)/../../ml-add-cstr-annots.pl *.ml
$(STDLIB_DIR)/stdlib.cmi: $(STDLIB_DIR)/stdlib.mli
$(CC) $<
.PRECIOUS: tests/jsref/*.ml tests/jsref/*.log.js tests/jsref/*.unlog.js tests/jsref/*.token.js
.PHONY: .all .log.js .unlog.js .token.js
##### Rule for binaries
%.byte: *.ml _tags
$(OCAMLBUILD) $@
#tests/jsref/%.ml:
# $(MAKE) -C $(CURDIR)/../../.. interpreter
# cp ../../../interp/src/extract/*.ml tests/jsref/
# ../../convert-ml-strings.pl tests/jsref/*.ml
# cd $(@D) && $(CURDIR)/../../ml-add-cstr-annots.pl *.ml
# tests/%.cmi: tests/%.log.js
# tests/jsref/%.cmi: tests/jsref/%.log.js
# tests/jsref/BinNat.cmi : tests/jsref/BinNat.log.js
##### Rule for dependencies
tests/%.mli.d: tests/%.mli
$(OCAMLDEP) -I $(<D) $< | $(DEPSED) > $@
......@@ -99,9 +75,21 @@ tests/%.mli.d: tests/%.mli
tests/%.ml.d: tests/%.ml
$(OCAMLDEP) -I $(<D) $< | $(DEPSED) > $@
##### Rule for cmi
tests/%.cmi: tests/%.ml main.byte stdlib
./main.byte -mode cmi -I $(<D) $<
##### Custome cmi rules for compilation of mli files without ml source
$(JSREF_PATH)/Translate_syntax.cmi: $(JSREF_PATH)/Translate_syntax.mli $(JSREF_PATH)/JsSyntax.cmi stdlib
ocamlc -I $(JSREF_PATH) -I stdlib_ml -open Stdlib $<
$(JSREF_PATH)/Prheap.cmi: $(JSREF_PATH)/Prheap.mli stdlib $(JSREF_PATH)/JsSyntax.cmi
ocamlc -I $(JSREF_PATH) -I stdlib_ml -open Stdlib $<
##### Rule for log/unlog/token
tests/%.log.js: tests/%.ml main.byte stdlib tests/%.cmi
./main.byte -mode log -I $(<D) $<
......@@ -111,54 +99,27 @@ tests/%.unlog.js: tests/%.ml main.byte stdlib tests/%.cmi
tests/%.token.js: tests/%.ml main.byte stdlib tests/%.cmi
./main.byte -mode token -I $(<D) $<
tests/%.all: tests/%.log.js tests/%.unlog.js tests/%.token.js
touch $@
#tests/%.cmi: tests/%.ml main.byte stdlib
# ./main.byte -mode unlog -I $(<D) $<
# ad hoc rules
tests/jsref/Translate_syntax.cmi: tests/jsref/Translate_syntax.mli tests/jsref/JsSyntax.cmi stdlib
ocamlc -I tests/jsref -I stdlib_ml -open Stdlib $<
tests/jsref/Prheap.cmi: tests/jsref/Prheap.mli stdlib tests/jsref/JsSyntax.cmi
ocamlc -I tests/jsref -I stdlib_ml -open Stdlib $<
##### Rule for lineof.js
$(JSREF_PATH)/lineof.js: lineof.byte $(JSREF_ML:.ml=.token.js)
./lineof.byte -o $@ $(JSREF_ML:.ml=.token.js)
# tests/%.cmi: tests/%.mli stdlib
# ocamlc -I stdlib_ml -open Stdlib -I $(<D) $<
tests: $(TESTS_ML:.ml=.log.js) $(TESTS_ML:.ml=.token.js)
tests/lambda: tests/lambda/Lambda.log.js
tests/jsref: tests/jsref/JsInterpreter.log.js
tests/jsrefunlog: tests/jsref/JsInterpreter.unlog.js
######### lineof target #########
tests/jsref/lineof.js: lineof.byte $(ML_JSREF:.ml=.token.js)
./lineof.byte -o $@ $(ML_JSREF:.ml=.token.js)
#####################################################################
# Short targets
unlog: $(JSREF_ML:.ml=.unlog.js)
main: main.byte
full: $(JSREF_ML:.ml=.log.js) $(JSREF_ML:.ml=.unlog.js) $(JSREF_ML:.ml=.token.js)
lineof: tests/jsref/lineof.js
unlog: $(JSREF_ML:.ml=.unlog.js)
lineof: $(JSREF_PATH)/lineof.js
stdlib: $(STDLIB_DIR)/stdlib.cmi
tests: $(TESTS_ML:.ml=.log.js) $(TESTS_ML:.ml=.token.js)
#####################################################################
......@@ -166,6 +127,9 @@ lineof: tests/jsref/lineof.js
DIRTY_EXTS := cmi,token.js,log.js,unlog.js,d,ml.d,mli.d
clean_lineof:
rm -f $(JSREF_PATH)/lineof.js
clean_tests:
bash -c "rm -f $(TESTS_DIR)/*.{$(DIRTY_EXTS)}"
bash -c "rm -f $(TESTS_DIR)/$(JSREF_DIR)/*.{$(DIRTY_EXTS)}"
......@@ -173,14 +137,10 @@ clean_tests:
clean_stdlib:
rm -f $(STDLIB_DIR)/*.cmi
clean: clean_tests clean_stdlib
clean: clean_lineof clean_tests clean_stdlib
rm -rf _build
rm -f *.native *.byte
clean_cmi: clean_tests clean_stdlib
cleanall: clean clean_cmi
#####################################################################
......@@ -191,10 +151,23 @@ debug: main.d.byte
native: _tags
$(OCAMLBUILD) main.native
##### Shorthand
tests/%.all: tests/%.log.js tests/%.unlog.js tests/%.token.js
touch $@
#####################################################################
# Deprecated
####
#
#%.inferred.mli: _tags
# $(OCAMLBUILD) $@
# cp _build/$@ .
# tests/lambda: tests/lambda/Lambda.log.js
#ifeq ($(findstring clean,$(MAKECMDGOALS)),)
#-include $(JSREF_ML:.ml=.ml.d)
#-include $(JSREF_MLI:.mli=.mli.d)
......@@ -209,4 +182,30 @@ native: _tags
# bash -c "rm -f $(TESTS_DIR)/lambda/*.{$(DIRTY_EXTS)}"
# clean_jsref:
# rm -f tests/jsref/*.ml.d tests/jsref/*.mli.d tests/jsref/*.log.js tests/jsref/*.unlog.js tests/jsref/*.token.js tests/jsref/*.cmi
# rm -f $(JSREF_PATH)/*.ml.d $(JSREF_PATH)/*.mli.d $(JSREF_PATH)/*.log.js $(JSREF_PATH)/*.unlog.js $(JSREF_PATH)/*.token.js $(JSREF_PATH)/*.cmi
# PRECIOUS probably not useful:
# .PRECIOUS: $(JSREF_PATH)/*.ml $(JSREF_PATH)/*.log.js $(JSREF_PATH)/*.unlog.js $(JSREF_PATH)/*.token.js
# .PRECIOUS: *.vio
#.PRECIOUS: tests/%.ml
#tests/%.ml: tests/%.v
# $(MAKE) -C $(CURDIR)/../../../lib/tlc/src
# cd $(<D) && coqc -I $(CURDIR)/../../../lib/tlc/src $(<F)
# cd $(@D) && rm *.mli
# cd $(@D) && $(CURDIR)/../../ml-add-cstr-annots.pl *.ml
#$(JSREF_PATH)/%.ml:
# $(MAKE) -C $(CURDIR)/../../.. interpreter
# cp ../../../interp/src/extract/*.ml $(JSREF_PATH)/
# ../../convert-ml-strings.pl $(JSREF_PATH)/*.ml
# cd $(@D) && $(CURDIR)/../../ml-add-cstr-annots.pl *.ml
# tests/%.cmi: tests/%.log.js
# $(JSREF_PATH)/%.cmi: $(JSREF_PATH)/%.log.js
# $(JSREF_PATH)/BinNat.cmi : $(JSREF_PATH)/BinNat.log.js
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment