summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extmod/extmod.cmake35
-rw-r--r--extmod/extmod.mk90
2 files changed, 125 insertions, 0 deletions
diff --git a/extmod/extmod.cmake b/extmod/extmod.cmake
index b9a1d6703..ac10faa86 100644
--- a/extmod/extmod.cmake
+++ b/extmod/extmod.cmake
@@ -62,6 +62,41 @@ set(MICROPY_SOURCE_EXTMOD
${MICROPY_EXTMOD_DIR}/nimble/modbluetooth_nimble.c
)
+# Single-precision libm math library.
+
+set(MICROPY_SOURCE_LIB_LIBM
+ ${MICROPY_DIR}/lib/libm/acoshf.c
+ ${MICROPY_DIR}/lib/libm/asinfacosf.c
+ ${MICROPY_DIR}/lib/libm/asinhf.c
+ ${MICROPY_DIR}/lib/libm/atan2f.c
+ ${MICROPY_DIR}/lib/libm/atanf.c
+ ${MICROPY_DIR}/lib/libm/atanhf.c
+ ${MICROPY_DIR}/lib/libm/ef_rem_pio2.c
+ ${MICROPY_DIR}/lib/libm/erf_lgamma.c
+ ${MICROPY_DIR}/lib/libm/fmodf.c
+ ${MICROPY_DIR}/lib/libm/kf_cos.c
+ ${MICROPY_DIR}/lib/libm/kf_rem_pio2.c
+ ${MICROPY_DIR}/lib/libm/kf_sin.c
+ ${MICROPY_DIR}/lib/libm/kf_tan.c
+ ${MICROPY_DIR}/lib/libm/log1pf.c
+ ${MICROPY_DIR}/lib/libm/math.c
+ ${MICROPY_DIR}/lib/libm/nearbyintf.c
+ ${MICROPY_DIR}/lib/libm/roundf.c
+ ${MICROPY_DIR}/lib/libm/sf_cos.c
+ ${MICROPY_DIR}/lib/libm/sf_erf.c
+ ${MICROPY_DIR}/lib/libm/sf_frexp.c
+ ${MICROPY_DIR}/lib/libm/sf_ldexp.c
+ ${MICROPY_DIR}/lib/libm/sf_modf.c
+ ${MICROPY_DIR}/lib/libm/sf_sin.c
+ ${MICROPY_DIR}/lib/libm/sf_tan.c
+ ${MICROPY_DIR}/lib/libm/wf_lgamma.c
+ ${MICROPY_DIR}/lib/libm/wf_tgamma.c
+)
+
+# Choose only one of these sqrt implementations, software or hardware.
+set(MICROPY_SOURCE_LIB_LIBM_SQRT_SW ${MICROPY_DIR}/lib/libm/ef_sqrt.c)
+set(MICROPY_SOURCE_LIB_LIBM_SQRT_HW ${MICROPY_DIR}/lib/libm/thumb_vfp_sqrtf.c)
+
# Library for btree module and associated code
if(MICROPY_PY_BTREE)
diff --git a/extmod/extmod.mk b/extmod/extmod.mk
index 7aba7d93e..9b1e51718 100644
--- a/extmod/extmod.mk
+++ b/extmod/extmod.mk
@@ -71,6 +71,96 @@ CFLAGS += $(CFLAGS_EXTMOD) $(CFLAGS_THIRDPARTY)
LDFLAGS += $(LDFLAGS_EXTMOD) $(LDFLAGS_THIRDPARTY)
################################################################################
+# libm/libm_dbl math library
+
+# Single-precision math library.
+SRC_LIB_LIBM_C += $(addprefix lib/libm/,\
+ acoshf.c \
+ asinfacosf.c \
+ asinhf.c \
+ atan2f.c \
+ atanf.c \
+ atanhf.c \
+ ef_rem_pio2.c \
+ erf_lgamma.c \
+ fmodf.c \
+ kf_cos.c \
+ kf_rem_pio2.c \
+ kf_sin.c \
+ kf_tan.c \
+ log1pf.c \
+ math.c \
+ nearbyintf.c \
+ roundf.c \
+ sf_cos.c \
+ sf_erf.c \
+ sf_frexp.c \
+ sf_ldexp.c \
+ sf_modf.c \
+ sf_sin.c \
+ sf_tan.c \
+ wf_lgamma.c \
+ wf_tgamma.c \
+ )
+
+# Choose only one of these sqrt implementations, software or hardware.
+SRC_LIB_LIBM_SQRT_SW_C += lib/libm/ef_sqrt.c
+SRC_LIB_LIBM_SQRT_HW_C += lib/libm/thumb_vfp_sqrtf.c
+
+# Double-precision math library.
+SRC_LIB_LIBM_DBL_C += $(addprefix lib/libm_dbl/,\
+ __cos.c \
+ __expo2.c \
+ __fpclassify.c \
+ __rem_pio2.c \
+ __rem_pio2_large.c \
+ __signbit.c \
+ __sin.c \
+ __tan.c \
+ acos.c \
+ acosh.c \
+ asin.c \
+ asinh.c \
+ atan.c \
+ atan2.c \
+ atanh.c \
+ ceil.c \
+ cos.c \
+ cosh.c \
+ copysign.c \
+ erf.c \
+ exp.c \
+ expm1.c \
+ floor.c \
+ fmod.c \
+ frexp.c \
+ ldexp.c \
+ lgamma.c \
+ log.c \
+ log10.c \
+ log1p.c \
+ modf.c \
+ nearbyint.c \
+ pow.c \
+ rint.c \
+ round.c \
+ scalbn.c \
+ sin.c \
+ sinh.c \
+ tan.c \
+ tanh.c \
+ tgamma.c \
+ trunc.c \
+ )
+
+# Choose only one of these sqrt implementations, software or hardware.
+SRC_LIB_LIBM_DBL_SQRT_SW_C += lib/libm_dbl/sqrt.c
+SRC_LIB_LIBM_DBL_SQRT_HW_C += lib/libm_dbl/thumb_vfp_sqrt.c
+
+# Too many warnings in libm_dbl, disable for now.
+$(BUILD)/lib/libm_dbl/%.o: CFLAGS += -Wno-double-promotion -Wno-float-conversion
+
+################################################################################
# VFS FAT FS
OOFATFS_DIR = lib/oofatfs