123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- # 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.
- 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 LIBC_STRING_BROM
- bool "use rom export string function"
- help
- if yes, use rom export string function. no, use default string.c
- 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
|