| # 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_MALLOC |
| bool "Enable 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 "Enable 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 "Enable 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 "Enables rand and srand functions" |
| select NEED_LIBC_MEM_PARTITION |
| help |
| Enable rand() and srand() for the minimal libc. The |
| functions implicitly access global/static data. Such data |
| must be put into a memory partition if CONFIG_USERSPACE=y, |
| and disabling this option may save an entry for application |
| defining many custom partitions. |
| |
| Say 'Y' here if you need rand() and srand(). This might require |
| an additional memory partition. |
| |
| 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 libraray even though it would not have been enabled |
| otherwise. |
| |
| endmenu |