You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.4 KiB
82 lines
2.4 KiB
################################################################################
|
|
# Contents: makefile with dependency generation #
|
|
# 26.05.2015 #
|
|
#------------------------------------------------------------------------------#
|
|
# makefile for cpp/c bins and libs #
|
|
# autor Philipp Schoenberger #
|
|
# ph.schoenberger@googlemail.com #
|
|
################################################################################
|
|
LIBS = pthread
|
|
|
|
OUT_BINARY = 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)
|
|
|
|
# Objects
|
|
OBJS_C = $(patsubst %.c,$(BUILD_DIR)/%.o,$(SRC_C))
|
|
OBJS_CPP = $(patsubst %.cpp,$(BUILD_DIR)/%.o,$(SRC_CPP))
|
|
|
|
|
|
OBJS=$(patsubst %.o,%.o,$(OBJS_C) $(OBJS_CPP))
|
|
|
|
# Dependencies
|
|
DEPS_H = $(patsubst %.h,$(BUILD_DIR)/%.d,$(SRC_H))
|
|
DEPS_HPP = $(patsubst %.hpp,$(BUILD_DIR)/%.d,$(SRC_HPP))
|
|
|
|
DEPS=$(OBJS:%.o=%.d)
|
|
#DEPS+=$(DEPS_H)
|
|
#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)
|
|
|
|
clean:
|
|
$(Q)echo " [rm] $(BUILD_DIR)"
|
|
$(Q)rm -rf $(BUILD_DIR)
|
|
|
|
$(BUILD_DIR)/$(OUT_BINARY): $(BUILD_DIR) $(DEPS) $(DEP_LIBS) $(OBJS)
|
|
$(Q)echo " [ld] $@"
|
|
$(Q)( $(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) -o $(OUT_BINARY)) || exit 1
|
|
|
|
$(BUILD_DIR)/%.o : %.c $(BUILD_DIR)
|
|
$(Q)echo " [CC] $@"
|
|
$(Q)( $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ ) || exit 1
|
|
|
|
$(BUILD_DIR)/%.o : %.cpp $(BUILD_DIR)
|
|
$(Q)echo " [CXX] $@"
|
|
$(Q)( $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) $< -o $@ ) || exit 1
|
|
|
|
$(BUILD_DIR)/%.d: $(BUILD_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
|
|
$(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\:::' >> $@
|
|
|
|
-include $(DEPS)
|