| # Copyright © 2021 Amazon.com, Inc. or its affiliates. |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| config PICOLIBC_USE_MODULE |
| bool "Use picolibc module" |
| default y |
| select PICOLIBC_MODULE |
| help |
| Use picolibc module instead of picolibc included with toolchain |
| |
| config PICOLIBC_HEAP_SIZE |
| int "Picolibc heap size (bytes)" |
| default 1048576 if MMU |
| default 65536 if USERSPACE && MPU_REQUIRES_POWER_OF_TWO_ALIGNMENT |
| default -1 |
| help |
| Indicates the amount of memory which will be used by the picolibc |
| malloc() heap. |
| |
| If user mode is enabled, and MPU hardware has requirements that |
| regions be sized to a power of two and aligned to their size, |
| then this must be defined as a power of two or a compile error |
| will result. |
| |
| If set to zero, then no malloc() heap will be available. |
| |
| If set to -1, then all remaining system RAM will be used for this |
| area. |
| |
| config PICOLIBC_IO_LONG_LONG |
| bool "support for long long in integer-only printf/scanf" |
| default n |
| help |
| Includes support for long long in integer-only printf/scanf. long long |
| types are always supported in the floating-point versions. |
| |
| config PICOLIBC_IO_FLOAT |
| bool "support for floating point values in printf/scanf" |
| default n |
| help |
| Include floating point support in printf/scanf functions. |
| |
| if PICOLIBC_USE_MODULE |
| |
| if PICOLIBC |
| choice PICOLIBC_OPTIMIZATIONS |
| prompt "Optimization level" |
| default PICOLIBC_SIZE_OPTIMIZATIONS if SIZE_OPTIMIZATIONS |
| default PICOLIBC_SPEED_OPTIMIZATIONS if SPEED_OPTIMIZATIONS |
| default PICOLIBC_DEBUG_OPTIMIZATIONS if DEBUG_OPTIMIZATIONS |
| default PICOLIBC_NO_OPTIMIZATIONS if NO_OPTIMIZATIONS |
| help |
| Note that these flags shall only control the compiler |
| optimization level for picolibc, not the level for the |
| rest of Zephyr |
| |
| config PICOLIBC_SIZE_OPTIMIZATIONS |
| bool "Optimize for size" |
| help |
| Compiler optimizations will be set to -Os independently of other |
| options. |
| |
| config PICOLIBC_SPEED_OPTIMIZATIONS |
| bool "Optimize for speed" |
| help |
| Compiler optimizations will be set to -O2 independently of other |
| options. |
| |
| config PICOLIBC_DEBUG_OPTIMIZATIONS |
| bool "Optimize debugging experience" |
| help |
| Compiler optimizations will be set to -Og independently of other |
| options. |
| |
| config PICOLIBC_NO_OPTIMIZATIONS |
| bool "Optimize nothing" |
| help |
| Compiler optimizations will be set to -O0 independently of other |
| options. |
| |
| endchoice |
| |
| config PICOLIBC_FAST_STRCMP |
| bool "always use fast strcmp paths" |
| default y |
| help |
| This provides a faster strcmp version even when libc is |
| built in space-optimized mode |
| |
| config PICOLIBC_IO_C99_FORMATS |
| bool "support C99 format additions in printf/scanf" |
| default y |
| help |
| Includes support for hex floats (in floating-point version) and j, z, |
| t size modifiers. |
| |
| config PICOLIBC_IO_POS_ARGS |
| bool "Support POSIX positional args (e.g. %$1d) in printf/scanf" |
| default y |
| depends on !PICOLIBC_IO_FLOAT |
| help |
| Includes support for positional args (e.g. $1) in integer-only printf |
| and scanf. Positional args are always supported in the floating-point |
| versions. |
| |
| config PICOLIBC_IO_FLOAT_EXACT |
| bool "support for exact float/string conversion" |
| default y |
| depends on PICOLIBC_USE_MODULE |
| help |
| Uses Ryu algorithm for exact binary/decimal float conversions. |
| This ensures that printf values with enough digits can be |
| fed to scanf and generate exactly the same binary value. |
| |
| config PICOLIBC_LOCALE_INFO |
| bool "support locales in libc functions" |
| default n |
| depends on PICOLIBC_USE_MODULE |
| help |
| Includes code for basic locale support |
| |
| config PICOLIBC_LOCALE_EXTENDED_INFO |
| bool "support extended locales in libc functions" |
| default n |
| depends on PICOLIBC_USE_MODULE |
| help |
| Includes code for extended locale support |
| |
| config PICOLIBC_MULTIBYTE |
| bool "support multibyte functions in libc" |
| default n |
| depends on PICOLIBC_USE_MODULE |
| help |
| Includes code for multi-byte characters |
| |
| config PICOLIBC_PICOEXIT |
| bool "use smaller atexit/onexit implementation" |
| default y |
| depends on PICOLIBC_USE_MODULE |
| help |
| Provides a simpler atexit/onexit implementation that doesn't use |
| malloc, but only supports a small number (32) of exit handlers. |
| |
| config PICOLIBC_MULTITHREAD |
| bool "support multiple threads using retargetable locking API" |
| default y |
| depends on PICOLIBC_USE_MODULE |
| help |
| Protects shared data structures in libc with mutexes that use |
| an API which can be retargeted to OS provided routines. |
| |
| config PICOLIBC_GLOBAL_ERRNO |
| bool "use a single global variable for errno" |
| depends on PICOLIBC_USE_MODULE |
| help |
| Picolibc usually uses a TLS variable for errno, ensuring that |
| multiple threads have a reliable mechanism for detecting libc |
| exceptions. This option switches to a single global errno variable, |
| which can be used to avoid TLS variable usage by the library if |
| necessary. |
| |
| endif |
| |
| endif |