e1550ef755
In the internal toolchain backend, we have a choice..endchoice block to allow the user to select the C library, between glibc, uClibc and musl. However, there are situations were no C library at all is supported. In this case, the choice does not appear, and does not allow to see the Config.in comments that are within the choice..endchoice block and that may explain why no C library is available. For example, on RISC-V 32-bit, the only C library supported is glibc, and the minimum kernel header version required by glibc on this architecture is 5.4.0. In a future commit, we are going to add this dependency on glibc (to fix build issues on configurations that have headers < 5.4.0). But since glibc is the only supported C library on RISC-V 32-bit, it means that the choice..endchoice for the C library contains no entry, preventing from seeing the Config.in comment. To address this issue, this commit adds a "dummy" BR2_TOOLCHAIN_BUILDROOT_NONE option that shows up in the choice..endchoice only when no C library is available. Thanks to this, the choice..endchoice is never empty, and the Config.in comments can be seen. If the user keeps BR2_TOOLCHAIN_BUILDROOT_NONE selected, then the build will anyway abort early because package/Makefile.in has a check to verify that a C library is selected, and aborts the build if not. Some could say that the problem should be resolved by instead preventing the selection of headers < 5.4.0 on RISC-V 32-bit, but that is difficult to do as the user can choose a custom header version, or simply specific that (s)he wants to use the headers of the kernel being built. In those situations, it's difficult to prevent selecting headers < 5.4.0. Prevent random configurations from triggering a build failure in our autobuilders, by excluding that symbol from accepted configuration. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> [yann.morin.1998@free.fr: update genrandconfig] Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
111 lines
3.5 KiB
Plaintext
111 lines
3.5 KiB
Plaintext
# Config entries for internal toolchain backend
|
|
|
|
if BR2_TOOLCHAIN_BUILDROOT
|
|
|
|
comment "Toolchain Buildroot Options"
|
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_VENDOR
|
|
string "custom toolchain vendor name"
|
|
default "buildroot"
|
|
help
|
|
This option allows to customize the "vendor" part of the
|
|
toolchain tuple, where the toolchain tuple has the form
|
|
<arch>-<vendor>-<os>-<libc>. The default value, "buildroot",
|
|
is fine for most cases, except in very specific situations
|
|
where gcc might make different decisions based on the vendor
|
|
part of the tuple. The value "unknown" is not allowed, as the
|
|
cross-compiling toolchain might then be confused with the
|
|
native toolchain when the target and host architecture are
|
|
identical. The value can not be empty either.
|
|
|
|
If you're not sure, just leave the default "buildroot" value.
|
|
|
|
choice
|
|
prompt "C library"
|
|
default BR2_TOOLCHAIN_BUILDROOT_GLIBC
|
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_UCLIBC
|
|
bool "uClibc-ng"
|
|
depends on BR2_PACKAGE_UCLIBC_SUPPORTS
|
|
select BR2_TOOLCHAIN_USES_UCLIBC
|
|
help
|
|
This option selects uClibc-ng as the C library for the
|
|
cross-compilation toolchain.
|
|
|
|
http://uclibc-ng.org
|
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_GLIBC
|
|
bool "glibc"
|
|
depends on BR2_PACKAGE_GLIBC_SUPPORTS
|
|
select BR2_TOOLCHAIN_USES_GLIBC
|
|
help
|
|
This option selects glibc as the C library for the
|
|
cross-compilation toolchain.
|
|
|
|
http://www.gnu.org/software/libc/
|
|
|
|
comment "glibc needs a toolchain w/ kernel headers >= 3.2"
|
|
depends on BR2_PACKAGE_GLIBC_ARCH_SUPPORTS
|
|
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
|
|
|
|
# glibc >= 2.26 require kernel headers >= 3.10 on powerpc64le.
|
|
comment "glibc on powerpc64le needs a toolchain w/ headers >= 3.10"
|
|
depends on BR2_powerpc64le
|
|
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
|
|
|
|
# Support for MIPS NAN2008 needs headers >= 4.5
|
|
comment "glibc on MIPS w/ NAN2008 needs a toolchain w/ headers >= 4.5"
|
|
depends on BR2_MIPS_NAN_2008
|
|
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
|
|
|
|
comment "glibc on RISC-V 64-bit needs a toolchain w/ headers >= 5.0"
|
|
depends on BR2_RISCV_64
|
|
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0
|
|
|
|
comment "glibc on ARC needs a toolchain w/ headers >= 5.1"
|
|
depends on BR2_arc
|
|
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1
|
|
|
|
comment "glibc on or1k needs a toolchain w/ headers >= 5.4"
|
|
depends on BR2_or1k
|
|
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
|
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_MUSL
|
|
bool "musl"
|
|
depends on BR2_PACKAGE_MUSL_SUPPORTS
|
|
select BR2_TOOLCHAIN_USES_MUSL
|
|
help
|
|
This option selects musl as the C library for the
|
|
cross-compilation toolchain.
|
|
|
|
https://www.musl-libc.org/
|
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_NONE
|
|
bool "none"
|
|
depends on !BR2_PACKAGE_UCLIBC_SUPPORTS && \
|
|
!BR2_PACKAGE_GLIBC_SUPPORTS && \
|
|
!BR2_PACKAGE_MUSL_SUPPORTS
|
|
help
|
|
This option is visible if no C library is available for the
|
|
currently selected configuration. If you select this option,
|
|
the build will refuse to start as Buildroot needs a C
|
|
library to build a toolchain. Change your configuration
|
|
settings to make sure one of the C libraries is selected.
|
|
|
|
endchoice
|
|
|
|
config BR2_TOOLCHAIN_BUILDROOT_LIBC
|
|
string
|
|
default "uclibc" if BR2_TOOLCHAIN_BUILDROOT_UCLIBC
|
|
default "glibc" if BR2_TOOLCHAIN_BUILDROOT_GLIBC
|
|
default "musl" if BR2_TOOLCHAIN_BUILDROOT_MUSL
|
|
|
|
source "package/linux-headers/Config.in.host"
|
|
source "package/linux-headers/Config.in"
|
|
source "package/musl/Config.in"
|
|
source "package/uclibc/Config.in"
|
|
source "package/glibc/Config.in"
|
|
source "package/binutils/Config.in.host"
|
|
source "package/gcc/Config.in.host"
|
|
endif
|