The picolibc module can be built without thread local storage support if desired. Allow that by using 'imply' instead of 'select'. However, when using the toolchain picolibc, we assume that TLS will be enabled wherever supported, so make sure we match by adding a 'select' for this case. Signed-off-by: Keith Packard <keithp@keithp.com>
145 lines
3.8 KiB
Plaintext
145 lines
3.8 KiB
Plaintext
# C library
|
|
|
|
# Copyright (c) 2016 Intel Corporation
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
config REQUIRES_FULL_LIBC
|
|
prompt "Require complete C library"
|
|
bool
|
|
help
|
|
Select a C library implementation that provides a complete C library
|
|
implementation, rather than the subset provided by MINIMAL_LIBC.
|
|
|
|
config REQUIRES_FLOAT_PRINTF
|
|
bool "Requires floating point support in printf"
|
|
select PICOLIBC_IO_FLOAT if PICOLIBC
|
|
select CBPRINTF_FP_SUPPORT if MINIMAL_LIBC
|
|
select NEWLIB_LIBC_FLOAT_PRINTF if NEWLIB_LIBC
|
|
help
|
|
Select a printf implementation that provides a complete
|
|
implementation including floating point support.
|
|
|
|
config FULL_LIBC_SUPPORTED
|
|
bool
|
|
help
|
|
Selected when the target has at least one C library that offers a
|
|
complete implementation and which would be selected when
|
|
REQUIRES_FULL_LIBC is set.
|
|
|
|
config MINIMAL_LIBC_SUPPORTED
|
|
bool
|
|
default y
|
|
help
|
|
Selected when the target has support for the minimal C library
|
|
|
|
config NEWLIB_LIBC_SUPPORTED
|
|
bool
|
|
default y
|
|
depends on "$(TOOLCHAIN_HAS_NEWLIB)" = "y"
|
|
select FULL_LIBC_SUPPORTED
|
|
help
|
|
Selected when the target has support for the newlib C library
|
|
|
|
# Picolibc with C++ support in Zephyr SDK is handled by Zephyr SDK's own Kconfig.
|
|
config PICOLIBC_SUPPORTED
|
|
bool
|
|
depends on !NATIVE_APPLICATION
|
|
depends on ("$(TOOLCHAIN_HAS_PICOLIBC)" = "y") || (NATIVE_LIBRARY)
|
|
depends on !REQUIRES_FULL_LIBCPP || ("$(TOOLCHAIN_HAS_PICOLIBC)" = "y")
|
|
default y
|
|
select FULL_LIBC_SUPPORTED
|
|
help
|
|
Selected when the target has support for picolibc.
|
|
|
|
config SUPPORT_MINIMAL_LIBC
|
|
bool
|
|
select MINIMAL_LIBC_SUPPORTED
|
|
select DEPRECATED
|
|
help
|
|
Legacy symbol that selects MINIMAL_LIBC_SUPPORTED
|
|
|
|
menu "C Library"
|
|
|
|
choice LIBC_IMPLEMENTATION
|
|
prompt "C Library Implementation"
|
|
default EXTERNAL_LIBC if NATIVE_BUILD && !(NATIVE_LIBRARY && POSIX_API)
|
|
default PICOLIBC
|
|
default NEWLIB_LIBC if REQUIRES_FULL_LIBC
|
|
default MINIMAL_LIBC
|
|
|
|
config MINIMAL_LIBC
|
|
bool "Minimal C library"
|
|
depends on !NATIVE_APPLICATION
|
|
depends on !REQUIRES_FULL_LIBC
|
|
depends on MINIMAL_LIBC_SUPPORTED
|
|
imply COMPILER_FREESTANDING
|
|
select COMMON_LIBC_ABORT
|
|
select COMMON_LIBC_STRNLEN
|
|
help
|
|
Build with minimal C library.
|
|
|
|
config PICOLIBC
|
|
bool "Picolibc library"
|
|
select COMMON_LIBC_ABORT
|
|
imply THREAD_LOCAL_STORAGE if ARCH_HAS_THREAD_LOCAL_STORAGE && TOOLCHAIN_SUPPORTS_THREAD_LOCAL_STORAGE
|
|
select LIBC_ERRNO if THREAD_LOCAL_STORAGE
|
|
select NEED_LIBC_MEM_PARTITION
|
|
imply COMMON_LIBC_MALLOC
|
|
depends on !NATIVE_APPLICATION
|
|
depends on PICOLIBC_SUPPORTED
|
|
help
|
|
Build with picolibc library. The picolibc library is built as
|
|
a module if PICOLIBC_MODULE is set, otherwise picolibc is
|
|
expected to be provided by the toolchain.
|
|
|
|
config NEWLIB_LIBC
|
|
bool "Newlib C library"
|
|
select COMMON_LIBC_ABORT
|
|
depends on !NATIVE_APPLICATION
|
|
depends on NEWLIB_LIBC_SUPPORTED
|
|
select NEED_LIBC_MEM_PARTITION
|
|
help
|
|
Build with newlib library. The newlib library is expected to be
|
|
part of the SDK in this case.
|
|
|
|
config ARCMWDT_LIBC
|
|
bool "ARC MWDT C library"
|
|
depends on !NATIVE_APPLICATION
|
|
depends on "$(ZEPHYR_TOOLCHAIN_VARIANT)" = "arcmwdt"
|
|
help
|
|
C library provided by ARC MWDT toolchain.
|
|
|
|
config EXTERNAL_LIBC
|
|
bool "External C library"
|
|
help
|
|
Build with external/user provided C library.
|
|
|
|
endchoice # LIBC_IMPLEMENTATION
|
|
|
|
config HAS_NEWLIB_LIBC_NANO
|
|
bool
|
|
|
|
rsource "common/Kconfig"
|
|
rsource "minimal/Kconfig"
|
|
rsource "newlib/Kconfig"
|
|
rsource "picolibc/Kconfig"
|
|
|
|
config STDOUT_CONSOLE
|
|
bool "Send stdout to console"
|
|
depends on CONSOLE_HAS_DRIVER
|
|
depends on !(NATIVE_APPLICATION || (NATIVE_LIBRARY && EXTERNAL_LIBC))
|
|
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.
|
|
|
|
config NEED_LIBC_MEM_PARTITION
|
|
bool
|
|
help
|
|
Hidden option to signal that a memory partition is needed for
|
|
the C library even though it would not have been enabled
|
|
otherwise.
|
|
|
|
endmenu
|