toolchain: Rework external toolchain libc selection
authorFlorian Fainelli <f.fainelli@gmail.com>
Mon, 19 Sep 2016 19:59:32 +0000 (12:59 -0700)
committerFelix Fietkau <nbd@nbd.name>
Wed, 28 Sep 2016 06:39:01 +0000 (08:39 +0200)
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>
toolchain/Config.in
toolchain/glibc/Config.in
toolchain/uClibc/Config.in

index 75dc5361a6829621030f710f497451b33a1aa1ec..b53b8e63ec111697e0f6af45538e9efa84bf5a3f 100644 (file)
@@ -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
index 036604f4a7c0616c6f5c10d4492d3971cb015ecc..5adbeb6f8245287318cf405ac5ba4b9a5e9e0969 100644 (file)
@@ -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.
index 5793bb779f5c64264f6eb337e3b180f00e6f3d18..3bcb0037e9f60326a10b278fa711d097ee18c5fe 100644 (file)
@@ -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