zephyr/lib/libc/minimal/Kconfig
Kumar Gala 672aeace88 libc: share time() between minimal libc and armclang libc
Introduce a place to share implementations of libc functions that
are needed by different libc versions.  Place time() in this common
location so it can be shared when building for either minimal libc or
armclang libc.

Signed-off-by: Kumar Gala <kumar.gala@intel.com>
2023-03-27 09:49:40 +02:00

92 lines
2.9 KiB
Plaintext

# Copyright (c) 2016 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
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"
select COMMON_LIBC_TIME if POSIX_CLOCK
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.
config MINIMAL_LIBC_STRING_ERROR_TABLE
bool "String error table for strerror() and strerror_r()"
help
Select this option to ensure that streror(), strerror_r()
produce strings corresponding to the descriptions in errno.h.
The string error table can add ~2kiB to ROM. As such, it is
disabled by default. In this case, strerror() and strerror_r()
symbols are still present, but the functions produce an empty
string.
endif # MINIMAL_LIBC