if BR2_TOOLCHAIN_EXTERNAL_CUSTOM

config BR2_TOOLCHAIN_EXTERNAL_PREFIX
	default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX

config BR2_PACKAGE_PROVIDES_TOOLCHAIN_EXTERNAL
	default "toolchain-external-custom"

config BR2_TOOLCHAIN_EXTERNAL_URL
	string "Toolchain URL"
	depends on BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD
	help
	  URL of the custom toolchain tarball to download and install.

config BR2_TOOLCHAIN_EXTERNAL_REL_BIN_PATH
	string "Toolchain relative binary path"
	default "bin"
	depends on BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD
	help
	  Path to where the binaries (e.g. the compiler) can be found,
	  relative to the downloaded toolchain root directory. The
	  default is "bin" and is correct for most toolchains.

config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX
	string "Toolchain prefix"
	default "$(ARCH)-linux"

choice
	bool "External toolchain gcc version"
	help
	  Set to the gcc version that is used by your external
	  toolchain.

config BR2_TOOLCHAIN_EXTERNAL_GCC_10
	bool "10.x"
	select BR2_TOOLCHAIN_GCC_AT_LEAST_10

config BR2_TOOLCHAIN_EXTERNAL_GCC_9
	bool "9.x"
	select BR2_TOOLCHAIN_GCC_AT_LEAST_9

config BR2_TOOLCHAIN_EXTERNAL_GCC_8
	bool "8.x"
	select BR2_TOOLCHAIN_GCC_AT_LEAST_8

config BR2_TOOLCHAIN_EXTERNAL_GCC_7
	bool "7.x"
	select BR2_TOOLCHAIN_GCC_AT_LEAST_7

config BR2_TOOLCHAIN_EXTERNAL_GCC_6
	bool "6.x"
	select BR2_TOOLCHAIN_GCC_AT_LEAST_6

config BR2_TOOLCHAIN_EXTERNAL_GCC_5
	bool "5.x"
	select BR2_TOOLCHAIN_GCC_AT_LEAST_5

config BR2_TOOLCHAIN_EXTERNAL_GCC_4_9
	bool "4.9.x"
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

config BR2_TOOLCHAIN_EXTERNAL_GCC_4_8
	bool "4.8.x"
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8

config BR2_TOOLCHAIN_EXTERNAL_GCC_4_7
	bool "4.7.x"
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7

config BR2_TOOLCHAIN_EXTERNAL_GCC_4_6
	bool "4.6.x"
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6

config BR2_TOOLCHAIN_EXTERNAL_GCC_4_5
	bool "4.5.x"
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5

config BR2_TOOLCHAIN_EXTERNAL_GCC_4_4
	bool "4.4.x"
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4

config BR2_TOOLCHAIN_EXTERNAL_GCC_4_3
	bool "4.3.x"
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3

config BR2_TOOLCHAIN_EXTERNAL_GCC_OLD
	bool "older"
	help
	  Use this option if your GCC version is older than any of the
	  above.

	  Note that the Buildroot community doesn't do any testing with
	  such old toolchains. Some packages may fail to build in
	  surprising ways, or the generated root filesystem may not
	  work at all. Use such old toolchains at your own risk.

endchoice

comment "GCC older than 4.8 is not tested by Buildroot. Use at your own risk."
	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8

choice
	bool "External toolchain kernel headers series"
	default BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD
	help
	  Set to the kernel headers version that were used to build
	  this external toolchain.

	  This is used to hide/show some packages that have strict
	  requirements on the version of kernel headers.

	  If unsure what version your toolchain is using, you can look
	  at the value of LINUX_VERSION_CODE in linux/version.h in your
	  toolchain. The Linux version is M.m.p, with:
	    M = ( LINUX_VERSION_CODE >> 16 ) & 0xFF
	    m = ( LINUX_VERSION_CODE >> 8  ) & 0xFF
	    p = ( LINUX_VERSION_CODE >> 0  ) & 0xFF

	  If your toolchain uses headers newer than the latest version
	  in the choice, then select the latest version.

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9
	bool "5.9.x or later"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_8
	bool "5.8.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_7
	bool "5.7.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_6
	bool "5.6.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_5
	bool "5.5.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_4
	bool "5.4.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_3
	bool "5.3.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_2
	bool "5.2.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_1
	bool "5.1.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_0
	bool "5.0.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_20
	bool "4.20.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_19
	bool "4.19.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_18
	bool "4.18.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_17
	bool "4.17.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16
	bool "4.16.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_15
	bool "4.15.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14
	bool "4.14.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13
	bool "4.13.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_12
	bool "4.12.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_11
	bool "4.11.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_10
	bool "4.10.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9
	bool "4.9.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_8
	bool "4.8.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_7
	bool "4.7.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_6
	bool "4.6.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_5
	bool "4.5.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4
	bool "4.4.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_3
	bool "4.3.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_2
	bool "4.2.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1
	bool "4.1.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_0
	bool "4.0.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_19
	bool "3.19.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_18
	bool "3.18.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_17
	bool "3.17.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_16
	bool "3.16.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_15
	bool "3.15.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_14
	bool "3.14.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_13
	bool "3.13.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12
	bool "3.12.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_11
	bool "3.11.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10
	bool "3.10.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_9
	bool "3.9.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_8
	bool "3.8.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_7
	bool "3.7.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_6
	bool "3.6.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_5
	bool "3.5.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_4
	bool "3.4.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_3
	bool "3.3.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2
	bool "3.2.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_1
	bool "3.1.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_0
	bool "3.0.x"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_REALLY_OLD
	bool "2.6.x"

