aboutsummaryrefslogtreecommitdiffstats
path: root/toolchain
diff options
context:
space:
mode:
authorFlorian Fainelli <f.fainelli@gmail.com>2016-09-19 12:59:32 -0700
committerFelix Fietkau <nbd@nbd.name>2016-09-28 08:39:01 +0200
commitc8e68150bfe2578ce7b0681465d08c5f01823db4 (patch)
treef1d3f045a63ea5734939c0527daf9eed50e07d12 /toolchain
parentfb586939ccf16717eb74cd0478f53dabefb16b0c (diff)
downloadupstream-c8e68150bfe2578ce7b0681465d08c5f01823db4.tar.gz
upstream-c8e68150bfe2578ce7b0681465d08c5f01823db4.tar.bz2
upstream-c8e68150bfe2578ce7b0681465d08c5f01823db4.zip
toolchain: Rework external toolchain libc selection
Make it a choice menu which offers the 3 C libraries we know about: glibc, uClibc and musl. While at it, make it possible for the external toolchain libc to select USE_GLIBC, USE_UCLIBC or USE_MUSL which is used by several packages to conditionally include specific CFLAGS (e.g: iproute2). Because USE_GLIBC et al. can now be selected by external toolchains, we need to restrict the per-libc menus to check on !EXTERNAL_TOOLCHAIN. While at it, make musl the default C library for external toolchain to match the internal toolchain. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'toolchain')
-rw-r--r--toolchain/Config.in27
-rw-r--r--toolchain/glibc/Config.in2
-rw-r--r--toolchain/uClibc/Config.in2
3 files changed, 26 insertions, 5 deletions
diff --git a/toolchain/Config.in b/toolchain/Config.in
index 75dc5361a6..b53b8e63ec 100644
--- a/toolchain/Config.in
+++ b/toolchain/Config.in
@@ -96,17 +96,38 @@ menuconfig EXTERNAL_TOOLCHAIN
default "/opt/cross/powerpc-unknown-linux-gnu" if powerpc
default "/opt/cross/x86_64-unknown-linux-gnu" if x86_64
- config TOOLCHAIN_LIBC
- string
+ choice TOOLCHAIN_LIBC_TYPE
prompt "Toolchain libc" if DEVEL
depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
- default "uclibc"
+ default EXTERNAL_TOOLCHAIN_LIBC_USE_MUSL
help
Specify the libc type used by the external toolchain. The given value
is passed as -m flag to all gcc and g++ invocations. This is mainly
intended for multilib toolchains which support glibc and uclibc at
the same time. If no value is specified, no -m flag is passed.
+ config EXTERNAL_TOOLCHAIN_LIBC_USE_GLIBC
+ bool "glibc"
+ select USE_GLIBC
+
+ config EXTERNAL_TOOLCHAIN_LIBC_USE_UCLIBC
+ bool "uClibc"
+ select USE_UCLIBC
+ depends on !(aarch64 || aarch64_be)
+
+ config EXTERNAL_TOOLCHAIN_LIBC_USE_MUSL
+ bool "musl"
+ select USE_MUSL
+
+ endchoice
+
+ config TOOLCHAIN_LIBC
+ string
+ depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
+ default "glibc" if EXTERNAL_TOOLCHAIN_LIBC_USE_GLIBC
+ default "uclibc" if EXTERNAL_TOOLCHAIN_LIBC_USE_UCLIBC
+ default "musl" if EXTERNAL_TOOLCHAIN_LIBC_USE_MUSL
+
config TOOLCHAIN_BIN_PATH
string
prompt "Toolchain program path" if DEVEL
diff --git a/toolchain/glibc/Config.in b/toolchain/glibc/Config.in
index 036604f4a7..5adbeb6f82 100644
--- a/toolchain/glibc/Config.in
+++ b/toolchain/glibc/Config.in
@@ -1,6 +1,6 @@
choice
prompt "glibc version"
- depends on TOOLCHAINOPTS && USE_GLIBC
+ depends on TOOLCHAINOPTS && USE_GLIBC && !EXTERNAL_TOOLCHAIN
default GLIBC_USE_VERSION_2_24
help
Select the version of glibc you wish to use.
diff --git a/toolchain/uClibc/Config.in b/toolchain/uClibc/Config.in
index 5793bb779f..3bcb0037e9 100644
--- a/toolchain/uClibc/Config.in
+++ b/toolchain/uClibc/Config.in
@@ -2,5 +2,5 @@
config UCLIBC_ENABLE_DEBUG
bool "Build with debug information"
- depends on TOOLCHAINOPTS && USE_UCLIBC
+ depends on TOOLCHAINOPTS && USE_UCLIBC && !EXTERNAL_TOOLCHAIN
default n