Merge pull request #27 from krinkinmu/fastpath-opt
[libcds.git] / build / Makefile
index dd545cc3fdd7efa0b86e9d7713feea516290cd51..ba28754e69c1441e467634aed0e40fce1e7b3ac0 100644 (file)
@@ -5,7 +5,7 @@
 .SUFFIXES:.cpp .c .ro
 
 # make_distrib.pl substitutes the correct version
-VERSION=2.0.0
+VERSION=2.1.0
 
 # boost_thread lib used by test application. 
 # You may change the library name
@@ -30,7 +30,7 @@ endif
 endif
 
 COMP_OPT = -c $(CFLAGS) $(BASE_OPT)
-CPP_COMP_OPT = -std=c++11 -c $(CXXFLAGS) $(BASE_OPT)
+CPP_COMP_OPT = -MMD -std=c++11 -c $(CXXFLAGS) $(BASE_OPT)
 
 COMPILER_ROOT = $(shell dirname `dirname \`which       $(CXX)\``)
 
@@ -43,7 +43,8 @@ LD_OPTS = $(LDFLAGS)
 
 include ../projects/source.libcds.mk
 CDS_OBJS := $(addprefix $(OBJ_PATH)/,$(notdir $(CDS_SOURCES)))
-CDS_OBJS :=$(CDS_OBJS:%.cpp=%.o)
+CDS_OBJS := $(CDS_OBJS:%.cpp=%.o)
+CDS_OBJS_DEPS := $(CDS_OBJS:%.o=%.d)
 CDS_SOURCES := $(CDS_SOURCES:%.cpp=../%.cpp)
 
 ifeq ($(platform),mingw)
@@ -59,6 +60,7 @@ else
 endif
 endif
 
+-include $(CDS_OBJS_DEPS)
 $(CDS_OBJS): $(OBJ_PATH)/%.o: ../src/%.cpp
        $(CXX) $(CPP_COMP_OPT) $(CPP_BUILD_CDS_OPT) -o $@ $<
 
@@ -66,23 +68,23 @@ ifeq ($(platform),mingw)
 $(CDS_DEBUG_LIB): $(BIN_PATH)/$(CDS_DEBUG_LIB)
 
 $(BIN_PATH)/$(CDS_DEBUG_LIB) : $(CDS_OBJS)
-       $(CXX) $(LD_OPTS) -Wl,--out-implib,$(BIN_PATH)/$(CDS_DEBUG_LIB).a $(CDS_OBJS) -o $@ 
+       $(CXX) $(LD_OPTS) -Wl,--out-implib,$(BIN_PATH)/$(CDS_DEBUG_LIB).a $(CDS_OBJS) -o $@ $(LDLIBS)
 
 $(CDS_RELEASE_LIB) : $(BIN_PATH)/$(CDS_RELEASE_LIB)
 
 $(BIN_PATH)/$(CDS_RELEASE_LIB) : $(CDS_OBJS)
-       $(CXX) $(LD_OPTS) $(CDS_OBJS) -Wl,--out-implib,$(BIN_PATH)/$(CDS_RELEASE_LIB).a -o $@ 
+       $(CXX) $(LD_OPTS) $(CDS_OBJS) -Wl,--out-implib,$(BIN_PATH)/$(CDS_RELEASE_LIB).a -o $@ $(LDLIBS)
     
 debug : $(CDS_DEBUG_LIB)
 release : $(CDS_RELEASE_LIB)
 else
 $(CDS_DEBUG_LIB).$(VERSION) : $(CDS_OBJS)
-       $(CXX) $(LD_OPTS) $(CDS_PLATFORM_RELEASE_LDFLAGS) $(CDS_OBJS) -o $@ 
+       $(CXX) $(LD_OPTS) $(CDS_PLATFORM_DEBUG_LDFLAGS) $(CDS_OBJS) -o $@ $(LDLIBS)
        mv ./$(CDS_DEBUG_LIB).$(VERSION) $(BIN_PATH)/$(CDS_DEBUG_LIB).$(VERSION)
        ln -sf $(CDS_DEBUG_LIB).$(VERSION) $(BIN_PATH)/$(CDS_DEBUG_LIB)
 
 $(CDS_RELEASE_LIB).$(VERSION) : $(CDS_OBJS)
-       $(CXX) $(LD_OPTS) $(CDS_OBJS) $(CDS_PLATFORM_DEBUG_LDFLAGS) -o $@ 
+       $(CXX) $(LD_OPTS) $(CDS_OBJS) $(CDS_PLATFORM_RELEASE_LDFLAGS) -o $@ $(LDLIBS)
        mv ./$(CDS_RELEASE_LIB).$(VERSION) $(BIN_PATH)/$(CDS_RELEASE_LIB).$(VERSION)
        ln -sf $(CDS_RELEASE_LIB).$(VERSION) $(BIN_PATH)/$(CDS_RELEASE_LIB)
     
