if BR2_TOOLCHAIN_EXTERNAL

choice
	prompt "Toolchain"

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

config BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_11
	bool "Linaro 2013.11"
	depends on BR2_arm
	depends on BR2_GCC_TARGET_ARCH = "armv7-a"
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on BR2_ARM_EABIHF
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Linaro toolchain for the ARM architecture. It uses Linaro
	  GCC 2013.11 (based on gcc 4.8), Linaro GDB 2013.10 (based on
	  GDB 7.6), eglibc 2.18, Binutils 2013.10 (based on 2.23). It
	  generates code that runs on all Cortex-A profile devices,
	  but tuned for the Cortex-A9. The code generated is Thumb 2,
	  with the hard floating point calling convention, and uses
	  the VFPv3-D16 FPU instructions.

	  To use this toolchain, you must disable soft float usage.

config BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_10
	bool "Linaro 2013.10"
	depends on BR2_arm
	depends on BR2_GCC_TARGET_ARCH = "armv7-a"
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on BR2_ARM_EABIHF
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Linaro toolchain for the ARM architecture. It uses Linaro
	  GCC 2013.10 (based on gcc 4.8), Linaro GDB 2013.10 (based on
	  GDB 7.6), eglibc 2.18, Binutils 2013.10 (based on 2.23). It
	  generates code that runs on all Cortex-A profile devices,
	  but tuned for the Cortex-A9. The code generated is Thumb 2,
	  with the hard floating point calling convention, and uses
	  the VFPv3-D16 FPU instructions.

	  To use this toolchain, you must disable soft float usage.

config BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_09
	bool "Linaro 2013.09"
	depends on BR2_arm
	depends on BR2_GCC_TARGET_ARCH = "armv7-a"
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on BR2_ARM_EABIHF
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Linaro toolchain for the ARM architecture. It uses Linaro
	  GCC 2013.09 (based on gcc 4.8), Linaro GDB 2013.05 (based on
	  GDB 7.6), eglibc 2.17, Binutils 2013.06 (based on 2.23). It
	  generates code that runs on all Cortex-A profile devices,
	  but tuned for the Cortex-A9. The code generated is Thumb 2,
	  with the hard floating point calling convention, and uses
	  the VFPv3-D16 FPU instructions.

	  To use this toolchain, you must disable soft float usage.

comment "Linaro toolchains available for Cortex-A + EABIhf"
	depends on BR2_arm
	depends on BR2_GCC_TARGET_ARCH != "armv7-a" || !BR2_ARM_EABIHF
	depends on !BR2_PREFER_STATIC_LIB

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201311
	bool "Sourcery CodeBench ARM 2013.11"
	depends on BR2_arm
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on BR2_ARM_EABI
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the ARM architecture, from
	  Mentor Graphics. It uses gcc 4.8.1, binutils 2.23.52, glibc
	  2.18 and gdb 7.6.50, kernel headers 3.11. It has support
	  for the following variants:
	    - ARMv5TE, little endian, soft-float, glibc
	      Select ARM926T, ARM10T, XScale or another ARMv5 core
	      Select BR2_SOFT_FLOAT
	    - ARMv4T, little endian, soft-float, glibc
	      Select ARM720T, ARM920T, ARM922T or another ARMv4 core
	      Select BR2_SOFT_FLOAT
	    - ARMv7-A, Thumb 2, little endian, soft-float, glibc
	      Select Cortex-A8, Cortex-A9 or another ARMv7-A core
	      Select BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mthumb

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201305
	bool "Sourcery CodeBench ARM 2013.05"
	depends on BR2_arm
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on BR2_ARM_EABI
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the ARM architecture, from
	  Mentor Graphics. It uses gcc 4.7.3, binutils 2.23.52, glibc
	  2.17 and gdb 7.4.50, kernel headers 3.8.2. It has support
	  for the following variants:
	    - ARMv5TE, little endian, soft-float, glibc
	      Select ARM926T, ARM10T, XScale or another ARMv5 core
	      Select BR2_SOFT_FLOAT
	    - ARMv4T, little endian, soft-float, glibc
	      Select ARM720T, ARM920T, ARM922T or another ARMv4 core
	      Select BR2_SOFT_FLOAT
	    - ARMv7-A, Thumb 2, little endian, soft-float, glibc
	      Select Cortex-A8, Cortex-A9 or another ARMv7-A core
	      Select BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mthumb

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201203
	bool "Sourcery CodeBench ARM 2012.03"
	depends on BR2_arm
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on BR2_ARM_EABI
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the ARM architecture, from
	  Mentor Graphics. It uses gcc 4.6.3, binutils 2.21.53, glibc
	  2.15 and gdb 7.2.50, kernel headers 3.2.10. It has support
	  for the following variants:
	    - ARMv5TE, little endian, soft-float, glibc
	      Select ARM926T, ARM10T, XScale or another ARMv5 core
	      Select BR2_SOFT_FLOAT
	    - ARMv4T, little endian, soft-float, glibc
	      Select ARM720T, ARM920T, ARM922T or another ARMv4 core
	      Select BR2_SOFT_FLOAT
	    - ARMv7-A, Thumb 2, little endian, soft-float, glibc
	      Select Cortex-A8, Cortex-A9 or another ARMv7-A core
	      Select BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mthumb

