|
|
|
MAKE = make
|
|
|
|
JAVA_MODELS = java
|
|
|
|
C_MODELS = c
|
|
|
|
CPP_MODELS = cpp
|
|
|
|
OBJC_MODELS = objc
|
|
|
|
CWD = $(shell pwd)
|
|
|
|
BINDIR = $(CWD)/../bin
|
|
|
|
LIBDIR = $(CWD)/../lib
|
|
|
|
PYTHONLIBDIR = $(LIBDIR)/python/inferlib
|
|
|
|
CAPTURELIBDIR = $(PYTHONLIBDIR)/capture
|
|
|
|
LIB_SPECS = $(LIBDIR)/specs
|
|
|
|
|
|
|
|
INFERANALYZE = $(BINDIR)/InferAnalyze
|
|
|
|
INFERCLANG = $(BINDIR)/InferClang
|
|
|
|
INFERJAVA = $(BINDIR)/InferJava
|
|
|
|
JAVA_SCRIPTS = $(addprefix $(PYTHONLIBDIR)/, jwlib.py infer.py) \
|
|
|
|
$(BINDIR)/infer
|
|
|
|
CLANG_SCRIPTS = $(addprefix $(CAPTURELIBDIR)/, make.py) \
|
|
|
|
$(BINDIR)/infer
|
|
|
|
|
|
|
|
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)
|
|
|
|
ifneq (, $(shell which xcode-select 2>&-))
|
|
|
|
make -C $(OBJC_MODELS) install
|
|
|
|
else
|
|
|
|
@echo "Xcode not installed or 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
|