# Makefile # .PHONY: all .SUFFIXES:.cpp .c .ro # make_distrib.pl substitutes the correct version VERSION=2.2.0 # boost_thread lib used by test application. # You may change the library name LD_BOOST_THREAD_LIB=-lboost_thread -lboost_system ifeq ($(platform),mingw) LD_TEST_COMMON_LIBS=-lcds -lrtm LD_TEST_COMMON_DEBUG_LIBS=-lcds-debug -lrtm BASE_OPT = -D_REENTRANT -D_FILE_OFFSET_BITS=64 -I.. # -Wa,--hash-size=2048 CPP_BUILD_CDS_OPT=-DCDS_BUILD_LIB else ifeq ($(platform),darwin) LD_TEST_COMMON_LIBS=-lcds LD_TEST_COMMON_DEBUG_LIBS=-lcds-debug else LD_TEST_COMMON_LIBS=-lcds -lpthread -lrt LD_TEST_COMMON_DEBUG_LIBS=-lcds-debug -lpthread -lrt endif BASE_OPT = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -I.. CPP_BUILD_CDS_OPT= endif COMP_OPT = -c $(CFLAGS) $(BASE_OPT) CPP_COMP_OPT = -MMD -std=c++11 -c $(CXXFLAGS) $(BASE_OPT) COMPILER_ROOT = $(shell dirname `dirname \`which $(CXX)\``) LD_OPTS = $(LDFLAGS) #################################### # cds library include ../projects/source.libcds.mk CDS_OBJS := $(addprefix $(OBJ_PATH)/,$(notdir $(CDS_SOURCES))) CDS_OBJS := $(CDS_OBJS:%.cpp=%.o) CDS_OBJS_DEPS := $(CDS_OBJS:%.o=%.d) CDS_SOURCES := $(CDS_SOURCES:%.cpp=../%.cpp) ifeq ($(platform),mingw) CDS_DEBUG_LIB=libcds-debug.dll CDS_RELEASE_LIB=libcds.dll else ifeq ($(platform),darwin) CDS_DEBUG_LIB=libcds-debug.dylib CDS_RELEASE_LIB=libcds.dylib else CDS_DEBUG_LIB=libcds-debug.so CDS_RELEASE_LIB=libcds.so endif endif -include $(CDS_OBJS_DEPS) $(CDS_OBJS): $(OBJ_PATH)/%.o: ../src/%.cpp $(CXX) $(CPP_COMP_OPT) $(CPP_BUILD_CDS_OPT) -o $@ $< 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 $@ $(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 $@ $(LDLIBS) debug : $(CDS_DEBUG_LIB) release : $(CDS_RELEASE_LIB) else $(CDS_DEBUG_LIB).$(VERSION) : $(CDS_OBJS) $(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_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) debug : $(CDS_DEBUG_LIB).$(VERSION) release : $(CDS_RELEASE_LIB).$(VERSION) endif all: debug release ########################################## # Make tests 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 $@ 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 $@ TEST_SRC_DIR=../tests/unit TEST_DATA_DIR=`pwd`/../tests/data CDSUNIT_COMMON_FILE= include ../projects/source.unit.map.mk CDSUNIT_MAP_SOURCES := $(CDSUNIT_MAP_SOURCES:%.cpp=../%.cpp) CDSUNIT_MAP_OBJS := $(CDSUNIT_MAP_SOURCES:%.cpp=%.o) include ../projects/source.unit.set.mk CDSUNIT_SET_SOURCES := $(CDSUNIT_SET_SOURCES:%.cpp=../%.cpp) CDSUNIT_SET_OBJS := $(CDSUNIT_SET_SOURCES:%.cpp=%.o) include ../projects/source.unit.queue.mk CDSUNIT_QUEUE_SOURCES := $(CDSUNIT_QUEUE_SOURCES:%.cpp=../%.cpp) CDSUNIT_QUEUE_OBJS := $(CDSUNIT_QUEUE_SOURCES:%.cpp=%.o) include ../projects/source.unit.pqueue.mk CDSUNIT_PQUEUE_SOURCES := $(CDSUNIT_PQUEUE_SOURCES:%.cpp=../%.cpp) CDSUNIT_PQUEUE_OBJS := $(CDSUNIT_PQUEUE_SOURCES:%.cpp=%.o) include ../projects/source.unit.stack.mk CDSUNIT_STACK_SOURCES := $(CDSUNIT_STACK_SOURCES:%.cpp=../%.cpp) CDSUNIT_STACK_OBJS := $(CDSUNIT_STACK_SOURCES:%.cpp=%.o) include ../projects/source.unit.misc.mk CDSUNIT_MISC_SOURCES := $(CDSUNIT_MISC_SOURCES:%.cpp=../%.cpp) CDSUNIT_MISC_OBJS := $(CDSUNIT_MISC_SOURCES:%.cpp=%.o) TEST_OBJ_FILE := $(CDSUNIT_COMMON_FILE) $(CDSUNIT_MAP_OBJS) $(CDSUNIT_SET_OBJS) $(CDSUNIT_QUEUE_OBJS) $(CDSUNIT_PQUEUE_OBJS) \ $(CDSUNIT_STACK_OBJS) $(CDSUNIT_MISC_OBJS) 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 $@ CDSUNIT_MAP_EXE=$(BIN_PATH)/cdsu-map CDSUNIT_SET_EXE=$(BIN_PATH)/cdsu-set CDSUNIT_QUEUE_EXE=$(BIN_PATH)/cdsu-queue CDSUNIT_PQUEUE_EXE=$(BIN_PATH)/cdsu-pqueue CDSUNIT_STACK_EXE=$(BIN_PATH)/cdsu-stack CDSUNIT_MISC_EXE=$(BIN_PATH)/cdsu-misc CDSUNIT_EXE_FILES= $(CDSUNIT_MAP_EXE) $(CDSUNIT_SET_EXE) $(CDSUNIT_QUEUE_EXE) $(CDSUNIT_PQUEUE_EXE) $(CDSUNIT_STACK_EXE) $(CDSUNIT_MISC_EXE) unit-map: $(CDSUNIT_MAP_EXE) unit-set: $(CDSUNIT_SET_EXE) unit-queue: $(CDSUNIT_QUEUE_EXE) unit-pqueue: $(CDSUNIT_PQUEUE_EXE) unit-stack: $(CDSUNIT_STACK_EXE) ifeq ($(platform),mingw) make_test : $(BIN_PATH)/test-hdr $(CDSUNIT_EXE_FILES) cd $(TEST_DATA_DIR); perl -X split.pl cp -f $(TEST_DATA_DIR)/test.conf $(TEST_DATA_DIR)/test-debug.conf $(TEST_DATA_DIR)/dictionary.txt $(BIN_PATH) else make_test : $(BIN_PATH)/test-hdr $(CDSUNIT_EXE_FILES) cd $(TEST_DATA_DIR); perl -X split.pl ln -sf $(TEST_DATA_DIR)/test.conf $(TEST_DATA_DIR)/test-debug.conf $(TEST_DATA_DIR)/dictionary.txt $(BIN_PATH) endif $(BIN_PATH)/test-hdr : $(TEST_COMMON_OBJS) $(TESTHDR_OBJS) $(TESTHDR_OBJS_NO_OFFSETOF_WARN) $(CXX) $(LD_OPTS) -L$(BIN_PATH) \ $(TESTHDR_OBJS) $(TESTHDR_OBJS_NO_OFFSETOF_WARN) $(TEST_COMMON_OBJS) \ -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) $(LDLIBS) $(CDSUNIT_MAP_EXE) : $(CDSUNIT_MAP_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_MAP_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) $(LDLIBS) $(CDSUNIT_SET_EXE) : $(CDSUNIT_SET_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_SET_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) $(LDLIBS) $(CDSUNIT_QUEUE_EXE) : $(CDSUNIT_QUEUE_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_QUEUE_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) $(LDLIBS) $(CDSUNIT_PQUEUE_EXE) : $(CDSUNIT_PQUEUE_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_PQUEUE_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) $(LDLIBS) $(CDSUNIT_STACK_EXE) : $(CDSUNIT_STACK_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_STACK_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) $(LDLIBS) $(CDSUNIT_MISC_EXE) : $(CDSUNIT_MISC_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_MISC_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) $(LDLIBS) CDSUNIT_MAP_EXE_DBG=$(CDSUNIT_MAP_EXE)-d CDSUNIT_SET_EXE_DBG=$(CDSUNIT_SET_EXE)-d CDSUNIT_QUEUE_EXE_DBG=$(CDSUNIT_QUEUE_EXE)-d CDSUNIT_PQUEUE_EXE_DBG=$(CDSUNIT_PQUEUE_EXE)-d CDSUNIT_STACK_EXE_DBG=$(CDSUNIT_STACK_EXE)-d CDSUNIT_MISC_EXE_DBG=$(CDSUNIT_MISC_EXE)-d CDSUNIT_EXE_DBG_FILES= $(CDSUNIT_MAP_EXE_DBG) $(CDSUNIT_SET_EXE_DBG) $(CDSUNIT_QUEUE_EXE_DBG) $(CDSUNIT_PQUEUE_EXE_DBG) \ $(CDSUNIT_STACK_EXE_DBG) $(CDSUNIT_MISC_EXE_DBG) unit-map-dbg: $(CDSUNIT_MAP_EXE_DBG) unit-set-dbg: $(CDSUNIT_SET_EXE_DBG) unit-queue-dbg: $(CDSUNIT_QUEUE_EXE_DBG) unit-pqueue-dbg: $(CDSUNIT_PQUEUE_EXE_DBG) unit-stack-dbg: $(CDSUNIT_STACK_EXE_DBG) ifeq ($(platform),mingw) make_debug_test : $(BIN_PATH)/test-hdr-debug $(CDSUNIT_EXE_DBG_FILES) cd $(TEST_DATA_DIR); perl -X split.pl cp -f $(TEST_DATA_DIR)/test.conf $(TEST_DATA_DIR)/test-debug.conf $(TEST_DATA_DIR)/dictionary.txt $(BIN_PATH) else make_debug_test : $(BIN_PATH)/test-hdr-debug $(CDSUNIT_EXE_DBG_FILES) cd $(TEST_DATA_DIR); perl -X split.pl ln -sf $(TEST_DATA_DIR)/test.conf $(TEST_DATA_DIR)/test-debug.conf $(TEST_DATA_DIR)/dictionary.txt $(BIN_PATH) endif $(BIN_PATH)/test-hdr-debug : $(TESTHDR_OBJS) $(TESTHDR_OBJS_NO_OFFSETOF_WARN) $(TEST_COMMON_OBJS) $(CXX) $(LD_OPTS) -L$(BIN_PATH) \ $(TESTHDR_OBJS) $(TESTHDR_OBJS_NO_OFFSETOF_WARN) $(TEST_COMMON_OBJS) \ -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) $(LDLIBS) $(CDSUNIT_MAP_EXE_DBG) : $(CDSUNIT_MAP_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_MAP_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) $(LDLIBS) $(CDSUNIT_SET_EXE_DBG) : $(CDSUNIT_SET_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_SET_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) $(LDLIBS) $(CDSUNIT_QUEUE_EXE_DBG) : $(CDSUNIT_QUEUE_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_QUEUE_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) $(LDLIBS) $(CDSUNIT_PQUEUE_EXE_DBG) : $(CDSUNIT_PQUEUE_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_PQUEUE_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) $(LDLIBS) $(CDSUNIT_STACK_EXE_DBG) : $(CDSUNIT_STACK_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_STACK_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) $(LDLIBS) $(CDSUNIT_MISC_EXE_DBG) : $(CDSUNIT_MISC_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_MISC_OBJS) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) -o $@ $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) $(LDLIBS) test: make_test test_debug: make_debug_test test_hdr: $(BIN_PATH)/test-hdr test_hdr_debug: $(BIN_PATH)/test-hdr-debug ########################################## # 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