diff --git a/src/Makefile b/src/Makefile index 0514014..b465ff7 100644 --- a/src/Makefile +++ b/src/Makefile @@ -41,8 +41,7 @@ $(info ---------------------------------------------------) # relative to "src/" JAVA_PKG_ROOT=foundation/pEp/jniadapter/ JAVA_BUILD_ROOT=../build/java/ -# Separate dir for derived objects DOES NOT WORK YET :/ (has to be .) -OBJ_DIR=. +OBJ_DIR=../build/cxx/ DIST_DIR=../dist/ # for "make clean" only @@ -86,7 +85,8 @@ CXXFLAGS+= -MMD -MP SOURCES=$(wildcard *.cc) SOURCES+=$(GENERATED_CC) -OBJECTS=$(SOURCES:.cc=.o) +tmp=$(SOURCES:.cc=.o) +OBJECTS=$(addprefix $(OBJ_DIR), $(tmp)) DEPENDS=$(OBJECTS:.o=.d) .PHONY: all lib-java lib-cxx compile-java compile-cxx gen-jni-headers codegen clean create-dirs remove-dirs @@ -108,10 +108,10 @@ $(LIB_JAVA): compile-java $(JAVA_BIN_DIR)/jar cf $(DIST_DIR)/$@ -C $(JAVA_BUILD_ROOT) foundation $(LIB_CXX_DYN): compile-cxx - $(CXX) *.o $(LDFLAGS) $(LDLIBS) -o $(DIST_DIR)/$@ + $(CXX) $(OBJ_DIR)*.o $(LDFLAGS) $(LDLIBS) -o $(DIST_DIR)/$@ $(LIB_CXX_STATIC): compile-cxx - $(AR) -r $(DIST_DIR)/$@ *.o + $(AR) -r $(DIST_DIR)/$@ $(OBJ_DIR)*.o # -------------- Compile ----------------- @@ -119,8 +119,12 @@ compile-java: create-dirs codegen $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/*.java $(JAVA_BIN_DIR)/javac -d $(JAVA_BUILD_ROOT) $(JAVA_PKG_ROOT)/exceptions/*.java -# Compile C++ using implicit rules + compile-cxx: create-dirs gen-jni-headers $(OBJECTS) + +$(OBJECTS): $(OBJ_DIR)%.o: %.cc + $(CXX) $(CXXFLAGS) -c $< -o $@ + -include $(DEPENDS) @@ -145,6 +149,7 @@ create-dirs: $(MAKE) -C codegen create-dirs mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_ROOT) mkdir -p $(JAVA_BUILD_ROOT)/$(JAVA_PKG_ROOT)/exceptions + mkdir -p $(OBJ_DIR) mkdir -p $(DIST_DIR) #rm -rf is too dangerous for vars