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>
v19.07.3_mercusys_ac12_duma
Florian Fainelli 8 years ago committed by Felix Fietkau
parent fb586939cc
commit c8e68150bf

@ -96,17 +96,38 @@ menuconfig EXTERNAL_TOOLCHAIN
default "/opt/cross/powerpc-unknown-linux-gnu" if powerpc default "/opt/cross/powerpc-unknown-linux-gnu" if powerpc
default "/opt/cross/x86_64-unknown-linux-gnu" if x86_64 default "/opt/cross/x86_64-unknown-linux-gnu" if x86_64
config TOOLCHAIN_LIBC choice TOOLCHAIN_LIBC_TYPE
string
prompt "Toolchain libc" if DEVEL prompt "Toolchain libc" if DEVEL
depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN
default "uclibc" default EXTERNAL_TOOLCHAIN_LIBC_USE_MUSL
help help
Specify the libc type used by the external toolchain. The given value 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 is passed as -m flag to all gcc and g++ invocations. This is mainly
intended for multilib toolchains which support glibc and uclibc at intended for multilib toolchains which support glibc and uclibc at
the same time. If no value is specified, no -m flag is passed. 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 config TOOLCHAIN_BIN_PATH
string string
prompt "Toolchain program path" if DEVEL prompt "Toolchain program path" if DEVEL

@ -1,6 +1,6 @@
choice choice
prompt "glibc version" prompt "glibc version"
depends on TOOLCHAINOPTS && USE_GLIBC depends on TOOLCHAINOPTS && USE_GLIBC && !EXTERNAL_TOOLCHAIN
default GLIBC_USE_VERSION_2_24 default GLIBC_USE_VERSION_2_24
help help
Select the version of glibc you wish to use. Select the version of glibc you wish to use.

@ -2,5 +2,5 @@
config UCLIBC_ENABLE_DEBUG config UCLIBC_ENABLE_DEBUG
bool "Build with debug information" bool "Build with debug information"
depends on TOOLCHAINOPTS && USE_UCLIBC depends on TOOLCHAINOPTS && USE_UCLIBC && !EXTERNAL_TOOLCHAIN
default n default n

Loading…
Cancel
Save