#*************************************
# 魏明择的官方网站
# https://weimingze.com
# 创建人  :  魏明择
# 创建日期:  2016年11月1日
# 魏明择版权所有，保留所有权利。
#************************************/

CC          := gcc
CFLAG       := -Wall -g -lpthread
CXX         := g++
CXXFLAG     := -Wall -g
CXXFLAG     += -std=c++11     # for C++ 11 支持
LIBS        := -lpthread

C_SRCS      := $(wildcard *.c)    #搜索所有的.c文件
CPP_SRCS    := $(wildcard *.cpp)  #搜索所有的.cpp文件
CTARGETS    := ${C_SRCS:%.c=%}     #把所有的.c文件转换成文件名的目标文件
CPPTARGETS  := ${CPP_SRCS:%.cpp=%} #把所有的.cpp文件转换成文件名的目标文件

MAKEFILS    := $(wildcard */[mM]akefile) #搜索下一层目录下所有的Makefile文件
SUBDIRS     := $(dir $(MAKEFILS))        #提取出所有的目录

#以下删除XCode编译器留下的.dSYM文件夹
XCODE_DSYM  := ${C_SRCS:%.c=%.dSYM}
XCODE_DSYM  += ${CPP_SRCS:%.cpp=%.dSYM}

all : $(CTARGETS) $(CPPTARGETS)
	@for MYDIR in $(SUBDIRS) ; do make -C $${MYDIR} $@ ; done

% : %.c
	$(CC) -o $@ $< $(CFLAG) $(LIBS)

% : %.cpp
	$(CXX) -o $@ $< $(CXXFLAG) $(LIBS)

clean:
	@for MYDIR in $(SUBDIRS) ; do make -C $${MYDIR} $@ ; done
	rm -f $(CTARGETS) $(CPPTARGETS)
	rm -rf $(XCODE_DSYM)
