|
|
@ -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) |