# 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 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 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 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. 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. 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