diff --git a/lwrserv/Makefile b/lwrserv/Makefile old mode 100755 new mode 100644 index aa70f66..09f09ff --- a/lwrserv/Makefile +++ b/lwrserv/Makefile @@ -7,25 +7,48 @@ # ph.schoenberger@googlemail.com # ################################################################################ LIBS = pthread +TOP_DIR = $(PWD) +TEST_DIR = $(BUILD_DIR)/test + +# comment this out if you want debug compile info +#Q=@ + +ifeq ($(MAKECMDGOALS),test) + GCOV := --coverage + CPPUTEST_HOME := $(TOP_DIR)/test/cpputest + TEST_FW_INCS := -I$(CPPUTEST_HOME)/include -I. + SUPRESS_WARNINGS := -Wno-write-strings + CFLAGS_TEST := -DUNIT_TEST $(TEST_FW_INCS) $(GCOV) -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorMallocMacros.h + CXXFLAGS_TEST := -DUNIT_TEST $(TEST_FW_INCS) -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorNewMacros.h $(SUPRESS_WARNINGS) + APP_PREFIX := test_ + LIBS += CppUTest pthread gcov dl + CPPUTEST_BUILD := $(CPPUTEST_HOME)/cpputest_build + LIBS_TEST = -L $(CPPUTEST_BUILD)/lib/ + TEST_SRC_FOLDER = test + BUILD_DIR = $(PWD)/build/test + + # Sources + SRC_C := $(wildcard $(TEST_SRC_FOLDER)/*.c) + SRC_H := $(wildcard $(TEST_SRC_FOLDER)/*.h) + SRC_CPP := $(wildcard $(TEST_SRC_FOLDER)/*.cpp) + SRC_HPP := $(wildcard $(TEST_SRC_FOLDER)/*.hpp) +else +BUILD_DIR = $(PWD)/build/app +# Sources +SRC_C := $(wildcard *.c) +SRC_CPP := $(wildcard *.cpp) +endif +SRC_H += $(wildcard *.h) +SRC_HPP += $(wildcard *.hpp) -OUT_BINARY = lwrserv +OUT_BINARY = $(APP_PREFIX)lwrserv CC = g++ GLOBAL_FLAGS = -g -o2 -ansi -pedantic -DHAVE_SOCKLEN_T -CFLAGS = $(GLOBAL_FLAGS) -CXXFLAGS = $(GLOBAL_FLAGS) -CPPFLAGS = $(GLOBAL_FLAGS) -LDFLAGS = $(patsubst %,-l%,$(LIBS)) - -BUILD_DIR = build - -# Sources -SRC_C := $(wildcard *.c) -SRC_H := $(wildcard *.h) -SRC_CPP := $(wildcard *.cpp) -SRC_HPP := $(wildcard *.hpp) -#SRC_CXX := $(wildcard *.cxx) -#SRC_CC := $(wildcard *.C) +CFLAGS = $(GLOBAL_FLAGS) $(CFLAGS_TEST) +CXXFLAGS = $(GLOBAL_FLAGS) $(CFLAGS_TEST) +CPPFLAGS = $(GLOBAL_FLAGS) $(CFLAGS_TEST) +LDFLAGS = $(patsubst %,-l%,$(LIBS)) $(CFLAGS_TEST) $(LIBS_TEST) # Objects OBJS_C = $(patsubst %.c,$(BUILD_DIR)/%.o,$(SRC_C)) @@ -43,13 +66,20 @@ DEPS=$(OBJS:%.o=%.d) #DEPS+=$(DEPS_HPP) .DEFAULT: all -Q=@ all: $(BUILD_DIR) $(BUILD_DIR)/$(OUT_BINARY) -$(BUILD_DIR): - $(Q)echo " [mk] $(BUILD_DIR)" - $(Q)mkdir -p $(BUILD_DIR) +test: CPPUTEST $(BUILD_DIR)/$(OUT_BINARY) $(TEST_DIR) + +CPPUTEST: $(CPPUTEST_HOME) + rm $(CPPUTEST_BUILD) -rf && mkdir $(CPPUTEST_BUILD) -p + cd $(CPPUTEST_BUILD) && autoreconf .. -i + cd $(CPPUTEST_BUILD) && ../configure + cd $(CPPUTEST_BUILD) && $(MAKE) + +$(BUILD_DIR) $(TEST_DIR): + $(Q)echo " [mk] $@" + $(Q)mkdir -p $@ clean: $(Q)echo " [rm] $(BUILD_DIR)" @@ -59,24 +89,24 @@ $(BUILD_DIR)/$(OUT_BINARY): $(BUILD_DIR) $(DEPS) $(DEP_LIBS) $(OBJS) $(Q)echo " [ld] $@" $(Q)( $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o $@ ) || exit 1 -$(BUILD_DIR)/%.o : %.c $(BUILD_DIR) +$(BUILD_DIR)/%.o : %.c $(BUILD_DIR) $(TEST_DIR) $(Q)echo " [CC] $@" $(Q)( $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ ) || exit 1 -$(BUILD_DIR)/%.o : %.cpp $(BUILD_DIR) +$(BUILD_DIR)/%.o : %.cpp $(BUILD_DIR) $(TEST_DIR) $(Q)echo " [CXX] $@" $(Q)( $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) $< -o $@ ) || exit 1 -$(BUILD_DIR)/%.d: $(BUILD_DIR) %.c +$(BUILD_DIR)/%.d: $(BUILD_DIR) $(TEST_DIR) %.c $(Q)echo " [DEP] $@" $(Q)touch $@ $(Q)echo -n "$@ $(patsubst %.d,%.o,$@):" >$@ $(Q)$(CC) -M $(CFLAGS) $(filter %.cpp,$^ ) | sed 's:$*.o\:::' >> $@ -$(BUILD_DIR)/%.d: $(BUILD_DIR) %.cpp +$(BUILD_DIR)/%.d: $(BUILD_DIR) $(TEST_DIR) %.cpp $(Q)echo " [DEP] $@" $(Q)touch $@ - $(Q)echo -n "$@ $(patsubst %.d,%.o,$@):" >$@ - $(Q)$(CC) -M $(filter-out -g -o0 -o1 -o2 ,$(CPPFLAGS)) $(filter %.cpp,$^) | sed 's:$*.o\:::' >> $@ + $(Q)$(CC) -M $(filter-out -g -o0 -o1 -o2 ,$(CPPFLAGS)) $(filter %.cpp,$^) >> $@ + #$(Q)echo -n "$@ $(patsubst %.d,%.o,$@): " >$@ -include $(DEPS)