summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Ruben Bakke <glennbakke@gmail.com>2017-07-18 00:18:05 +0200
committerglennrub <glennbakke@gmail.com>2017-10-04 20:42:27 +0200
commit863a5c1734f9c6d4da43c1b3f3f9b528d7c8dcf1 (patch)
tree18760efe82ab6cff6b978fd0713328e7834c6c54
parent785fb6928b70afd0c42677b21c71287993d7fdde (diff)
nrf: Add support for floating point on nrf52 targets.
Duplicating pattern for detecting location of libm, libc and libgcc from teensy port. Activating MICROPY_FLOAT_IMPL (FLOAT) for nrf52 targets and adding libs into the compile. For nrf51 targets it is still set to NONE as code grows to much (about 30k). Some numbers on flash use if MICROPY_FLOAT_IMPL is set to MICROPY_FLOAT_IMPL_FLOAT and math libraries are enabled (lgcc, lc, lm). nrf51: ====== without float support: text data bss dec hex filename 144088 260 30020 174368 2a920 build-pca10028/firmware.elf with float support: text data bss dec hex filename 176228 1336 30020 207584 32ae0 build-pca10028/firmware.elf nrf52: ====== without float support: text data bss dec hex filename 142040 356 36236 178632 2b9c8 build-pca10040/firmware.elf with float support: text data bss dec hex filename 165068 1436 36236 202740 317f4 build-pca10040/firmware.elf
-rw-r--r--nrf/Makefile12
-rw-r--r--nrf/mpconfigport.h5
2 files changed, 16 insertions, 1 deletions
diff --git a/nrf/Makefile b/nrf/Makefile
index 83ed917c5..1b0a7c655 100644
--- a/nrf/Makefile
+++ b/nrf/Makefile
@@ -90,7 +90,17 @@ CFLAGS += -Os -DNDEBUG
LDFLAGS += -Os
endif
-LIBS += \
+LIBS = \
+
+ifeq ($(MCU_VARIANT), nrf52)
+LIBM_FILE_NAME = $(shell $(CC) $(CFLAGS) -print-file-name=libm.a)
+LIBC_FILE_NAME = $(shell $(CC) $(CFLAGS) -print-file-name=libc.a)
+LIBGCC_FILE_NAME = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
+
+LIBS += -L $(dir $(LIBM_FILE_NAME)) -lm
+LIBS += -L $(dir $(LIBC_FILE_NAME)) -lc
+LIBS += -L $(dir $(LIBGCC_FILE_NAME)) -lgcc
+endif
SRC_LIB = $(addprefix lib/,\
libc/string0.c \
diff --git a/nrf/mpconfigport.h b/nrf/mpconfigport.h
index 4c437f023..e90c5a4cc 100644
--- a/nrf/mpconfigport.h
+++ b/nrf/mpconfigport.h
@@ -45,7 +45,12 @@
#define MICROPY_REPL_AUTO_INDENT (1)
#define MICROPY_ENABLE_SOURCE_LINE (0)
#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_MPZ)
+#if NRF51
#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_NONE)
+#else
+#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_FLOAT)
+#endif
+
#define MICROPY_OPT_COMPUTED_GOTO (0)
#define MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE (0)
#define MICROPY_OPT_MPZ_BITWISE (0)