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_10
	bool "5.10.x or later"
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10

config BR2_TOOLCHAIN_EXTERNAL_HEADERS_5_9
	bool "5.9.x"
	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
