Move libcds 1.6.0 from SVN
[libcds.git] / build / Makefile
diff --git a/build/Makefile b/build/Makefile
new file mode 100644 (file)
index 0000000..313afc0
--- /dev/null
@@ -0,0 +1,272 @@
+# Makefile 
+# 
+
+.PHONY: all
+.SUFFIXES:.cpp .c .ro
+
+# make_distrib.pl substitutes the correct version
+VERSION=1.6.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 = -std=c++0x -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_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
+
+$(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 $@ 
+
+$(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 $@ 
+    
+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 $@ 
+       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 $@ 
+       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_COMMONHDR_SRC_DIR=../tests
+$(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_SRC_DIR=../tests/test-hdr
+$(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): %.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_FILE := $(CDSUNIT_MAP_SOURCES:%.cpp=%.o)
+
+include ../projects/source.unit.set.mk
+CDSUNIT_SET_SOURCES := $(CDSUNIT_SET_SOURCES:%.cpp=../%.cpp)
+CDSUNIT_SET_FILE := $(CDSUNIT_SET_SOURCES:%.cpp=%.o)
+
+include ../projects/source.unit.queue.mk
+CDSUNIT_QUEUE_SOURCES := $(CDSUNIT_QUEUE_SOURCES:%.cpp=../%.cpp)
+CDSUNIT_QUEUE_FILE := $(CDSUNIT_QUEUE_SOURCES:%.cpp=%.o)
+
+include ../projects/source.unit.pqueue.mk
+CDSUNIT_PQUEUE_SOURCES := $(CDSUNIT_PQUEUE_SOURCES:%.cpp=../%.cpp)
+CDSUNIT_PQUEUE_FILE := $(CDSUNIT_PQUEUE_SOURCES:%.cpp=%.o)
+
+include ../projects/source.unit.stack.mk
+CDSUNIT_STACK_SOURCES := $(CDSUNIT_STACK_SOURCES:%.cpp=../%.cpp)
+CDSUNIT_STACK_FILE := $(CDSUNIT_STACK_SOURCES:%.cpp=%.o)
+
+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) \
+       $(CDSUNIT_STACK_FILE) $(CDSUNIT_MISC_FILE)
+
+$(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) \
+       $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) -o $@
+
+$(CDSUNIT_MAP_EXE) : $(CDSUNIT_MAP_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
+       $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_MAP_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) -o $@
+
+$(CDSUNIT_SET_EXE) : $(CDSUNIT_SET_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
+       $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_SET_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) -o $@
+
+$(CDSUNIT_QUEUE_EXE) : $(CDSUNIT_QUEUE_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
+       $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_QUEUE_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) -o $@
+
+$(CDSUNIT_PQUEUE_EXE) : $(CDSUNIT_PQUEUE_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
+       $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_PQUEUE_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) -o $@
+
+$(CDSUNIT_STACK_EXE) : $(CDSUNIT_STACK_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
+       $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_STACK_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) -o $@
+
+$(CDSUNIT_MISC_EXE) : $(CDSUNIT_MISC_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
+       $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_MISC_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) -o $@
+
+
+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) \
+       $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) -o $@
+
+$(CDSUNIT_MAP_EXE_DBG) : $(CDSUNIT_MAP_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
+       $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_MAP_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) -o $@
+
+$(CDSUNIT_SET_EXE_DBG) : $(CDSUNIT_SET_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
+       $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_SET_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) -o $@
+
+$(CDSUNIT_QUEUE_EXE_DBG) : $(CDSUNIT_QUEUE_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
+       $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_QUEUE_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) -o $@
+
+$(CDSUNIT_PQUEUE_EXE_DBG) : $(CDSUNIT_PQUEUE_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
+       $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_PQUEUE_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) -o $@
+
+$(CDSUNIT_STACK_EXE_DBG) : $(CDSUNIT_STACK_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
+       $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_STACK_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) -o $@
+
+$(CDSUNIT_MISC_EXE_DBG) : $(CDSUNIT_MISC_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
+       $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_MISC_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) -o $@
+
+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 $(BIN_PATH)/libcds*
+       rm -f $(BIN_PATH)/cdsu-*
+       rm -f $(BIN_PATH)/test-hdr
+