217 lines
6.2 KiB
Plaintext
217 lines
6.2 KiB
Plaintext
# C library
|
|
|
|
# Copyright (c) 2016 Intel Corporation
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
menu "C Library"
|
|
|
|
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
|
|
|
|
config SUPPORT_MINIMAL_LIBC
|
|
bool
|
|
default y
|
|
|
|
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
|
|
depends on !REQUIRES_FULL_LIBC
|
|
depends on SUPPORT_MINIMAL_LIBC
|
|
help
|
|
Build with minimal C library.
|
|
|
|
config NEWLIB_LIBC
|
|
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 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
|
|
|
|
if NEWLIB_LIBC
|
|
|
|
config NEWLIB_LIBC_NANO
|
|
bool "Build with newlib-nano C library"
|
|
depends on HAS_NEWLIB_LIBC_NANO
|
|
default y
|
|
help
|
|
Build with newlib-nano library, for small embedded apps.
|
|
The newlib-nano library for ARM embedded processors is a part of the
|
|
GNU Tools for ARM Embedded Processors.
|
|
|
|
config NEWLIB_LIBC_MAX_MAPPED_REGION_SIZE
|
|
int "Maximum memory mapped for newlib heap"
|
|
depends on MMU
|
|
default 1048576
|
|
help
|
|
On MMU-based systems, indicates the maximum amount of memory which
|
|
will be used for the newlib malloc() heap. The actual amount of
|
|
memory used will be the minimum of this value and the amount of
|
|
free physical memory at kernel boot.
|
|
|
|
config NEWLIB_LIBC_MIN_REQUIRED_HEAP_SIZE
|
|
int "Newlib minimum required heap size"
|
|
default 2048 if NEWLIB_LIBC_NANO
|
|
default 8192 if !NEWLIB_LIBC_NANO
|
|
help
|
|
Specifies the amount of memory space that must be available for the
|
|
newlib heap. An assertion failure message will be displayed during
|
|
initialization if the memory space available for the newlib heap is
|
|
smaller than this value.
|
|
|
|
config NEWLIB_LIBC_ALIGNED_HEAP_SIZE
|
|
int "Newlib aligned heap size"
|
|
depends on MPU_REQUIRES_POWER_OF_TWO_ALIGNMENT
|
|
depends on USERSPACE
|
|
default 0
|
|
help
|
|
If user mode is enabled, and MPU hardware has requirements that
|
|
regions be sized to a power of two and aligned to their size,
|
|
and user mode threads need to access this heap, then this is necessary
|
|
to properly define an MPU region for the heap.
|
|
|
|
If this is left at 0, then remaining system RAM will be used for this
|
|
area and it may not be possible to program it as an MPU region.
|
|
|
|
config NEWLIB_LIBC_FLOAT_PRINTF
|
|
bool "Build with newlib float printf"
|
|
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"
|
|
help
|
|
Build with floating point scanf enabled. This will increase the size of
|
|
the image.
|
|
|
|
config NEWLIB_LIBC_HEAP_LISTENER
|
|
bool "Notify heap listeners of newlib libc heap events"
|
|
select HEAP_LISTENER
|
|
help
|
|
Notify registered heap listeners upon certain events related to the newlib
|
|
libc heap usage, such as the heap resize.
|
|
|
|
endif # NEWLIB_LIBC
|
|
|
|
if MINIMAL_LIBC
|
|
|
|
config MINIMAL_LIBC_NON_REENTRANT_FUNCTIONS
|
|
bool "Non-reentrant functions"
|
|
default y if !USERSPACE
|
|
select NEED_LIBC_MEM_PARTITION
|
|
help
|
|
Enable non-reentrant functions that make use of the globals; e.g.
|
|
rand() and gmtime(). The globals must be put into a dedicated C
|
|
library memory partition when CONFIG_USERSPACE=y, and enabling this
|
|
option may require an additional memory protection region.
|
|
|
|
config MINIMAL_LIBC_MALLOC
|
|
bool "Minimal libc malloc implementation"
|
|
default y
|
|
help
|
|
Enable the minimal libc's implementation of malloc, free, and realloc.
|
|
Disable if you wish to provide your own implementations of these functions.
|
|
|
|
config MINIMAL_LIBC_MALLOC_ARENA_SIZE
|
|
int "Size of the minimal libc malloc arena"
|
|
default 0
|
|
depends on MINIMAL_LIBC_MALLOC
|
|
help
|
|
Indicate the size in bytes of the memory arena used for
|
|
minimal libc's malloc() implementation.
|
|
|
|
config MINIMAL_LIBC_CALLOC
|
|
bool "Minimal libc trivial calloc implementation"
|
|
default y
|
|
help
|
|
Enable the minimal libc's trivial implementation of calloc, which
|
|
forwards to malloc and memset.
|
|
|
|
config MINIMAL_LIBC_REALLOCARRAY
|
|
bool "Minimal libc trivial reallocarray implementation"
|
|
default y
|
|
help
|
|
Enable the minimal libc's trivial implementation of reallocarray, which
|
|
forwards to realloc.
|
|
|
|
config MINIMAL_LIBC_LL_PRINTF
|
|
bool "Build with minimal libc long long printf" if !64BIT
|
|
default y if 64BIT
|
|
help
|
|
Build with long long printf enabled. This will increase the size of
|
|
the image.
|
|
|
|
config MINIMAL_LIBC_OPTIMIZE_STRING_FOR_SIZE
|
|
bool "Use size optimized string functions"
|
|
default y if SIZE_OPTIMIZATIONS
|
|
help
|
|
Enable smaller but potentially slower implementations of memcpy and
|
|
memset. On the Cortex-M0+ this reduces the total code size by 120 bytes.
|
|
|
|
config MINIMAL_LIBC_RAND
|
|
bool "Rand and srand functions"
|
|
help
|
|
Enable rand_r() for the minimal libc.
|
|
|
|
In order to make use of the non-reentrant rand() and srand(), it is
|
|
necessary to set CONFIG_MINIMAL_LIBC_NON_REENTRANT_FUNCTIONS=y.
|
|
|
|
config MINIMAL_LIBC_TIME
|
|
bool "Time functions"
|
|
default y
|
|
help
|
|
Enable time() and gmtime_r() for the minimal libc.
|
|
|
|
time() requires CONFIG_POSIX_CLOCK=y because it relies on the POSIX
|
|
clock_gettime() function.
|
|
|
|
In order to make use of the non-reentrant gmtime(), it is necessary
|
|
to set CONFIG_MINIMAL_LIBC_NON_REENTRANT_FUNCTIONS=y.
|
|
|
|
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.
|
|
|
|
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
|