[Buildroot] [PATCH 1/1] toolchain-buildroot: only allow BR2_STATIC_LIBS on supported archs
James Hilliard
james.hilliard1 at gmail.com
Fri May 6 05:46:51 UTC 2022
It is currently possible to select BR2_STATIC_LIBS while
BR2_TOOLCHAIN_BUILDROOT is selected even when there are no buildroot
toolchains that support BR2_STATIC_LIBS for the selected architecture.
Add BR2_TOOLCHAIN_BUILDROOT_STATIC_LIBS_ARCH_SUPPORTS so that we can
disable the selection of BR2_STATIC_LIBS when using an unsupported
architecture.
Fixes:
- http://autobuild.buildroot.net/results/4da/4da59af8193376ec893321c4c2aaf1d25598502d
- http://autobuild.buildroot.net/results/195/1950348218a4f097f078d158977c13f8b0a97d6e
- http://autobuild.buildroot.net/results/2f0/2f03f2be32ad9898a990f6f0264d8c8d51991eb1
Signed-off-by: James Hilliard <james.hilliard1 at gmail.com>
---
Config.in | 2 +
toolchain/toolchain-buildroot/Config.in | 119 ++++++++++++++++++------
2 files changed, 90 insertions(+), 31 deletions(-)
diff --git a/Config.in b/Config.in
index f0cd6f48ed..5daca3adce 100644
--- a/Config.in
+++ b/Config.in
@@ -601,6 +601,8 @@ choice
config BR2_STATIC_LIBS
bool "static only"
+ depends on !BR2_TOOLCHAIN_BUILDROOT || \
+ BR2_TOOLCHAIN_BUILDROOT_STATIC_LIBS_ARCH_SUPPORTS
help
Build and use only static libraries. No shared libraries will
be installed on the target. This potentially increases your
diff --git a/toolchain/toolchain-buildroot/Config.in b/toolchain/toolchain-buildroot/Config.in
index be89f68ab5..287253b11f 100644
--- a/toolchain/toolchain-buildroot/Config.in
+++ b/toolchain/toolchain-buildroot/Config.in
@@ -20,6 +20,91 @@ config BR2_TOOLCHAIN_BUILDROOT_VENDOR
If you're not sure, just leave the default "buildroot" value.
+config BR2_TOOLCHAIN_BUILDROOT_UCLIBC_ARCH_SUPPORTS
+ bool
+ default y if BR2_aarch64
+ default y if BR2_aarch64_be
+ default y if BR2_arcle
+ default y if BR2_arceb
+ default y if BR2_arm
+ default y if BR2_armeb
+ default y if BR2_i386
+ default y if BR2_m68k
+ default y if BR2_microblaze
+ default y if BR2_mips
+ default y if BR2_mipsel
+ default y if BR2_mips64
+ default y if BR2_mips64el
+ default y if BR2_or1k
+ default y if BR2_powerpc
+ default y if BR2_RISCV_64
+ default y if BR2_sh4
+ default y if BR2_sh4eb
+ default y if BR2_sparc
+ default y if BR2_xtensa
+ default y if BR2_x86_64
+
+config BR2_TOOLCHAIN_BUILDROOT_GLIBC_ARCH_SUPPORTS
+ bool
+ default y if BR2_arm
+ default y if BR2_armeb
+ default y if BR2_aarch64
+ default y if BR2_aarch64_be
+ default y if BR2_i386
+ default y if BR2_mips
+ default y if BR2_mipsel
+ default y if BR2_mips64
+ default y if BR2_mips64el
+ default y if BR2_powerpc
+ default y if BR2_powerpc64
+ default y if BR2_powerpc64le
+ default y if BR2_riscv
+ default y if BR2_s390x
+ default y if BR2_sh
+ default y if BR2_sparc64
+ default y if BR2_x86_64
+ default y if BR2_microblaze
+ default y if BR2_nios2
+ default y if BR2_arc && BR2_ARC_ATOMIC_EXT
+ default y if BR2_csky
+ depends on BR2_USE_MMU
+ depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
+ depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 || !BR2_powerpc64le
+ depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 || !BR2_MIPS_NAN_2008
+ depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 || !BR2_RISCV_64
+ depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 || !BR2_arc
+ depends on !BR2_powerpc_SPE
+ depends on BR2_RISCV_ISA_RVA || !BR2_riscv
+
+config BR2_TOOLCHAIN_BUILDROOT_MUSL_ARCH_SUPPORTS
+ bool
+ default y if BR2_aarch64
+ default y if BR2_arm
+ default y if BR2_armeb
+ default y if BR2_i386
+ default y if BR2_microblaze
+ default y if BR2_mips
+ default y if BR2_mipsel
+ default y if BR2_mips64
+ default y if BR2_mips64el
+ default y if BR2_or1k
+ default y if BR2_powerpc
+ default y if BR2_powerpc64
+ default y if BR2_powerpc64le
+ default y if BR2_RISCV_64
+ default y if BR2_sh
+ default y if BR2_x86_64
+ depends on !BR2_powerpc_SPE # not supported, build breaks
+ depends on !(BR2_powerpc64 || BR2_powerpc64le) || BR2_POWERPC_CPU_HAS_ALTIVEC
+ # sh2 nommu is supported by musl, but we don't have support
+ # for it in Buildroot.
+ depends on BR2_USE_MMU
+
+config BR2_TOOLCHAIN_BUILDROOT_STATIC_LIBS_ARCH_SUPPORTS
+ bool
+ default y if BR2_TOOLCHAIN_BUILDROOT_UCLIBC_ARCH_SUPPORTS
+ default y if BR2_TOOLCHAIN_BUILDROOT_MUSL_ARCH_SUPPORTS
+
choice
prompt "C library"
default BR2_TOOLCHAIN_BUILDROOT_UCLIBC
@@ -27,13 +112,7 @@ choice
config BR2_TOOLCHAIN_BUILDROOT_UCLIBC
bool "uClibc-ng"
- depends on BR2_aarch64 || BR2_aarch64_be || BR2_arcle || BR2_arceb || \
- BR2_arm || BR2_armeb || \
- BR2_i386 || BR2_m68k || BR2_microblaze || \
- BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || \
- BR2_or1k || BR2_powerpc || BR2_RISCV_64 || \
- BR2_sh4 || BR2_sh4eb || BR2_sparc || BR2_xtensa || \
- BR2_x86_64
+ depends on BR2_TOOLCHAIN_BUILDROOT_UCLIBC_ARCH_SUPPORTS
select BR2_TOOLCHAIN_USES_UCLIBC
help
This option selects uClibc-ng as the C library for the
@@ -43,22 +122,8 @@ config BR2_TOOLCHAIN_BUILDROOT_UCLIBC
config BR2_TOOLCHAIN_BUILDROOT_GLIBC
bool "glibc"
- depends on BR2_arm || BR2_armeb || BR2_aarch64 || \
- BR2_aarch64_be || BR2_i386 || BR2_mips || \
- BR2_mipsel || BR2_mips64 || BR2_mips64el|| \
- BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \
- BR2_riscv || BR2_s390x || BR2_sh || \
- BR2_sparc64 || BR2_x86_64 || BR2_microblaze || \
- BR2_nios2 || (BR2_arc && BR2_ARC_ATOMIC_EXT) || BR2_csky
- depends on BR2_USE_MMU
+ depends on BR2_TOOLCHAIN_BUILDROOT_GLIBC_ARCH_SUPPORTS
depends on !BR2_STATIC_LIBS
- depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
- depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 || !BR2_powerpc64le
- depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5 || !BR2_MIPS_NAN_2008
- depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0 || !BR2_RISCV_64
- depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1 || !BR2_arc
- depends on !BR2_powerpc_SPE
- depends on BR2_RISCV_ISA_RVA || !BR2_riscv
select BR2_TOOLCHAIN_USES_GLIBC
help
This option selects glibc as the C library for the
@@ -82,15 +147,7 @@ comment "glibc on MIPS w/ NAN2008 needs a toolchain w/ headers >= 4.5"
config BR2_TOOLCHAIN_BUILDROOT_MUSL
bool "musl"
- depends on BR2_aarch64 || BR2_arm || BR2_armeb || BR2_i386 || \
- BR2_microblaze || BR2_mips || BR2_mipsel || BR2_mips64 || \
- BR2_mips64el || BR2_or1k || BR2_powerpc || BR2_powerpc64 || \
- BR2_powerpc64le || BR2_RISCV_64 || BR2_sh || BR2_x86_64
- depends on !BR2_powerpc_SPE # not supported, build breaks
- depends on !(BR2_powerpc64 || BR2_powerpc64le) || BR2_POWERPC_CPU_HAS_ALTIVEC
- # sh2 nommu is supported by musl, but we don't have support
- # for it in Buildroot.
- depends on BR2_USE_MMU
+ depends on BR2_TOOLCHAIN_BUILDROOT_MUSL_ARCH_SUPPORTS
select BR2_TOOLCHAIN_USES_MUSL
help
This option selects musl as the C library for the
--
2.25.1
More information about the buildroot
mailing list