2b3f0153bb
Since glibc 2.33 (upstream commit 7a55dd3fb6d2c307a002a16776be84310b9c8989), headers >= 5.4.0 are needed to build glibc for RISC-V 32-bit. Indeed sysdeps/unix/sysv/linux/riscv/configure.ac contains: if test $libc_cv_riscv_int_abi = ilp32; then arch_minimum_kernel=5.4.0 fi In order to take into account this dependency, we add the appropriate logic in package/glibc/Config.in and toolchain/toolchain-buildroot/Config.in. This change means that if headers < 5.4.0 are selected, then no C library at all will be available for RISC-V 32-bit, as glibc is the only C library supporting RISC-V 32-bit currently. However, thanks to the recent addition of BR2_TOOLCHAIN_BUILDROOT_NONE, the choice...endchoice for the C library selection will not be empty, allowing the user to see the Config.in comment explaining why glibc can't be selected. Therefore, technically this commit does prevent from creating a configuration with RISC-V 32-bit and headers < 5.4.0, but it will have BR2_TOOLCHAIN_BUILDROOT_NONE=y, which is catched by package/Makefile.in, which aborts the build early on pointing out that the configuration is invalid. Fixes: http://autobuild.buildroot.net/results/5ca49b2732f68eccb5276e7112f7f496dcc514ee/ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
115 lines
3.6 KiB
Plaintext
115 lines
3.6 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 RISC-V 32-bit needs a toolchain w/ headers >= 5.4"
|
|
depends on BR2_RISCV_32
|
|
depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
|
|
|
|
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
|