Răsfoiți Sursa

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 <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
Florian Fainelli 9 ani în urmă
părinte
comite
c8e68150bf
3 a modificat fișierele cu 26 adăugiri și 5 ștergeri
  1. 24 3
      toolchain/Config.in
  2. 1 1
      toolchain/glibc/Config.in
  3. 1 1
      toolchain/uClibc/Config.in

+ 24 - 3
toolchain/Config.in

@@ -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
-		string
+	choice TOOLCHAIN_LIBC_TYPE
 		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 - 1
toolchain/glibc/Config.in

@@ -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.

+ 1 - 1
toolchain/uClibc/Config.in

@@ -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