From ec1a7c4350b570c166c6bfb915810b22288d4e4a Mon Sep 17 00:00:00 2001
From: Thomas Wood <thomas.wood09@imperial.ac.uk>
Date: Wed, 12 Oct 2016 15:40:27 +0200
Subject: [PATCH] Remove references to JSREF_DIR from jsref Makefile, as now
 self-contained

---
 jsref/Makefile | 70 ++++++++++++++++++++++++--------------------------
 1 file changed, 34 insertions(+), 36 deletions(-)

diff --git a/jsref/Makefile b/jsref/Makefile
index 6b2617d..cbe992d 100644
--- a/jsref/Makefile
+++ b/jsref/Makefile
@@ -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"
-- 
GitLab