@@ -101,8 +103,10 @@ OBJ_TEST_PATH=$(OBJ_PATH)
 include ../projects/source.test-common.mk
 CDS_TESTCOMMON_SOURCES := $(CDS_TESTCOMMON_SOURCES:%.cpp=../%.cpp)
 TEST_COMMON_OBJS := $(CDS_TESTCOMMON_SOURCES:%.cpp=%.o)
+TEST_COMMON_OBJS_DEPS := $(TEST_COMMON_OBJS:%.o=%.d)
 
 TEST_COMMONHDR_SRC_DIR=../tests
+-include $(TEST_COMMON_OBJS_DEPS)
 $(TEST_COMMON_OBJS) : %.o : %.cpp
        $(CXX) $(CPP_COMP_OPT) -I$(TEST_COMMONHDR_SRC_DIR) $< -o $@
 
@@ -110,15 +114,19 @@ $(TEST_COMMON_OBJS) : %.o : %.cpp
 include ../projects/source.test-hdr.mk
 CDS_TESTHDR_SOURCES := $(CDS_TESTHDR_SOURCES:%.cpp=../%.cpp)
 TESTHDR_OBJS := $(CDS_TESTHDR_SOURCES:%.cpp=%.o)
+TESTHDR_OBJS_DEPS := $(TESTHDR_OBJS:%.o=%.d)
 
 TESTHDR_SRC_DIR=../tests/test-hdr
+-include $(TESTHDR_OBJS_DEPS)
 $(TESTHDR_OBJS): %.o: %.cpp
        $(CXX) $(CPP_COMP_OPT) -I$(TESTHDR_SRC_DIR) -I$(TEST_COMMONHDR_SRC_DIR) $< -o $@
 
 include ../projects/source.test-hdr.offsetof.mk
 CDS_TESTHDR_OFFSETOF_SOURCES := $(CDS_TESTHDR_OFFSETOF_SOURCES:%.cpp=../%.cpp)
 TESTHDR_OBJS_NO_OFFSETOF_WARN := $(CDS_TESTHDR_OFFSETOF_SOURCES:%.cpp=%.o)
+TESTHDR_OBJS_NO_OFFSETOF_WARN_DEPS := $(TESTHDR_OBJS_NO_OFFSETOF_WARN:%.o=%.d)
 
+-include $(TESTHDR_OBJS_NO_OFFSETOF_WARN_DEPS)
 $(TESTHDR_OBJS_NO_OFFSETOF_WARN): %.o: %.cpp
        $(CXX) $(CPP_COMP_OPT) -I$(TESTHDR_SRC_DIR) -I$(TEST_COMMONHDR_SRC_DIR) -Wno-invalid-offsetof $< -o $@
 
@@ -152,9 +160,11 @@ include ../projects/source.unit.misc.mk
 CDSUNIT_MISC_SOURCES := $(CDSUNIT_MISC_SOURCES:%.cpp=../%.cpp)
 CDSUNIT_MISC_FILE := $(CDSUNIT_MISC_SOURCES:%.cpp=%.o)
 
-TEST_OBJ_FILE= $(CDSUNIT_COMMON_FILE) $(CDSUNIT_MAP_FILE) $(CDSUNIT_SET_FILE) $(CDSUNIT_QUEUE_FILE) $(CDSUNIT_PQUEUE_FILE) \
+TEST_OBJ_FILE := $(CDSUNIT_COMMON_FILE) $(CDSUNIT_MAP_FILE) $(CDSUNIT_SET_FILE) $(CDSUNIT_QUEUE_FILE) $(CDSUNIT_PQUEUE_FILE) \
        $(CDSUNIT_STACK_FILE) $(CDSUNIT_MISC_FILE)
+TEST_OBJ_FILE_DEPS := $(TEST_OBJ_FILE:%.o=%.d)
 
+-include $(TEST_OBJ_FILE_DEPS)
 $(TEST_OBJ_FILE): %.o: %.cpp
        $(CXX) $(CPP_COMP_OPT) -I$(TEST_SRC_DIR) -I$(TEST_COMMONHDR_SRC_DIR) $< -o $@
 
@@ -266,6 +276,7 @@ clean:
        rm -f $(OBJ_PATH)/debug/*
        rm -f $(OBJ_PATH)/release/*
        rm -f $(TEST_COMMON_OBJS) $(TESTHDR_OBJS) $(TESTHDR_OBJS_NO_OFFSETOF_WARN) $(TEST_OBJ_FILE)
+       rm -f $(TEST_COMMON_OBJS_DEPS) $(TESTHDR_OBJS_DEPS) $(TESTHDR_OBJS_NO_OFFSETOF_WARN_DEPS) $(TEST_OBJ_FILE_DEPS)
        rm -f $(BIN_PATH)/libcds*
        rm -f $(BIN_PATH)/cdsu-*
        rm -f $(BIN_PATH)/test-hdr