comment "Sourcery CodeBench toolchains available for the EABI ABI"
	depends on BR2_arm
	depends on !BR2_ARM_EABI
	depends on !BR2_PREFER_STATIC_LIB

config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A_201109
	bool "Arago ARMv7 2011.09"
	depends on BR2_arm
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on BR2_GCC_TARGET_ARCH = "armv7-a"
	depends on BR2_ARM_EABI
	depends on BR2_ARM_CPU_HAS_VFPV3 || BR2_ARM_CPU_MAYBE_HAS_VFPV3
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Texas Instruments Arago 2011.09 toolchain, with gcc 4.5.3,
	  binutils 2.20.1, glibc 2.12, gdb 7.2.

	  This toolchain uses -mfloat-abi=softfp (i.e can use FPU
	  instructions, but passes floating point function arguments
	  in integer registers), and requires a VFPv3 floating point
	  unit to work properly. This unit is available on most
	  Cortex-A ARM processors, but not all.

config BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109
	bool "Arago ARMv5 2011.09"
	depends on BR2_arm
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on BR2_GCC_TARGET_ARCH != "armv4t" && \
		BR2_GCC_TARGET_ARCH != "armv4" && \
		BR2_GCC_TARGET_ARCH != "armv5t"
	depends on BR2_ARM_EABI
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Texas Instruments Arago ARMv5 2011.09 toolchain, with gcc
	  4.5.3, binutils 2.20.1, glibc 2.12, gdb 7.2.

	  This toolchain uses software-floating point.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201311
	bool "Sourcery CodeBench MIPS 2013.11"
	depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_MIPS_NABI32
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the MIPS architecture, from
	  Mentor Graphics. It uses gcc 4.8.1, binutils 2.23.52, glibc
	  2.18, uClibc 0.9.30 and gdb 7.6.50, kernel headers
	  3.11. It has support for the following variants:
	    - MIPS32 O32 big endian glibc
	      Select a MIPS generic core
	      Disable BR2_SOFT_FLOAT
	    - MIPS64 big endian glibc
	      Select a MIPS64 generic core
	      Select the n64 ABI
	      Disable BR2_SOFT_FLOAT
	    - MIPS32 O32 little endian glibc
	      Select a MIPS generic core
	      Disable BR2_SOFT_FLOAT
	    - MIPS64 little endian glibc
	      Select a MIPS64 generic core
	      Select the n64 ABI
	      Disable BR2_SOFT_FLOAT
	    - MIPS32 big endian soft float glibc
	      Select a MIPS generic core
	      Select BR2_SOFT_FLOAT
	    - MIPS64 big endian soft float glibc
	      Select a MIPS64 generic core
	      Select the n64 ABI
	      Select BR2_SOFT_FLOAT
	    - MIPS32 little endian soft float glibc
	      Select a MIPS generic core
	      Select BR2_SOFT_FLOAT
	    - MIPS64 little endian soft float glibc
	      Select a MIPS64 generic core
	      Select the n64 ABI
	      Select BR2_SOFT_FLOAT
	    - MIPS32 big endian microMIPS glibc
	      Select a MIPS generic core
	      Disable BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mips16
	    - MIPS32 little endian microMIPS glibc
	      Select a MIPS generic core
	      Disable BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mips16
	    - MIPS32 big endian soft float microMIPS glibc
	      Select a MIPS generic core
	      Select BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mips16
	    - MIPS32 little endian soft float microMIPS glibc
	      Select a MIPS generic core
	      Select BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mips16
	    - MIPS32 big endian uclibc
	      Not usable in Buildroot yet.
	    - MIPS32 little endian uclibc
	      Not usable in Buildroot yet.
	    - MIPS32 big endian soft float uclibc
	      Not usable in Buildroot yet.
	    - MIPS32 little endian soft float uclibc
	      Not usable in Buildroot yet.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201305
	bool "Sourcery CodeBench MIPS 2013.05"
	depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_MIPS_NABI32
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the MIPS architecture, from
	  Mentor Graphics. It uses gcc 4.7.3, binutils 2.23.52, glibc
	  2.17, uClibc 0.9.30 and gdb 7.4.50, kernel headers
	  3.8.2. It has support for the following variants:
	    - MIPS32 O32 big endian glibc
	      Select a MIPS generic core
	      Disable BR2_SOFT_FLOAT
	    - MIPS64 big endian glibc
	      Select a MIPS64 generic core
	      Select the n64 ABI
	      Disable BR2_SOFT_FLOAT
	    - MIPS32 O32 little endian glibc
	      Select a MIPS generic core
	      Disable BR2_SOFT_FLOAT
	    - MIPS64 little endian glibc
	      Select a MIPS64 generic core
	      Select the n64 ABI
	      Disable BR2_SOFT_FLOAT
	    - MIPS32 big endian soft float glibc
	      Select a MIPS generic core
	      Select BR2_SOFT_FLOAT
	    - MIPS64 big endian soft float glibc
	      Select a MIPS64 generic core
	      Select the n64 ABI
	      Select BR2_SOFT_FLOAT
	    - MIPS32 little endian soft float glibc
	      Select a MIPS generic core
	      Select BR2_SOFT_FLOAT
	    - MIPS64 little endian soft float glibc
	      Select a MIPS64 generic core
	      Select the n64 ABI
	      Select BR2_SOFT_FLOAT
	    - MIPS32 big endian microMIPS glibc
	      Select a MIPS generic core
	      Disable BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mips16
	    - MIPS32 little endian microMIPS glibc
	      Select a MIPS generic core
	      Disable BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mips16
	    - MIPS32 big endian soft float microMIPS glibc
	      Select a MIPS generic core
	      Select BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mips16
	    - MIPS32 little endian soft float microMIPS glibc
	      Select a MIPS generic core
	      Select BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mips16
	    - MIPS32 big endian uclibc
	      Not usable in Buildroot yet.
	    - MIPS32 little endian uclibc
	      Not usable in Buildroot yet.
	    - MIPS32 big endian soft float uclibc
	      Not usable in Buildroot yet.
	    - MIPS32 little endian soft float uclibc
	      Not usable in Buildroot yet.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201209
	bool "Sourcery CodeBench MIPS 2012.09"
	depends on BR2_mips || BR2_mipsel
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_MIPS_NABI32
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the MIPS architecture, from
	  Mentor Graphics. It uses gcc 4.7.2, binutils 2.23.51, glibc
	  2.16, uClibc 0.9.30 and gdb 7.4.50, kernel headers
	  3.5.4. It has support for the following variants:
	    - MIPS32 O32 big endian glibc
	      Select a MIPS generic core
	      Disable BR2_SOFT_FLOAT
	    - MIPS64 big endian glibc
	      Select a MIPS64 generic core
	      Select the n64 ABI
	      Disable BR2_SOFT_FLOAT
	    - MIPS32 O32 little endian glibc
	      Select a MIPS generic core
	      Disable BR2_SOFT_FLOAT
	    - MIPS64 little endian glibc
	      Select a MIPS64 generic core
	      Select the n64 ABI
	      Disable BR2_SOFT_FLOAT
	    - MIPS32 big endian soft float glibc
	      Select a MIPS generic core
	      Select BR2_SOFT_FLOAT
	    - MIPS64 big endian soft float glibc
	      Select a MIPS64 generic core
	      Select the n64 ABI
	      Select BR2_SOFT_FLOAT
	    - MIPS32 little endian soft float glibc
	      Select a MIPS generic core
	      Select BR2_SOFT_FLOAT
	    - MIPS64 little endian soft float glibc
	      Select a MIPS64 generic core
	      Select the n64 ABI
	      Select BR2_SOFT_FLOAT
	    - MIPS32 big endian microMIPS glibc
	      Select a MIPS generic core
	      Disable BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mips16
	    - MIPS32 little endian microMIPS glibc
	      Select a MIPS generic core
	      Disable BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mips16
	    - MIPS32 big endian soft float microMIPS glibc
	      Select a MIPS generic core
	      Select BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mips16
	    - MIPS32 little endian soft float microMIPS glibc
	      Select a MIPS generic core
	      Select BR2_SOFT_FLOAT
	      Set BR2_TARGET_OPTIMIZATION to -mips16
	    - MIPS32 big endian uclibc
	      Not usable in Buildroot yet.
	    - MIPS32 little endian uclibc
	      Not usable in Buildroot yet.
	    - MIPS32 big endian soft float uclibc
	      Not usable in Buildroot yet.
	    - MIPS32 little endian soft float uclibc
	      Not usable in Buildroot yet.

