1#============================================================= 2# OS-specific definitions 3#============================================================= 4COMMA=, 5OPEN_PAREN=( 6CLOSE_PAREN=) 7BACKSLASH=\$(nullstring) 8ifneq ($(ComSpec)$(COMSPEC),) 9 O_SYS=Windows 10 RM=del /F /Q 11 MKDIR=mkdir 12 CP=copy /Y 13 TYPE=type 14 PS=$(BACKSLASH) 15 Q= 16 coQ=\$(nullstring) 17 fix_platform_path = $(subst /,$(PS), $(1)) 18 DEV_NULL = nul 19else 20 O_SYS=Unix 21 RM=rm -rf 22 MKDIR=mkdir -p 23 CP=cp 24 TYPE=cat 25 PS=/ 26 Q=$(BACKSLASH) 27 coQ= 28 fix_platform_path=$(1) 29 DEV_NULL=/dev/null 30endif 31 32#============================================================= 33# Toolchain definitions 34#============================================================= 35CC = %{CC}% 36CXX = %{CXX}% 37LD = %{LD}% 38 39 40#============================================================= 41# Applications settings 42#============================================================= 43OUT_NAME = %{EXECUTABLE}% 44 45DBG_ARGS ?= 46 47RUN_ARGS ?= 48 49EXT_CFLAGS ?= 50 51CXXFLAGS += %{CXX_FLAGS}% 52 53CCFLAGS += %{CC_FLAGS}% 54 55LDFLAGS += %{LINKER_FLAGS}% 56 57%{EXTRA_APP_SETTINGS}% 58 59 60#============================================================= 61# Files and directories 62#============================================================= 63SRCS := \ 64%{SRCS}% 65 66OBJS := \ 67$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(SRCS))) 68 69 70#============================================================= 71# Common rules 72#============================================================= 73.PHONY: all app flash clean run debug 74 75%.o: %.cc 76 $(CXX) $(CXXFLAGS) $(EXT_CFLAGS) $(INCLUDES) -c $< -o $@ 77 78%.o: %.c 79 $(CC) $(CCFLAGS) $(EXT_CFLAGS) $(INCLUDES) -c $< -o $@ 80 81$(OUT_NAME): $(OBJS) 82 $(LD) $(CXXFLAGS) -o $@ -Ccrossref $(OBJS) $(LDFLAGS) 83 84%{EXTRA_APP_RULES}% 85 86 87#================================================================= 88# Global rules 89#================================================================= 90all: $(OUT_NAME) 91 92app: $(OUT_NAME) 93 94flash: %{BIN_DEPEND}% 95%{BIN_RULE}% 96 97clean: 98 -@$(RM) $(call fix_platform_path,$(OBJS)) 99 -@$(RM) $(OUT_NAME) %{EXTRA_RM_TARGETS}% 100 101#================================================================= 102# Execution rules 103#================================================================= 104 105APP_RUN := %{APP_RUN_CMD}% 106APP_DEBUG := %{APP_DEBUG_CMD}% 107 108run: $(OUT_NAME) 109 $(APP_RUN) $(OUT_NAME) $(RUN_ARGS) 110 111debug: $(OUT_NAME) 112 $(APP_DEBUG) $(OUT_NAME) $(RUN_ARGS) 113 114%{EXTRA_EXECUTE_RULES}% 115