[LEDE-DEV] [PATCH] toolchain: Rework external toolchain libc selection

Florian Fainelli f.fainelli at gmail.com
Tue Sep 6 10:11:00 PDT 2016


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 at 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!
-- 
Florian



More information about the Lede-dev mailing list