153 lines
4.2 KiB
Plaintext
153 lines
4.2 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 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
|
|
depends on !NATIVE_APPLICATION
|
|
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"
|
|
depends on !NATIVE_APPLICATION
|
|
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") || (ZEPHYR_PICOLIBC_MODULE && !REQUIRES_FULL_LIBCPP)
|
|
default y
|
|
select FULL_LIBC_SUPPORTED
|
|
help
|
|
Selected when the target has support for picolibc.
|
|
|
|
config NATIVE_LIBC_INCOMPATIBLE
|
|
bool
|
|
help
|
|
Other Kconfig options can select this, if they are not compatible with the
|
|
native/host libC, and should only be compiled with an embedded libC
|
|
|
|
menu "C Library"
|
|
|
|
choice LIBC_IMPLEMENTATION
|
|
prompt "C Library Implementation"
|
|
default EXTERNAL_LIBC if NATIVE_BUILD && !(NATIVE_LIBRARY && NATIVE_LIBC_INCOMPATIBLE)
|
|
default PICOLIBC
|
|
default NEWLIB_LIBC if REQUIRES_FULL_LIBC
|
|
default MINIMAL_LIBC
|
|
|
|
config MINIMAL_LIBC
|
|
bool "Minimal C library"
|
|
depends on !REQUIRES_FULL_LIBC
|
|
depends on MINIMAL_LIBC_SUPPORTED
|
|
imply COMPILER_FREESTANDING
|
|
select COMMON_LIBC_ABORT
|
|
select COMMON_LIBC_STRNLEN
|
|
imply COMMON_LIBC_MALLOC
|
|
imply COMMON_LIBC_CALLOC
|
|
imply COMMON_LIBC_REALLOCARRAY
|
|
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
|
|
select TC_PROVIDES_POSIX_C_LANG_SUPPORT_R
|
|
imply COMMON_LIBC_MALLOC
|
|
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 NEWLIB_LIBC_SUPPORTED
|
|
select NEED_LIBC_MEM_PARTITION
|
|
imply POSIX_DEVICE_IO_ALIAS_CLOSE
|
|
imply POSIX_DEVICE_IO_ALIAS_OPEN
|
|
imply POSIX_DEVICE_IO_ALIAS_READ
|
|
imply POSIX_DEVICE_IO_ALIAS_WRITE
|
|
imply POSIX_FD_MGMT_ALIAS_LSEEK
|
|
imply POSIX_FILE_SYSTEM_ALIAS_FSTAT
|
|
imply POSIX_MULTI_PROCESS_ALIAS_GETPID
|
|
imply POSIX_SIGNALS_ALIAS_KILL
|
|
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
|