7 # make_distrib.pl substitutes the correct version
10 # boost_thread lib used by test application.
11 # You may change the library name
12 LD_BOOST_THREAD_LIB=-lboost_thread -lboost_system
14 ifeq ($(platform),mingw)
15 LD_TEST_COMMON_LIBS=-lcds -lrtm
16 LD_TEST_COMMON_DEBUG_LIBS=-lcds-debug -lrtm
17 BASE_OPT = -D_REENTRANT -D_FILE_OFFSET_BITS=64 -I..
18 # -Wa,--hash-size=2048
19 CPP_BUILD_CDS_OPT=-DCDS_BUILD_LIB
21 ifeq ($(platform),darwin)
22 LD_TEST_COMMON_LIBS=-lcds
23 LD_TEST_COMMON_DEBUG_LIBS=-lcds-debug
25 LD_TEST_COMMON_LIBS=-lcds -lpthread -lrt
26 LD_TEST_COMMON_DEBUG_LIBS=-lcds-debug -lpthread -lrt
28 BASE_OPT = -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -D_FILE_OFFSET_BITS=64 -I..
32 COMP_OPT = -c $(CFLAGS) $(BASE_OPT)
33 CPP_COMP_OPT = -MMD -std=c++11 -c $(CXXFLAGS) $(BASE_OPT)
35 COMPILER_ROOT = $(shell dirname `dirname \`which $(CXX)\``)
41 ####################################
44 include ../projects/source.libcds.mk
45 CDS_OBJS := $(addprefix $(OBJ_PATH)/,$(notdir $(CDS_SOURCES)))
46 CDS_OBJS := $(CDS_OBJS:%.cpp=%.o)
47 CDS_OBJS_DEPS := $(CDS_OBJS:%.o=%.d)
48 CDS_SOURCES := $(CDS_SOURCES:%.cpp=../%.cpp)
50 ifeq ($(platform),mingw)
51 CDS_DEBUG_LIB=libcds-debug.dll
52 CDS_RELEASE_LIB=libcds.dll
54 ifeq ($(platform),darwin)
55 CDS_DEBUG_LIB=libcds-debug.dylib
56 CDS_RELEASE_LIB=libcds.dylib
58 CDS_DEBUG_LIB=libcds-debug.so
59 CDS_RELEASE_LIB=libcds.so
63 -include $(CDS_OBJS_DEPS)
64 $(CDS_OBJS): $(OBJ_PATH)/%.o: ../src/%.cpp
65 $(CXX) $(CPP_COMP_OPT) $(CPP_BUILD_CDS_OPT) -o $@ $<
67 ifeq ($(platform),mingw)
68 $(CDS_DEBUG_LIB): $(BIN_PATH)/$(CDS_DEBUG_LIB)
70 $(BIN_PATH)/$(CDS_DEBUG_LIB) : $(CDS_OBJS)
71 $(CXX) $(LD_OPTS) -Wl,--out-implib,$(BIN_PATH)/$(CDS_DEBUG_LIB).a $(CDS_OBJS) -o $@ $(LDLIBS)
73 $(CDS_RELEASE_LIB) : $(BIN_PATH)/$(CDS_RELEASE_LIB)
75 $(BIN_PATH)/$(CDS_RELEASE_LIB) : $(CDS_OBJS)
76 $(CXX) $(LD_OPTS) $(CDS_OBJS) -Wl,--out-implib,$(BIN_PATH)/$(CDS_RELEASE_LIB).a -o $@ $(LDLIBS)
78 debug : $(CDS_DEBUG_LIB)
79 release : $(CDS_RELEASE_LIB)
81 $(CDS_DEBUG_LIB).$(VERSION) : $(CDS_OBJS)
82 $(CXX) $(LD_OPTS) $(CDS_PLATFORM_DEBUG_LDFLAGS) $(CDS_OBJS) -o $@ $(LDLIBS)
83 mv ./$(CDS_DEBUG_LIB).$(VERSION) $(BIN_PATH)/$(CDS_DEBUG_LIB).$(VERSION)
84 ln -sf $(CDS_DEBUG_LIB).$(VERSION) $(BIN_PATH)/$(CDS_DEBUG_LIB)
86 $(CDS_RELEASE_LIB).$(VERSION) : $(CDS_OBJS)
87 $(CXX) $(LD_OPTS) $(CDS_OBJS) $(CDS_PLATFORM_RELEASE_LDFLAGS) -o $@ $(LDLIBS)
88 mv ./$(CDS_RELEASE_LIB).$(VERSION) $(BIN_PATH)/$(CDS_RELEASE_LIB).$(VERSION)
89 ln -sf $(CDS_RELEASE_LIB).$(VERSION) $(BIN_PATH)/$(CDS_RELEASE_LIB)
91 debug : $(CDS_DEBUG_LIB).$(VERSION)
92 release : $(CDS_RELEASE_LIB).$(VERSION)
98 ##########################################
101 OBJ_TEST_PATH=$(OBJ_PATH)
103 include ../projects/source.test-common.mk
104 CDS_TESTCOMMON_SOURCES := $(CDS_TESTCOMMON_SOURCES:%.cpp=../%.cpp)
105 TEST_COMMON_OBJS := $(CDS_TESTCOMMON_SOURCES:%.cpp=%.o)
106 TEST_COMMON_OBJS_DEPS := $(TEST_COMMON_OBJS:%.o=%.d)
108 TEST_COMMONHDR_SRC_DIR=../tests
109 -include $(TEST_COMMON_OBJS_DEPS)
110 $(TEST_COMMON_OBJS) : %.o : %.cpp
111 $(CXX) $(CPP_COMP_OPT) -I$(TEST_COMMONHDR_SRC_DIR) $< -o $@
114 include ../projects/source.test-hdr.mk
115 CDS_TESTHDR_SOURCES := $(CDS_TESTHDR_SOURCES:%.cpp=../%.cpp)
116 TESTHDR_OBJS := $(CDS_TESTHDR_SOURCES:%.cpp=%.o)
117 TESTHDR_OBJS_DEPS := $(TESTHDR_OBJS:%.o=%.d)
119 TESTHDR_SRC_DIR=../tests/test-hdr
120 -include $(TESTHDR_OBJS_DEPS)
121 $(TESTHDR_OBJS): %.o: %.cpp
122 $(CXX) $(CPP_COMP_OPT) -I$(TESTHDR_SRC_DIR) -I$(TEST_COMMONHDR_SRC_DIR) $< -o $@
124 include ../projects/source.test-hdr.offsetof.mk
125 CDS_TESTHDR_OFFSETOF_SOURCES := $(CDS_TESTHDR_OFFSETOF_SOURCES:%.cpp=../%.cpp)
126 TESTHDR_OBJS_NO_OFFSETOF_WARN := $(CDS_TESTHDR_OFFSETOF_SOURCES:%.cpp=%.o)
127 TESTHDR_OBJS_NO_OFFSETOF_WARN_DEPS := $(TESTHDR_OBJS_NO_OFFSETOF_WARN:%.o=%.d)
129 -include $(TESTHDR_OBJS_NO_OFFSETOF_WARN_DEPS)
130 $(TESTHDR_OBJS_NO_OFFSETOF_WARN): %.o: %.cpp
131 $(CXX) $(CPP_COMP_OPT) -I$(TESTHDR_SRC_DIR) -I$(TEST_COMMONHDR_SRC_DIR) -Wno-invalid-offsetof $< -o $@
134 TEST_SRC_DIR=../tests/unit
135 TEST_DATA_DIR=`pwd`/../tests/data
139 include ../projects/source.unit.map.mk
140 CDSUNIT_MAP_SOURCES := $(CDSUNIT_MAP_SOURCES:%.cpp=../%.cpp)
141 CDSUNIT_MAP_FILE := $(CDSUNIT_MAP_SOURCES:%.cpp=%.o)
143 include ../projects/source.unit.set.mk
144 CDSUNIT_SET_SOURCES := $(CDSUNIT_SET_SOURCES:%.cpp=../%.cpp)
145 CDSUNIT_SET_FILE := $(CDSUNIT_SET_SOURCES:%.cpp=%.o)
147 include ../projects/source.unit.queue.mk
148 CDSUNIT_QUEUE_SOURCES := $(CDSUNIT_QUEUE_SOURCES:%.cpp=../%.cpp)
149 CDSUNIT_QUEUE_FILE := $(CDSUNIT_QUEUE_SOURCES:%.cpp=%.o)
151 include ../projects/source.unit.pqueue.mk
152 CDSUNIT_PQUEUE_SOURCES := $(CDSUNIT_PQUEUE_SOURCES:%.cpp=../%.cpp)
153 CDSUNIT_PQUEUE_FILE := $(CDSUNIT_PQUEUE_SOURCES:%.cpp=%.o)
155 include ../projects/source.unit.stack.mk
156 CDSUNIT_STACK_SOURCES := $(CDSUNIT_STACK_SOURCES:%.cpp=../%.cpp)
157 CDSUNIT_STACK_FILE := $(CDSUNIT_STACK_SOURCES:%.cpp=%.o)
159 include ../projects/source.unit.misc.mk
160 CDSUNIT_MISC_SOURCES := $(CDSUNIT_MISC_SOURCES:%.cpp=../%.cpp)
161 CDSUNIT_MISC_FILE := $(CDSUNIT_MISC_SOURCES:%.cpp=%.o)
163 TEST_OBJ_FILE := $(CDSUNIT_COMMON_FILE) $(CDSUNIT_MAP_FILE) $(CDSUNIT_SET_FILE) $(CDSUNIT_QUEUE_FILE) $(CDSUNIT_PQUEUE_FILE) \
164 $(CDSUNIT_STACK_FILE) $(CDSUNIT_MISC_FILE)
165 TEST_OBJ_FILE_DEPS := $(TEST_OBJ_FILE:%.o=%.d)
167 -include $(TEST_OBJ_FILE_DEPS)
168 $(TEST_OBJ_FILE): %.o: %.cpp
169 $(CXX) $(CPP_COMP_OPT) -I$(TEST_SRC_DIR) -I$(TEST_COMMONHDR_SRC_DIR) $< -o $@
171 CDSUNIT_MAP_EXE=$(BIN_PATH)/cdsu-map
172 CDSUNIT_SET_EXE=$(BIN_PATH)/cdsu-set
173 CDSUNIT_QUEUE_EXE=$(BIN_PATH)/cdsu-queue
174 CDSUNIT_PQUEUE_EXE=$(BIN_PATH)/cdsu-pqueue
175 CDSUNIT_STACK_EXE=$(BIN_PATH)/cdsu-stack
176 CDSUNIT_MISC_EXE=$(BIN_PATH)/cdsu-misc
177 CDSUNIT_EXE_FILES= $(CDSUNIT_MAP_EXE) $(CDSUNIT_SET_EXE) $(CDSUNIT_QUEUE_EXE) $(CDSUNIT_PQUEUE_EXE) $(CDSUNIT_STACK_EXE) $(CDSUNIT_MISC_EXE)
179 unit-map: $(CDSUNIT_MAP_EXE)
180 unit-set: $(CDSUNIT_SET_EXE)
181 unit-queue: $(CDSUNIT_QUEUE_EXE)
182 unit-pqueue: $(CDSUNIT_PQUEUE_EXE)
183 unit-stack: $(CDSUNIT_STACK_EXE)
185 ifeq ($(platform),mingw)
186 make_test : $(BIN_PATH)/test-hdr $(CDSUNIT_EXE_FILES)
187 cd $(TEST_DATA_DIR); perl -X split.pl
188 cp -f $(TEST_DATA_DIR)/test.conf $(TEST_DATA_DIR)/test-debug.conf $(TEST_DATA_DIR)/dictionary.txt $(BIN_PATH)
190 make_test : $(BIN_PATH)/test-hdr $(CDSUNIT_EXE_FILES)
191 cd $(TEST_DATA_DIR); perl -X split.pl
192 ln -sf $(TEST_DATA_DIR)/test.conf $(TEST_DATA_DIR)/test-debug.conf $(TEST_DATA_DIR)/dictionary.txt $(BIN_PATH)
195 $(BIN_PATH)/test-hdr : $(TEST_COMMON_OBJS) $(TESTHDR_OBJS) $(TESTHDR_OBJS_NO_OFFSETOF_WARN)
196 $(CXX) $(LD_OPTS) -L$(BIN_PATH) \
197 $(TESTHDR_OBJS) $(TESTHDR_OBJS_NO_OFFSETOF_WARN) $(TEST_COMMON_OBJS) \
198 $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) -o $@
200 $(CDSUNIT_MAP_EXE) : $(CDSUNIT_MAP_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
201 $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_MAP_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) -o $@
203 $(CDSUNIT_SET_EXE) : $(CDSUNIT_SET_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
204 $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_SET_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) -o $@
206 $(CDSUNIT_QUEUE_EXE) : $(CDSUNIT_QUEUE_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
207 $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_QUEUE_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) -o $@
209 $(CDSUNIT_PQUEUE_EXE) : $(CDSUNIT_PQUEUE_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
210 $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_PQUEUE_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) -o $@
212 $(CDSUNIT_STACK_EXE) : $(CDSUNIT_STACK_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
213 $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_STACK_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) -o $@
215 $(CDSUNIT_MISC_EXE) : $(CDSUNIT_MISC_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
216 $(CXX) $(LD_OPTS) -L$(BIN_PATH) $(CDSUNIT_MISC_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS) $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_LIBS) -o $@
219 CDSUNIT_MAP_EXE_DBG=$(CDSUNIT_MAP_EXE)-d
220 CDSUNIT_SET_EXE_DBG=$(CDSUNIT_SET_EXE)-d
221 CDSUNIT_QUEUE_EXE_DBG=$(CDSUNIT_QUEUE_EXE)-d
222 CDSUNIT_PQUEUE_EXE_DBG=$(CDSUNIT_PQUEUE_EXE)-d
223 CDSUNIT_STACK_EXE_DBG=$(CDSUNIT_STACK_EXE)-d
224 CDSUNIT_MISC_EXE_DBG=$(CDSUNIT_MISC_EXE)-d
225 CDSUNIT_EXE_DBG_FILES= $(CDSUNIT_MAP_EXE_DBG) $(CDSUNIT_SET_EXE_DBG) $(CDSUNIT_QUEUE_EXE_DBG) $(CDSUNIT_PQUEUE_EXE_DBG) \
226 $(CDSUNIT_STACK_EXE_DBG) $(CDSUNIT_MISC_EXE_DBG)
228 unit-map-dbg: $(CDSUNIT_MAP_EXE_DBG)
229 unit-set-dbg: $(CDSUNIT_SET_EXE_DBG)
230 unit-queue-dbg: $(CDSUNIT_QUEUE_EXE_DBG)
231 unit-pqueue-dbg: $(CDSUNIT_PQUEUE_EXE_DBG)
232 unit-stack-dbg: $(CDSUNIT_STACK_EXE_DBG)
234 ifeq ($(platform),mingw)
235 make_debug_test : $(BIN_PATH)/test-hdr-debug $(CDSUNIT_EXE_DBG_FILES)
236 cd $(TEST_DATA_DIR); perl -X split.pl
237 cp -f $(TEST_DATA_DIR)/test.conf $(TEST_DATA_DIR)/test-debug.conf $(TEST_DATA_DIR)/dictionary.txt $(BIN_PATH)
239 make_debug_test : $(BIN_PATH)/test-hdr-debug $(CDSUNIT_EXE_DBG_FILES)
240 cd $(TEST_DATA_DIR); perl -X split.pl
241 ln -sf $(TEST_DATA_DIR)/test.conf $(TEST_DATA_DIR)/test-debug.conf $(TEST_DATA_DIR)/dictionary.txt $(BIN_PATH)
244 $(BIN_PATH)/test-hdr-debug : $(TESTHDR_OBJS) $(TESTHDR_OBJS_NO_OFFSETOF_WARN) $(TEST_COMMON_OBJS)
245 $(CXX) $(LD_OPTS) -L$(BIN_PATH) \
246 $(TESTHDR_OBJS) $(TESTHDR_OBJS_NO_OFFSETOF_WARN) $(TEST_COMMON_OBJS) \
247 $(LD_BOOST_THREAD_LIB) $(LD_TEST_COMMON_DEBUG_LIBS) -o $@
249 $(CDSUNIT_MAP_EXE_DBG) : $(CDSUNIT_MAP_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
250 $(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 $@
252 $(CDSUNIT_SET_EXE_DBG) : $(CDSUNIT_SET_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
253 $(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 $@
255 $(CDSUNIT_QUEUE_EXE_DBG) : $(CDSUNIT_QUEUE_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
256 $(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 $@
258 $(CDSUNIT_PQUEUE_EXE_DBG) : $(CDSUNIT_PQUEUE_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
259 $(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 $@
261 $(CDSUNIT_STACK_EXE_DBG) : $(CDSUNIT_STACK_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
262 $(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 $@
264 $(CDSUNIT_MISC_EXE_DBG) : $(CDSUNIT_MISC_FILE) $(CDSUNIT_COMMON_FILE) $(TEST_COMMON_OBJS)
265 $(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 $@
268 test_debug: make_debug_test
270 test_hdr: $(BIN_PATH)/test-hdr
271 test_hdr_debug: $(BIN_PATH)/test-hdr-debug
273 ##########################################
276 rm -f $(OBJ_PATH)/debug/*
277 rm -f $(OBJ_PATH)/release/*
278 rm -f $(TEST_COMMON_OBJS) $(TESTHDR_OBJS) $(TESTHDR_OBJS_NO_OFFSETOF_WARN) $(TEST_OBJ_FILE)
279 rm -f $(TEST_COMMON_OBJS_DEPS) $(TESTHDR_OBJS_DEPS) $(TESTHDR_OBJS_NO_OFFSETOF_WARN_DEPS) $(TEST_OBJ_FILE_DEPS)
280 rm -f $(BIN_PATH)/libcds*
281 rm -f $(BIN_PATH)/cdsu-*
282 rm -f $(BIN_PATH)/test-hdr