-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
64 lines (50 loc) · 1.62 KB
/
Makefile
File metadata and controls
64 lines (50 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
OUT_PATH :=
OUT_FILE :=
C_SRCS :=
C_INCS :=
C_DEPS :=
OBJS :=
-include platform.mk
-include objects.mk
OBJS:=$(patsubst %.c, $(OUT_PATH)/%.o, $(filter %.c, $(C_SRCS)))
# OBJS:=$(C_SRCS:.c=.o)
C_DEPS:=$(OBJS:.o=.d)
## -MMD 可以用于自动生成头文件依赖关系
$(OUT_PATH)/%.o : %.c
@echo 'Building file: $<'
@echo 'Invoking: GNU ARM Cross C Compiler'
$(shell mkdir -p $(dir $@))
$(MAKE_C_COMPILER) $(MAKE_C_FLAGS_RELEASE) $(MAKE_C_FLAGS) $(C_INCS) $(MAKE_CC_FLAGS) -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -MT"$(@:%.o=%.d)" -c "$<" -o "$@"
@echo 'Finished building: $<'
@echo ' '
# All Target
all: clean build
# Build Target
build: $(OUT_FILE).elf $(OUT_FILE).bin $(OUT_FILE).siz
# Tool invocations
$(OUT_FILE).elf: $(OBJS)
@echo 'Building target: $@'
@echo 'Invoking: GNU ARM Cross C++ Linker'
$(MAKE_C_COMPILER) $(MAKE_C_FLAGS_RELEASE) $(MAKE_C_FLAGS) $(MAKE_EXE_LINKER_FLAGS_RELEASE) $(MAKE_EXE_LINKER_FLAGS) -Wl,-Map,"$(OUT_FILE).map" -o "$(OUT_FILE).elf" $(OBJS)
@echo 'Finished building target: $@'
@echo ' '
$(OUT_FILE).bin: $(OUT_FILE).elf
@echo 'Invoking: GNU ARM Cross Create Flash Image'
$(MAKE_OBJCOPY) -O binary "$(OUT_FILE).elf" "$(OUT_FILE).bin"
@echo 'Finished building: $@'
@echo ' '
$(OUT_FILE).siz: $(OUT_FILE).elf
@echo 'Invoking: GNU ARM Cross Print Size'
$(MAKE_SIZE) --format=berkeley "$(OUT_FILE).elf"
@echo 'Finished building: $@'
@echo ' '
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
endif
# Other Targets
clean:
-$(RM) $(OBJS)$(C_DEPS) $(OUT_FILE).elf $(OUT_FILE).bin $(OUT_FILE).siz $(OUT_FILE).map
-@echo ' '
.PHONY: all build clean dependents