endchoice

comment "Kernel headers older than 3.13 is not tested by Buildroot. Use at your own risk."
	depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13

choice
	prompt "External toolchain C library"
	default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC

config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
	bool "uClibc/uClibc-ng"
	select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
	help
	  Select this option if your external toolchain uses the
	  uClibc (available from http://www.uclibc.org/)
	  or uClibc-ng (available from http://www.uclibc-ng.org)
	  C library.

config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC
	bool "glibc/eglibc"
	depends on !BR2_STATIC_LIBS
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	help
	  Select this option if your external toolchain uses the GNU C
	  library (available from https://www.gnu.org/software/libc/)
	  or its variant the eglibc library (http://www.eglibc.org/).

	  Note: eglibc is a variant of glibc that (among other things)
	  can be configured to exclude some of its features. Using a
	  toolchain with eglibc configured to exclude key features may
	  cause build failures to some packages.

comment "(e)glibc only available with shared lib support"
	depends on BR2_STATIC_LIBS

config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL
	bool "musl (experimental)"
	select BR2_TOOLCHAIN_EXTERNAL_MUSL
	help
	  Select this option if your external toolchain uses the
	  'musl' C library, available from http://www.musl-libc.org/.

endchoice

if BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC

config BR2_TOOLCHAIN_EXTERNAL_WCHAR
	bool "Toolchain has WCHAR support?"
	select BR2_USE_WCHAR
	help
	  Select this option if your external toolchain supports
	  WCHAR. If you don't know, leave the default value, Buildroot
	  will tell you if it's correct or not.

config BR2_TOOLCHAIN_EXTERNAL_LOCALE
	bool "Toolchain has locale support?"
	select BR2_TOOLCHAIN_EXTERNAL_WCHAR
	select BR2_ENABLE_LOCALE
	help
	  Select this option if your external toolchain has locale
	  support. If you don't know, leave the default value,
	  Buildroot will tell you if it's correct or not.

config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
	bool "Toolchain has threads support?"
	default y
	select BR2_TOOLCHAIN_HAS_THREADS
	help
	  Select this option if your external toolchain has thread
	  support. If you don't know, leave the default value,
	  Buildroot will tell you if it's correct or not.

if BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS

config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG
	bool "Toolchain has threads debugging support?"
	default y
	select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	help
	  Select this option if your external toolchain has thread
	  debugging support. If you don't know, leave the default
	  value, Buildroot will tell you if it's correct or not.

config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL
	bool "Toolchain has NPTL threads support?"
	default y
	select BR2_TOOLCHAIN_HAS_THREADS_NPTL
	help
	  Select this option if your external toolchain uses the NPTL
	  (Native Posix Thread Library) implementation of Posix
	  threads. If you don't know, leave the default value,
	  Buildroot will tell you if it's correct or not.

endif # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS

endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC

config BR2_TOOLCHAIN_EXTERNAL_HAS_SSP
	bool "Toolchain has SSP support?"
	default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
	default y if BR2_TOOLCHAIN_EXTERNAL_MUSL
	select BR2_TOOLCHAIN_HAS_SSP
	help
	  Select this option if your external toolchain has Stack
	  Smashing Protection support enabled. If you don't know,
	  leave the default value, Buildroot will tell you if it's
	  correct or not.

config BR2_TOOLCHAIN_EXTERNAL_HAS_SSP_STRONG
	bool "Toolchain has SSP strong support?"
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 && BR2_TOOLCHAIN_EXTERNAL_GLIBC
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 && BR2_TOOLCHAIN_EXTERNAL_MUSL
	depends on BR2_TOOLCHAIN_EXTERNAL_HAS_SSP
	select BR2_TOOLCHAIN_HAS_SSP_STRONG
	help
	  Select this option if your external toolchain has strong
	  Stack Smashing Protection support enabled. If you don't
	  know, leave the default value, Buildroot will tell you if
	  it's correct or not.

config BR2_TOOLCHAIN_EXTERNAL_INET_RPC
	bool "Toolchain has RPC support?"
	default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
	depends on !BR2_TOOLCHAIN_EXTERNAL_MUSL
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	help
	  Select this option if your external toolchain supports
	  RPC. If you don't know, leave the default value, Buildroot
	  will tell you if it's correct or not.

config BR2_TOOLCHAIN_EXTERNAL_CXX
	bool "Toolchain has C++ support?"
	select BR2_INSTALL_LIBSTDCPP
	help
	  Select this option if your external toolchain has C++
	  support. If you don't know, leave the default value,
	  Buildroot will tell you if it's correct or not.

config BR2_TOOLCHAIN_EXTERNAL_DLANG
	bool "Toolchain has D support?"
	select BR2_TOOLCHAIN_HAS_DLANG
	help
	  Select this option if your external toolchain has D
	  support.

config BR2_TOOLCHAIN_EXTERNAL_FORTRAN
	bool "Toolchain has Fortran support?"
	select BR2_TOOLCHAIN_HAS_FORTRAN
	help
	  Select this option if your external toolchain has Fortran
	  support. If you don't know, leave the default value,
	  Buildroot will tell you if it's correct or not.

config BR2_TOOLCHAIN_EXTERNAL_OPENMP
	bool "Toolchain has OpenMP support?"
	select BR2_TOOLCHAIN_HAS_OPENMP
	help
	  Select this option if your external toolchain has OpenMP
	  support. If you don't know, leave the default value,
	  Buildroot will tell you if it's correct or not.

endif
