X-Git-Url: http://plrg.eecs.uci.edu/git/?p=libcds.git;a=blobdiff_plain;f=build%2FMakefile;fp=build%2FMakefile;h=313afc01f1736b2b5a0574546b99e426cdce33b7;hp=0000000000000000000000000000000000000000;hb=7d15399a4d18ae2061ddb01656d85dbc940ff915;hpb=8a263292f514b7001d79210d49397b7f8e31cc3c diff --git a/build/Makefile b/build/Makefile new file mode 100644 index 00000000..313afc01 --- /dev/null +++ b/build/Makefile @@ -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 +