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 @@
all: # Defined below
JSREF_DIR := .
JSREF_ML := $(filter-out JsOutput.ml,$(wildcard $(JSREF_DIR)/*.ml))
JSREF_MLI := $(wildcard $(JSREF_DIR)/*.mli)
JSREF_ML := $(filter-out JsOutput.ml,$(wildcard *.ml))
JSREF_MLI := $(wildcard *.mli)
GENERATOR_DIR := ../generator
STDLIB_DIR := $(GENERATOR_DIR)/stdlib_ml
......@@ -50,16 +49,14 @@ ASSEMBLY_JS_FILES := \
JsInterpreterMonads.unlog.js \
JsInterpreter.log.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
DISPLAYED := $(addprefix $(JSREF_DIR)/,$(DISPLAYED_FILES))
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)
......@@ -84,95 +81,96 @@ ASSEMBLY := $(ASSEMBLY_BIN)
DISPLAYGEN_BIN := $(GENERATOR_DIR)/displayed_sources.byte
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
ifeq ($(filter clean%,$(MAKECMDGOALS)),)
include $(JSREF_DIR)/.depends
include .depends
endif
###############################################################
# Rules
##### Rule for dependencies
$(JSREF_DIR)/.depends: $(JSREF_ML)
$(OCAMLDEP) -all -I $(<D) $(<D)/* > $@
.depends: $(JSREF_ML)
$(OCAMLDEP) -all $(<D)/* > $@
##### Rule for cmi
%.cmi: %.ml $(MLTOJS_BIN)
$(MLTOJS) -mode cmi -I $(<D) -I $(STDLIB_DIR) $<
$(MLTOJS) -mode cmi -I $(STDLIB_DIR) $<
%.cmi: %.mli
ocamlc -I $(JSREF_DIR) -I $(STDLIB_DIR) -open Stdlib $<
ocamlc -I $(STDLIB_DIR) -open Stdlib $<
##### Rule for log/unlog/token
%.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)
$(MLTOJS) -mode unlog -I $(<D) -I $(STDLIB_DIR) $<
$(MLTOJS) -mode unlog -I $(STDLIB_DIR) $<
%.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)
$(MLTOJS) -mode pseudo -I $(<D) -I $(STDLIB_DIR) $<
$(MLTOJS) -mode pseudo -I $(STDLIB_DIR) $<
%.ptoken.js: %.ml %.cmi $(MLTOJS_BIN)
$(MLTOJS) -mode ptoken -I $(<D) -I $(STDLIB_DIR) $<
$(MLTOJS) -mode ptoken -I $(STDLIB_DIR) $<
##### Rule for lineof.js
$(JSREF_DIR)/lineof.js: $(ALL_LINEOF) $(LINEOF_BIN)
lineof.js: $(ALL_LINEOF) $(LINEOF_BIN)
$(LINEOF) -o $@ $(ALL_LINEOF)
##### Rule for assembly.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)
# -stdlib $(STDLIB_DIR)/stdlib.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)
#####################################################################
# 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)
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)
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
.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.
.SECONDARY:
......@@ -181,10 +179,10 @@ display: $(JSREF_DIR)/displayed_sources.js
#####################################################################
# 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:
rm -f $(JSREF_DIR)/lineof.js
rm -f $(JSREF_DIR)/assembly.js
bash -c "rm -f $(JSREF_DIR)/*.{$(DIRTY_EXTS)}"
bash -c "rm -f $(JSREF_DIR)/.depends"
bash -c "rm -f $(ALL_TARGETS)"
bash -c "rm -f *.{$(DIRTY_EXTS)}"
bash -c "rm -f .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