comment "Sourcery CodeBench toolchains are only available for MIPS/MIPS64 o32 and n64"
	depends on BR2_MIPS_NABI32
	depends on !BR2_PREFER_STATIC_LIB

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201305
	bool "Sourcery CodeBench Nios-II 2013.05"
	depends on BR2_nios2
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the Nios-II architecture,
	  from Mentor Graphics. It uses gcc 4.7.3, binutils 2.23.52,
	  glibc 2.17, gdb 7.4.50 and kernel headers 3.7.0.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201103
	bool "Sourcery CodeBench PowerPC 2011.03"
	depends on BR2_powerpc
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the PowerPC architecture,
	  from Mentor Graphics. It uses gcc 4.5.2, binutils 2.20.51,
	  glibc 2.13, gdb 7.2.50 and kernel headers 2.6.38. It has
	  support for the following variants:
	    - 603 glibc, 32 bits
	      Select a generic PowerPC core
	      Disable BR2_SOFT_FLOAT
	    - 603 soft float glibc, 32 bits
	      Select a generic PowerPC core
	      Enable BR2_SOFT_FLOAT
	    - e600 altivec glibc, 32 bits
	      Set BR2_TARGET_OPTIMIZATION to -te600
	    - e500v1 glibc, 32 bits
	      Set BR2_TARGET_OPTIMIZATION to -te500v1
	    - e500v2 glibc, 32 bits
	      Set BR2_TARGET_OPTIMIZATION to -te500v2
	    - e500mc glibc, 32 bits
	      Set BR2_TARGET_OPTIMIZATION to -te500mc
	    - 970 glibc hard-float, 64 bits
	      Set BR2_TARGET_OPTIMIZATION to -m64

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009
	bool "Sourcery CodeBench PowerPC 2010.09"
	depends on BR2_powerpc
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the PowerPC architecture,
	  from Mentor Graphics. It uses gcc 4.5.1, binutils 2.20,
	  glibc 2.11, gdb 7.2.50 and kernel headers 2.6.35.2. It has
	  support for the following variants:
	    - 603 glibc, 32 bits
	      Select a generic PowerPC core
	      Disable BR2_SOFT_FLOAT
	    - 603 soft float glibc, 32 bits
	      Select a generic PowerPC core
	      Enable BR2_SOFT_FLOAT
	    - e600 altivec glibc, 32 bits
	      Set BR2_TARGET_OPTIMIZATION to -te600
	    - e500v1 glibc, 32 bits
	      Set BR2_TARGET_OPTIMIZATION to -te500v1
	    - e500v2 glibc, 32 bits
	      Set BR2_TARGET_OPTIMIZATION to -te500v2
	    - e500mc glibc, 32 bits
	      Set BR2_TARGET_OPTIMIZATION to -te500mc
	    - 970 glibc hard-float, 64 bits
	      Set BR2_TARGET_OPTIMIZATION to -m64

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201209
	bool "Sourcery CodeBench SH 2012.09"
	depends on BR2_sh4a || BR2_sh4aeb
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the SuperH architecture,
	  from Mentor Graphics. It uses gcc 4.7.2, binutils 2.23.51,
	  glibc 2.16, uClibc 0.9.30, gdb 7.4.50 and kernel headers
	  3.5.4. It has support for the following variants:
	    - SH4A, glibc, little endian
	      Default.
	    - SH4A, glibc, big endian
	      Add -mb to BR2_TARGET_OPTIMIZATION
	    - SH4A, uClibc, little endian
	      Not usable in Buildroot yet.
	    - SH4A, uClibc, big endian
	      Not usable in Buildroot yet.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201203
	bool "Sourcery CodeBench SH 2012.03"
	depends on BR2_sh4a || BR2_sh4aeb
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the SuperH architecture,
	  from Mentor Graphics. It uses gcc 4.6.3, binutils 2.21.53,
	  glibc 2.15, uClibc 0.9.30, gdb 7.2.50 and kernel headers
	  3.2.10. It has support for the following variants:
	    - SH4A, glibc, little endian
	      Default.
	    - SH4A, glibc, big endian
	      Add -mb to BR2_TARGET_OPTIMIZATION
	    - SH4A, uClibc, little endian
	      Not usable in Buildroot yet.
	    - SH4A, uClibc, big endian
	      Not usable in Buildroot yet.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201103
	bool "Sourcery CodeBench SH 2011.03"
	depends on BR2_sh4a || BR2_sh4aeb
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the SuperH architecture,
	  from Mentor Graphics. It uses gcc 4.5.2, binutils 2.20,
	  glibc 2.13, uClibc 0.9.30, gdb 7.2.50 and kernel headers
	  2.6.38. It has support for the following variants:
	    - SH4A, glibc, little endian
	      Default.
	    - SH4A, glibc, big endian
	      Add -mb to BR2_TARGET_OPTIMIZATION
	    - SH4A, uClibc, little endian
	      Not usable in Buildroot yet.
	    - SH4A, uClibc, big endian
	      Not usable in Buildroot yet.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201103
	bool "Sourcery CodeBench SH 2011.03"
	depends on BR2_sh2a
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
	select BR2_LARGEFILE
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_USE_WCHAR
	select BR2_TOOLCHAIN_HAS_THREADS
	select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the SuperH architecture,
	  from Mentor Graphics. It uses gcc 4.5.2, binutils 2.20,
	  uClibc 0.9.30, gdb 7.2.50 and kernel headers 2.6.38. It has
	  support for the following variants:
	    - SH2A, uClibc, big endian

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201009
	bool "Sourcery CodeBench SH 2010.09"
	depends on BR2_sh2a
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
	select BR2_LARGEFILE
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_USE_WCHAR
	select BR2_TOOLCHAIN_HAS_THREADS
	select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the SuperH architecture,
	  from Mentor Graphics. It uses gcc 4.5.1, binutils 2.20,
	  uClibc 0.9.30, gdb 7.2.50 and kernel headers 2.6.35.2. It
	  has support for the following variants:
	    - SH2A, uClibc, big endian

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201209
	bool "Sourcery CodeBench x86/x86_64 2012.09"
	depends on BR2_i386 || BR2_x86_64
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_PREFER_STATIC_LIB
	depends on !BR2_x86_jaguar
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the x86/x86_64
	  architectures, from Mentor Graphics. It uses gcc 4.7.2,
	  binutils 2.23.51, glibc 2.16, gdb 7.4.50 and kernel headers
	  3.5.4. It has support for the following variants:
	    - Intel Pentium 4, glibc, 32 bits
	      Default for x86, nothing special to do.
	    - Intel Atom, glibc, 32 bits
	      Select an Atom core
	    - Intel Xeon, glibc, 64 bits
	      Default for x86_64, nothing special to do.
	    - Intel Core 2, glibc, 64 bits
	      Select a Core 2 core
	  Other architecture variants (beyond Pentium-4/Xeon) are
	  supported as well, but glibc is not optimised for it.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201203
	bool "Sourcery CodeBench x86/x86_64 2012.03"
	depends on BR2_i386 || BR2_x86_64
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_PREFER_STATIC_LIB
	depends on !BR2_x86_jaguar
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the x86/x86_64
	  architectures, from Mentor Graphics. It uses gcc 4.6.3,
	  binutils 2.21.53, glibc 2.15, gdb 7.2.50 and kernel headers
	  3.2.10. It has support for the following variants:
	    - Intel Pentium 4, glibc, 32 bits
	      Default for x86, nothing special to do.
	    - Intel Atom, glibc, 32 bits
	      Select an Atom core
	    - Intel Xeon, glibc, 64 bits
	      Default for x86_64, nothing special to do.
	    - Intel Core 2, glibc, 64 bits
	      Select a Core 2 core
	  Other architecture variants (beyond Pentium-4/Xeon) are
	  supported as well, but glibc is not optimised for it.

