Message ID | 20160902215758.26397-1-f.fainelli@gmail.com |
---|---|
State | Changes Requested |
Headers | show |
On 2016-09-02 23:57, Florian Fainelli wrote: > 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. > > Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> > --- > toolchain/Config.in | 22 +++++++++++++++++++--- > toolchain/glibc/Config.in | 2 +- > toolchain/uClibc/Config.in | 2 +- > 3 files changed, 21 insertions(+), 5 deletions(-) > > diff --git a/toolchain/Config.in b/toolchain/Config.in > index 75dc5361a682..8bb2d9be51e2 100644 > --- a/toolchain/Config.in > +++ b/toolchain/Config.in > @@ -96,17 +96,33 @@ 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 > prompt "Toolchain libc" if DEVEL > depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN > - default "uclibc" > + default EXTERNAL_TOOLCHAIN_LIBC_USE_UCLIBC > 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 > + depends on BROKEN Why mark musl as broken? And what about the uclibc vs uClibc difference? And while you're changing the code, I think it's time to make musl the default, since it's been the default for the built-in toolchain for a long time now. - Felix
On 09/03/2016 04:54 AM, Felix Fietkau wrote: > On 2016-09-02 23:57, Florian Fainelli wrote: >> 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. >> >> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> >> --- >> toolchain/Config.in | 22 +++++++++++++++++++--- >> toolchain/glibc/Config.in | 2 +- >> toolchain/uClibc/Config.in | 2 +- >> 3 files changed, 21 insertions(+), 5 deletions(-) >> >> diff --git a/toolchain/Config.in b/toolchain/Config.in >> index 75dc5361a682..8bb2d9be51e2 100644 >> --- a/toolchain/Config.in >> +++ b/toolchain/Config.in >> @@ -96,17 +96,33 @@ 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 >> prompt "Toolchain libc" if DEVEL >> depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN >> - default "uclibc" >> + default EXTERNAL_TOOLCHAIN_LIBC_USE_UCLIBC >> 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 >> + depends on BROKEN > Why mark musl as broken? No particular reason I guess. > And what about the uclibc vs uClibc difference? That is to be consistent with the rest of the file where the C is capitalized. > And while you're changing the code, I think it's time to make musl the > default, since it's been the default for the built-in toolchain for a > long time now. Sure, that makes sense. Thanks!
diff --git a/toolchain/Config.in b/toolchain/Config.in index 75dc5361a682..8bb2d9be51e2 100644 --- a/toolchain/Config.in +++ b/toolchain/Config.in @@ -96,17 +96,33 @@ 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 prompt "Toolchain libc" if DEVEL depends on EXTERNAL_TOOLCHAIN && !NATIVE_TOOLCHAIN - default "uclibc" + default EXTERNAL_TOOLCHAIN_LIBC_USE_UCLIBC 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 + depends on BROKEN + depends on !(mips64 || mips64el) + + endchoice + config TOOLCHAIN_BIN_PATH string prompt "Toolchain program path" if DEVEL diff --git a/toolchain/glibc/Config.in b/toolchain/glibc/Config.in index 036604f4a7c0..5adbeb6f8245 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 5793bb779f5c..3bcb0037e9f6 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
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. Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> --- toolchain/Config.in | 22 +++++++++++++++++++--- toolchain/glibc/Config.in | 2 +- toolchain/uClibc/Config.in | 2 +- 3 files changed, 21 insertions(+), 5 deletions(-)