PACKAGE = $(notdir $(realpath .)) ADD_CFLAGS = ADD_LFLAGS = GIT_VERSION= $(shell git describe --tags) #TRGT ?= arm-none-eabi- CC = $(TRGT)gcc CXX = $(TRGT)g++ OBJCOPY = $(TRGT)objcopy RM = rm -rf COPY = cp -a PATH_SEP = / ifeq ($(OS),Windows_NT) COPY = copy RM = del PATH_SEP = \\ endif DBG_CFLAGS = -ggdb -g -DDEBUG -Wall DBG_LFLAGS = -ggdb -g -Wall CFLAGS = $(ADD_CFLAGS) \ -Wall -Wextra \ -ffunction-sections -fdata-sections -fno-common \ -fomit-frame-pointer -Os \ -DGIT_VERSION=u\"$(GIT_VERSION)\" -std=gnu11 CXXFLAGS = $(CFLAGS) -std=c++11 LFLAGS = $(ADD_LFLAGS) $(CFLAGS) \ OBJ_DIR = .obj CSOURCES = $(wildcard *.c) CPPSOURCES = $(wildcard *.cpp) ASOURCES = $(wildcard *.S) COBJS = $(addprefix $(OBJ_DIR)/, $(notdir $(CSOURCES:.c=.o))) CXXOBJS = $(addprefix $(OBJ_DIR)/, $(notdir $(CPPSOURCES:.cpp=.o))) AOBJS = $(addprefix $(OBJ_DIR)/, $(notdir $(ASOURCES:.S=.o))) OBJECTS = $(COBJS) $(CXXOBJS) $(AOBJS) VPATH = . QUIET = @ ALL = all TARGET = $(PACKAGE) CLEAN = clean $(ALL): $(TARGET) $(OBJECTS): | $(OBJ_DIR) $(TARGET): $(OBJECTS) $(QUIET) echo " LD $@" $(QUIET) $(CC) $(OBJECTS) $(LFLAGS) -o $@ $(DEBUG): CFLAGS += $(DBG_CFLAGS) $(DEBUG): LFLAGS += $(DBG_LFLAGS) CFLAGS += $(DBG_CFLAGS) LFLAGS += $(DBG_LFLAGS) $(DEBUG): $(TARGET) $(OBJ_DIR): $(QUIET) mkdir $(OBJ_DIR) $(COBJS) : $(OBJ_DIR)/%.o : %.c Makefile $(QUIET) echo " CC $< $(notdir $@)" $(QUIET) $(CC) -c $< $(CFLAGS) -o $@ -MMD $(OBJ_DIR)/%.o: %.cpp $(QUIET) echo " CXX $< $(notdir $@)" $(QUIET) $(CXX) -c $< $(CXXFLAGS) -o $@ -MMD $(OBJ_DIR)/%.o: %.S $(QUIET) echo " AS $< $(notdir $@)" $(QUIET) $(CC) -x assembler-with-cpp -c $< $(CFLAGS) -o $@ -MMD .PHONY: clean clean: $(QUIET) echo " RM $(subst /,$(PATH_SEP),$(wildcard $(OBJ_DIR)/*.d))" -$(QUIET) $(RM) $(subst /,$(PATH_SEP),$(wildcard $(OBJ_DIR)/*.d)) $(QUIET) echo " RM $(subst /,$(PATH_SEP),$(wildcard $(OBJ_DIR)/*.d))" -$(QUIET) $(RM) $(subst /,$(PATH_SEP),$(wildcard $(OBJ_DIR)/*.o)) $(QUIET) echo " RM $(TARGET)" -$(QUIET) $(RM) $(TARGET) include $(wildcard $(OBJ_DIR)/*.d)