config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201109
	bool "Sourcery CodeBench x86/x86_64 2011.09"
	depends on BR2_i386 || BR2_x86_64
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_PREFER_STATIC_LIB
	depends on !BR2_x86_jaguar
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Sourcery CodeBench toolchain for the x86/x86_64
	  architectures, from Mentor Graphics. It uses gcc 4.6.1,
	  binutils 2.21.53, glibc 2.13, gdb 7.2.50 and kernel headers
	  3.0.1. It has support for the following variants:
	    - Intel Pentium 4, glibc, 32 bits
	      Default for x86, nothing special to do.
	    - Intel Atom, glibc, 32 bits
	      Select an Atom core
	    - Intel Xeon, glibc, 64 bits
	      Default for x86_64, nothing special to do.
	    - Intel Core 2, glibc, 64 bits
	      Select a Core 2 core
	  Other architecture variants (beyond Pentium-4/Xeon) are
	  supported as well, but glibc is not optimised for it.

config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2013R1
	bool "Blackfin.uclinux.org 2013R1"
	depends on BR2_bfin
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_LARGEFILE
	select BR2_INET_IPV6
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_USE_WCHAR
	select BR2_TOOLCHAIN_HAS_THREADS
	select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Toolchain for the Blackfin architecture, from
	  http://blackfin.uclinux.org.

