Skip to content
Snippets Groups Projects
Commit ec1a7c43 authored by Thomas Wood's avatar Thomas Wood
Browse files

Remove references to JSREF_DIR from jsref Makefile, as now self-contained

parent 6279f879
No related branches found
No related tags found
No related merge requests found
...@@ -10,9 +10,8 @@ ...@@ -10,9 +10,8 @@
all: # Defined below all: # Defined below
JSREF_DIR := . JSREF_ML := $(filter-out JsOutput.ml,$(wildcard *.ml))
JSREF_ML := $(filter-out JsOutput.ml,$(wildcard $(JSREF_DIR)/*.ml)) JSREF_MLI := $(wildcard *.mli)
JSREF_MLI := $(wildcard $(JSREF_DIR)/*.mli)
GENERATOR_DIR := ../generator GENERATOR_DIR := ../generator
STDLIB_DIR := $(GENERATOR_DIR)/stdlib_ml STDLIB_DIR := $(GENERATOR_DIR)/stdlib_ml
...@@ -50,16 +49,14 @@ ASSEMBLY_JS_FILES := \ ...@@ -50,16 +49,14 @@ ASSEMBLY_JS_FILES := \
JsInterpreterMonads.unlog.js \ JsInterpreterMonads.unlog.js \
JsInterpreter.log.js \ JsInterpreter.log.js \
ModuleExport.js ModuleExport.js
ASSEMBLY_JS := $(STDLIB_DIR)/stdlib.js $(addprefix $(JSREF_DIR)/,$(ASSEMBLY_JS_FILES)) ASSEMBLY_JS := $(STDLIB_DIR)/stdlib.js $(ASSEMBLY_JS_FILES)
############################################################### ###############################################################
DISPLAYED_FILES := \ DISPLAYED := \
JsInterpreter.ml JsInterpreter.ml
DISPLAYED := $(addprefix $(JSREF_DIR)/,$(DISPLAYED_FILES))
ALL_DISPLAYED := $(DISPLAYED:.ml=.unlog.js) $(DISPLAYED:.ml=.pseudo.js) $(DISPLAYED) ALL_DISPLAYED := $(DISPLAYED:.ml=.unlog.js) $(DISPLAYED:.ml=.pseudo.js) $(DISPLAYED)
ALL_LINEOF := $(DISPLAYED:.ml=.token.js) $(DISPLAYED:.ml=.mlloc.js) $(DISPLAYED:.ml=.ptoken.js) ALL_LINEOF := $(DISPLAYED:.ml=.token.js) $(DISPLAYED:.ml=.mlloc.js) $(DISPLAYED:.ml=.ptoken.js)
...@@ -84,95 +81,96 @@ ASSEMBLY := $(ASSEMBLY_BIN) ...@@ -84,95 +81,96 @@ ASSEMBLY := $(ASSEMBLY_BIN)
DISPLAYGEN_BIN := $(GENERATOR_DIR)/displayed_sources.byte DISPLAYGEN_BIN := $(GENERATOR_DIR)/displayed_sources.byte
DISPLAYGEN := $(OCAMLPAR) $(DISPLAYGEN_BIN) DISPLAYGEN := $(OCAMLPAR) $(DISPLAYGEN_BIN)
# Warn if buildtools are missing
$(MLTOJS_BIN) $(LINEOF_BIN) $(PPX_BIN) $(ASSEMBLY_BIN) $(DISPLAYGEN_BIN):
$(error Missing generator tools, build from project root, or set paths.)
############################################################### ###############################################################
# Dependencies # Dependencies
ifeq ($(filter clean%,$(MAKECMDGOALS)),) ifeq ($(filter clean%,$(MAKECMDGOALS)),)
include $(JSREF_DIR)/.depends include .depends
endif endif
############################################################### ###############################################################
# Rules # Rules
##### Rule for dependencies ##### Rule for dependencies
.depends: $(JSREF_ML)
$(JSREF_DIR)/.depends: $(JSREF_ML) $(OCAMLDEP) -all $(<D)/* > $@
$(OCAMLDEP) -all -I $(<D) $(<D)/* > $@
##### Rule for cmi ##### Rule for cmi
%.cmi: %.ml $(MLTOJS_BIN) %.cmi: %.ml $(MLTOJS_BIN)
$(MLTOJS) -mode cmi -I $(<D) -I $(STDLIB_DIR) $< $(MLTOJS) -mode cmi -I $(STDLIB_DIR) $<
%.cmi: %.mli %.cmi: %.mli
ocamlc -I $(JSREF_DIR) -I $(STDLIB_DIR) -open Stdlib $< ocamlc -I $(STDLIB_DIR) -open Stdlib $<
##### Rule for log/unlog/token ##### Rule for log/unlog/token
%.log.js: %.ml %.cmi $(MLTOJS_BIN) %.log.js: %.ml %.cmi $(MLTOJS_BIN)
$(MLTOJS) -mode log -I $(<D) -I $(STDLIB_DIR) $< $(MLTOJS) -mode log -I $(STDLIB_DIR) $<
%.unlog.js: %.ml %.cmi $(MLTOJS_BIN) %.unlog.js: %.ml %.cmi $(MLTOJS_BIN)
$(MLTOJS) -mode unlog -I $(<D) -I $(STDLIB_DIR) $< $(MLTOJS) -mode unlog -I $(STDLIB_DIR) $<
%.token.js %.mlloc.js: %.ml %.cmi $(MLTOJS_BIN) %.token.js %.mlloc.js: %.ml %.cmi $(MLTOJS_BIN)
$(MLTOJS) -mode token -I $(<D) -I $(STDLIB_DIR) $< $(MLTOJS) -mode token -I $(STDLIB_DIR) $<
%.pseudo.js: %.ml %.cmi $(MLTOJS_BIN) %.pseudo.js: %.ml %.cmi $(MLTOJS_BIN)
$(MLTOJS) -mode pseudo -I $(<D) -I $(STDLIB_DIR) $< $(MLTOJS) -mode pseudo -I $(STDLIB_DIR) $<
%.ptoken.js: %.ml %.cmi $(MLTOJS_BIN) %.ptoken.js: %.ml %.cmi $(MLTOJS_BIN)
$(MLTOJS) -mode ptoken -I $(<D) -I $(STDLIB_DIR) $< $(MLTOJS) -mode ptoken -I $(STDLIB_DIR) $<
##### Rule for lineof.js ##### Rule for lineof.js
$(JSREF_DIR)/lineof.js: $(ALL_LINEOF) $(LINEOF_BIN) lineof.js: $(ALL_LINEOF) $(LINEOF_BIN)
$(LINEOF) -o $@ $(ALL_LINEOF) $(LINEOF) -o $@ $(ALL_LINEOF)
##### Rule for assembly.js ##### Rule for assembly.js
#--LATER (optional) add as dependencies the unlog files: $(JSREF_ML:.ml=.unlog.js) #--LATER (optional) add as dependencies the unlog files: $(JSREF_ML:.ml=.unlog.js)
$(JSREF_DIR)/assembly.js: $(ASSEMBLY_JS) $(ASEMBLY_BIN) assembly.js: $(ASSEMBLY_JS) $(ASSEMBLY_BIN)
$(ASSEMBLY) -o $@ $(ASSEMBLY_JS) $(ASSEMBLY) -o $@ $(ASSEMBLY_JS)
# -stdlib $(STDLIB_DIR)/stdlib.js # -stdlib $(STDLIB_DIR)/stdlib.js
##### Rule for displayed_sources.js ##### Rule for displayed_sources.js
$(JSREF_DIR)/displayed_sources.js: $(ALL_DISPLAYED) $(DISPLAYGEN_BIN) displayed_sources.js: $(ALL_DISPLAYED) $(DISPLAYGEN_BIN)
$(DISPLAYGEN) -o $@ $(ALL_DISPLAYED) $(DISPLAYGEN) -o $@ $(ALL_DISPLAYED)
##################################################################### #####################################################################
# Short targets # Short targets
all: assembly lineof display ALL_TARGETS := lineof.js assembly.js displayed_sources.js
all: $(ALL_TARGETS)
cmi: $(JSREF_ML:.ml=.cmi) $(JSREF_MLI:.mli=.cmi) cmi: $(JSREF_ML:.ml=.cmi) $(JSREF_MLI:.mli=.cmi)
gen: $(JSREF_ML:.ml=.log.js) $(JSREF_ML:.ml=.unlog.js) $(JSREF_ML:.ml=.token.js) gen: $(JSREF_ML:.ml=.log.js) $(JSREF_ML:.ml=.unlog.js) $(JSREF_ML:.ml=.token.js)
ref: $(JSREF_DIR)/JsInterpreter.log.js $(JSREF_DIR)/JsInterpreter.unlog.js $(JSREF_DIR)/JsInterpreter.token.js ref: JsInterpreter.log.js JsInterpreter.unlog.js JsInterpreter.token.js
pseudo: $(JSREF_DIR)/JsInterpreter.pseudo.js $(JSREF_DIR)/JsInterpreter.ptoken.js pseudo: JsInterpreter.pseudo.js JsInterpreter.ptoken.js
log: $(JSREF_ML:.ml=.log.js) $(JSREF_ML:.ml=.token.js) log: $(JSREF_ML:.ml=.log.js) $(JSREF_ML:.ml=.token.js)
unlog: $(JSREF_ML:.ml=.unlog.js) unlog: $(JSREF_ML:.ml=.unlog.js)
lineof: $(JSREF_DIR)/lineof.js lineof: lineof.js
assembly: $(JSREF_DIR)/assembly.js assembly: assembly.js
display: $(JSREF_DIR)/displayed_sources.js display: displayed_sources.js
############################################################### ###############################################################
# Global options # Global options
.PHONY: all cmi gen ref pseudo log unlog lineof assembly display .PHONY: all cmi gen ref pseudo log unlog lineof assembly display clean
# Do not delete intermediate files. # Do not delete intermediate files.
.SECONDARY: .SECONDARY:
...@@ -181,10 +179,10 @@ display: $(JSREF_DIR)/displayed_sources.js ...@@ -181,10 +179,10 @@ display: $(JSREF_DIR)/displayed_sources.js
##################################################################### #####################################################################
# Clean # Clean
DIRTY_EXTS := cmi,.mlloc.js,token.js,log.js,unlog.js,d,ml.d,mli.d,js.pre DIRTY_EXTS := cmi,{mlloc,log,unlog,pseudo,token,ptoken}.js
clean: clean:
rm -f $(JSREF_DIR)/lineof.js bash -c "rm -f $(ALL_TARGETS)"
rm -f $(JSREF_DIR)/assembly.js bash -c "rm -f *.{$(DIRTY_EXTS)}"
bash -c "rm -f $(JSREF_DIR)/*.{$(DIRTY_EXTS)}" bash -c "rm -f .depends"
bash -c "rm -f $(JSREF_DIR)/.depends"
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