summaryrefslogtreecommitdiff
path: root/config/libc
diff options
context:
space:
mode:
Diffstat (limited to 'config/libc')
-rw-r--r--config/libc/avr-libc.in73
-rw-r--r--config/libc/avr-libc.in.28
-rw-r--r--config/libc/bionic.in127
-rw-r--r--config/libc/glibc.in537
-rw-r--r--config/libc/glibc.in.2242
-rw-r--r--config/libc/mingw-w64.in38
-rw-r--r--config/libc/mingw.in113
-rw-r--r--config/libc/moxiebox.in26
-rw-r--r--config/libc/musl.in83
-rw-r--r--config/libc/musl.in.251
-rw-r--r--config/libc/newlib.in299
-rw-r--r--config/libc/newlib.in.2176
-rw-r--r--config/libc/none.in1
-rw-r--r--config/libc/uClibc-ng.in170
-rw-r--r--config/libc/uClibc.in214
-rw-r--r--config/libc/uClibc.in.2110
16 files changed, 922 insertions, 1346 deletions
diff --git a/config/libc/avr-libc.in b/config/libc/avr-libc.in
index 2b8d891..ac037b7 100644
--- a/config/libc/avr-libc.in
+++ b/config/libc/avr-libc.in
@@ -1,74 +1,21 @@
# avr-libc options
-## depends on ARCH_avr
-## depends on ! LINUX && ! WINDOWS && BARE_METAL
+# Do not canonicalize the target tuple: avr-libc requires a non-canonical "avr" target.
+#
+## depends on ARCH_AVR
+## depends on BARE_METAL
##
## select LIBC_SUPPORT_THREADS_NONE
+## select OMIT_TARGET_VENDOR
+## select TARGET_SKIP_CONFIG_SUB
##
## help The AVR Libc package provides a subset of the standard C library for
## help Atmel AVR 8-bit RISC microcontrollers. In addition, the library
## help provides the basic startup code needed by most applications.
-config LIBC_AVR_LIBC_CUSTOM
- bool
- prompt "Custom avr-libc"
- depends on EXPERIMENTAL
- help
- The choosen avr-libc version shall be not downloaded. Instead use
- a custom location to get the source.
-
-if LIBC_AVR_LIBC_CUSTOM
-
-config LIBC_AVR_LIBC_CUSTOM_LOCATION
- string
- prompt "Full path to custom avr-libc source"
- help
- Enter the path to the directory or tarball of your source for avr-libc.
-
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component, avr-libc, and the version is set
- below in the custom version string.
-
-config LIBC_AVR_LIBC_CUSTOM_VERSION
+config LIBC_AVR_LIBC_EXTRA_CONFIG_ARRAY
string
- prompt "Custom AVR-Libc version"
+ prompt "Extra config for avr-libc"
+ default ""
help
- Enter the version number for your custom avr-libc.
-
-config LIBC_VERSION
- string
- default LIBC_AVR_LIBC_CUSTOM_VERSION
-
-endif # LIBC_AVR_LIBC_CUSTOM
-
-if ! LIBC_AVR_LIBC_CUSTOM
-
-choice
- bool
- prompt "avr-libc version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config LIBC_AVR_LIBC_V_2_0_0
- bool
- prompt "2.0.0"
-
-config LIBC_AVR_LIBC_V_1_8_1
- bool
- prompt "1.8.1"
-
-config LIBC_AVR_LIBC_V_1_8_0
- bool
- prompt "1.8.0"
-
-endchoice
-
-config LIBC_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "2.0.0" if LIBC_AVR_LIBC_V_2_0_0
- default "1.8.1" if LIBC_AVR_LIBC_V_1_8_1
- default "1.8.0" if LIBC_AVR_LIBC_V_1_8_0
-
-endif # ! LIBC_AVR_LIBC_CUSTOM
+ Extra flags to pass onto ./configure when configuring the avr-libc.
diff --git a/config/libc/avr-libc.in.2 b/config/libc/avr-libc.in.2
deleted file mode 100644
index 89a182f..0000000
--- a/config/libc/avr-libc.in.2
+++ /dev/null
@@ -1,8 +0,0 @@
-# avr-libc second-part options
-
-config LIBC_AVR_LIBC_EXTRA_CONFIG_ARRAY
- string
- prompt "Extra config for avr-libc"
- default ""
- help
- Extra flags to pass onto ./configure when configuring the avr-libc.
diff --git a/config/libc/bionic.in b/config/libc/bionic.in
new file mode 100644
index 0000000..b8b889c
--- /dev/null
+++ b/config/libc/bionic.in
@@ -0,0 +1,127 @@
+# bionic options
+
+
+## package android-ndk
+## depends on ! WINDOWS && ! BARE_METAL
+## depends on ARCH_ARM || ARCH_MIPS || ARCH_X86
+## depends on EXPERIMENTAL
+## depends on OBSOLETE
+#
+# Patches to support bionic were not ported to GCC11 (or to GCC5 and below).
+## select GCC_REQUIRE_6_or_later
+## select GCC_REQUIRE_older_than_11
+#
+# GDB10 imported a new drop from gnulib, which fails to build against bionic.
+# Patch to support bionic was ported to 7.12 and newer.
+## select GDB_REQUIRE_7_12_or_later
+## select GDB_REQUIRE_older_than_10
+
+## select LIBC_SUPPORT_THREADS_POSIX
+##
+## help Bionic is the Android C library. It is prebuilt, extracted from the Android NDK.
+## help This platform has no TLS (Thread Local Storage) support so that option must be
+## help disabled in the Compiler options.
+
+config THREADS
+ default "posix"
+
+# FIXME does API level depend on the bionic version? generate that, too?
+choice
+ bool
+ prompt "Android API level"
+ help
+ The minimum for 64 bit support is 21.
+
+config ANDROID_API_28
+ bool
+ prompt "28"
+
+config ANDROID_API_27
+ bool
+ prompt "27"
+
+config ANDROID_API_26
+ bool
+ prompt "26"
+
+config ANDROID_API_24
+ bool
+ prompt "24"
+
+config ANDROID_API_23
+ bool
+ prompt "23"
+
+config ANDROID_API_22
+ bool
+ prompt "22"
+
+config ANDROID_API_21
+ bool
+ prompt "21"
+
+config ANDROID_API_19
+ bool
+ prompt "19"
+ depends on ARCH_32
+
+config ANDROID_API_18
+ bool
+ prompt "18"
+ depends on ARCH_32
+
+config ANDROID_API_17
+ bool
+ prompt "17"
+ depends on ARCH_32
+
+config ANDROID_API_16
+ bool
+ prompt "16"
+ depends on ARCH_32
+
+config ANDROID_API_15
+ bool
+ prompt "15"
+ depends on ARCH_32
+
+config ANDROID_API_14
+ bool
+ prompt "14"
+ depends on ARCH_32
+
+config ANDROID_API_13
+ bool
+ prompt "13"
+ depends on ARCH_32
+
+config ANDROID_API_12
+ bool
+ prompt "12"
+ depends on ARCH_32
+
+config ANDROID_API_9
+ bool
+ prompt "9"
+ depends on ARCH_32
+
+endchoice
+
+config ANDROID_API
+ string
+ default "28" if ANDROID_API_28
+ default "27" if ANDROID_API_27
+ default "26" if ANDROID_API_26
+ default "24" if ANDROID_API_24
+ default "23" if ANDROID_API_23
+ default "22" if ANDROID_API_22
+ default "21" if ANDROID_API_21
+ default "19" if ANDROID_API_19
+ default "18" if ANDROID_API_18
+ default "17" if ANDROID_API_17
+ default "16" if ANDROID_API_16
+ default "15" if ANDROID_API_15
+ default "14" if ANDROID_API_14
+ default "13" if ANDROID_API_13
+ default "12" if ANDROID_API_12
+ default "9" if ANDROID_API_9
diff --git a/config/libc/glibc.in b/config/libc/glibc.in
index 9e4ff56..3da38bd 100644
--- a/config/libc/glibc.in
+++ b/config/libc/glibc.in
@@ -1,222 +1,427 @@
-# glibc options
+# This file contains the common configuration options
+# that apply to both glibc.
## depends on ! WINDOWS && ! BARE_METAL && ARCH_USE_MMU
-##
## select LIBC_SUPPORT_THREADS_NATIVE
-## select CC_CORE_PASSES_NEEDED
+## select CC_CORE_NEEDED
+# TBD: select GETTEXT for build only, not for host
## select GETTEXT_NEEDED
-##
+## select BINUTILS_FORCE_LD_BFD_DEFAULT
+
## help The de-facto standard for Linux distributions.
## help Feature-rich, but large... Most useful for desktop-like systems.
+# GLIBC and kernel are special when it comes to obsoletion. Users
+# of crosstool-ng depend on the ability to build new toolchains matching
+# the kernel/libc versions of a particular target system, and LTS releases
+# are still using quite ancient versions. Please do not retire versions
+# (including versions in between) until the EOL dates indicated in version.desc.
+
+if GLIBC_USE_PORTS_EXTERNAL
+source "config/versions/glibc-ports.in"
+endif
+
+# Glibc has some dependencies on the kernel headers:
+config GLIBC_DEP_KERNEL_HEADERS_VERSION
+ def_bool y
+ select LINUX_REQUIRE_3_2_or_later if GLIBC_2_24_or_later
+
+# Glibc 2.26 requires at least binutils 2.25.
+# Also, binutils 2.30 fail while compiling aarch64 glibc; fixed in 2.27
+# and backported to 2.26. For other versions, require binutils older than
+# 2.30 (if the patch is backported, binutils 2.23 will break).
+config GLIBC_DEP_BINUTILS
+ def_bool y
+ select BINUTILS_REQUIRE_2_25_or_later if GLIBC_2_26_or_later
+ select BINUTILS_REQUIRE_older_than_2_30 if GLIBC_older_than_2_26 && ARCH_ARM && ARCH_64
+
+# Glibc 2.26 requires GCC4.9 or newer
+# Glibc 2.29 requires GCC5+ or, for ppc64le, GCC6.2+. We only support the latest
+# release on GCC6 branch, so just assume it is newer than 6.2
+# Glibc 2.30 uncondtionally requires GCC 6.2+
+config GLIBC_DEP_GCC
+ def_bool y
+ select GCC_REQUIRE_4_9_or_later if GLIBC_2_26_or_later
+ select GCC_REQUIRE_5_or_later if GLIBC_2_29_or_later
+ select GCC_REQUIRE_6_or_later if GLIBC_2_29_or_later && ARCH_POWERPC && ARCH_64 && ARCH_LE
+ select GCC_REQUIRE_6_or_later if GLIBC_2_30_or_later
+
+# Glibc 2.29 requires bison 2.7 or later. All versions in ct-ng satisfy that
+# version requirement.
+config GLIBC_DEP_BISON
+ def_bool y
+ depends on GLIBC_2_29_or_later && !CONFIGURE_has_bison_2_7_or_newer
+ select COMP_TOOLS_BISON
+
+# Glibc 2.29 now requires Python 3.4 or later, and make 4.0 or later. Ensure
+# we build 'make' as a companion tool if host's make isn't new enough.
+config GLIBC_DEP_PYTHON
+ def_bool y
+ select GLIBC_REQUIRE_older_than_2_29 if !CONFIGURE_has_python_3_4_or_newer
+
+comment "glibc >=2.29 requires python >3.4"
+ depends on !CONFIGURE_has_python_3_4_or_newer
+
+config GLIBC_DEP_MAKE_4_0
+ def_bool y
+ depends on GLIBC_2_28_or_later && !CONFIGURE_has_make_4_0_or_newer
+ select COMP_TOOLS_MAKE
+ select MAKE_GNUMAKE_SYMLINK # Override old host make in .build/tools/bin
+
+# Glibc 2.31 removed support for pre-v8 SPARC in 32-bit mode (64-bit mode always
+# required UltraSPARC)
+config GLIBC_SPARC_ALLOW_V7
+ def_bool y
+ depends on GLIBC_2_30_or_older
+
config THREADS
default "nptl"
-config LIBC_GLIBC_CUSTOM
- bool
- prompt "Custom glibc"
- depends on EXPERIMENTAL
- select LIBC_CUSTOM
- select LIBC_GLIBC_2_20_or_later
+config GLIBC_BUILD_SSP
+ def_bool y
+ depends on GLIBC_2_25_or_later
+
+# Known add-ons and when they exist(ed)
+# crypt external in 2.1, no longer an add-on since 2.2
+# libidn external in 2.3.4 .. 2.10, still an add-on
+# linuxthreads external in 2.0.1 .. 2.5, no longer available since 2.6 [*]
+# localedata external in 2.0.1 .. 2.0.6, no longer an add-on since 2.1 [*]
+# ports external in 2.3.4 .. 2.16, no longer an add-on since 2.20
+# nptl never external, no longer an add-on since 2.20
+#
+# Given the list of currently supported glibc releases, we only need to worry about
+# 'libidn', 'ports' and 'nptl' add-ons. Of these, only 'ports' can be an external
+# tarball; and only 'libidn' is user-selectable ('ports' & 'nptl' are selected
+# by crosstool-NG, as dictated by the architecture and thread model).
+#
+# I had trouble locating the sources in the repository for some of the released
+# versions. E.g., there is a 2.5 version of linuxthreads, but the tag for 2.5 in Git
+# does not have the linuxthreads directory at all. Similarly, 2.0.6 tag did not have
+# localedata. Since these releases are no longer supported by crosstool-NG, this is
+# of pure historical interest now, however.
+
+config GLIBC_HAS_NPTL_ADDON
+ def_bool y
+ depends on !GLIBC_2_20_or_later
+
+config GLIBC_HAS_PORTS_ADDON
+ def_bool y
+ depends on !GLIBC_2_20_or_later
+ depends on !GLIBC_USE_ORACLE
+
+config GLIBC_HAS_PORTS_ADDON_EXTERNAL
+ def_bool y
+ depends on !GLIBC_2_17_or_later
+
+# In case it folds into main distribution in some future release, too
+config GLIBC_HAS_LIBIDN_ADDON
+ def_bool y
+
+# Some architectures require the ports addon. List them one by one here:
+# This list must be carefully in sync with the architectures names
+# we can find in config/arch/*
+config GLIBC_USE_PORTS_ADDON
+ def_bool y
+ depends on ARCH_ALPHA || ARCH_ARM || ARCH_M68K || ARCH_MIPS || ARCH_POWERPC
+ depends on GLIBC_HAS_PORTS_ADDON
+ depends on !GLIBC_USE_ORACLE
+
+config GLIBC_USE_PORTS_EXTERNAL
+ def_bool y
+ depends on GLIBC_USE_PORTS_ADDON && GLIBC_HAS_PORTS_ADDON_EXTERNAL
+
+config GLIBC_USE_NPTL_ADDON
+ def_bool y
+ depends on THREADS_NATIVE && GLIBC_HAS_NPTL_ADDON
+
+config GLIBC_USE_LIBIDN_ADDON
+ bool "Build libidn add-on"
help
- The choosen glibc version shall be not downloaded. Instead use
- a custom location to get the source.
-
-if LIBC_GLIBC_CUSTOM
-
-config LIBC_GLIBC_CUSTOM_LOCATION
+ Enables the libidn add-on in GNU libc.
+
+# SPARCv8 support retired in 2.23
+config GLIBC_NO_SPARC_V8
+ def_bool y
+ depends on GLIBC_2_23_or_later
+
+# 2.14 obsoleted Sun RPC code, making it unavailable *at all* for compiling/linking
+# (only remained as versioned symbols for previously linked binaries). They backpedaled
+# in 2.16, adding an option to enable that code. Crosstool-NG backports that code
+# to 2.14/2.15, but there is no harm in throwing this option even if that patch
+# is not applied.
+# The option and the code has finally been removed in 2.32
+config GLIBC_HAS_OBSOLETE_RPC
+ def_bool y
+ depends on GLIBC_2_14_or_later && !GLIBC_2_32_or_later
+
+config GLIBC_EXTRA_CONFIG_ARRAY
string
- prompt "Full path to custom glibc source"
+ prompt "extra config"
+ default ""
help
- Enter the path to the directory or tarball of your source for glibc.
+ Extra flags to pass onto ./configure when configuring.
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component, glibc, and the version is set
- below in the custom version string.
+ You can enter multiple arguments here, and arguments can contain spaces
+ if they are properly quoted (or escaped, but prefer quotes). Eg.:
+ --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
-config LIBC_GLIBC_CUSTOM_VERSION
+config GLIBC_CONFIGPARMS
string
- prompt "Custom GLIBC version"
+ prompt "Extra config params (READ HELP)"
+ default "" if ! ARCH_SH
+ default "no-z-defs=yes" if ARCH_SH
help
- Enter the version number for your custom glibc.
+ Some architectures need to set options in the file configparms.
+ This is the case for sh3/4, which really need to set configparms
+ to "no-z-defs=yes" as of gcc-3.4/glibc-2.3.2.
+
+ Unless you are building a toolchain for sh3/4, you should leave that empty.
+
+ Note: If you need to pass more than one value, separate them with
+ '\n'. Eg.: var1=val1\nvar2=val2
-config LIBC_VERSION
+config GLIBC_EXTRA_CFLAGS
string
- default LIBC_GLIBC_CUSTOM_VERSION
-
-endif # LIBC_GLIBC_CUSTOM
+ prompt "extra target CFLAGS"
+ default "-Wno-missing-attributes -Wno-array-bounds -Wno-array-parameter -Wno-stringop-overflow -Wno-maybe-uninitialized" if GLIBC_2_29_or_older && GCC_11_or_later
+ default ""
+ help
+ Extra target CFLAGS to use when building.
-if ! LIBC_GLIBC_CUSTOM
+config GLIBC_ENABLE_OBSOLETE_RPC
+ bool "Enable obsolete (Sun) RPC"
+ default y
+ depends on GLIBC_HAS_OBSOLETE_RPC
+ help
+ Allow building applications using obsolete (Sun) RPC.
-config CC_GLIBC_SHOW_LINARO
+config GLIBC_ENABLE_FORTIFIED_BUILD
bool
- prompt "Show Linaro versions"
+ prompt "Enable fortified build (EXPERIMENTAL)"
+ depends on EXPERIMENTAL
help
- Linaro is maintaining some advanced/more stable/experimental versions
- of glibc, especially for the ARM architecture.
-
- Those versions have not been blessed by the glibc comunity (nor have they
- been cursed either!), but they look to be pretty much stable, and even
- more stable than the upstream versions. YMMV...
+ If you say 'y' here, then glibc will be using fortified versions
+ of functions with format arguments (eg. vsyslog, printf...), and
+ do a sanity check on the format at runtime, to avoid some of the
+ common format string attacks.
- If you do not know what this Linaro stuff is, then simply say 'n' here,
- and rest in peace. OTOH, if you know what you are doing, you will be
- able to use and enjoy :-) the Linaro versions by saying 'y' here.
+ This is currently not supported, and will most probably result in
+ a broken build, with an error message like:
+ ../misc/syslog.c: In function '__vsyslog_chk':
+ ../misc/syslog.c:123: sorry, unimplemented: inlining failed in
+ call to 'syslog': function body not available
- Linaro: http://www.linaro.org/
+ If you are brave enough and want to debug the issue, then say 'y'
+ here. Otherwise, be still and say 'n' (the default). ;-)
-# GLIBC and kernel are special when it comes to obsoletion. Users
-# of crosstool-ng depend on the ability to build new toolchains matching
-# the kernel/libc versions of a particular target system, and LTS releases
-# are still using quite ancient versions. Please do not retire versions
-# (including versions in between) until the EOL dates indicated below.
-choice
- bool
- prompt "glibc version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-config LIBC_GLIBC_V_2_25
+config GLIBC_DISABLE_VERSIONING
bool
- prompt "2.25"
- select LIBC_GLIBC_2_23_or_later
+ prompt "Disable symbols versioning"
+ help
+ Do not include versioning information in the library objects.
-config LIBC_GLIBC_V_2_24
- bool
- prompt "2.24"
- select LIBC_GLIBC_2_23_or_later
+config GLIBC_OLDEST_ABI
+ string
+ prompt "Oldest supported ABI"
+ default ""
+ help
+ Set the oldest ABI supported by the C library.
+
+ Setting this option, for example, to 2.2 will provide ABI support
+ back to (e)glibc-2.2.
-# EOL 04/2021 [Ubuntu16.04]
-config LIBC_GLIBC_V_2_23
- bool
- prompt "2.23"
- select LIBC_GLIBC_2_23_or_later
+ If this option is not set, (e)glibc will choose for you.
-config LIBC_GLIBC_V_2_22
+config GLIBC_FORCE_UNWIND
bool
- prompt "2.22 (OBSOLETE)"
- select LIBC_GLIBC_2_20_or_later
- depends on OBSOLETE
+ prompt "Force unwind support (READ HELP!)"
+ default y
+ help
+ If your toolchain fails building while building the C library
+ start files, or the complete C library, with a message like:
+ configure: error: forced unwind support is required
+
+ then you may try changing this option. Otherwise, leave it to
+ the default 'y'.
+
+ The issue seems to be related to building NPTL on old versions
+ of glibc on some architectures
+ (seen on s390, s390x and x86_64).
-config LIBC_GLIBC_V_2_21
+config GLIBC_LOCALES
bool
- prompt "2.21 (OBSOLETE)"
- select LIBC_GLIBC_2_20_or_later
- depends on OBSOLETE
-
-config LIBC_GLIBC_LINARO_V_2_20
+ prompt "Build and install locales"
+ help
+ Whether to build and install the libc locale files for the target,
+ which is required in order to support internationalization.
+
+if LIBC_GLIBC && GLIBC_LOCALES
+comment "WARNING! "
+comment "| The built locales will be usable if and only if the build "
+comment "| machine and the target: "
+comment "| - have the same endianness, "
+comment "| - and have the same alignment requirements for uint32_t. "
+comment "| You will have to check by yourself (for now). "
+comment "WARNING! "
+comment "| Building GLIBC locales requires that GLIBC supports "
+comment "| the build machine as the target. "
+endif # LIBC_GLIBC && GLIBC_LOCALES
+
+if KERNEL_LINUX
+
+choice GLIBC_SUPPORTED_KERNEL
bool
- prompt "Linaro 2.20-2014.11 (OBSOLETE)"
- select LIBC_GLIBC_2_20_or_later
- depends on CC_GLIBC_SHOW_LINARO
- depends on OBSOLETE
+ prompt "Minimum supported kernel version"
+ default GLIBC_KERNEL_VERSION_AS_HEADERS
-config LIBC_GLIBC_V_2_20
+config GLIBC_KERNEL_VERSION_NONE
bool
- prompt "2.20 (OBSOLETE)"
- select LIBC_GLIBC_2_20_or_later
- depends on OBSOLETE
-
-# EOL 04/2019 [Ubuntu14.04]
-config LIBC_GLIBC_V_2_19
+ prompt "Let ./configure decide"
+ help
+ Let ./configure decide what minimum kernel version glibc will be
+ able to run against.
+
+ This will include legacy compatibility code for older kernels in
+ the C library, thus ensuring that it will run on a large number
+ of old kernels.
+
+ The minimum kernel version supported will be dependent upon the
+ target you build for. For example:
+ alpha*-*-linux-gnu Requires Linux 2.6.9 for NPTL
+ sh[34]-*-linux-gnu Requires Linux 2.6.11
+ powerpc* Requires Linux 2.4.19
+ arm*-*-linux-*gnueabi Requires Linux 2.6.16
+
+config GLIBC_KERNEL_VERSION_AS_HEADERS
bool
- prompt "2.19 (OBSOLETE)"
- depends on OBSOLETE
- select LIBC_GLIBC_2_17_or_later
+ prompt "Same as kernel headers (default)"
+ help
+ Normally, you'll want glibc to run against the same kernel
+ version as the one used for the headers.
+
+ This is the default.
+
+ If enabled, crosstool-ng will use the chosen version of kernel
+ headers for the glibc minimum kernel version supported, which is
+ what gets passed to "--enable-kernel=" when configuring glibc.
+
+ Enabling this will ensure that no legacy compatibility code for
+ older kernels is built into your C libraries, but it will
+ be unable to run on kernel versions older than whichever kernel
+ headers version you've built the toolchain for.
+
+ If you know for sure that your toolchain will never need to build
+ applications that will run under a kernel version older than your
+ chosen kernel headers version (CT_KERNEL_VERSION), you can choose
+ "y" here.
-config LIBC_GLIBC_V_2_18
+config GLIBC_KERNEL_VERSION_CHOSEN
bool
- prompt "2.18 (OBSOLETE)"
- depends on OBSOLETE
- select LIBC_GLIBC_2_17_or_later
+ prompt "Specific kernel version"
+ help
+ Specify the earliest Linux kernel version you want glibc to
+ include support for. This does not have to match the kernel
+ headers version used for your toolchain. This controls what is
+ passed to the "--enable-kernel=" option to the glibc configure
+ script.
-# EOL 06/2024 [CentOS7.x]
-config LIBC_GLIBC_V_2_17
- bool
- prompt "2.17 (OBSOLETE)"
- depends on OBSOLETE
- select LIBC_GLIBC_2_17_or_later
+ If you want to be able to statically link programs with your
+ toolchain's C library, make sure this kernel version is lower than
+ all kernels you wish to support to avoid "FATAL: kernel too old"
+ errors. The higher the version you specify, the less legacy code
+ will be built into libc.
-config LIBC_GLIBC_V_2_16_0
- bool
- prompt "2.16.0 (OBSOLETE)"
- depends on OBSOLETE
+ Most people can leave this at the default value of "2.6.9".
-# EOL 04/2017 [Ubuntu12.04]
-config LIBC_GLIBC_V_2_15
- bool
- prompt "2.15 (OBSOLETE)"
- depends on OBSOLETE
+if GLIBC_KERNEL_VERSION_CHOSEN
-config LIBC_GLIBC_V_2_14_1
- bool
- prompt "2.14.1 (OBSOLETE)"
- depends on OBSOLETE
+config GLIBC_MIN_KERNEL_VERSION
+ string
+ prompt "Minimum kernel version to support"
+ default "2.6.9"
+ help
+ Enter here the lowest kernel version glibc will be able to run against.
+
+ The minimum kernel version supported will be dependent upon the
+ target you build for. For example:
+ alpha*-*-linux-gnu Requires Linux 2.6.9 for NPTL
+ sh[34]-*-linux-gnu Requires Linux 2.6.11
+ powerpc* Requires Linux 2.4.19
+ arm*-*-linux-*gnueabi Requires Linux 2.6.16
+
+ Note that no sanity check is performed by crosstool-NG to ensure
+ that the value you enter here is appropriate for your target.
-config LIBC_GLIBC_V_2_14
- bool
- prompt "2.14 (OBSOLETE)"
- depends on OBSOLETE
+endif # GLIBC_KERNEL_VERSION_CHOSEN
-config LIBC_GLIBC_V_2_13
- bool
- prompt "2.13 (OBSOLETE)"
- depends on OBSOLETE
+endchoice
-# This version did not have glibc-ports addon released
-config LIBC_GLIBC_V_2_12_2
- bool
- prompt "2.12.2 (OBSOLETE)"
- depends on OBSOLETE
- depends on !LIBC_GLIBC_NEEDS_PORTS
+config GLIBC_MIN_KERNEL
+ string
+ default "" if GLIBC_KERNEL_VERSION_NONE
+ default LINUX_VERSION if GLIBC_KERNEL_VERSION_AS_HEADERS
+ default GLIBC_MIN_KERNEL_VERSION if GLIBC_KERNEL_VERSION_CHOSEN
-# EOL 11/2020 [CentOS6.x]
-config LIBC_GLIBC_V_2_12_1
- bool
- prompt "2.12.1 (OBSOLETE)"
- depends on OBSOLETE
+if GLIBC_BUILD_SSP
+choice
+ bool "Stack-smashing protection (SSP) in glibc"
+ default GLIBC_SSP_DEFAULT
-endchoice
+config GLIBC_SSP_DEFAULT
+ bool "default"
+ help
+ Glibc's configure script determines the stack protection level.
-endif # ! LIBC_GLIBC_CUSTOM
+config GLIBC_SSP_NO
+ bool "no"
+ help
+ Glibc functions are not protected against stack-smashing.
-# Checked by SPARC build: SPARCv8 is dropped in 2.23.
-config LIBC_GLIBC_2_23_or_later
- select LIBC_GLIBC_2_20_or_later
- bool
+config GLIBC_SSP_YES
+ bool "yes"
+ help
+ Glibc is compiled with -fstack-protector option.
-# DeMark 2.20 as no longer needs to set NPTL as an addon.
-# It is no longer possible to build glibc without pthread!
-config LIBC_GLIBC_2_20_or_later
- bool
- select LIBC_GLIBC_2_17_or_later
+config GLIBC_SSP_ALL
+ bool "all"
+ help
+ Glibc is compiled with -fstack-protector-all option.
-# DeMark no more ports
-config LIBC_GLIBC_2_17_or_later
- bool
+config GLIBC_SSP_STRONG
+ bool "strong"
+ help
+ Glibc is compiled with -fstack-protector-strong option.
-if ! LIBC_GLIBC_CUSTOM
+endchoice
-config LIBC_VERSION
+config GLIBC_SSP
string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "2.25" if LIBC_GLIBC_V_2_25
- default "2.24" if LIBC_GLIBC_V_2_24
- default "2.23" if LIBC_GLIBC_V_2_23
- default "2.22" if LIBC_GLIBC_V_2_22
- default "2.21" if LIBC_GLIBC_V_2_21
- default "linaro-2.20-2014.11" if LIBC_GLIBC_LINARO_V_2_20
- default "2.20" if LIBC_GLIBC_V_2_20
- default "2.19" if LIBC_GLIBC_V_2_19
- default "2.18" if LIBC_GLIBC_V_2_18
- default "2.17" if LIBC_GLIBC_V_2_17
- default "2.16.0" if LIBC_GLIBC_V_2_16_0
- default "2.15" if LIBC_GLIBC_V_2_15
- default "2.14.1" if LIBC_GLIBC_V_2_14_1
- default "2.14" if LIBC_GLIBC_V_2_14
- default "2.13" if LIBC_GLIBC_V_2_13
- default "2.12.2" if LIBC_GLIBC_V_2_12_2
- default "2.12.1" if LIBC_GLIBC_V_2_12_1
-
-endif # ! LIBC_GLIBC_CUSTOM
+ default "no" if GLIBC_SSP_NO
+ default "yes" if GLIBC_SSP_YES
+ default "all" if GLIBC_SSP_ALL
+ default "strong" if GLIBC_SSP_STRONG
+
+# All supported versions of glibc build cleanly with GCC7 and earlier.
+# GCC8-related fixes were only available in glibc 2.27.
+config GLIBC_ENABLE_WERROR
+ bool "Enable -Werror during the build"
+ default y if GCC_7_or_older
+ default y if GCC_8_or_later && GLIBC_2_27_or_later
+ help
+ By default, glibc enables strict warning checks during the build.
+ However, older version of glibc may not build with newer versions
+ of the compiler than there were available at the time of a glibc
+ release (because newer compilers typically have better diagnostics).
+
+endif
+
+config GLIBC_ENABLE_COMMON_FLAG
+ bool "Enable -fcommon flag for older version of glibc when using GCC >=10"
+ default y if GLIBC_2_29_or_older && GCC_10_or_later
+ default n if GLIBC_2_30_or_later || GCC_9_or_older
+ help
+ Starting from GCC 10, the default behavior is changed to -fno-common.
+ That leads to linking errors in GLibc versions older than 2.30.
+
+endif # KERNEL_LINUX
diff --git a/config/libc/glibc.in.2 b/config/libc/glibc.in.2
deleted file mode 100644
index 9d3c2e1..0000000
--- a/config/libc/glibc.in.2
+++ /dev/null
@@ -1,242 +0,0 @@
-# This file contains the common configuration options
-# that apply to both glibc.
-
-# Some architectures require the ports addon. List them one by one here:
-# This list must be carefully in sync with the architectures names
-# we can find in config/arch/*
-
-# Ports were integrated into the main tarball in 2.17
-config LIBC_GLIBC_PORTS_EXTERNAL
- def_bool y
- depends on !LIBC_GLIBC_2_17_or_later
-
-config LIBC_GLIBC_NEEDS_PORTS
- def_bool y
- depends on ARCH_alpha || ARCH_arm || ARCH_m68k || ARCH_mips || ARCH_powerpc
-
-# Ports are no longer an add-on starting with 2.20
-config LIBC_GLIBC_USE_PORTS
- def_bool y
- depends on LIBC_GLIBC_NEEDS_PORTS && !LIBC_GLIBC_2_20_or_later
-
-# Force using the BFD linker during the toolchain build
-config LIBC_glibc_family
- bool
- default y
- select BINUTILS_FORCE_LD_BFD_DEFAULT
-
-config LIBC_GLIBC_EXTRA_CONFIG_ARRAY
- string
- prompt "extra config"
- default ""
- help
- Extra flags to pass onto ./configure when configuring.
-
- You can enter multiple arguments here, and arguments can contain spaces
- if they are properly quoted (or escaped, but prefer quotes). Eg.:
- --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space
-
-config LIBC_GLIBC_CONFIGPARMS
- string
- prompt "Extra config params (READ HELP)"
- default "" if ! ARCH_sh
- default "no-z-defs=yes" if ARCH_sh
- help
- Some architectures need to set options in the file configparms.
- This is the case for sh3/4, which really need to set configparms
- to "no-z-defs=yes" as of gcc-3.4/glibc-2.3.2.
-
- Unless you are building a toolchain for sh3/4, you should leave that empty.
-
- Note: If you need to pass more than one value, separate them with
- '\n'. Eg.: var1=val1\nvar2=val2
-
-config LIBC_GLIBC_EXTRA_CFLAGS
- string
- prompt "extra target CFLAGS"
- default ""
- help
- Extra target CFLAGS to use when building.
-
-config LIBC_ENABLE_FORTIFIED_BUILD
- bool
- prompt "Enable fortified build (EXPERIMENTAL)"
- depends on EXPERIMENTAL
- help
- If you say 'y' here, then glibc will be using fortified versions
- of functions with format arguments (eg. vsyslog, printf...), and
- do a sanity check on the format at runtime, to avoid some of the
- common format string attacks.
-
- This is currently not supported, and will most probably result in
- a broken build, with an error message like:
- ../misc/syslog.c: In function '__vsyslog_chk':
- ../misc/syslog.c:123: sorry, unimplemented: inlining failed in
- call to 'syslog': function body not available
-
- If you are brave enough and want to debug the issue, then say 'y'
- here. Otherwise, be still and say 'n' (the default). ;-)
-
-
-config LIBC_DISABLE_VERSIONING
- bool
- prompt "Disable symbols versioning"
- help
- Do not include versioning information in the library objects.
-
-config LIBC_OLDEST_ABI
- string
- prompt "Oldest supported ABI"
- default ""
- help
- Set the oldest ABI supported by the C library.
-
- Setting this option, for example, to 2.2 will provide ABI support
- back to (e)glibc-2.2.
-
- If this option is not set, (e)glibc will choose for you.
-
-config LIBC_GLIBC_FORCE_UNWIND
- bool
- prompt "Force unwind support (READ HELP!)"
- default y
- help
- If your toolchain fails building while building the C library
- start files, or the complete C library, with a message like:
- configure: error: forced unwind support is required
-
- then you may try changing this option. Otherwise, leave it to
- the default 'y'.
-
- The issue seems to be related to building NPTL on old versions
- of glibc on some architectures
- (seen on s390, s390x and x86_64).
-
-config LIBC_ADDONS_LIST
- string
- prompt "Extra addons"
- default ""
- help
- Extra addons to include. Space separated list.
-
- You need to specify neither linuxthreads nor nptl, as they are added
- automagically for you depending on the threading model you chose
- earlier and on libc version selected.
-
- Also, do not specify ports even if applicable to the selected libc
- version/architecture; it is selected automatically.
-
- Eg.: libidn
-
-config LIBC_LOCALES
- bool
- prompt "Build and install locales"
- help
- Whether to build and install the libc locale files for the target,
- which is required in order to support internationalization.
-
-if LIBC_glibc && LIBC_LOCALES
-comment "WARNING! "
-comment "| The built locales will be usable if and only if the build "
-comment "| machine and the target: "
-comment "| - have the same endianness, "
-comment "| - and have the same alignment requirements for uint32_t. "
-comment "| You will have to check by yourself (for now). "
-endif # LIBC_glibc && LIBC_LOCALES
-
-if KERNEL_linux
-
-choice LIBC_GLIBC_SUPPORTED_KERNEL
- bool
- prompt "Minimum supported kernel version"
- default LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS
-
-config LIBC_GLIBC_KERNEL_VERSION_NONE
- bool
- prompt "Let ./configure decide"
- help
- Let ./configure decide what minimum kernel version glibc will be
- able to run against.
-
- This will include legacy compatibility code for older kernels in
- the C library, thus ensuring that it will run on a large number
- of old kernels.
-
- The minimum kernel version supported will be dependent upon the
- target you build for. For example:
- alpha*-*-linux-gnu Requires Linux 2.6.9 for NPTL
- sh[34]-*-linux-gnu Requires Linux 2.6.11
- powerpc* Requires Linux 2.4.19
- arm*-*-linux-*gnueabi Requires Linux 2.6.16
-
-config LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS
- bool
- prompt "Same as kernel headers (default)"
- help
- Normally, you'll want glibc to run against the same kernel
- version as the one used for the headers.
-
- This is the default.
-
- If enabled, crosstool-ng will use the chosen version of kernel
- headers for the glibc minimum kernel version supported, which is
- what gets passed to "--enable-kernel=" when configuring glibc.
-
- Enabling this will ensure that no legacy compatibility code for
- older kernels is built into your C libraries, but it will
- be unable to run on kernel versions older than whichever kernel
- headers version you've built the toolchain for.
-
- If you know for sure that your toolchain will never need to build
- applications that will run under a kernel version older than your
- chosen kernel headers version (CT_KERNEL_VERSION), you can choose
- "y" here.
-
-config LIBC_GLIBC_KERNEL_VERSION_CHOSEN
- bool
- prompt "Specific kernel version"
- help
- Specify the earliest Linux kernel version you want glibc to
- include support for. This does not have to match the kernel
- headers version used for your toolchain. This controls what is
- passed to the "--enable-kernel=" option to the glibc configure
- script.
-
- If you want to be able to statically link programs with your
- toolchain's C library, make sure this kernel version is lower than
- all kernels you wish to support to avoid "FATAL: kernel too old"
- errors. The higher the version you specify, the less legacy code
- will be built into libc.
-
- Most people can leave this at the default value of "2.6.9".
-
-if LIBC_GLIBC_KERNEL_VERSION_CHOSEN
-
-config LIBC_GLIBC_MIN_KERNEL_VERSION
- string
- prompt "Minimum kernel version to support"
- default "2.6.9"
- help
- Enter here the lowest kernel version glibc will be able to run against.
-
- The minimum kernel version supported will be dependent upon the
- target you build for. For example:
- alpha*-*-linux-gnu Requires Linux 2.6.9 for NPTL
- sh[34]-*-linux-gnu Requires Linux 2.6.11
- powerpc* Requires Linux 2.4.19
- arm*-*-linux-*gnueabi Requires Linux 2.6.16
-
- Note that no sanity check is performed by crosstool-NG to ensure
- that the value you enter here is appropriate for your target.
-
-endif # LIBC_GLIBC_KERNEL_VERSION_CHOSEN
-
-endchoice
-
-config LIBC_GLIBC_MIN_KERNEL
- string
- default "" if LIBC_GLIBC_KERNEL_VERSION_NONE
- default KERNEL_VERSION if LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS
- default LIBC_GLIBC_MIN_KERNEL_VERSION if LIBC_GLIBC_KERNEL_VERSION_CHOSEN
-
-endif # KERNEL_linux
diff --git a/config/libc/mingw-w64.in b/config/libc/mingw-w64.in
new file mode 100644
index 0000000..2531fef
--- /dev/null
+++ b/config/libc/mingw-w64.in
@@ -0,0 +1,38 @@
+# mingw options
+
+## depends on WINDOWS
+##
+## select LIBC_SUPPORT_THREADS_NATIVE
+## select LIBC_SUPPORT_THREADS_POSIX
+## select CC_CORE_NEEDED
+## select BINUTILS_FORCE_LD_BFD_DEFAULT
+##
+## help The de-facto standard for Mingw distributions.
+
+config THREADS
+ default "win32" if THREADS_NATIVE
+ default "posix" if THREADS_POSIX
+
+config MINGW_SECURE_API
+ bool "Expose secure API prototypes"
+ default y
+
+config MINGW_DIRECTX
+ bool "Include DirectX development files"
+
+config MINGW_DDK
+ bool "Include DDK development files"
+
+config MINGW_TOOLS
+ bool "Include the companion tools"
+ default y
+ help
+ Build the companion tools with mingw such as widl, gendef,
+ and genpeimg.
+
+config MINGW_TOOL_LIST_ARRAY
+ string "List of mingw-w64 tools to build"
+ default "gendef genidl genlib genpeimg widl"
+ depends on MINGW_TOOLS
+ help
+ List of mingw-w64 tools to build.
diff --git a/config/libc/mingw.in b/config/libc/mingw.in
deleted file mode 100644
index 62e7a46..0000000
--- a/config/libc/mingw.in
+++ /dev/null
@@ -1,113 +0,0 @@
-# mingw options
-
-## depends on WINDOWS
-##
-## select LIBC_SUPPORT_THREADS_NATIVE
-## select LIBC_SUPPORT_THREADS_POSIX
-## select CC_CORE_PASS_2_NEEDED
-##
-## help The de-facto standard for Mingw distributions.
-
-config THREADS
- default "win32" if THREADS_NATIVE
- default "posix" if THREADS_POSIX
-
-choice
- bool
- prompt "Windows API version"
-
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config WINAPI_V_5_0_1
- bool
- prompt "5.0.1"
-
-config WINAPI_V_5_0_0
- bool
- prompt "5.0.0 (OBSOLETE)"
- depends on OBSOLETE
-
-config WINAPI_V_4_0_4
- bool
- prompt "4.0.4"
-
-config WINAPI_V_4_0_2
- bool
- prompt "4.0.2 (OBSOLETE)"
- depends on OBSOLETE
-
-config WINAPI_V_4_0_1
- bool
- prompt "4.0.1 (OBSOLETE)"
- depends on OBSOLETE
-
-config WINAPI_V_4_0_0
- bool
- prompt "4.0.0 (OBSOLETE)"
- depends on OBSOLETE
-
-config WINAPI_V_3_1_0
- bool
- prompt "3.1.0"
-
-config WINAPI_V_3_0_0
- bool
- prompt "3.0.0 (OBSOLETE)"
- depends on OBSOLETE
-
-config WINAPI_V_2_0_8
- bool
- prompt "2.0.8 (OBSOLETE)"
- depends on OBSOLETE
-
-config WINAPI_V_2_0_7
- bool
- prompt "2.0.7 (OBSOLETE)"
- depends on OBSOLETE
-
-config WINAPI_V_select
- bool
- prompt "Other version"
-
-config WINAPI_V_DEVEL
- bool
- prompt "devel"
- depends on EXPERIMENTAL
- depends on CONFIGURE_has_git
-
-endchoice
-
-config WINAPI_VERSION
- string
- prompt "Windows API version" if WINAPI_V_select
- default "devel" if WINAPI_V_DEVEL
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "5.0.1" if WINAPI_V_5_0_1
- default "5.0.0" if WINAPI_V_5_0_0
- default "4.0.4" if WINAPI_V_4_0_4
- default "4.0.2" if WINAPI_V_4_0_2
- default "4.0.1" if WINAPI_V_4_0_1
- default "4.0.0" if WINAPI_V_4_0_0
- default "3.1.0" if WINAPI_V_3_1_0
- default "3.0.0" if WINAPI_V_3_0_0
- default "2.0.8" if WINAPI_V_2_0_8
- default "2.0.7" if WINAPI_V_2_0_7
- help
- Enter the version number of the Windows API files to use
-
-config MINGW_DIRECTX
- bool
- prompt "Include DirectX development files"
-
-config MINGW_DDK
- bool
- prompt "Include DDK development files"
-
-config MINGW_TOOLS
- bool
- prompt "Include the companion tools"
- help
- build the companion tools with mingw such as widl, gendef,
- and genpeimg
diff --git a/config/libc/moxiebox.in b/config/libc/moxiebox.in
new file mode 100644
index 0000000..07fc333
--- /dev/null
+++ b/config/libc/moxiebox.in
@@ -0,0 +1,26 @@
+# moxiebox options
+
+# Moxie is distributed in non-bootstrapped form, so we really need
+# autoconfig and automake.
+
+## depends on ARCH_MOXIE
+## depends on ARCH_LE
+## depends on BARE_METAL
+## select LIBC_NEWLIB_SHOW
+## select LIBC_SUPPORT_THREADS_NONE
+## select COMP_TOOLS_AUTOCONF if !CONFIGURE_has_autoconf_2_65_or_newer || !CONFIGURE_has_autoreconf_2_64_or_newer
+## select COMP_TOOLS_AUTOMAKE if !CONFIGURE_has_automake_1_15_or_newer
+## select CC_CORE_NEEDED
+## select LIBELF_NEEDED
+##
+## help Secure execution runtime for Moxie architecture.
+
+config MOXIEBOX_SHORT_TUPLE
+ bool "Use 'moxiebox-' as target tuple"
+ select OMIT_TARGET_ARCH
+ select OMIT_TARGET_VENDOR
+ select TARGET_SKIP_CONFIG_SUB
+ help
+ Moxiebox refers to the tools configured for 'moxie-unknown-moxiebox-' by
+ a short, 'moxiebox-' prefix. Though non-canonical, it seems to be officially
+ endorsed.
diff --git a/config/libc/musl.in b/config/libc/musl.in
index 5ea166f..db7abb7 100644
--- a/config/libc/musl.in
+++ b/config/libc/musl.in
@@ -1,75 +1,64 @@
-# musl options
+# musl second-part option
## depends on ! WINDOWS && ! BARE_METAL
## depends on EXPERIMENTAL
-##
## select LIBC_SUPPORT_THREADS_NATIVE
-## select CC_CORE_PASSES_NEEDED
-##
+## select CC_CORE_NEEDED
+
## help Musl is a new standard library to power a new generation of Linux-based
## help devices. musl is lightweight, fast, simple, free, and strives to be
## help correct in the sense of standards-conformance and safety.
+# TBD why? it claims "native", why report "musl"?
config THREADS
default "musl"
-config LIBC_MUSL_CUSTOM
+config LIBC_MUSL_DEBUG
bool
- prompt "Custom musl"
- depends on EXPERIMENTAL
+ prompt "Build with debugging information"
help
- The choosen musl-libc version shall be not downloaded. Instead use
- a custom location to get the source.
-
-if LIBC_MUSL_CUSTOM
+ This option enables debugging information, this will increase the size of
+ the resulting library.
-config LIBC_MUSL_CUSTOM_LOCATION
- string
- prompt "Full path to custom musl-libc source"
+config LIBC_MUSL_WARNINGS
+ bool
+ prompt "Build with recommended warnings flags"
help
- Enter the path to the directory or tarball of your source for musl.
+ Build musl-libc with extra warnings, useful for musl-libc development.
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component, musl, and the version is set
- below in the custom version string.
+choice
+ prompt "How to optimize musl-libc"
+ default LIBC_MUSL_OPTIMIZE_AUTO
-config LIBC_MUSL_CUSTOM_VERSION
- string
- prompt "Custom MUSL version"
+config LIBC_MUSL_OPTIMIZE_NONE
+ bool
+ prompt "Do not optimize musl-libc"
help
- Enter the version number for your custom musl-libc.
-
-config LIBC_VERSION
- string
- default LIBC_MUSL_CUSTOM_VERSION
-
-endif # LIBC_MUSL_CUSTOM
+ This option sets `--enable-optimize=no' to disable optimization.
-if ! LIBC_MUSL_CUSTOM
-
-choice
+config LIBC_MUSL_OPTIMIZE_AUTO
bool
- prompt "musl version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
+ prompt "Use musl-libc's automatic optimization"
+ help
+ This option sets `--enable-optimize=auto' to automatically set optimization.
-config LIBC_MUSL_V_1_1_16
+config LIBC_MUSL_OPTIMIZE_SPEED
bool
- prompt "1.1.16"
- depends on EXPERIMENTAL
+ prompt "Optimize musl-libc for speed"
+ help
+ This option sets `--enable-optimize=yes' to set optimization to -O3 for speed.
-config LIBC_MUSL_V_1_1_15
+config LIBC_MUSL_OPTIMIZE_SIZE
bool
- prompt "1.1.15 (OBSOLETE)"
- depends on EXPERIMENTAL && OBSOLETE
+ prompt "Optimize musl-libc for size"
+ help
+ This option sets `--enable-optimize=size' to set optimization to -Os for size.
endchoice
-config LIBC_VERSION
+config LIBC_MUSL_OPTIMIZE
string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "1.1.16" if LIBC_MUSL_V_1_1_16
- default "1.1.15" if LIBC_MUSL_V_1_1_15
-
-endif # ! LIBC_MUSL_CUSTOM
+ default "no" if LIBC_MUSL_OPTIMIZE_NONE
+ default "auto" if LIBC_MUSL_OPTIMIZE_AUTO
+ default "yes" if LIBC_MUSL_OPTIMIZE_SPEED
+ default "size" if LIBC_MUSL_OPTIMIZE_SIZE
diff --git a/config/libc/musl.in.2 b/config/libc/musl.in.2
deleted file mode 100644
index f4abcc4..0000000
--- a/config/libc/musl.in.2
+++ /dev/null
@@ -1,51 +0,0 @@
-# musl second-part option
-
-config LIBC_MUSL_DEBUG
- bool
- prompt "Build with debugging information"
- help
- This option enables debugging information, this will increase the size of
- the resulting library.
-
-config LIBC_MUSL_WARNINGS
- bool
- prompt "Build with recommended warnings flags"
- help
- Build musl-libc with extra warnings, useful for musl-libc development.
-
-choice
- prompt "How to optimize musl-libc"
- default LIBC_MUSL_OPTIMIZE_AUTO
-
-config LIBC_MUSL_OPTIMIZE_NONE
- bool
- prompt "Do not optimize musl-libc"
- help
- This option sets `--enable-optimize=no' to disable optimization.
-
-config LIBC_MUSL_OPTIMIZE_AUTO
- bool
- prompt "Use musl-libc's automatic optimization"
- help
- This option sets `--enable-optimize=auto' to automatically set optimization.
-
-config LIBC_MUSL_OPTIMIZE_SPEED
- bool
- prompt "Optimize musl-libc for speed"
- help
- This option sets `--enable-optimize=yes' to set optimization to -O3 for speed.
-
-config LIBC_MUSL_OPTIMIZE_SIZE
- bool
- prompt "Optimize musl-libc for size"
- help
- This option sets `--enable-optimize=size' to set optimization to -Os for size.
-
-endchoice
-
-config LIBC_MUSL_OPTIMIZE
- string
- default "no" if LIBC_MUSL_OPTIMIZE_NONE
- default "auto" if LIBC_MUSL_OPTIMIZE_AUTO
- default "yes" if LIBC_MUSL_OPTIMIZE_SPEED
- default "size" if LIBC_MUSL_OPTIMIZE_SIZE
diff --git a/config/libc/newlib.in b/config/libc/newlib.in
index 166130f..f1cb29b 100644
--- a/config/libc/newlib.in
+++ b/config/libc/newlib.in
@@ -1,220 +1,207 @@
# newlib options
## depends on BARE_METAL
-##
+## select LIBC_PROVIDES_CXA_ATEXIT
## select LIBC_SUPPORT_THREADS_NONE
-## select CC_CORE_PASSES_NEEDED if CANADIAN
-## select CC_CORE_PASS_2_NEEDED if ! CANADIAN
-##
+## select CC_CORE_NEEDED
+
## help Newlib 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
## 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 LIBC_NEWLIB_CUSTOM
- bool
- prompt "Custom newlib"
- depends on EXPERIMENTAL
- select LIBC_NEWLIB_2_5_or_later
- help
- The choosen newlib version shall be not downloaded. Instead use
- a custom location to get the source.
-if LIBC_NEWLIB_CUSTOM
-
-config LIBC_NEWLIB_CUSTOM_LOCATION
- string
- prompt "Full path to custom newlib source"
- help
- Enter the path to the directory or tarball of your source for newlib.
-
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component, newlib, and the version is set
- below in the custom version string.
-
-config LIBC_NEWLIB_CUSTOM_VERSION
+config LIBC_NEWLIB_TARGET_CFLAGS
string
- prompt "Custom NEWLIB version"
+ prompt "Target CFLAGS for newlib"
+ default ""
help
- Enter the version number for your custom newlib.
-
-config LIBC_VERSION
- string
- default LIBC_NEWLIB_CUSTOM_VERSION
-
-endif # LIBC_NEWLIB_CUSTOM
+ 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_TARGET_CFLAGS are used
+ to compile the libraries.
-if ! LIBC_NEWLIB_CUSTOM
+ Leave blank if you don't know better.
-config CC_NEWLIB_SHOW_LINARO
+config LIBC_NEWLIB_IO_C99FMT
bool
- prompt "Show Linaro versions"
+ prompt "Enable IOs on C99 formats"
help
- Linaro is maintaining some advanced/more stable/experimental versions
- of newlib, especially for the ARM architecture.
-
- Those versions have not been blessed by the newlib comunity (nor have they
- been cursed either!), but they look to be pretty much stable, and even
- more stable than the upstream versions. YMMV...
-
- If you do not know what this Linaro stuff is, then simply say 'n' here,
- and rest in peace. OTOH, if you know what you are doing, you will be
- able to use and enjoy :-) the Linaro versions by saying 'y' here.
-
- Linaro: http://www.linaro.org/
-
-choice
- bool
- prompt "newlib version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-config LIBC_NEWLIB_V_2_5_0
- bool
- prompt "2.5.0"
- select LIBC_NEWLIB_2_5
-
-config LIBC_NEWLIB_V_2_4_0
- bool
- prompt "2.4.0.20161025"
- select LIBC_NEWLIB_2_4
+ Enable support for IOs on C99 formats.
-config LIBC_NEWLIB_V_2_3_0
+config LIBC_NEWLIB_IO_LL
bool
- prompt "2.3.0.20160226"
- select LIBC_NEWLIB_2_3
+ prompt "Enable IOs on long long"
+ help
+ Enable support for IOs on long long integers.
-config LIBC_NEWLIB_LINARO_V_2_2_0
+config LIBC_NEWLIB_IO_FLOAT
bool
- prompt "Linaro 2.2.0-2015.01"
- depends on CC_NEWLIB_SHOW_LINARO
- select LIBC_NEWLIB_2_2
+ prompt "Enable IOs on floats and doubles"
+ help
+ Enable support for IOs on floating point
+ values (float and double).
-config LIBC_NEWLIB_V_2_2_0
+config LIBC_NEWLIB_IO_LDBL
bool
- prompt "2.2.0.20151023"
- select LIBC_NEWLIB_2_2
+ prompt "Enable IOs on long doubles"
+ depends on LIBC_NEWLIB_IO_FLOAT
+ help
+ Enable support for IOs on long doubles.
-config LIBC_NEWLIB_LINARO_V_2_1_0
+config LIBC_NEWLIB_IO_POS_ARGS
bool
- prompt "Linaro 2.1.0-2014.09"
- depends on CC_NEWLIB_SHOW_LINARO
- select LIBC_NEWLIB_2_1
+ prompt "Enable printf-family positional arg support"
+ help
+ Enable printf-family positional arg support.
-config LIBC_NEWLIB_V_2_1_0
+config LIBC_NEWLIB_FVWRITE_IN_STREAMIO
bool
- prompt "2.1.0"
- select LIBC_NEWLIB_2_1
+ 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_V_2_0_0
+config LIBC_NEWLIB_UNBUF_STREAM_OPT
bool
- prompt "2.0.0"
- select LIBC_NEWLIB_2_0
+ prompt "Optimize fprintf to unbuffered unix file"
+ default y
+ 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_V_1_20_0
+config LIBC_NEWLIB_FSEEK_OPTIMIZATION
bool
- prompt "1.20.0"
+ prompt "Fseek optimisation"
+ default y
+ help
+ Disabling fseek optimisation can decrease code size.
-config LIBC_NEWLIB_V_1_19_0
+config LIBC_NEWLIB_DISABLE_SUPPLIED_SYSCALLS
bool
- prompt "1.19.0"
+ 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_V_1_18_0
+config LIBC_NEWLIB_REGISTER_FINI
bool
- prompt "1.18.0"
+ prompt "Enable finalization function registration using atexit"
+ help
+ Enable finalization function registration using atexit.
-config LIBC_NEWLIB_V_1_17_0
+config LIBC_NEWLIB_ATEXIT_DYNAMIC_ALLOC
bool
- prompt "1.17.0"
-
-endchoice
-
-endif # ! LIBC_NEWLIB_CUSTOM
+ prompt "Enable dynamic allocation of atexit entries"
+ default y
+ help
+ Enable dynamic allocation of atexit entries.
-config LIBC_NEWLIB_2_5
+config LIBC_NEWLIB_GLOBAL_ATEXIT
bool
- select LIBC_NEWLIB_2_5_or_later
+ prompt "Enable atexit data structure as global variable"
+ 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_2_4
+config LIBC_NEWLIB_LITE_EXIT
bool
- select LIBC_NEWLIB_2_4_or_later
+ prompt "Enable lite exit"
+ 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_2_3
+config LIBC_NEWLIB_REENT_SMALL
bool
- select LIBC_NEWLIB_2_3_or_later
+ prompt "Enable small reentrant struct support"
+ help
+ Enable small reentrant struct support.
-config LIBC_NEWLIB_2_2
+config LIBC_NEWLIB_MULTITHREAD
bool
- select LIBC_NEWLIB_2_2_or_later
+ prompt "Enable support for multiple threads"
+ default y
+ help
+ Enable support for multiple threads.
-config LIBC_NEWLIB_2_1
+config LIBC_NEWLIB_RETARGETABLE_LOCKING
bool
- select LIBC_NEWLIB_2_1_or_later
+ 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_2_0
+config LIBC_NEWLIB_EXTRA_SECTIONS
bool
- select LIBC_NEWLIB_2_0_or_later
+ 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_2_5_or_later
+config LIBC_NEWLIB_WIDE_ORIENT
bool
- select LIBC_NEWLIB_2_4_or_later
+ prompt "Allow wide C99 stream orientation"
+ default y
+ 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_2_4_or_later
+config LIBC_NEWLIB_ENABLE_TARGET_OPTSPACE
bool
- select LIBC_NEWLIB_2_3_or_later
+ prompt "Optimize newlib for size"
+ default y
+ help
+ Pass --enable-target-optspace to newlib configure.
-config LIBC_NEWLIB_2_3_or_later
- bool
- select LIBC_NEWLIB_2_2_or_later
+ This will compile newlib with -Os.
-config LIBC_NEWLIB_2_2_or_later
+config LIBC_NEWLIB_LTO
bool
- select LIBC_NEWLIB_2_1_or_later
+ 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_2_1_or_later
+config LIBC_NEWLIB_NANO_MALLOC
bool
- select LIBC_NEWLIB_2_0_or_later
+ prompt "Enable Nano Malloc"
+ 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.
-# maybe older versions of newlib will support it too, but this
-# needs to be checked
-config LIBC_NEWLIB_2_0_or_later
+config LIBC_NEWLIB_NANO_FORMATTED_IO
bool
- select LIBC_PROVIDES_CXA_ATEXIT
-
-if ! LIBC_NEWLIB_CUSTOM
-config LIBC_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "2.5.0" if LIBC_NEWLIB_V_2_5_0
- default "2.4.0.20161025" if LIBC_NEWLIB_V_2_4_0
- default "2.3.0.20160226" if LIBC_NEWLIB_V_2_3_0
- default "linaro-2.2.0-2015.01" if LIBC_NEWLIB_LINARO_V_2_2_0
- default "2.2.0.20151023" if LIBC_NEWLIB_V_2_2_0
- default "linaro-2.1.0-2014.09" if LIBC_NEWLIB_LINARO_V_2_1_0
- default "2.1.0" if LIBC_NEWLIB_V_2_1_0
- default "2.0.0" if LIBC_NEWLIB_V_2_0_0
- default "1.20.0" if LIBC_NEWLIB_V_1_20_0
- default "1.19.0" if LIBC_NEWLIB_V_1_19_0
- default "1.18.0" if LIBC_NEWLIB_V_1_18_0
- default "1.17.0" if LIBC_NEWLIB_V_1_17_0
- help
- Enter the tag you want to use.
- Leave empty to use the 'head' of the repository.
-
-endif # ! LIBC_NEWLIB_CUSTOM
+ prompt "Enable Nano Formatted I/O"
+ 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_TARGET_CFLAGS
+config LIBC_NEWLIB_EXTRA_CONFIG_ARRAY
string
- prompt "Target CFLAGS for newlib"
+ prompt "Extra config 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_TARGET_CFLAGS are used
- to compile the libraries.
-
- Leave blank if you don't know better.
+ Extra flags to pass onto ./configure when configuring the newlib.
diff --git a/config/libc/newlib.in.2 b/config/libc/newlib.in.2
deleted file mode 100644
index 96bd22b..0000000
--- a/config/libc/newlib.in.2
+++ /dev/null
@@ -1,176 +0,0 @@
-# newlib second-part options
-
-config LIBC_NEWLIB_IO_C99FMT
- bool
- prompt "Enable IOs on C99 formats"
- help
- Enable support for IOs on C99 formats.
-
-config LIBC_NEWLIB_IO_LL
- bool
- prompt "Enable IOs on long long"
- help
- Enable support for IOs on long long integers.
-
-config LIBC_NEWLIB_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_IO_LDBL
- bool
- prompt "Enable IOs on long doubles"
- depends on LIBC_NEWLIB_IO_FLOAT
- help
- Enable support for IOs on long doubles.
-
-config LIBC_NEWLIB_IO_POS_ARGS
- bool
- prompt "Enable printf-family positional arg support"
- help
- Enable printf-family positional arg support.
-
-config LIBC_NEWLIB_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_UNBUF_STREAM_OPT
- bool
- prompt "Optimize fprintf to unbuffered unix file"
- default y
- 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_FSEEK_OPTIMIZATION
- bool
- prompt "Fseek optimisation"
- default y
- help
- Disabling fseek optimisation can decrease code size.
-
-config LIBC_NEWLIB_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_REGISTER_FINI
- bool
- prompt "Enable finalization function registration using atexit"
- help
- Enable finalization function registration using atexit.
-
-config LIBC_NEWLIB_ATEXIT_DYNAMIC_ALLOC
- bool
- prompt "Enable dynamic allocation of atexit entries"
- default y
- help
- Enable dynamic allocation of atexit entries.
-
-config LIBC_NEWLIB_GLOBAL_ATEXIT
- bool
- prompt "Enable atexit data structure as global variable"
- 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_LITE_EXIT
- bool
- prompt "Enable lite exit"
- 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_REENT_SMALL
- bool
- prompt "Enable small reentrant struct support"
- help
- Enable small reentrant struct support.
-
-config LIBC_NEWLIB_MULTITHREAD
- bool
- prompt "Enable support for multiple threads"
- default y
- help
- Enable support for multiple threads.
-
-config LIBC_NEWLIB_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_WIDE_ORIENT
- bool
- prompt "Allow wide C99 stream orientation"
- default y
- 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_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_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_MALLOC
- bool
- prompt "Enable Nano Malloc"
- depends on LIBC_NEWLIB_2_1_or_later
- 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_FORMATTED_IO
- bool
- prompt "Enable Nano Formatted I/O"
- depends on LIBC_NEWLIB_2_2_or_later
- 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_EXTRA_CONFIG_ARRAY
- string
- prompt "Extra config for newlib"
- default ""
- help
- Extra flags to pass onto ./configure when configuring the newlib.
diff --git a/config/libc/none.in b/config/libc/none.in
index b8860b0..713f33c 100644
--- a/config/libc/none.in
+++ b/config/libc/none.in
@@ -1,5 +1,6 @@
# Dummy config file to not use a C library *at all*
+## no-package
## depends on BARE_METAL
##
## help Do not use a C library.
diff --git a/config/libc/uClibc-ng.in b/config/libc/uClibc-ng.in
new file mode 100644
index 0000000..dc83ca7
--- /dev/null
+++ b/config/libc/uClibc-ng.in
@@ -0,0 +1,170 @@
+# uClibc options
+
+## depends on ! WINDOWS && ! BARE_METAL
+##
+## select LIBC_SUPPORT_THREADS_LT
+## select LIBC_SUPPORT_THREADS_NONE
+## select LIBC_SUPPORT_THREADS_NATIVE
+## select CC_CORE_NEEDED
+##
+## help The de-facto standard for embeded linux systems.
+## help
+## help Highly configurable, thus as feature-rich as you
+## help need, without compromising for size.
+
+config THREADS
+ default "nptl" if THREADS_NATIVE
+ default "linuxthreads" if THREADS_LT
+
+if ARCH_FLOAT_SOFTFP
+comment "'softfp' ABI and uClibc is not entirely tested in crosstool-NG"
+comment "You may experience issues, although it should work just fine"
+endif # ARCH_FLOAT_SOFTFP
+
+choice
+ bool
+ prompt "uClibc verbosity:"
+ default LIBC_UCLIBC_VERBOSITY_0
+
+config LIBC_UCLIBC_VERBOSITY_0
+ bool
+ prompt "Quiet build"
+ help
+ Print terse command indications.
+
+config LIBC_UCLIBC_VERBOSITY_1
+ bool
+ prompt "Brief build (show defines, ld flags)"
+ help
+ Print simplified command lines.
+
+config LIBC_UCLIBC_VERBOSITY_2
+ bool
+ prompt "Very verbose build"
+ help
+ Print full command lines.
+
+endchoice
+
+# uClibc-ng has reverted the meaning of V=1 and V=2 compared to its
+# ancestor, uClibc, in order to match kernel's Kbuild settings.
+# Hence, for uClibc-ng supply V=2 if "brief build" is selected,
+# and so forth.
+config LIBC_UCLIBC_VERBOSITY
+ string
+ default "" if LIBC_UCLIBC_VERBOSITY_0
+ default "V=2" if LIBC_UCLIBC_VERBOSITY_1
+ default "V=1" if LIBC_UCLIBC_VERBOSITY_2
+
+choice
+ bool
+ prompt "Debug level"
+ default LIBC_UCLIBC_DEBUG_LEVEL_0
+
+config LIBC_UCLIBC_DEBUG_LEVEL_0
+ bool
+ prompt "none"
+
+config LIBC_UCLIBC_DEBUG_LEVEL_1
+ bool
+ prompt "minimal"
+
+config LIBC_UCLIBC_DEBUG_LEVEL_2
+ bool
+ prompt "normal"
+
+config LIBC_UCLIBC_DEBUG_LEVEL_3
+ bool
+ prompt "all"
+
+endchoice
+
+config LIBC_UCLIBC_DEBUG_LEVEL
+ int
+ default 0 if LIBC_UCLIBC_DEBUG_LEVEL_0
+ default 1 if LIBC_UCLIBC_DEBUG_LEVEL_1
+ default 2 if LIBC_UCLIBC_DEBUG_LEVEL_2
+ default 3 if LIBC_UCLIBC_DEBUG_LEVEL_3
+
+config LIBC_UCLIBC_CONFIG_FILE
+ string
+ prompt "Configuration file"
+ default ""
+ help
+ Path to the configuration file.
+
+ If the file is not provided, we fall back to a default config file.
+
+config LIBC_UCLIBC_LOCALES
+ bool
+ select LIBC_UCLIBC_WCHAR
+ # Before it became a separate option, libiconv depended on locales
+ prompt "Add support for locales"
+ help
+ Say y if you want uClibc to support localisation.
+
+ Note that seems to be broken on recent uClibc releases.
+
+config LIBC_UCLIBC_LIBICONV
+ bool "Enable iconv"
+ help
+ Say y if you want to enable <iconv.h> and the corresponding interfaces.
+
+config LIBC_UCLIBC_IPV6
+ bool
+ prompt "Add support for IPv6"
+ help
+ Say y if you want uClibc to support IPv6.
+
+config LIBC_UCLIBC_WCHAR
+ bool
+ prompt "Add support for WCHAR"
+ help
+ Say y if you want uClibc to support WCHAR.
+
+ Maybe this is needed, if you're building a C++-Compiler
+
+config LIBC_UCLIBC_FENV
+ bool
+ prompt "Add support for fenv.h"
+ default y if ARCH_X86
+ help
+ fenv.h provides functions to control the floating point environment,
+ such as rounding mode, exceptions...
+
+ For some architectures, fenv.h is incomplete, so is not installed
+ by default. x86 is known to have a rather complete fenv.h, so it is
+ installed by default only for x86.
+
+ If you need fenv.h on other architectures, say 'y' here, but you may
+ encounter some issues.
+
+config LIBC_UCLIBC_HAS_SSP
+ bool
+ prompt "Support stack smashing protection (SSP)"
+ default y
+ help
+ Enable support for building programs with -fstack-protector family
+ of options. If this option is disabled, one can also use a standalone
+ libssp library from GCC.
+
+config LIBC_UCLIBC_BUILD_SSP
+ bool
+ prompt "Build uClibc with SSP"
+ depends on LIBC_UCLIBC_HAS_SSP
+ help
+ Build uClibc with -fstack-protector. This adds runtime overhead
+ to many function calls and is disabled by default.
+
+if ARCH_ARM
+config LIBC_UCLIBC_USE_GNU_SUFFIX
+ bool
+ default y
+ prompt "Use -uclibcgnueabi suffix"
+ help
+ Depending on where the resulting toolchain will be used, you may need
+ to tweak the "system" part of the target tuple. Buildroot prefers
+ to have arm-*-linux-uclibcgnueabi; OpenEmbedded prefers
+ arm-*-linux-uclibceabi. Other tools seem to either accept both, or
+ don't care about the suffix.
+endif
diff --git a/config/libc/uClibc.in b/config/libc/uClibc.in
deleted file mode 100644
index 9d5e8fd..0000000
--- a/config/libc/uClibc.in
+++ /dev/null
@@ -1,214 +0,0 @@
-# uClibc options
-
-## depends on ! WINDOWS && ! BARE_METAL
-##
-## select LIBC_SUPPORT_THREADS_LT
-## select LIBC_SUPPORT_THREADS_NONE
-## select CC_CORE_PASSES_NEEDED
-##
-## help The de-facto standard for embeded linux systems.
-## help
-## help Highly configurable, thus as feature-rich as you
-## help need, without compromising for size.
-
-config THREADS
- default "nptl" if THREADS_NATIVE
- default "linuxthreads" if THREADS_LT
-
-if ARCH_FLOAT_SOFTFP
-comment "'softfp' ABI and uClibc is not entirely tested in crosstool-NG"
-comment "You may experience issues, although it should work just fine"
-endif # ARCH_FLOAT_SOFTFP
-
-config LIBC_UCLIBC_CUSTOM
- bool
- prompt "Custom uClibc"
- depends on EXPERIMENTAL
- help
- The choosen uclibc version shall be not downloaded. Instead use
- a custom location to get the source.
-
-if LIBC_UCLIBC_CUSTOM
-
-choice
- bool
- prompt "uClibc Version Name"
-
-config LIBC_UCLIBC_CUSTOM_UCLIBC
- bool "uClibc (OBSOLETE)"
- depends on OBSOLETE
- select LIBC_UCLIBC_0_9_33_2_or_later
-
-config LIBC_UCLIBC_CUSTOM_UCLIBC_NG
- bool "uClibc-ng (1.0.15 or later)"
- select LIBC_UCLIBC_NG_1_0_15_or_later
-
-config LIBC_UCLIBC_CUSTOM_UCLIBC_NG_OLD
- bool "uClibc-ng (older than 1.0.15)"
- select LIBC_UCLIBC_NG_1_0_0_or_later
-
-endchoice
-
-config LIBC_UCLIBC_CUSTOM_LOCATION
- string
- prompt "Full path to custom uClibc source"
- help
- Enter the path to the directory or tarball of your source for uClibc.
-
- If the path is a tarball, it should extract to: <name>-<version>/
- where the name is this component will be set by the uClibc Version Name
- option from above, and the version is set below in the custom version
- string.
-
-config LIBC_UCLIBC_CUSTOM_VERSION
- string
- prompt "Custom uClibc Version"
- help
- Enter the version number for your custom uClibc.
- Version 1.0.18 is only enabled in EXPERIMENTAL builds due to issues
- with static libraries.
-
-config LIBC_VERSION
- string
- default LIBC_UCLIBC_CUSTOM_VERSION
-
-endif # LIBC_UCLIBC_CUSTOM
-
-if ! LIBC_UCLIBC_CUSTOM
-
-choice
- bool
- prompt "uClibc version"
-# Don't remove next line
-# CT_INSERT_VERSION_BELOW
-
-config LIBC_UCLIBC_NG_V_1_0_22
- bool
- prompt "1.0.22"
- select LIBC_UCLIBC_NG_1_0_15_or_later
-
-config LIBC_UCLIBC_NG_V_1_0_21
- bool
- prompt "1.0.21 (OBSOLETE)"
- depends on OBSOLETE
- select LIBC_UCLIBC_NG_1_0_15_or_later
-
-config LIBC_UCLIBC_NG_V_1_0_20
- bool
- prompt "1.0.20 (OBSOLETE)"
- depends on OBSOLETE
- select LIBC_UCLIBC_NG_1_0_15_or_later
-
-config LIBC_UCLIBC_V_0_9_33_2
- bool
- prompt "0.9.33.2 (OBSOLETE)"
- depends on OBSOLETE
- select LIBC_UCLIBC_0_9_33_2_or_later
-
-endchoice
-
-config LIBC_VERSION
- string
-# Don't remove next line
-# CT_INSERT_VERSION_STRING_BELOW
- default "1.0.22" if LIBC_UCLIBC_NG_V_1_0_22
- default "1.0.21" if LIBC_UCLIBC_NG_V_1_0_21
- default "1.0.20" if LIBC_UCLIBC_NG_V_1_0_20
- default "0.9.33.2" if LIBC_UCLIBC_V_0_9_33_2
-
-endif # ! LIBC_UCLIBC_CUSTOM
-
-config LIBC_UCLIBC_NG_1_0_15_or_later
- bool
- select LIBC_UCLIBC_NG_1_0_0_or_later
-
-config LIBC_UCLIBC_NG_1_0_0_or_later
- bool
- select LIBC_UCLIBC_NG
- select LIBC_UCLIBC_0_9_33_2_or_later
-
-config LIBC_UCLIBC_0_9_33_2_or_later
- bool
- select LIBC_SUPPORT_THREADS_NATIVE
- select LIBC_UCLIBC_PARALLEL
-
-config LIBC_UCLIBC_PARALLEL
- bool
-
-config LIBC_UCLIBC_NG
- bool
-
-choice
- bool
- prompt "uClibc verbosity:"
- default LIBC_UCLIBC_VERBOSITY_0
-
-config LIBC_UCLIBC_VERBOSITY_0
- bool
- prompt "Quiet build"
- help
- Print terse command indications.
-
-config LIBC_UCLIBC_VERBOSITY_1
- bool
- prompt "Brief build (show defines, ld flags)"
- help
- Print simplified command lines.
-
-config LIBC_UCLIBC_VERBOSITY_2
- bool
- prompt "Very verbose build"
- help
- Print full command lines.
-
-endchoice
-
-# uClibc-ng has reverted the meaning of V=1 and V=2 compared to its
-# ancestor, uClibc, in order to match kernel's Kbuild settings.
-# Hence, for uClibc-ng supply V=2 if "brief build" is selected,
-# and so forth.
-config LIBC_UCLIBC_VERBOSITY
- string
- default "" if LIBC_UCLIBC_VERBOSITY_0
- default "V=2" if LIBC_UCLIBC_VERBOSITY_1 && LIBC_UCLIBC_NG
- default "V=1" if LIBC_UCLIBC_VERBOSITY_1
- default "V=1" if LIBC_UCLIBC_VERBOSITY_2 && LIBC_UCLIBC_NG
- default "V=2" if LIBC_UCLIBC_VERBOSITY_2
-
-choice
- bool
- prompt "Debug level"
- default LIBC_UCLIBC_DEBUG_LEVEL_0
-
-config LIBC_UCLIBC_DEBUG_LEVEL_0
- bool
- prompt "none"
-
-config LIBC_UCLIBC_DEBUG_LEVEL_1
- bool
- prompt "minimal"
-
-config LIBC_UCLIBC_DEBUG_LEVEL_2
- bool
- prompt "normal"
-
-config LIBC_UCLIBC_DEBUG_LEVEL_3
- bool
- prompt "all"
-
-endchoice
-
-config LIBC_UCLIBC_DEBUG_LEVEL
- int
- default 0 if LIBC_UCLIBC_DEBUG_LEVEL_0
- default 1 if LIBC_UCLIBC_DEBUG_LEVEL_1
- default 2 if LIBC_UCLIBC_DEBUG_LEVEL_2
-
-config LIBC_UCLIBC_CONFIG_FILE
- string
- prompt "Configuration file"
- default ""
- help
- Path to the configuration file.
-
- If the file is not provided, we fall back to a default config file.
diff --git a/config/libc/uClibc.in.2 b/config/libc/uClibc.in.2
deleted file mode 100644
index 1b34855..0000000
--- a/config/libc/uClibc.in.2
+++ /dev/null
@@ -1,110 +0,0 @@
-# uClibc second-part option
-
-if THREADS_LT && !LIBC_UCLIBC_NG_1_0_15_or_later
-
-choice
- bool
- prompt "Linuxthread implementation: "
- default LIBC_UCLIBC_LNXTHRD_OLD
-
-config LIBC_UCLIBC_LNXTHRD_OLD
- bool
- prompt "old/stable"
- help
- From the uClibc config option help:
- There are two versions of linuxthreads. The older (stable) version
- has been in uClibc for quite a long time but hasn't seen too many
- updates other than bugfixes.
-
-config LIBC_UCLIBC_LNXTHRD_NEW
- bool
- prompt "new"
- help
- From the uClibc config option help:
- The new version has not been tested much, and lacks ports for arches
- which glibc does not support (like frv, etc...), but is based on
- the latest code from glibc, so it may be the only choice for the
- newer ports (like alpha/amd64/64bit arches and hppa).
-
-endchoice
-
-endif # THREADS_LT
-
-# uClibc-ng 1.0.15 did away with 2 implementations of linuxthreads
-config LIBC_UCLIBC_LNXTHRD
- string
- default "" if THREADS_NONE
- default "" if THREADS_NATIVE
- default "" if LIBC_UCLIBC_NG_1_0_15_or_later
- default "old" if LIBC_UCLIBC_LNXTHRD_OLD
- default "new" if LIBC_UCLIBC_LNXTHRD_NEW
-
-config LIBC_UCLIBC_LOCALES
- bool
- select LIBC_UCLIBC_WCHAR
- prompt "Add support for locales"
- help
- Say y if you want uClibc to support localisation.
-
- Note that seems to be broken on recent uClibc releases.
-
-config LIBC_UCLIBC_LOCALES_PREGEN_DATA
- bool
- prompt "Use pregen locales"
- depends on LIBC_UCLIBC_LOCALES
- depends on ! LIBC_UCLIBC_NG
- default y
- help
- If you see issues with using pre-generated locales data,
- you can try switching this off.
-
- If so, please report the issue, so we can default this
- to off if too many people complain.
-
-config LIBC_UCLIBC_IPV6
- bool
- prompt "Add support for IPv6"
- help
- Say y if you want uClibc to support IPv6.
-
-config LIBC_UCLIBC_WCHAR
- bool
- prompt "Add support for WCHAR"
- help
- Say y if you want uClibc to support WCHAR.
-
- Maybe this is needed, if you're building a C++-Compiler
-
-config LIBC_UCLIBC_FENV
- bool
- prompt "Add support for fenv.h"
- default y if ARCH_x86
- help
- fenv.h provides functions to control the floating point environment,
- such as rounding mode, exceptions...
-
- For some architectures, fenv.h is incomplete, so is not installed
- by default. x86 is known to have a rather complete fenv.h, so it is
- installed by default only for x86.
-
- If you need fenv.h on other architectures, say 'y' here, but you may
- encounter some issues.
-
-config LIBC_UCLIBC_RPC
- bool
- prompt "Add support for RPC"
- help
- Enable support for remote procedure calls (RPC) in uClibc.
-
-if ARCH_arm
-config LIBC_UCLIBC_USE_GNU_SUFFIX
- bool
- default y
- prompt "Use -uclibcgnueabi suffix"
- help
- Depending on where the resulting toolchain will be used, you may need
- to tweak the "system" part of the target tuple. Buildroot prefers
- to have arm-*-linux-uclibcgnueabi; OpenEmbedded prefers
- arm-*-linux-uclibceabi. Other tools seem to either accept both, or
- don't care about the suffix.
-endif