@@ -135,11 +135,12 @@ ifeq ($(DEBUG), 1)
135135# -DMICROPY_DEBUG_MODULES may also be added to an -flto build, if you wish.
136136CFLAGS += -Os -ggdb -DNDEBUG -DENABLE_MICRO_TRACE_BUFFER -DMICROPY_DEBUG_MODULES
137137else
138- # GCC_INLINE_LIMIT specifies -finline-limit, which can shrink the image size.
138+ # -finline-limit can shrink the image size.
139139# -finline-limit=80 or so is similar to not having it on.
140140# There is no simple default value, though.
141- ifeq ($(FLASH_IMPL ) ,internal_flash.c)
142- GCC_INLINE_LIMIT = -finline-limit=19
141+ ifdef INTERNAL_FLASH_FILESYSTEM
142+ # # Not currently needed
143+ # # CFLAGS += -finline-limit=50
143144endif
144145CFLAGS += -Os -DNDEBUG -flto $(GCC_INLINE_LIMIT )
145146endif
@@ -161,10 +162,14 @@ CFLAGS += -DMICROPY_MODULE_FROZEN_MPY
161162CFLAGS += -Wno-error=lto-type-mismatch
162163endif
163164
164- # LIBM_FILE_NAME = $(shell $(CC) $(CFLAGS) -print-file-name=libm.a)
165165LDFLAGS = $(CFLAGS ) -nostartfiles -fshort-enums -mthumb -mcpu=cortex-m0plus -Lasf/thirdparty/CMSIS/Lib/GCC/ -Wl,-nostdlib -Wl,-T,$(LD_FILE ) -Wl,-Map=$@ .map -Wl,-cref -Wl,-gc-sections -specs=nano.specs
166166LIBS = -larm_cortexM0l_math -lm -lgcc -lc
167167
168+ # Use toolchain libm if we're not using our own.
169+ ifndef INTERNAL_LIBM
170+ LIBS += -lm
171+ endif
172+
168173SRC_ASF = $(addprefix asf/sam0/,\
169174 drivers/adc/adc_sam_d_r/adc.c \
170175 drivers/dac/dac_sam_d_c/dac.c \
@@ -237,6 +242,16 @@ SRC_C = \
237242 lib/libc/string0.c \
238243 lib/mp-readline/readline.c
239244
245+ # Choose which flash filesystem impl to use.
246+ # (Right now INTERNAL_FLASH_FILESYSTEM and SPI_FLASH_FILESYSTEM are mutually exclusive.
247+ # But that might not be true in the future.)
248+ ifdef INTERNAL_FLASH_FILESYSTEM
249+ SRC_C += internal_flash.c
250+ endif
251+ ifdef SPI_FLASH_FILESYSTEM
252+ SRC_C += spi_flash.c
253+ endif
254+
240255SRC_COMMON_HAL = \
241256 analogio/__init__.c \
242257 analogio/AnalogIn.c \
@@ -270,6 +285,30 @@ SRC_COMMON_HAL = \
270285 usb_hid/__init__.c \
271286 usb_hid/Device.c
272287
288+ ifdef INTERNAL_LIBM
289+ SRC_LIBM = $(addprefix lib/,\
290+ libm/math.c \
291+ libm/fmodf.c \
292+ libm/nearbyintf.c \
293+ libm/ef_sqrt.c \
294+ libm/kf_rem_pio2.c \
295+ libm/kf_sin.c \
296+ libm/kf_cos.c \
297+ libm/kf_tan.c \
298+ libm/ef_rem_pio2.c \
299+ libm/sf_sin.c \
300+ libm/sf_cos.c \
301+ libm/sf_tan.c \
302+ libm/sf_frexp.c \
303+ libm/sf_modf.c \
304+ libm/sf_ldexp.c \
305+ libm/asinfacosf.c \
306+ libm/atanf.c \
307+ libm/atan2f.c \
308+ )
309+ endif
310+
311+
273312# These don't have corresponding files in each port but are still located in
274313# shared-bindings to make it clear what the contents of the modules are.
275314SRC_BINDINGS_ENUMS = \
@@ -304,6 +343,9 @@ OBJ = $(PY_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
304343OBJ += $(addprefix $(BUILD ) /, $(SRC_ASF:.c=.o ) )
305344OBJ += $(addprefix $(BUILD ) /, $(SRC_COMMON_HAL_EXPANDED:.c=.o ) )
306345OBJ += $(addprefix $(BUILD ) /, $(SRC_SHARED_MODULE_EXPANDED:.c=.o ) )
346+ ifdef INTERNAL_LIBM
347+ OBJ += $(addprefix $(BUILD ) /, $(SRC_LIBM:.c=.o ) )
348+ endif
307349
308350SRC_QSTR += $(SRC_C ) $(SRC_COMMON_HAL_EXPANDED ) $(SRC_SHARED_MODULE_EXPANDED ) $(STM_SRC_C )
309351
0 commit comments