blob: 79e4e96564e76d53f5c7221a7a1ef2b259ed7617 [file] [log] [blame]
# 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