crosstool-ng/config/comp_libs/newlib-nano.in
Alexey Neyman cc6b7fad46 Retire obsoleted milestones
... and the code dependent on them, after the latest wave of obsolete
package removals. This concludes the glorious history of the original
uClibc (non-NG) with lots of kludges removed.

There was a choice here, whether to call the resulting libc "uClibc" or
"uClibc-ng". I opted in favor of giving uClibc-ng the recognition it
deserves, although it had some ripple effect in the ct-ng code.

Signed-off-by: Alexey Neyman <stilor@att.net>
2022-02-11 00:47:50 -08:00

237 lines
7.7 KiB
Plaintext

# newlib-nano options
## depends on BARE_METAL
## select LIBC_PROVIDES_CXA_ATEXIT
## help Newlib-nano is a C library intended for use on embedded systems. It is a
## help conglomeration of several library parts, all under free software
## help licenses that make them easily usable on embedded products. Newlib-nano
## help is only available in source form. It can be compiled for a wide
## help array of processors, and will usually work on any architecture with
## help the addition of a few low-level routines.
config NEWLIB_NANO_GCC_LIBSTDCXX
bool
prompt "Compile libstdc++ newlib-nano variant"
default y
depends on CC_LANG_CXX
help
This option compiles an additional target libstdc++ for use with
newlib-nano.
config NEWLIB_NANO_GCC_LIBSTDCXX_TARGET_CXXFLAGS
string
prompt "Target CXXFLAGS for libstdc++ newlib-nano variant"
default "-fno-exceptions"
help
Used to add extra CXXFLAGS when compiling the target libstdc++
newlib-nano library (e.g. -fno-exceptions).
config NEWLIB_NANO_INSTALL_IN_TARGET
bool
prompt "Additionally install newlib-nano libs into TARGET dir"
help
This option will install a copy of newlib-nano lib*.a file in the target
dir but renamed with a nano.a suffix (eg: libc_nano.a) as some default
nano.spec files from newlib expect this setup.
Additionally the newlib-nano version of newlib.h will get copied to
include/newlib-nano/newlib.h.
config LIBC_NEWLIB_NANO_TARGET_CFLAGS
string
prompt "Target CFLAGS for newlib"
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_NEWLIB_NANO_TARGET_CFLAGS are used
to compile the libraries.
Leave blank if you don't know better.
config LIBC_NEWLIB_NANO_IO_C99FMT
bool
prompt "Enable IOs on C99 formats"
help
Enable support for IOs on C99 formats.
config LIBC_NEWLIB_NANO_IO_LL
bool
prompt "Enable IOs on long long"
help
Enable support for IOs on long long integers.
config LIBC_NEWLIB_NANO_IO_FLOAT
bool
prompt "Enable IOs on floats and doubles"
help
Enable support for IOs on floating point
values (float and double).
config LIBC_NEWLIB_NANO_IO_LDBL
bool
prompt "Enable IOs on long doubles"
depends on LIBC_NEWLIB_NANO_IO_FLOAT
help
Enable support for IOs on long doubles.
config LIBC_NEWLIB_NANO_IO_POS_ARGS
bool
prompt "Enable printf-family positional arg support"
help
Enable printf-family positional arg support.
config LIBC_NEWLIB_NANO_FVWRITE_IN_STREAMIO
bool
prompt "Vector buffer mechanism to support stream IO buffering"
default y
help
NEWLIB implements the vector buffer mechanism to support stream IO
buffering required by C standard. This feature is possibly
unnecessary for embedded systems which won't change file buffering
with functions like `setbuf' or `setvbuf'. The buffering mechanism
still acts as default for STDIN/STDOUT/STDERR even if this option
is specified.
config LIBC_NEWLIB_NANO_UNBUF_STREAM_OPT
bool
prompt "Optimize fprintf to unbuffered unix file"
help
NEWLIB does optimization when `fprintf to write only unbuffered unix
file'. It creates a temorary buffer to do the optimization that
increases stack consumption by about `BUFSIZ' bytes. Disabling this option
disables the optimization and saves size of text and stack.
config LIBC_NEWLIB_NANO_FSEEK_OPTIMIZATION
bool
prompt "Fseek optimisation"
help
Disabling fseek optimisation can decrease code size.
config LIBC_NEWLIB_NANO_DISABLE_SUPPLIED_SYSCALLS
bool
prompt "Disable the syscalls supplied with newlib"
help
Disable the syscalls that come with newlib. You
will have to implement your own _sbrk, _read,
_write... If you plan to port newlib to a new
platform/board, say Yes.
config LIBC_NEWLIB_NANO_REGISTER_FINI
bool
prompt "Enable finalization function registration using atexit"
help
Enable finalization function registration using atexit.
config LIBC_NEWLIB_NANO_ATEXIT_DYNAMIC_ALLOC
bool
prompt "Enable dynamic allocation of atexit entries"
default y
help
Enable dynamic allocation of atexit entries.
config LIBC_NEWLIB_NANO_GLOBAL_ATEXIT
bool
prompt "Enable atexit data structure as global variable"
default y
help
Enable atexit data structure as global variable. By doing so it is
move out of _reent structure, and can be garbage collected if atexit
is not referenced.
config LIBC_NEWLIB_NANO_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_NEWLIB_NANO_REENT_SMALL
bool
prompt "Enable small reentrant struct support"
default y
help
Enable small reentrant struct support.
config LIBC_NEWLIB_NANO_MULTITHREAD
bool
prompt "Enable support for multiple threads"
default y
help
Enable support for multiple threads.
config LIBC_NEWLIB_NANO_RETARGETABLE_LOCKING
bool
prompt "Enable retargetable locking"
help
Enable retargetable locking to allow the operating system to override
the dummy lock functions defined within the newlib.
config LIBC_NEWLIB_NANO_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_NEWLIB_NANO_WIDE_ORIENT
bool
prompt "Allow wide C99 stream orientation"
default n
help
C99 states that each stream has an orientation, wide or byte. This
feature is possibly unnecessary for embedded systems which only do
byte input/output operations on stream. Disabling this feature can
decrease code size.
config LIBC_NEWLIB_NANO_ENABLE_TARGET_OPTSPACE
bool
prompt "Optimize newlib for size"
default y
help
Pass --enable-target-optspace to newlib configure.
This will compile newlib with -Os.
config LIBC_NEWLIB_NANO_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_NEWLIB_NANO_NANO_MALLOC
bool
prompt "Enable Nano Malloc"
default y
help
NEWLIB 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_NEWLIB_NANO_NANO_FORMATTED_IO
bool
prompt "Enable Nano Formatted I/O"
default y
help
This builds NEWLIB with a special implementation of formatted I/O
functions, designed to lower the size of application on small systems
with size constraint issues. This option does not affect wide-char
formatted I/O functions.
config LIBC_NEWLIB_NANO_EXTRA_CONFIG_ARRAY
string
prompt "Extra config for newlib"
default ""
help
Extra flags to pass onto ./configure when configuring the newlib.