@@ -48,7 +48,7 @@ INC += -I$(HAL_DIR)/inc
4848INC += -I$(USBDEV_DIR ) /core/inc -I$(USBDEV_DIR ) /class/inc
4949# INC += -I$(USBHOST_DIR)
5050
51- CFLAGS_CORTEX_M = -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -Wdouble-promotion
51+ CFLAGS_CORTEX_M = -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard
5252CFLAGS_MCU_f4 = $(CFLAGS_CORTEX_M ) -mtune=cortex-m4 -mcpu=cortex-m4 -DMCU_SERIES_F4
5353CFLAGS_MCU_f7 = $(CFLAGS_CORTEX_M ) -mtune=cortex-m7 -mcpu=cortex-m7 -DMCU_SERIES_F7
5454CFLAGS_MCU_l4 = $(CFLAGS_CORTEX_M ) -mtune=cortex-m4 -mcpu=cortex-m4 -DMCU_SERIES_L4
@@ -60,6 +60,13 @@ CFLAGS += $(COPT)
6060CFLAGS += -Iboards/$(BOARD )
6161CFLAGS += -DSTM32_HAL_H='<stm32$(MCU_SERIES ) xx_hal.h>'
6262
63+ ifeq ($(FLOAT_IMPL ) ,double)
64+ CFLAGS += -DMICROPY_FLOAT_IMPL=MICROPY_FLOAT_IMPL_DOUBLE
65+ else
66+ CFLAGS += -DMICROPY_FLOAT_IMPL=MICROPY_FLOAT_IMPL_FLOAT
67+ CFLAGS += -fsingle-precision-constant -Wdouble-promotion
68+ endif
69+
6370LDFLAGS = -nostdlib -L $(LD_DIR ) -T $(LD_FILE ) -Map=$(@:.elf=.map ) --cref
6471LIBS = $(shell $(CC ) $(CFLAGS ) -print-libgcc-file-name)
6572
7784
7885SRC_LIB = $(addprefix lib/,\
7986 libc/string0.c \
80- libm/math.c \
81- libm/thumb_vfp_sqrtf.c \
82- libm/asinfacosf.c \
83- libm/atanf.c \
84- libm/atan2f.c \
85- libm/fmodf.c \
86- libm/nearbyintf.c \
87- libm/log1pf.c \
88- libm/acoshf.c \
89- libm/asinhf.c \
90- libm/atanhf.c \
91- libm/kf_rem_pio2.c \
92- libm/kf_sin.c \
93- libm/kf_cos.c \
94- libm/kf_tan.c \
95- libm/ef_rem_pio2.c \
96- libm/erf_lgamma.c \
97- libm/sf_sin.c \
98- libm/sf_cos.c \
99- libm/sf_tan.c \
100- libm/sf_frexp.c \
101- libm/sf_modf.c \
102- libm/sf_ldexp.c \
103- libm/sf_erf.c \
104- libm/wf_lgamma.c \
105- libm/wf_tgamma.c \
10687 oofatfs/ff.c \
10788 oofatfs/option/unicode.c \
10889 mp-readline/readline.c \
@@ -113,6 +94,81 @@ SRC_LIB = $(addprefix lib/,\
11394 utils/sys_stdio_mphal.c \
11495 )
11596
97+ ifeq ($(FLOAT_IMPL ) ,double)
98+ SRC_LIBM = $(addprefix lib/libm_dbl/,\
99+ __cos.c \
100+ __expo2.c \
101+ __fpclassify.c \
102+ __rem_pio2.c \
103+ __rem_pio2_large.c \
104+ __signbit.c \
105+ __sin.c \
106+ __tan.c \
107+ acos.c \
108+ acosh.c \
109+ asin.c \
110+ asinh.c \
111+ atan.c \
112+ atan2.c \
113+ atanh.c \
114+ ceil.c \
115+ cos.c \
116+ cosh.c \
117+ erf.c \
118+ exp.c \
119+ expm1.c \
120+ floor.c \
121+ fmod.c \
122+ frexp.c \
123+ ldexp.c \
124+ lgamma.c \
125+ log.c \
126+ log10.c \
127+ log1p.c \
128+ modf.c \
129+ nearbyint.c \
130+ pow.c \
131+ rint.c \
132+ scalbn.c \
133+ sin.c \
134+ sinh.c \
135+ sqrt.c \
136+ tan.c \
137+ tanh.c \
138+ tgamma.c \
139+ trunc.c \
140+ )
141+ else
142+ SRC_LIBM = $(addprefix lib/libm/,\
143+ math.c \
144+ thumb_vfp_sqrtf.c \
145+ acoshf.c \
146+ asinfacosf.c \
147+ asinhf.c \
148+ atan2f.c \
149+ atanf.c \
150+ atanhf.c \
151+ ef_rem_pio2.c \
152+ erf_lgamma.c \
153+ fmodf.c \
154+ kf_cos.c \
155+ kf_rem_pio2.c \
156+ kf_sin.c \
157+ kf_tan.c \
158+ log1pf.c \
159+ nearbyintf.c \
160+ sf_cos.c \
161+ sf_erf.c \
162+ sf_frexp.c \
163+ sf_ldexp.c \
164+ sf_modf.c \
165+ sf_sin.c \
166+ sf_tan.c \
167+ wf_lgamma.c \
168+ wf_tgamma.c \
169+ )
170+ endif
171+
116172EXTMOD_SRC_C = $(addprefix extmod/,\
117173 modonewire.c \
118174 )
@@ -258,6 +314,7 @@ endif
258314OBJ =
259315OBJ += $(PY_O )
260316OBJ += $(addprefix $(BUILD ) /, $(SRC_LIB:.c=.o ) )
317+ OBJ += $(addprefix $(BUILD ) /, $(SRC_LIBM:.c=.o ) )
261318OBJ += $(addprefix $(BUILD ) /, $(EXTMOD_SRC_C:.c=.o ) )
262319OBJ += $(addprefix $(BUILD ) /, $(DRIVERS_SRC_C:.c=.o ) )
263320OBJ += $(addprefix $(BUILD ) /, $(SRC_C:.c=.o ) )
0 commit comments