Skip to content

Commit

Permalink
libc: Added Kconfig choice to select C library
Browse files Browse the repository at this point in the history
Added Kconfig choice to select C library implementation

Signed-off-by: Jan Van Winkel <jan.van_winkel@dxplore.eu>
  • Loading branch information
vanwinkeljan authored and galak committed Nov 1, 2019
1 parent 51d19cb commit c1f865b
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 19 deletions.
2 changes: 1 addition & 1 deletion lib/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# SPDX-License-Identifier: Apache-2.0

if(NOT CONFIG_NATIVE_APPLICATION)
if(NOT CONFIG_EXTERNAL_LIBC)
add_subdirectory(libc)
add_subdirectory(posix)
endif()
Expand Down
62 changes: 44 additions & 18 deletions lib/libc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,44 @@
#

menu "C Library"
depends on !NATIVE_APPLICATION

config REQUIRES_FULL_LIBC
bool
help
Helper symbol to indicate some feature requires a C library implementation
with more functionality than what MINIMAL_LIBC provides

choice LIBC_IMPLEMENTATION
prompt "C Library Implementation"
default EXTERNAL_LIBC if NATIVE_APPLICATION
default NEWLIB_LIBC if REQUIRES_FULL_LIBC
default MINIMAL_LIBC

config MINIMAL_LIBC
bool "Minimal C library"
depends on !NATIVE_APPLICATION
help
Build with minimal C library.

config NEWLIB_LIBC
bool "Build with newlib c library"
bool "Newlib C library"
depends on !NATIVE_APPLICATION
help
Build with newlib library. The newlib library is expected to be
part of the SDK in this case.

config EXTERNAL_LIBC
bool "External C library"
help
Build with external/user provided C library.

endchoice #LIBC_IMPLEMENTATION

if NEWLIB_LIBC

if "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "gnuarmemb"
config NEWLIB_LIBC_NANO
bool "Build with newlib-nano c library"
depends on NEWLIB_LIBC
bool "Build with newlib-nano C library"
default y
help
Build with newlib-nano library, for small embedded apps.
Expand All @@ -29,7 +55,6 @@ endif
config NEWLIB_LIBC_ALIGNED_HEAP_SIZE
int "Newlib aligned heap size"
depends on MPU_REQUIRES_POWER_OF_TWO_ALIGNMENT
depends on NEWLIB_LIBC
depends on USERSPACE
default 0
help
Expand All @@ -43,32 +68,22 @@ config NEWLIB_LIBC_ALIGNED_HEAP_SIZE

config NEWLIB_LIBC_FLOAT_PRINTF
bool "Build with newlib float printf"
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"
depends on NEWLIB_LIBC
help
Build with floating point scanf enabled. This will increase the size of
the image.

config STDOUT_CONSOLE
bool "Send stdout to console"
depends on CONSOLE_HAS_DRIVER
default y
help
This option directs standard output (e.g. printf) to the console
device, rather than suppressing it entirely. See also EARLY_CONSOLE
option.
endif #NEWLIB_LIBC

# Minimal libc options
if MINIMAL_LIBC

config MINIMAL_LIBC_MALLOC_ARENA_SIZE
int "Size of the minimal libc malloc arena"
depends on !NEWLIB_LIBC
default 0
help
Indicate the size of the memory arena used for minimal libc's
Expand All @@ -77,10 +92,21 @@ config MINIMAL_LIBC_MALLOC_ARENA_SIZE

config MINIMAL_LIBC_LL_PRINTF
bool "Build with minimal libc long long printf" if !64BIT
depends on !NEWLIB_LIBC
default y if 64BIT
help
Build with long long printf enabled. This will increase the size of
the image.

endif #MINIMAL_LIBC

config STDOUT_CONSOLE
bool "Send stdout to console"
depends on CONSOLE_HAS_DRIVER
depends on !NATIVE_APPLICATION
default y
help
This option directs standard output (e.g. printf) to the console
device, rather than suppressing it entirely. See also EARLY_CONSOLE
option.

endmenu

0 comments on commit c1f865b

Please sign in to comment.