summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'prop-to-pred/Makefile')
-rw-r--r--prop-to-pred/Makefile81
1 files changed, 81 insertions, 0 deletions
diff --git a/prop-to-pred/Makefile b/prop-to-pred/Makefile
new file mode 100644
index 0000000..bb48bfe
--- /dev/null
+++ b/prop-to-pred/Makefile
@@ -0,0 +1,81 @@
+## Parameters ##################################################################
+TO_PRED_TEMPLATE_DIR ?=
+INFERRED_LEVEL_FILE ?=
+PARSING_SCRIPT ?= java -cp "./src" ParserEntry
+PROPERTIES_DIR ?=
+#### Where to find the properties to verify
+ALL_PROPERTY_FILES ?= $(wildcard $(PROPERTIES_DIR)/*.pro)
+
+#### Binaries
+###### JRE binary
+JAVA ?= java
+
+###### JDK binary
+JAVAC ?= javac
+
+## Parameters Sanity Check #####################################################
+ifeq ($(strip $(PARSING_SCRIPT)),)
+$(error No PARSING_SCRIPT defined as parameter.)
+endif
+
+ifeq ($(strip $(JAVA)),)
+$(error No Java executable defined as parameter.)
+endif
+
+ifeq ($(strip $(JAVAC)),)
+$(error No Java compiler defined as parameter.)
+endif
+
+################################################################################
+CLASSPATH = "./src/"
+
+## Makefile Magic ##############################################################
+SOURCES = $(wildcard src/*.java)
+CLASSES = $(SOURCES:.java=.class)
+
+PRED_TO_INFER = \
+ $(addsuffix .pp,$(addprefix $(TO_PRED_TEMPLATE_DIR)/,$(notdir $(basename $(ALL_PROPERTY_FILES)))))
+ADDITIONAL_MAKEFILES = \
+ $(addsuffix .deps,$(addprefix $(DEPENDENCIES_DIR)/,$(basename $(notdir $(ALL_PROPERTY_FILES)))))
+
+export
+## Makefile Rules ##############################################################
+compile: $(CLASSES) $(PRED_TO_INFER) $(ADDITIONAL_MAKEFILES)
+
+model:
+
+solutions:
+
+clean:
+ rm -f $(CLASSES)
+ rm -f $(TO_PRED_TEMPLATE_DIR)/*
+ rm -f $(INFERRED_LEVEL_FILE)
+
+clean_model:
+
+clean_solutions:
+ rm -f $(TO_PRED_TEMPLATE_DIR)/*
+ rm -f $(INFERRED_LEVEL_FILE)
+
+########
+$(TO_PRED_TEMPLATE_DIR)/%.pp: $(PROPERTIES_DIR)/%.pro
+ cat $< | sed 's/.*;;.*//g' | tr -d "\n\r" \
+ | sed -n 's/.*(tag_existing[ \t]\+([ \t]*\(\([ \t]*([^)]\+)\)\+\)[ \t]*.*)/\1/p' \
+ | sed 's/)/)\n/g' | sed 's/[ \t]\+/ /g' | tr -d "()" \
+ | $(PARSING_SCRIPT) \
+ $(patsubst %.pp,%,$(notdir $(basename $@))) \
+ $@ \
+ $(INFERRED_LEVEL_FILE)
+ $(MAKE) $(DEPENDENCIES_DIR)/$(patsubst %.pp,%,$(notdir $(basename $@))).deps
+
+$(DEPENDENCIES_DIR)/%.deps: $(PROPERTIES_DIR)/%.pro
+ printf "$(SOL_DIR)/$(notdir $(basename $@)).sol.ready: " > $@
+ for dep in `sed -n 's/^#require \"\(.*\)\"$$/\1/p' $<` ; do \
+ printf "$(SOL_DIR)/$$dep.sol " >> $@ ; \
+ done
+ printf "\n\t touch $(SOL_DIR)/$(notdir $(basename $@)).sol.ready\n\n" >> $@
+
+
+########
+%.class: %.java
+ $(JAVAC) -cp $(CLASSPATH) $<