From 1c26bf082627942b1aed7699f2c827c33f548f0a Mon Sep 17 00:00:00 2001 From: Joachim Klein Date: Thu, 8 Mar 2018 15:14:47 +0100 Subject: [PATCH] Makefiles: add Makefiles for common, cex package; update for simulator Now, all the top-level packages have Makefiles and search for Java files in subpackages. If a .java file does not get picked up by the Makefiles, it will nonetheless be compiled if referenced from somewhere else in the project, but dependency tracking at the level of 'make' is broken. --- prism/Makefile | 2 +- prism/src/cex/Makefile | 42 ++++++++++++++++++++++++++++++++++++ prism/src/common/Makefile | 42 ++++++++++++++++++++++++++++++++++++ prism/src/simulator/Makefile | 2 +- 4 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 prism/src/cex/Makefile create mode 100644 prism/src/common/Makefile diff --git a/prism/Makefile b/prism/Makefile index ec19365f..cf0c87b2 100644 --- a/prism/Makefile +++ b/prism/Makefile @@ -299,7 +299,7 @@ JAVA_INCLUDES = -I $(JAVA_JNI_H_DIR) -I $(JAVA_JNI_MD_H_DIR) # Main part of Makefile # ######################### -MAKE_DIRS = dd jdd odd dv prism mtbdd sparse hybrid parser settings userinterface pepa/compiler simulator jltl2ba jltl2dstar explicit pta param strat automata +MAKE_DIRS = dd jdd odd dv prism mtbdd sparse hybrid parser settings userinterface pepa/compiler simulator jltl2ba jltl2dstar explicit pta param strat automata common cex EXT_PACKAGES = lpsolve55 lp_solve_5.5_java diff --git a/prism/src/cex/Makefile b/prism/src/cex/Makefile new file mode 100644 index 00000000..5d76758e --- /dev/null +++ b/prism/src/cex/Makefile @@ -0,0 +1,42 @@ +################################################ +# NB: This Makefile is designed to be called # +# from the main PRISM Makefile. It won't # +# work on its own because it needs # +# various options to be passed in # +################################################ + +.SUFFIXES: .o .c .cc + +# Reminder: $@ = target, $* = target without extension, $< = dependency + +THIS_DIR = cex +PRISM_DIR_REL = ../.. + +JAVA_FILES_ALL = $(wildcard *.java) +JAVA_FILES = $(subst package-info.java,,$(JAVA_FILES_ALL)) +CLASS_FILES = $(JAVA_FILES:%.java=$(PRISM_DIR_REL)/$(CLASSES_DIR)/$(THIS_DIR)/%.class) + +PRISM_CLASSPATH = "$(THIS_DIR)/$(PRISM_DIR_REL)/$(CLASSES_DIR)$(CLASSPATHSEP)$(THIS_DIR)/$(PRISM_DIR_REL)/lib/*" + +default: all + +all: checks $(CLASS_FILES) + +# inhibit building in parallel (-j option) +.NOTPARALLEL: + +# Try and prevent accidental makes (i.e. called manually, not from top-level Makefile) +checks: + @if [ "$(SRC_DIR)" = "" ]; then \ + (echo "Error: This Makefile is designed to be called from the main PRISM Makefile"; exit 1) \ + fi; + +$(PRISM_DIR_REL)/$(CLASSES_DIR)/$(THIS_DIR)/%.class: %.java + (cd ..; $(JAVAC) -sourcepath $(THIS_DIR)/$(PRISM_DIR_REL)/$(SRC_DIR) -classpath $(PRISM_CLASSPATH) -d $(THIS_DIR)/$(PRISM_DIR_REL)/$(CLASSES_DIR) $(THIS_DIR)/$<) + +clean: checks + @rm -f $(CLASS_FILES) + +celan: clean + +################################################# diff --git a/prism/src/common/Makefile b/prism/src/common/Makefile new file mode 100644 index 00000000..e4323719 --- /dev/null +++ b/prism/src/common/Makefile @@ -0,0 +1,42 @@ +################################################ +# NB: This Makefile is designed to be called # +# from the main PRISM Makefile. It won't # +# work on its own because it needs # +# various options to be passed in # +################################################ + +.SUFFIXES: .o .c .cc + +# Reminder: $@ = target, $* = target without extension, $< = dependency + +THIS_DIR = common +PRISM_DIR_REL = ../.. + +JAVA_FILES_ALL = $(wildcard *.java iterable/*.java functions/primitive/*.java) +JAVA_FILES = $(subst package-info.java,,$(JAVA_FILES_ALL)) +CLASS_FILES = $(JAVA_FILES:%.java=$(PRISM_DIR_REL)/$(CLASSES_DIR)/$(THIS_DIR)/%.class) + +PRISM_CLASSPATH = "$(THIS_DIR)/$(PRISM_DIR_REL)/$(CLASSES_DIR)$(CLASSPATHSEP)$(THIS_DIR)/$(PRISM_DIR_REL)/lib/*" + +default: all + +all: checks $(CLASS_FILES) + +# inhibit building in parallel (-j option) +.NOTPARALLEL: + +# Try and prevent accidental makes (i.e. called manually, not from top-level Makefile) +checks: + @if [ "$(SRC_DIR)" = "" ]; then \ + (echo "Error: This Makefile is designed to be called from the main PRISM Makefile"; exit 1) \ + fi; + +$(PRISM_DIR_REL)/$(CLASSES_DIR)/$(THIS_DIR)/%.class: %.java + (cd ..; $(JAVAC) -sourcepath $(THIS_DIR)/$(PRISM_DIR_REL)/$(SRC_DIR) -classpath $(PRISM_CLASSPATH) -d $(THIS_DIR)/$(PRISM_DIR_REL)/$(CLASSES_DIR) $(THIS_DIR)/$<) + +clean: checks + @rm -f $(CLASS_FILES) + +celan: clean + +################################################# diff --git a/prism/src/simulator/Makefile b/prism/src/simulator/Makefile index 7ea4517d..bc33889d 100644 --- a/prism/src/simulator/Makefile +++ b/prism/src/simulator/Makefile @@ -12,7 +12,7 @@ THIS_DIR = simulator PRISM_DIR_REL = ../.. -JAVA_FILES_ALL = $(wildcard *.java sampler/*.java networking/*.java) +JAVA_FILES_ALL = $(wildcard *.java sampler/*.java networking/*.java method/*.java) JAVA_FILES = $(patsubst %package-info.java,,$(JAVA_FILES_ALL)) CLASS_FILES = $(JAVA_FILES:%.java=$(PRISM_DIR_REL)/$(CLASSES_DIR)/$(THIS_DIR)/%.class)