summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'instr-to-kodkod/Makefile')
-rw-r--r--instr-to-kodkod/Makefile138
1 files changed, 101 insertions, 37 deletions
diff --git a/instr-to-kodkod/Makefile b/instr-to-kodkod/Makefile
index 9823919..815c527 100644
--- a/instr-to-kodkod/Makefile
+++ b/instr-to-kodkod/Makefile
@@ -1,60 +1,124 @@
-## Target(s) Configuration #####################################################
-#MODEL_FILES = $(wildcard ../data/instructions/*.mod)
-MODEL_FILES = \
- ../ast-to-instr/structural.mod \
- ../ast-to-instr/depths.mod \
- $(wildcard ../ast-to-instr/cfg_*.mod) \
- $(wildcard ../cfg-to-paths/*.mod)
-MAP_FILES = $(wildcard ../ast-to-instr/*.map)
-LEVEL_DIR = $(wildcard ../data/level/*.lvl)
+## Parameters ##################################################################
+#### Where to find the level files
+ifndef LEVEL_FILES
+LEVEL_FILES =
+endif
-PROPERTIES = $(wildcard ../data/property/cnes/*.pro)
+#### Where to find the properties to verify
+ifndef PROPERTY_FILES
+PROPERTY_FILES =
+endif
-## Executables #################################################################
-JAVAC = javac
+#### Where to find the model
+ifndef MODEL_DIR
+MODEL_DIR =
+endif
+
+#### Where to store the CFG models
+ifndef CFG_MODEL_DIR
+CFG_MODEL_DIR = $(MODEL_DIR)/cfg/
+endif
+
+#### Where to output the solutions.
+ifndef SOL_DIR
+SOL_DIR =
+endif
+
+#### Where to get the missing Jar files.
+ifndef JAR_SOURCE
+JAR_SOURCE = "https://noot-noot.org/tabellion/jar/"
+endif
+
+#### Binaries
+###### JRE binary
+ifndef JAVA
JAVA = java
+endif
+
+###### JDK binary
+ifndef JAVAC
+JAVAC = javac
+endif
+
+##### Downloader
+ifndef DOWNLOADER
DOWNLOADER = wget
+endif
-## Java Config #################################################################
-CLASSPATH = "kodkod.jar:./src/:./parser/:org.sat4j.core.jar:antlr-4.7-complete.jar"
+## Parameters Sanity Check #####################################################
+ifeq ($(strip $(LEVEL_FILES)),)
+$(error No LEVEL_FILES defined as parameter.)
+endif
+
+ifeq ($(strip $(PROPERTY_FILES)),)
+$(error No PROPERTY_FILES defined as parameter.)
+endif
+
+ifeq ($(strip $(MODEL_DIR)),)
+$(error No MODEL_DIR defined as parameter.)
+endif
+
+ifeq ($(strip $(CFG_MODEL_DIR)),)
+$(error No CFG_MODEL_DIR defined as parameter.)
+endif
-## Dependencies ################################################################
-JAR_SOURCE = https://noot-noot.org/onera_2017/jar/
+ifeq ($(strip $(SOL_DIR)),)
+$(error No SOL_DIR defined as parameter.)
+endif
+
+ifeq ($(strip $(JAR_SOURCE)),)
+$(error No JAR_SOURCE 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
+
+ifeq ($(strip $(DOWNLOADER)),)
+$(error No Java executable defined as parameter.)
+endif
+
+################################################################################
+CLASSPATH = "kodkod.jar:./src/:./parser/:org.sat4j.core.jar:antlr-4.7-complete.jar"
REQUIRED_JARS = kodkod.jar org.sat4j.core.jar antlr-4.7-complete.jar
## Makefile Magic ##############################################################
-GLOBAL_INPUT_FILES = $(MODEL_FILES) $(LEVEL_DIR) $(MAP_FILES)
-SOURCES = $(wildcard src/*.java parser/*.java)
-GRAMMARS = $(wildcard parser/*.g4)
+SOURCES = $(wildcard src/*.java)
CLASSES = $(SOURCES:.java=.class)
-SOLUTIONS = $(PROPERTIES:.pro=.sol)
+SOLUTION_FILES = $(addprefix $(SOL_DIR)/,$(notdir $(PROPERTY_FILES:.pro=.sol)))
+MODEL_FILES = \
+ $(MODEL_DIR)/structural.mod \
+ $(filter-out %structural.mod,$(wildcard $(MODEL_DIR)/*.mod))
+export
## Makefile Rules ##############################################################
-run: $(SOLUTIONS)
+run: cfg-generator parser $(SOLUTION_FILES)
+
+cfg-generator:
+ $(MAKE) -C cfg-to-paths
-all: parser/PropertyParser.java $(CLASSES)
+parser: antlr-4.7-complete.jar
$(MAKE) -C parser
- $(MAKE) -C ../ast-to-instr
- $(MAKE) -C ../cfg-to-paths
clean:
- rm -f $(CLASSES)
$(MAKE) -C parser clean
- $(MAKE) -C ../ast-to-instr clean
- $(MAKE) -C ../cfg-to-paths clean
+ $(MAKE) -C cfg-to-paths clean
+ rm -f $(CLASSES)
-%.sol: %.pro parser/PropertyParser.java $(CLASSES) $(REQUIRED_JARS)
- echo "Solving \"$<\"..."
- $(MAKE) -C ../ast-to-instr
- $(MAKE) -C ../cfg-to-paths
- $(JAVA) -cp $(CLASSPATH) Main $@ $< $(GLOBAL_INPUT_FILES) -v
+%.sol: cfg-generator parser $(CLASSES) $(PROPERTY_FILES) $(MODEL_FILES) $(LEVEL_FILES)
+ $(JAVA) -cp $(CLASSPATH) Main $@ \
+ $(filter %$(basename $(notdir $@)).pro,$(PROPERTY_FILES)) \
+ $(LEVEL_FILES) \
+ $(MODEL_FILES)
+ -v
-%.class: %.java $(REQUIRED_JARS) parser/PropertyParser.java
+%.class: %.java $(REQUIRED_JARS) parser
$(JAVAC) -cp $(CLASSPATH) $<
%.jar:
- echo "Attempting to download missing jar '$@'"
+ echo "Attempting to download missing jar '$@'..."
$(DOWNLOADER) "$(JAR_SOURCE)/$@"
-
-parser/PropertyParser.java: antlr-4.7-complete.jar $(GRAMMAR)
- $(MAKE) -C parser