MAKE = make JAVA_MODELS = java C_MODELS = c CPP_MODELS = cpp OBJC_MODELS = objc CWD = $(shell pwd) BINDIR = $(CWD)/../bin LIBDIR = $(CWD)/../lib LIB_SPECS = $(LIBDIR)/specs INFERANALYZE = $(BINDIR)/InferAnalyze INFERCLANG = $(BINDIR)/InferClang INFERJAVA = $(BINDIR)/InferJava JAVA_SCRIPTS = $(addprefix $(BINDIR)/, jwlib.py inferlib.py inferJ) CLANG_SCRIPTS = $(addprefix $(BINDIR)/, inferiOS) # Add more once this part is stable PLATFORM = $(shell uname) JAVA_MODELS_JAR = ../lib/java/models.jar JAVA_MODELS_SOURCES = $(shell find $(JAVA_MODELS)/src -name "*.java") C_MODELS_SOURCES = $(shell find $(C_MODELS)/src -name "*.c") CPP_MODELS_SOURCES = $(shell find $(CPP_MODELS)/src -name "*.cpp") OBJC_MODELS_SOURCES = $(shell find $(OBJC_MODELS)/src -name "*.m" -or -name "*.c") C_MODELS_FILE = $(LIB_SPECS)/c_models CPP_MODELS_FILE = $(LIB_SPECS)/cpp_models OBJC_MODELS_FILE = $(LIB_SPECS)/objc_models .PHONY: java clang clean java: $(JAVA_MODELS_JAR) clang: $(C_MODELS_FILE) $(CPP_MODELS_FILE) $(OBJC_MODELS_FILE) $(JAVA_MODELS_JAR): $(JAVA_MODELS_SOURCES) $(INFERANALYZE) $(INFERJAVA) $(JAVA_SCRIPTS) make -C $(JAVA_MODELS) $(C_MODELS_FILE): $(C_MODELS_SOURCES) $(INFERANALYZE) $(INFERCLANG) make -C $(C_MODELS) install $(CPP_MODELS_FILE): $(CPP_MODELS_SOURCES) $(INFERANALYZE) $(INFERCLANG) make -C $(CPP_MODELS) install $(OBJC_MODELS_FILE): $(OBJC_MODELS_SOURCES) $(INFERANALYZE) $(INFERCLANG) ifeq ($(PLATFORM), Darwin) make -C $(OBJC_MODELS) install else @echo "Platform $(PLATFORM) not supported for objc models, skipping." endif clean: rm -f $(LIB_SPECS)/*.specs $(MAKE) -C $(JAVA_MODELS) clean $(MAKE) -C $(C_MODELS) clean $(MAKE) -C $(CPP_MODELS) clean $(MAKE) -C $(OBJC_MODELS) clean