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

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