newlib: add support for nano-formatted-io
If newlib is configured with --enable-newlib-nano-formatted-io, floating-point support is split out of the formatted I/O code into weak functions which are not linked by default. This leads to a smaller code by about 16~20k when using newlib "printf" and/or "sscanf" but not using floating point I/O. Programs that need floating-point I/O support must explicitly request linking of one or both of the floating-point functions: _printf_float or _scanf_float. This can be done at link time using the -u option which can be passed to either gcc or ld. Implemented via new configuration options: CONFIG_NEWLIB_LIBC_FLOAT_PRINTF CONFIG_NEWLIB_LIBC_FLOAT_SCANF Change-Id: I57f9d9f02e6d21d6011d14de7153b1d3ba6f6e32 Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
This commit is contained in:
parent
cc9cdadeae
commit
f3bf5abd52
2 changed files with 24 additions and 0 deletions
|
@ -5,6 +5,15 @@ endif
|
|||
ifdef CONFIG_NEWLIB_LIBC
|
||||
ZEPHYRINCLUDE += $(TOOLCHAIN_CFLAGS)
|
||||
ALL_LIBS += m c
|
||||
|
||||
ifdef CONFIG_NEWLIB_LIBC_FLOAT_PRINTF
|
||||
LDFLAGS += -u _printf_float
|
||||
endif
|
||||
|
||||
ifdef CONFIG_NEWLIB_LIBC_FLOAT_SCANF
|
||||
LDFLAGS += -u _scanf_float
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
include $(srctree)/lib/iot/Makefile
|
||||
|
|
15
misc/Kconfig
15
misc/Kconfig
|
@ -123,6 +123,21 @@ config NEWLIB_LIBC
|
|||
|
||||
endchoice
|
||||
|
||||
config NEWLIB_LIBC_FLOAT_PRINTF
|
||||
bool "Build with newlib float printf"
|
||||
default n
|
||||
depends on NEWLIB_LIBC
|
||||
help
|
||||
Build with floating point printf enabled. This will increase the size of
|
||||
the image.
|
||||
|
||||
config NEWLIB_LIBC_FLOAT_SCANF
|
||||
bool "Build with newlib float scanf"
|
||||
default n
|
||||
depends on NEWLIB_LIBC
|
||||
help
|
||||
Build with floating point scanf enabled. This will increase the size of
|
||||
the image.
|
||||
|
||||
config MINIMAL_LIBC_EXTENDED
|
||||
bool "Build additional libc functions [EXPERIMENTAL]"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue