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