config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2
	bool "Blackfin.uclinux.org 2012R2-RC2"
	depends on BR2_bfin
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_LARGEFILE
	select BR2_INET_IPV6
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_USE_WCHAR
	select BR2_TOOLCHAIN_HAS_THREADS
	select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Toolchain for the Blackfin architecture, from
	  http://blackfin.uclinux.org.

config BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1
	bool "Blackfin.uclinux.org 2012R1-RC2"
	depends on BR2_bfin
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_LARGEFILE
	select BR2_INET_IPV6
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_USE_WCHAR
	select BR2_TOOLCHAIN_HAS_THREADS
	select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Toolchain for the Blackfin architecture, from
	  http://blackfin.uclinux.org.

config BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_14_3
	bool "Xilinx Little Endian Microblaze GNU Tools 14.3"
	depends on BR2_microblazeel
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_PREFER_STATIC_LIB
	depends on BR2_DEPRECATED_SINCE_2014_02
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Toolchain for the Microblaze architecture, from
	  http://git.xilinx.com/?p=microblaze-gnu.git;a=tree;f=binaries. It
	  uses gcc 4.6.2, binutils 2.21.53, glibc 2.14 and gdb 7.4.50.

config BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_V2
	bool "Xilinx Little Endian Microblaze GNU Tools v2"
	depends on BR2_microblazeel
	depends on BR2_HOSTARCH = "x86_64"
	depends on !BR2_PREFER_STATIC_LIB
	depends on BR2_DEPRECATED_SINCE_2014_02
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	help
	  Toolchain for the Microblaze architecture, from
	  http://wiki.xilinx.com/mb-gnu-tools

config BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_14_3
	bool "Xilinx Big Endian Microblaze GNU Tools"
	depends on BR2_microblazebe
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_PREFER_STATIC_LIB
	depends on BR2_DEPRECATED_SINCE_2014_02
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	help
	  Toolchain for the Microblaze architecture, from
	  http://git.xilinx.com/?p=microblaze-gnu.git;a=tree;f=binaries. It
	  uses gcc 4.6.2, binutils 2.21.53, glibc 2.14 and gdb 7.4.50.

config BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_V2
	bool "Xilinx Big Endian Microblaze GNU Tools"
	depends on BR2_microblazebe
	depends on BR2_HOSTARCH = "x86_64"
	depends on !BR2_PREFER_STATIC_LIB
	depends on BR2_DEPRECATED_SINCE_2014_02
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	help
	  Toolchain for the Microblaze architecture, from
	  http://wiki.xilinx.com/mb-gnu-tools

config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_11
	bool "Linaro AArch64 13.11"
	depends on BR2_aarch64
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	help
	  Toolchain for the AArch64 architecture, from
	  http://www.linaro.org/engineering/armv8/

config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_10
	bool "Linaro AArch64 13.10"
	depends on BR2_aarch64
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	help
	  Toolchain for the AArch64 architecture, from
	  http://www.linaro.org/engineering/armv8/

config BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_09
	bool "Linaro AArch64 13.09"
	depends on BR2_aarch64
	depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86"
	depends on !BR2_PREFER_STATIC_LIB
	select BR2_TOOLCHAIN_EXTERNAL_GLIBC
	select BR2_INSTALL_LIBSTDCPP
	select BR2_HOSTARCH_NEEDS_IA32_LIBS
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	help
	  Toolchain for the AArch64 architecture, from
	  http://www.linaro.org/engineering/armv8/

config BR2_TOOLCHAIN_EXTERNAL_CUSTOM
	bool "Custom toolchain"
	help
	  Use this option to use a custom toolchain pre-installed on
	  your system.

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 "/path/to/toolchain/usr"
	depends on BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED
	help
	  Path to where the external toolchain is installed.

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

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

config BR2_TOOLCHAIN_EXTERNAL_PREFIX
	string
	default "arm-linux-gnueabihf"	 if BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_11
	default "arm-linux-gnueabihf"	 if BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_10
	default "arm-linux-gnueabihf"	 if BR2_TOOLCHAIN_EXTERNAL_LINARO_2013_09
	default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201203
	default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201305
	default "arm-none-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM201311
	default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A_201109
	default "arm-arago-linux-gnueabi" if BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE_201109
	default "aarch64-linux-gnu"      if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_11
	default "aarch64-linux-gnu"      if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_10
	default "aarch64-linux-gnu"      if BR2_TOOLCHAIN_EXTERNAL_LINARO_AARCH64_13_09
	default "microblazeel-unknown-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_14_3
	default "microblazeel-unknown-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEEL_V2
	default "microblaze-unknown-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_14_3
	default "microblaze-unknown-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_XILINX_MICROBLAZEBE_V2
	default "mips-linux-gnu"         if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201209
	default "mips-linux-gnu"         if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201305
	default "mips-linux-gnu"         if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS201311
	default "nios2-linux-gnu"        if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_NIOSII201305
	default "powerpc-linux-gnu"      if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201009
	default "powerpc-linux-gnu"      if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC201103
	default "sh-linux-gnu"           if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201103
	default "sh-linux-gnu"           if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201203
	default "sh-linux-gnu"           if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH201209
	default "sh-uclinux"             if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201009
	default "sh-uclinux"             if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH2A_201103
	default "i686-pc-linux-gnu"	 if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201109
	default "i686-pc-linux-gnu"	 if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201203
	default "i686-pc-linux-gnu"	 if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201209
	default "bfin-uclinux"		 if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1 && BR2_BINFMT_FLAT
	default "bfin-linux-uclibc"	 if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1 && BR2_BINFMT_FDPIC
	default "bfin-uclinux"		 if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2 && BR2_BINFMT_FLAT
	default "bfin-linux-uclibc"	 if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2 && BR2_BINFMT_FDPIC
	default "bfin-uclinux"		 if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2013R1 && BR2_BINFMT_FLAT
	default "bfin-linux-uclibc"	 if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2013R1 && BR2_BINFMT_FDPIC
	default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX \
					 if BR2_TOOLCHAIN_EXTERNAL_CUSTOM

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

