# picolibc options ## depends on BARE_METAL && CONFIGURE_has_meson && CONFIGURE_has_ninja ## help This option adds Picolibc to an existing configuration which may have ## help a C library, allowing you to install both and select between them ## help when compiling applications using the toolchain ## help ## help Picolibc is a C library intended for use on embedded systems. It is a ## help conglomeration of several library parts, all under BSD-compatible software ## help licenses that make them easily usable on embedded products. config LIBC_PICOLIBC_GCC_LIBSTDCXX bool prompt "Compile libstdc++ picolibc variant" default y depends on CC_LANG_CXX help This option compiles an additional target libstdc++ for use with picolibc. This version is linked when "--specs=picolibcpp.specs" is specified. config LIBC_PICOLIBC_CXA_ATEXIT def_bool y select LIBC_PROVIDES_CXA_ATEXIT config LIBC_PICOLIBC_TARGET_CFLAGS string prompt "Target CFLAGS for picolibc" default "" help Used to add specific options when compiling the target libraries (eg. -ffunction-sections -fdata-sections), which can't be defined in global TARGET_CFLAGS, because they shall be not used for the gcc target libraries. Note: Both TARGET_CFLAGS and LIBC_PICOLIBC_TARGET_CFLAGS are used to compile the libraries. Leave blank if you don't know better. config LIBC_PICOLIBC_IO_C99FMT bool prompt "Enable IOs on C99 formats" default y help Enable support for IOs on C99 formats. config LIBC_PICOLIBC_REGISTER_FINI bool prompt "Enable finalization function registration using atexit" help Enable finalization function registration using atexit. config LIBC_PICOLIBC_ATEXIT_DYNAMIC_ALLOC bool prompt "Enable dynamic allocation of atexit entries" help Enable dynamic allocation of atexit entries. config LIBC_PICOLIBC_GLOBAL_ATEXIT bool prompt "Enable atexit data structure as global variable" help Enable atexit data structure as global variable, instead of being thread-local. config LIBC_PICOLIBC_LITE_EXIT bool prompt "Enable lite exit" default y help Enable lite exit, a size-reduced implementation of exit that doesn't invoke clean-up functions such as _fini or global destructors. config LIBC_PICOLIBC_MULTITHREAD bool prompt "Enable support for multiple threads" default y help Enable support for multiple threads. config LIBC_PICOLIBC_RETARGETABLE_LOCKING bool prompt "Enable retargetable locking" default y help Enable retargetable locking to allow the operating system to override the dummy lock functions defined within picolibc. config LIBC_PICOLIBC_EXTRA_SECTIONS bool prompt "Place each function & data element in their own section" help Place each function & data symbol in their own section. This allows the linker to garbage collect unused symbols at link time. config LIBC_PICOLIBC_ENABLE_TARGET_OPTSPACE bool prompt "Optimize picolibc for size" default y help Pass --enable-target-optspace to picolibc configure. This will compile picolibc with -Os. config LIBC_PICOLIBC_LTO bool prompt "Enable Link Time Optimization" depends on CC_GCC_USE_LTO help Builds the libraries with -flto to enable more aggressive link time optimization. You will need to add -flto-partition=one to your application's link line to keep the RETURN assembler macro together with it's consumers. config LIBC_PICOLIBC_NANO_MALLOC bool prompt "Enable Nano Malloc" default y help PICOLIBC has two implementations of malloc family's functions, one in `mallocr.c' and the other one in `nano-mallocr.c'. This options enables the nano-malloc implementation, which is for small systems with very limited memory. Note that this implementation does not support `--enable-malloc-debugging' any more. config LIBC_PICOLIBC_EXTRA_CONFIG_ARRAY string prompt "Extra config for picolibc" default "" help Extra flags to pass to meson when configuring picolibc.