[source] toolchain: Rework external toolchain libc selection

LEDE Commits lede-commits at lists.infradead.org
Tue Sep 27 23:39:39 PDT 2016


nbd pushed a commit to source.git, branch master:
https://git.lede-project.org/c8e68150bfe2578ce7b0681465d08c5f01823db4

commit c8e68150bfe2578ce7b0681465d08c5f01823db4
Author: Florian Fainelli <f.fainelli at gmail.com>
AuthorDate: Mon Sep 19 12:59:32 2016 -0700

    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 at gmail.com>
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 toolchain/Config.in        | 27 ++++++++++++++++++++++++---
 toolchain/glibc/Config.in  |  2 +-
 toolchain/uClibc/Config.in |  2 +-
 3 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/toolchain/Config.in b/toolchain/Config.in
index 75dc536..b53b8e6 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 036604f..5adbeb6 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 5793bb7..3bcb003 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



More information about the lede-commits mailing list