@@ -29,9 +29,10 @@ CFLAGS += -Wall -Werror -DNDEBUG
29
29
CFLAGS += -DNO_QSTR
30
30
CFLAGS += -DMICROPY_ENABLE_DYNRUNTIME
31
31
CFLAGS += -DMP_CONFIGFILE='<$(CONFIG_H ) >'
32
- CFLAGS += -fpic -fno-common
33
- CFLAGS += -U _FORTIFY_SOURCE # prevent use of __*_chk libc functions
34
- # CFLAGS += -fdata-sections -ffunction-sections
32
+
33
+ MICROPY_ARCH_CFLAGS += -fpic -fno-common
34
+ MICROPY_ARCH_CFLAGS += -U_FORTIFY_SOURCE # prevent use of __*_chk libc functions
35
+ # MICROPY_ARCH_CFLAGS += -fdata-sections -ffunction-sections
35
36
36
37
MPY_CROSS_FLAGS += -march=$(ARCH )
37
38
@@ -47,58 +48,57 @@ ifeq ($(ARCH),x86)
47
48
48
49
# x86
49
50
CROSS =
50
- CFLAGS += -m32 -fno-stack-protector
51
+ MICROPY_ARCH_CFLAGS += -m32 -fno-stack-protector
51
52
MICROPY_FLOAT_IMPL ?= double
52
53
53
54
else ifeq ($(ARCH),x64)
54
55
55
56
# x64
56
57
CROSS =
57
- CFLAGS += -fno-stack-protector
58
+ MICROPY_ARCH_CFLAGS += -fno-stack-protector
58
59
MICROPY_FLOAT_IMPL ?= double
59
60
60
61
else ifeq ($(ARCH),armv6m)
61
62
62
63
# thumb
63
64
CROSS = arm-none-eabi-
64
- CFLAGS += -mthumb -mcpu=cortex-m0
65
+ MICROPY_ARCH_CFLAGS += -mthumb -mcpu=cortex-m0
65
66
MICROPY_FLOAT_IMPL ?= none
66
67
67
68
else ifeq ($(ARCH),armv7m)
68
69
69
70
# thumb
70
71
CROSS = arm-none-eabi-
71
- CFLAGS += -mthumb -mcpu=cortex-m3
72
+ MICROPY_ARCH_CFLAGS += -mthumb -mcpu=cortex-m3
72
73
MICROPY_FLOAT_IMPL ?= none
73
74
74
75
else ifeq ($(ARCH),armv7emsp)
75
76
76
77
# thumb
77
78
CROSS = arm-none-eabi-
78
- CFLAGS += -mthumb -mcpu=cortex-m4
79
- CFLAGS += -mfpu=fpv4-sp-d16 -mfloat-abi=hard
79
+ MICROPY_ARCH_CFLAGS += -mthumb -mcpu=cortex-m4
80
+ MICROPY_ARCH_CFLAGS += -mfpu=fpv4-sp-d16 -mfloat-abi=hard
80
81
MICROPY_FLOAT_IMPL ?= float
81
82
82
83
else ifeq ($(ARCH),armv7emdp)
83
84
84
85
# thumb
85
86
CROSS = arm-none-eabi-
86
- CFLAGS += -mthumb -mcpu=cortex-m7
87
- CFLAGS += -mfpu=fpv5-d16 -mfloat-abi=hard
87
+ MICROPY_ARCH_CFLAGS += -mthumb -mcpu=cortex-m7
88
+ MICROPY_ARCH_CFLAGS += -mfpu=fpv5-d16 -mfloat-abi=hard
88
89
MICROPY_FLOAT_IMPL ?= double
89
90
90
91
else ifeq ($(ARCH),xtensa)
91
92
92
93
# xtensa
93
94
CROSS = xtensa-lx106-elf-
94
- CFLAGS += -mforce-l32
95
+ MICROPY_ARCH_CFLAGS += -mforce-l32
95
96
MICROPY_FLOAT_IMPL ?= none
96
97
97
98
else ifeq ($(ARCH),xtensawin)
98
99
99
100
# xtensawin
100
101
CROSS = xtensa-esp32-elf-
101
- CFLAGS +=
102
102
MICROPY_FLOAT_IMPL ?= float
103
103
104
104
else ifeq ($(ARCH),rv32imc)
@@ -122,7 +122,13 @@ $(error architecture '$(ARCH)' not supported)
122
122
endif
123
123
124
124
MICROPY_FLOAT_IMPL_UPPER = $(shell echo $(MICROPY_FLOAT_IMPL ) | tr '[:lower:]' '[:upper:]')
125
- CFLAGS += -DMICROPY_FLOAT_IMPL=MICROPY_FLOAT_IMPL_$(MICROPY_FLOAT_IMPL_UPPER )
125
+ CFLAGS += $(MICROPY_ARCH_CFLAGS ) -DMICROPY_FLOAT_IMPL=MICROPY_FLOAT_IMPL_$(MICROPY_FLOAT_IMPL_UPPER )
126
+
127
+ ifeq ($(MICROPY_LINK_RUNTIME ) ,1)
128
+ LIBGCC_PATH := $(realpath $(shell $(CROSS ) gcc $(CFLAGS ) --print-libgcc-file-name) )
129
+ LIBM_PATH := $(realpath $(shell $(CROSS ) gcc $(CFLAGS ) --print-file-name=libm.a) )
130
+ MPY_LD_FLAGS += $(addprefix -l, $(LIBGCC_PATH ) $(LIBM_PATH ) )
131
+ endif
126
132
127
133
CFLAGS += $(CFLAGS_EXTRA )
128
134
@@ -165,7 +171,7 @@ $(BUILD)/%.mpy: %.py
165
171
# Build native .mpy from object files
166
172
$(BUILD ) /$(MOD ) .native.mpy : $(SRC_O )
167
173
$(ECHO ) " LINK $<"
168
- $(Q )$(MPY_LD ) --arch $(ARCH ) --qstrs $(CONFIG_H ) -o $@ $^
174
+ $(Q )$(MPY_LD ) --arch $(ARCH ) --qstrs $(CONFIG_H ) $( MPY_LD_FLAGS ) -o $@ $^
169
175
170
176
# Build final .mpy from all intermediate .mpy files
171
177
$(MOD ) .mpy : $(BUILD ) /$(MOD ) .native.mpy $(SRC_MPY )
0 commit comments