forked from bootlin/buildroot-external-st
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.stm32
85 lines (68 loc) · 1.94 KB
/
Makefile.stm32
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ld
AS := $(CROSS_COMPILE)ar
STRIP := $(CROSS_COMPILE)strip
OBJCOPY := $(CROSS_COMPILE)objcopy
SIZE := $(CROSS_COMPILE)size
ifeq ($(CPU_TYPE),M4)
COMMONFLAGS += -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16
endif
ifeq ($(CPU_TYPE),A7)
COMMONFLAGS += -mcpu=cortex-a7 -mthumb -mfloat-abi=hard -mfpu=neon-vfpv4
endif
# Project settings
PROJ_DIR := $(PROJECT_DIR)
PROJ_NAME := $(BIN_NAME)
# Output
OUT := $(PROJ_DIR)/out
BUILD_OUT := $(OUT)/$(BUILD_CONFIG)
# Bin
TESTELF := $(BUILD_OUT)/$(PROJ_NAME).elf
TESTBIN := $(BUILD_OUT)/$(PROJ_NAME).bin
# CFLAGS rules
CFLAGS += $(COMMONFLAGS)
CFLAGS += -Os
#CFLAGS += -Og
CFLAGS += -std=gnu11
CFLAGS += -fstack-usage
CFLAGS += -Wall -fmessage-length=0 -ffunction-sections -c -fmessage-length=0 -MMD -MP
#CFLAGS += -Wno-unused-function
#CFLAGS += -Wno-unused-variable
CFLAGS += -g3
#CFLAGS += -g
#CFLAGS += -Werror
# LDFLAGS rules
LDFLAGS += $(COMMONFLAGS)
LDFLAGS += -specs=nosys.specs -specs=nano.specs
LDFLAGS += -Wl,-Map=$(BUILD_OUT)/output.map -Wl,--gc-sections -lm
#LDFLAGS += -D__MEM_START__=0x2ffc2000 -D__MEM_END__=0x2fff3000 -D__MEM_SIZE__=0x31000
#debug LINKER
#LDFLAGS += -Wl,--verbose
# Get config code from the project to compile (source, cflags, ldflags, ldlibs)
include $(BUILD_OUT)/conf/config.in
# Build rule
define c-compilation-rule
$1: $2 $(LDSCRIPT)
@echo $2 \< $1
@mkdir -pv `dirname $1`
$(CC) $(CFLAGS) -c $2 -o $1
COBJ+=$1
endef
# generate a compilation rule for each source file
$(foreach r,$(CSRC), $(eval $(call c-compilation-rule,$(BUILD_OUT)/$(r).o,$(r))))
# Include dep files
#DEPS= $(foreach file,$(CSRC),$(file).d)
#-include $(DEPS)
# Build elf output
$(TESTELF): $(COBJ)
@echo link $@
$(CC) $(LDFLAGS) -o [email protected] $^ $(LDLIBS) -T$(LDSCRIPT)
@cp [email protected] $@
@$(STRIP) -g $@
@$(SIZE) $@
# Build bin output
$(TESTBIN): $(TESTELF)
@$(OBJCOPY) -O binary $(TESTELF) $(TESTBIN)
clean:
rm -rf $(COBJ) $(TESTELF) $(TESTBIN)
all: $(TESTBIN)