80a24d0965
Some external toolchains do not have gdbserver available, but the option BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY is always visible. And when enabled, this option aborts with an error when gdbserver cannot be found: Could not find gdbserver in external toolchain Due to that, some random configurations fail to build when BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY=y, for example with the Bootlin toolchains for Microblaze or OpenRISC (because there's no GDB support for those architectures). One solution could be to make "Could not find gdbserver in external toolchain" a warning instead of a hard error, but then nobody would notice about this issue, in cases where it should legitimately abort with a hard error. So, the clean solution would be to add a BR2_TOOLCHAIN_EXTERNAL_HAS_GDBSERVER. But that means all existing external toolchains would have to be modified to select this option. Instead, and as an exception, we chose to use inverted logic, and create an option that is the opposite: BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER. By default, we assume external toolchains have gdbserver. If BR2_TOOLCHAIN_EXTERNAL_HAS_NO_GDBSERVER is enabled, we disallow the BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY option. Note that the case of custom external toolchain does not matter: by definition they are not tested by the autobuilders, and by definition, we cannot know in menuconfig if the custom toolchain has or does not have gdbserver. We could make a user-visible option for it, but that adds no value over simply erroring out because the gdbserver binary can't be found. Similarly, we could add default y if BR2_PACKAGE_GDB_ARCH_SUPPORTS but that would make it impossible for someone to include a custom gdbserver in their external toolchain, and gives no benefit at all. This will help fixing: http://autobuild.buildroot.net/results/6315ef7b66ee4ae8f870c92186bc674d65f62f2c/ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
170 lines
5.9 KiB
Plaintext
170 lines
5.9 KiB
Plaintext
if BR2_TOOLCHAIN_EXTERNAL
|
|
|
|
comment "Toolchain External Options"
|
|
|
|
choice
|
|
prompt "Toolchain"
|
|
|
|
comment "glibc toolchains only available with shared lib support"
|
|
depends on BR2_STATIC_LIBS
|
|
|
|
# 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"
|
|
|
|
# Andes
|
|
source "toolchain/toolchain-external/toolchain-external-andes-nds32/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"
|
|
|
|
# Andes
|
|
source "toolchain/toolchain-external/toolchain-external-andes-nds32/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
|