90932b407c
Currently, glibc depends on !BR2_STATIC_LIBS in all the toolchain variants. However, for some architectures, glibc is the only supported libc. In commit3b3105328e
("Config.in: only allow BR2_STATIC_LIBS on supported libc/arch"), we implemented a fix to avoid configurations were BR2_STATIC_LIBS=y with an architecture already supported by glibc, because these configurations are impossible. This commit3b3105328e
prevents from selecting BR2_STATIC_LIBS=y when the C library used for the internal toolchain backend is glibc. However, it introduces a discrepency between how this topic is handled for internal and external toolchains: - For internal toolchains, we prevent BR2_STATIC_LIBS=y if glibc is chosen. - For external toolchains, we allow BR2_STATIC_LIBS=y in all cases, and it's each glibc toolchain that has !BR2_STATIC_LIBS This commit addresses this discrepency by preventing BR2_STATIC_LIBS=y if glibc is chosen in all cases. Thanks to this, we can remove the !BR2_STATIC_LIBS dependency on both the glibc package, and all glibc external toolchains. Fixes: https://bugs.busybox.net/show_bug.cgi?id=14256 Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> [Thomas: update to master, fix the gen-bootlin-toolchains script, add a comment in the static/shared choice to indicate that static is supported only with uclibc or musl] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
161 lines
5.6 KiB
Plaintext
161 lines
5.6 KiB
Plaintext
if BR2_TOOLCHAIN_EXTERNAL
|
|
|
|
comment "Toolchain External Options"
|
|
|
|
choice
|
|
prompt "Toolchain"
|
|
|
|
# Kept toolchains sorted by architecture in order to use some toolchain
|
|
# as default choice
|
|
|
|
# Aarch64 (use ARM toolchain by default)
|
|
source "toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in"
|
|
source "toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in"
|
|
source "toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in"
|
|
|
|
# Aarch64 big-endian
|
|
source "toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in"
|
|
source "toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in"
|
|
|
|
# ARC
|
|
source "toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in"
|
|
|
|
# ARM (use ARM toolchain by default)
|
|
source "toolchain/toolchain-external/toolchain-external-arm-arm/Config.in"
|
|
source "toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in"
|
|
source "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in"
|
|
|
|
# ARM big-endian
|
|
source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in"
|
|
|
|
# MIPS (use codesourcery toolchain by default)
|
|
source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in"
|
|
source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in"
|
|
source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in"
|
|
|
|
# NIOSII
|
|
source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in"
|
|
|
|
# Bootlin toolchains, available for virtually all architectures
|
|
source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in"
|
|
|
|
# Kept last, so it remains the non-default choice, unless there isn't
|
|
# any available toolchain profile for the currently selected
|
|
# architecture, but before toolchains from br2-external trees.
|
|
source "toolchain/toolchain-external/toolchain-external-custom/Config.in"
|
|
|
|
# Toolchains from br2-external trees, if any
|
|
source "$BR2_BASE_DIR/.br2-external.in.toolchains"
|
|
|
|
endchoice
|
|
|
|
choice
|
|
prompt "Toolchain origin"
|
|
# Keep compatibility with old defconfig files that are using
|
|
# custom toolchains, and which are therefore assuming that
|
|
# "preinstalled" in the default choice.
|
|
default BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED if BR2_TOOLCHAIN_EXTERNAL_CUSTOM
|
|
|
|
config BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD
|
|
bool "Toolchain to be downloaded and installed"
|
|
help
|
|
Select this option if you want Buildroot to download and
|
|
install the toolchain. If you have selected a custom
|
|
toolchain, specify the URL in BR2_TOOLCHAIN_EXTERNAL_URL.
|
|
|
|
config BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED
|
|
bool "Pre-installed toolchain"
|
|
help
|
|
Select this option if you want to use a pre-installed
|
|
toolchain. Specify the path to this toolchain in
|
|
BR2_TOOLCHAIN_EXTERNAL_PATH.
|
|
|
|
endchoice
|
|
|
|
config BR2_TOOLCHAIN_EXTERNAL_PATH
|
|
string "Toolchain path"
|
|
default ""
|
|
depends on BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED
|
|
help
|
|
Path to where the external toolchain is installed. The
|
|
compiler itself is expected to be in the "bin" subdirectory
|
|
of this path.
|
|
|
|
If empty, the compiler will be searched in $PATH.
|
|
|
|
config BR2_TOOLCHAIN_EXTERNAL_GLIBC
|
|
bool
|
|
select BR2_TOOLCHAIN_USES_GLIBC
|
|
|
|
config BR2_TOOLCHAIN_EXTERNAL_UCLIBC
|
|
bool
|
|
select BR2_TOOLCHAIN_USES_UCLIBC
|
|
|
|
config BR2_TOOLCHAIN_EXTERNAL_MUSL
|
|
bool
|
|
select BR2_TOOLCHAIN_USES_MUSL
|
|
# Compatibility headers: cdefs.h, queue.h
|
|
select BR2_PACKAGE_MUSL_COMPAT_HEADERS
|
|
|
|
# Make sure the virtual-package infra checks the provider
|
|
config BR2_PACKAGE_HAS_TOOLCHAIN_EXTERNAL
|
|
bool
|
|
default y
|
|
|
|
config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
|
|
string
|
|
|
|
config BR2_TOOLCHAIN_EXTERNAL_PREFIX
|
|
string
|
|
|
|
# Kept toolchains sorted as in the choice above
|
|
# The toolchain Config.in.options must define
|
|
# BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL and BR2_TOOLCHAIN_EXTERNAL_PREFIX
|
|
|
|
# Aarch64
|
|
source "toolchain/toolchain-external/toolchain-external-arm-aarch64/Config.in.options"
|
|
source "toolchain/toolchain-external/toolchain-external-linaro-aarch64/Config.in.options"
|
|
source "toolchain/toolchain-external/toolchain-external-codesourcery-aarch64/Config.in.options"
|
|
|
|
# Aarch64 big-endian
|
|
source "toolchain/toolchain-external/toolchain-external-arm-aarch64-be/Config.in.options"
|
|
source "toolchain/toolchain-external/toolchain-external-linaro-aarch64-be/Config.in.options"
|
|
|
|
# ARC
|
|
source "toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in.options"
|
|
|
|
# ARM
|
|
source "toolchain/toolchain-external/toolchain-external-arm-arm/Config.in.options"
|
|
source "toolchain/toolchain-external/toolchain-external-linaro-arm/Config.in.options"
|
|
source "toolchain/toolchain-external/toolchain-external-codesourcery-arm/Config.in.options"
|
|
|
|
# ARM big-endian
|
|
source "toolchain/toolchain-external/toolchain-external-linaro-armeb/Config.in.options"
|
|
|
|
# MIPS
|
|
source "toolchain/toolchain-external/toolchain-external-codesourcery-mips/Config.in.options"
|
|
source "toolchain/toolchain-external/toolchain-external-codescape-img-mips/Config.in.options"
|
|
source "toolchain/toolchain-external/toolchain-external-codescape-mti-mips/Config.in.options"
|
|
|
|
# NIOSII
|
|
source "toolchain/toolchain-external/toolchain-external-codesourcery-niosII/Config.in.options"
|
|
|
|
# Bootlin toolchains
|
|
source "toolchain/toolchain-external/toolchain-external-bootlin/Config.in.options"
|
|
|
|
# Custom toolchains
|
|
source "toolchain/toolchain-external/toolchain-external-custom/Config.in.options"
|
|
|
|
config BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER
|
|
bool
|
|
|
|
config BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
|
|
bool "Copy gdb server to the Target"
|
|
depends on BR2_TOOLCHAIN_EXTERNAL
|
|
depends on !BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER
|
|
help
|
|
Copy the gdbserver provided by the external toolchain to the
|
|
target.
|
|
|
|
endif # BR2_TOOLCHAIN_EXTERNAL
|