if BR2_TOOLCHAIN_EXTERNAL_CUSTOM

choice
	prompt "External toolchain C library"
	default BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC

config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC
	bool "uClibc"
	select BR2_TOOLCHAIN_EXTERNAL_UCLIBC
	# For the time being, we assume that all custom external
	# toolchains have shadow password support.
	select BR2_TOOLCHAIN_HAS_SHADOW_PASSWORDS
	help
	  Select this option if your external toolchain uses the
	  uClibc C library (available from http://www.uclibc.org/).

config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC
	bool "glibc/eglibc"
	depends on !BR2_PREFER_STATIC_LIB
	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_PREFER_STATIC_LIB

config BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL
	bool "musl"
	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_LARGEFILE
	bool "Toolchain has large file support?"
	select BR2_LARGEFILE
	help
	  Select this option if your external toolchain supports
	  largefile. If you don't know, leave the default value,
	  Buildroot will tell you if it's correct or not.

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

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?"
	select BR2_TOOLCHAIN_HAS_THREADS
	default y
	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.

config BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG
	bool "Toolchain has threads debugging support?"
	depends on BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS
	select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	default y
	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_SSP
	bool "Toolchain has SSP support?"
	select BR2_TOOLCHAIN_HAS_SSP
	help
	  Selection 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.

endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM_UCLIBC

config BR2_TOOLCHAIN_EXTERNAL_INET_RPC
	bool "Toolchain has RPC support?"
	select BR2_TOOLCHAIN_HAS_NATIVE_RPC
	depends on !BR2_TOOLCHAIN_EXTERNAL_MUSL
	default y if BR2_TOOLCHAIN_EXTERNAL_GLIBC
	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_EXTRA_EXTERNAL_LIBS
	string "Extra toolchain libraries to be copied to target"
	help
	  If your external toolchain provides extra libraries that
	  need to be copied to the target filesystem, enter them
	  here, separated by spaces. They will be copied to the
	  target's /lib directory.

endif # BR2_TOOLCHAIN_EXTERNAL_CUSTOM

config BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
	bool "Copy gdb server to the Target"
	depends on BR2_TOOLCHAIN_EXTERNAL
	help
	  Copy the gdbserver provided by the external toolchain to the
	  target.

# When the FDPIC shared binary format is used, the corresponding libraries are
# always installed. When a different binary format is used, we offer the option
# of installing the FDPIC shared libraries.
config BR2_BFIN_INSTALL_FDPIC_SHARED
	bool "Install FDPIC shared libraries"
	depends on BR2_bfin && !BR2_BINFMT_FDPIC
	help
	  The Linux kernel supports running both FDPIC and FLAT applications
	  concurrently if the binary format specific libraries are installed
	  properly. This option allows developer to install FDPIC libraries
	  into a buildroot rootfs image built with binary format that is not
	  FDPIC.

# When the FLAT shared binary format is used, we force the installation
# of the corresponding libraries. When a different binary format is
# used, we offer the option of installing the FLAT shared libraries.
config BR2_BFIN_INSTALL_FLAT_SHARED
	bool "Install FLAT shared libraries" if !BR2_BINFMT_FLAT_SHARED
	depends on BR2_bfin
	default y if BR2_BINFMT_FLAT_SHARED
	help
	  The Linux kernel supports running both FDPIC and FLAT applications
	  concurrently if the binary format specific libraries are installed
	  properly. This option allows developer to install FLAT libraries
	  into a buildroot rootfs image built with binary format that is not
	  shared FLAT.

endif # BR2_TOOLCHAIN_EXTERNAL
