#compile flag CFLAGS = -Wall -c -Wno-deprecated -fPIC -x c CPPFLAGS = -std=c++14 -Wall -c -Wno-deprecated -fPIC #macro define MACRO_DEFINE = ifneq ($(DEBUG),1) ifneq ($(RELEASE_DEBUG),1) # release #compile flag CFLAGS += -O2 CPPFLAGS += -O2 #macro define MACRO_DEFINE += -DNDEBUG #output define OBJS_SUFFIX = o DEPS_SUFFIX = d else #release_debug #compile flag CFLAGS += -g -O2 CPPFLAGS += -g -O2 #macro define MACRO_DEFINE += -DNDEBUG -DRELEASE_DEBUG #output define ifneq ($(USE_ASAN),1) OBJS_SUFFIX = rd_o DEPS_SUFFIX = rd_d else OBJS_SUFFIX = rd_asan_o DEPS_SUFFIX = rd_asan_d endif endif else #debug #compile flag CFLAGS += -g CPPFLAGS += -g #macro define MACRO_DEFINE += -D_DEBUG #output define OBJS_SUFFIX = d_o DEPS_SUFFIX = d_d endif #use pthread ifneq ($(USE_PTHREAD),1) #link flag LD_SO_FLAGS := -shared -o LD_EXE_FLAGS := -o #compile flag else #link flag LD_SO_FLAGS := -shared -pthread -o LD_EXE_FLAGS := -pthread -o #compile flag CFLAGS += -pthread CPPFLAGS += -pthread endif #generate dependency flag DEP_OPT = -MM -MP -MT #compile command C_COMPILE = g++ $(CFLAGS) $(MACRO_DEFINE) $(INCLUDE_PATH) CPP_COMPILE = g++ $(CPPFLAGS) $(MACRO_DEFINE) $(INCLUDE_PATH) #link command LINK_SHARE = g++ $(LD_SO_FLAGS) LINK_EXE = g++ -rdynamic $(LD_EXE_FLAGS) #c generate dependency command C_DEPEND = g++ $(CFLAGS) $(MACRO_DEFINE) $(INCLUDE_PATH) $(DEP_OPT) C_DEPEND.d = $(subst -g ,,$(C_DEPEND)) #cpp generate dependency command CPP_DEPEND = g++ $(CPPFLAGS) $(MACRO_DEFINE) $(INCLUDE_PATH) $(DEP_OPT) CPP_DEPEND.d = $(subst -g ,,$(CPP_DEPEND)) #generate lib command ARCHIVE = ar rcu RANLIB = ranlib # Rules for creating dependency files (.d). #------------------------------------------ $(OBJS_DIR)%.$(DEPS_SUFFIX):%.c @echo -n $(dir $<) > $@ $(C_DEPEND.d) $(basename $@).$(OBJS_SUFFIX) $< >> $@ $(OBJS_DIR)%.$(DEPS_SUFFIX):%.C @echo -n $(dir $<) > $@ $(C_DEPEND.d) $(basename $@).$(OBJS_SUFFIX) $< >> $@ $(OBJS_DIR)%.$(DEPS_SUFFIX):%.cc @echo -n $(dir $<) > $@ $(C_DEPEND.d) $(basename $@).$(OBJS_SUFFIX) $< >> $@ $(OBJS_DIR)%.$(DEPS_SUFFIX):%.cpp @echo -n $(dir $<) > $@ $(CPP_DEPEND.d) $(basename $@).$(OBJS_SUFFIX) $< >> $@ $(OBJS_DIR)%.$(DEPS_SUFFIX):%.CPP @echo -n $(dir $<) > $@ $(CPP_DEPEND.d) $(basename $@).$(OBJS_SUFFIX) $< >> $@ $(OBJS_DIR)%.$(DEPS_SUFFIX):%.c++ @echo -n $(dir $<) > $@ $(CPP_DEPEND.d) $(basename $@).$(OBJS_SUFFIX) $< >> $@ $(OBJS_DIR)%.$(DEPS_SUFFIX):%.cp @echo -n $(dir $<) > $@ $(CPP_DEPEND.d) $(basename $@).$(OBJS_SUFFIX) $< >> $@ $(OBJS_DIR)%.$(DEPS_SUFFIX):%.cxx @echo -n $(dir $<) > $@ $(CPP_DEPEND.d) $(basename $@).$(OBJS_SUFFIX) $< >> $@ # Rules for generating object files (.o). #---------------------------------------- $(OBJS_DIR)%.$(OBJS_SUFFIX):%.c $(C_COMPILE) $< -o $@ $(OBJS_DIR)%.$(OBJS_SUFFIX):%.C $(C_COMPILE) $< -o $@ $(OBJS_DIR)%.$(OBJS_SUFFIX):%.cc $(CPP_COMPILE) $< -o $@ $(OBJS_DIR)%.$(OBJS_SUFFIX):%.cpp $(CPP_COMPILE) $< -o $@ $(OBJS_DIR)%.$(OBJS_SUFFIX):%.CPP $(CPP_COMPILE) $< -o $@ $(OBJS_DIR)%.$(OBJS_SUFFIX):%.c++ $(CPP_COMPILE) $< -o $@ $(OBJS_DIR)%.$(OBJS_SUFFIX):%.cp $(CPP_COMPILE) $< -o $@ $(OBJS_DIR)%.$(OBJS_SUFFIX):%.cxx $(CPP_COMPILE) $< -o $@