menu "Toolchain"

# Invisible option that makes sure the toolchain package always gets
# built
config BR2_TOOLCHAIN
	bool
	default y

# Should be selected for glibc or eglibc
config BR2_TOOLCHAIN_USES_GLIBC
	bool
	select BR2_USE_WCHAR
	select BR2_ENABLE_LOCALE
	select BR2_TOOLCHAIN_HAS_FULL_GETTEXT
	select BR2_TOOLCHAIN_HAS_THREADS
	select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	select BR2_TOOLCHAIN_HAS_THREADS_NPTL
	select BR2_TOOLCHAIN_HAS_UCONTEXT
	select BR2_TOOLCHAIN_SUPPORTS_PIE

config BR2_TOOLCHAIN_USES_UCLIBC
	bool
	# ucontext is only available for a subset of the supported
	# architectures
	select BR2_TOOLCHAIN_HAS_UCONTEXT if BR2_ARM_CPU_HAS_ARM || BR2_i386 \
		|| BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el \
		|| BR2_sparc || BR2_x86_64
	select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_m68k && !BR2_microblaze && !BR2_STATIC_LIBS

config BR2_TOOLCHAIN_USES_MUSL
	bool
	select BR2_USE_WCHAR
	select BR2_ENABLE_LOCALE
	select BR2_TOOLCHAIN_HAS_THREADS
	select BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	select BR2_TOOLCHAIN_HAS_THREADS_NPTL
	select BR2_TOOLCHAIN_SUPPORTS_PIE if !BR2_STATIC_LIBS

choice
	prompt "Toolchain type"
	help
	  Select whether to use the toolchain provided by buildroot
	  or an external toolchain.

	  Some vendors provide toolchains in binary form, some in
	  source form.

config BR2_TOOLCHAIN_BUILDROOT
	bool "Buildroot toolchain"
	depends on BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT

config BR2_TOOLCHAIN_EXTERNAL
	bool "External toolchain"
	help
	  Select if you want to use an existing cross-compiling
	  toolchain. Buildroot can either download automatically a
	  toolchain, or use an already installed toolchain.

endchoice

source "toolchain/toolchain-buildroot/Config.in"
source "toolchain/toolchain-external/Config.in"

# Generic toolchain options

# we want gdb config in the middle of both source and external
# toolchains, but mconf won't let us source the same file twice,
# so put it here instead
source "package/gdb/Config.in.host"

comment "Toolchain Generic Options"

# https://sourceware.org/bugzilla/show_bug.cgi?id=27597
# Affect toolchains built with binutils 2.36.1, still not fixed.
config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_27597
	bool
	default y if BR2_nios2

# https://sourceware.org/bugzilla/show_bug.cgi?id=30730
# Affect toolchains built with binutils 2.40, still not fixed.
config BR2_TOOLCHAIN_HAS_BINUTILS_BUG_30730
	bool
	default y if BR2_m68k_cf

# Atomic types can be:
#  - never lock-free
#  - sometimes lock-free
#  - always lock-free
# see https://en.cppreference.com/w/c/atomic/ATOMIC_LOCK_FREE_consts
#
# On most architectures, gcc provides "always lock-free" atomic types,
# but a few architectures are limited to "sometimes lock-free"
# types. This hidden option allows to know if the architecture
# provides "always lock-free" atomic types.
config BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS
	bool
	default y
	depends on !BR2_nios2
	depends on !BR2_ARM_CPU_ARMV4
	depends on !BR2_ARM_CPU_ARMV5
	depends on !BR2_sparc_v8
	depends on !BR2_m68k_cf5208

# GCC uses thunk functions to adjust the 'this' pointer when calling
# C++ member functions in classes derived with multiple inheritance.
# Generation of thunk functions requires support from the compiler
# back end. In the absence of that support target-independent code
# in the C++ front end is used to generate thunk functions, but it
# does not support vararg functions.
# or1k will support it in the gcc mainline starting with gcc-9.
config BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK
	bool
	default y
	depends on !BR2_or1k
	depends on !BR2_xtensa

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43744. This bug
# reappeared on gcc 9.x and is still not fixed on gcc 11.x
config BR2_TOOLCHAIN_HAS_GCC_BUG_43744
	bool
	default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_9
	depends on BR2_sh

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63261. This bug no
# longer exists in gcc 8.x.
config BR2_TOOLCHAIN_HAS_GCC_BUG_63261
	bool
	default y if BR2_microblaze
	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8

# Prior to gcc 7.x, exception_ptr, nested_exception and future from
# libstdc++ would only be provided on architectures that support
# always lock-free atomic ints. See
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64735. This issue has
# been removed in GCC 7.x, where exception propagation is now
# supported without lock-free atomic int.
config BR2_TOOLCHAIN_HAS_GCC_BUG_64735
	bool
	default y if !BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS && \
		!BR2_TOOLCHAIN_GCC_AT_LEAST_7

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68485. This bug still
# exists in gcc 12.x
config BR2_TOOLCHAIN_HAS_GCC_BUG_68485
	bool
	default y if BR2_microblaze

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81426
config BR2_TOOLCHAIN_HAS_GCC_BUG_81426
	bool
	default y if BR2_sh

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83143
# Error: invalid operands (*UND* and .text sections) for `-' on sh4.
# This bug no longer exists in gcc 10.x but reappeared on gcc 11.x and
# it still not been fixed yet.
config BR2_TOOLCHAIN_HAS_GCC_BUG_83143
	bool
	default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_10
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_11
	depends on BR2_sh

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85180. This bug no
# longer exists in gcc 8.x.
config BR2_TOOLCHAIN_HAS_GCC_BUG_85180
	bool
	default y if BR2_microblaze
	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_8

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85862
# An infinite loop exists in the find_base_term() logic of 6.x
# on microblaze.  http://autobuild.buildroot.net/results/158e8ebb39713e1b436a5cc1a1916f46c30694df/
config BR2_TOOLCHAIN_HAS_GCC_BUG_85862
	bool
	default y if BR2_microblaze
	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_7

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90620
# ICE: in do_output_reload, at reload1.c:7978 on microblaze.
# This bug no longer exists in gcc 10.x but reappeared in gcc 11.x
config BR2_TOOLCHAIN_HAS_GCC_BUG_90620
	bool
	default y if BR2_microblaze
	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_10 \
		|| BR2_TOOLCHAIN_GCC_AT_LEAST_11

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93847
# ICE: compiler error: Segmentation fault on Nios II. This bug
# no longer exists in gcc 9.x.
config BR2_TOOLCHAIN_HAS_GCC_BUG_93847
	bool
	default y if BR2_nios2 && !BR2_TOOLCHAIN_GCC_AT_LEAST_9

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99410
# Error: branch offset out of range on Nios II. This bug
# no longer exists in gcc 8.x but reappeared on gcc 9.x and still exists
# on gcc 12.x
config BR2_TOOLCHAIN_HAS_GCC_BUG_99410
	bool
	default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_9
	depends on BR2_nios2

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101737
# ICE: SH4 -Os causes internal compiler error. This bug
# still exists in gcc = 11.1.0
config BR2_TOOLCHAIN_HAS_GCC_BUG_101737
	bool
	default y if BR2_sh

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101915
# ICE: in extract_insn, at recog.c:2294 on microblaze.
# This bug still exists in gcc = 12.1.0
config BR2_TOOLCHAIN_HAS_GCC_BUG_101915
	bool
	default y if BR2_microblaze

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101916
# ICE: on SH4: Segmentation fault signal terminated program cc1.
# This bug still exists in gcc = 11.1.0
config BR2_TOOLCHAIN_HAS_GCC_BUG_101916
	bool
	default y if BR2_sh4

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101952
# ICE: on SH4: unaligned opcodes detected in executable segment.
# This bug still exists in gcc = 11.1.0
config BR2_TOOLCHAIN_HAS_GCC_BUG_101952
	bool
	default y if BR2_sh4

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104028
# ICE: on M68K: Error: value -16034 out of range
# This bug still exists in gcc = 11.1.0
config BR2_TOOLCHAIN_HAS_GCC_BUG_104028
	bool
	default y if BR2_m68k

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107728
# https://sourceware.org/bugzilla/show_bug.cgi?id=29621
config BR2_TOOLCHAIN_HAS_GCC_BUG_107728
	bool
	default y if BR2_microblazebe || BR2_microblazeel \
		|| BR2_mips || BR2_mipsel \
		|| BR2_nios2 \
		|| BR2_or1k \
		|| BR2_sh
	depends on BR2_TOOLCHAIN_USES_GLIBC
	depends on BR2_OPTIMIZE_0

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110934
# ICE: on M68K: in change_address_1, at emit-rtl.cc:2287
# This bug exists in gcc = 12.3.0 and gcc = 13.2.0
config BR2_TOOLCHAIN_HAS_GCC_BUG_110934
	bool
	default y if BR2_m68k

# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111001
# ICE: on SH4: during RTL pass: sh_treg_combine2
# This bug exist in gcc = 13.2.0
config BR2_TOOLCHAIN_HAS_GCC_BUG_111001
	bool
	default y if BR2_sh
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_13
	depends on BR2_OPTIMIZE_1 || \
		   BR2_OPTIMIZE_2 || \
		   BR2_OPTIMIZE_3

config BR2_TOOLCHAIN_HAS_NATIVE_RPC
	bool

config BR2_USE_WCHAR
	bool

config BR2_ENABLE_LOCALE
	bool

config BR2_INSTALL_LIBSTDCPP
	bool

config BR2_TOOLCHAIN_HAS_DLANG
	bool

config BR2_TOOLCHAIN_HAS_FORTRAN
	bool

config BR2_TOOLCHAIN_HAS_THREADS
	bool

config BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	bool

config BR2_TOOLCHAIN_HAS_THREADS_NPTL
	bool

config BR2_TOOLCHAIN_HAS_SSP
	bool

config BR2_TOOLCHAIN_HAS_SSP_STRONG
	bool
	default y if BR2_TOOLCHAIN_HAS_SSP && BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

# This boolean is true if the toolchain provides a full featured
# ucontext implementation with ucontext_t and {get,make,set}context
config BR2_TOOLCHAIN_HAS_UCONTEXT
	bool

config BR2_TOOLCHAIN_HAS_OPENMP
	bool

config BR2_TOOLCHAIN_SUPPORTS_PIE
	bool

config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY
	bool "Copy gconv libraries"
	depends on BR2_TOOLCHAIN_USES_GLIBC
	help
	  The gconv libraries are used to convert between different
	  character sets (charsets).

	  Say 'y' if you need to store and/or display different
	  charsets.

config BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_LIST
	string "Gconv libraries to copy"
	depends on BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY
	help
	  Set to the list of gconv libraries to copy.
	  Leave empty to copy all gconv libraries.

	  Specify only the basename of the libraries, leave
	  out the .so extension. Eg.:
	    IBM850 ISO8859-15 UNICODE

	  Note: the full set of gconv libs are ~8MiB (on ARM).

config BR2_TOOLCHAIN_EXTRA_LIBS
	string "Extra toolchain libraries to be copied to target"
	default BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS if BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS != "" # legacy
	depends on !BR2_STATIC_LIBS
	help
	  If your toolchain provides extra libraries that need to be
	  copied to the target filesystem, enter them here, separated
	  by spaces. The library should not include a suffix or any
	  type of pre/post wildcard.

	  Examples where this can be useful is for adding debug
	  libraries to the target like the GCC libsanitizer.
	  e.g. "libasan liblsan libtsan libubsan"

# This boolean is true if the toolchain provides a built-in full
# featured gettext implementation (glibc), and false if only a stub
# gettext implementation is provided (uclibc, musl)
config BR2_TOOLCHAIN_HAS_FULL_GETTEXT
	bool

config BR2_TARGET_OPTIMIZATION
	string "Target Optimizations"
	default ""
	help
	  Optimizations to use when building for the target host.
	  NOTE: gcc optimization level is defined in build options.

config BR2_TARGET_LDFLAGS
	string "Target linker options"
	help
	  Extra options to pass to the linker when building for the
	  target.

	  Note that options with a '$' sign (eg.
	  -Wl,-rpath='$ORIGIN/../lib') are not supported.

# Options for packages to depend on, if they require at least a
# specific version of the kernel headers.
# Toolchains should choose the adequate option (ie. the highest
# version, not all of them).
config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
	bool

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_7
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6

config BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_8
	bool
	select BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_7
	select BR2_TOOLCHAIN_HEADERS_LATEST

# This should be selected by the latest version, above, to indicate that
# Buildroot does not know of more recent headers than the ones selected.
# This allows using toolchains with headers more recent than Buildroot
# knows about, while still enforcing strict check for older headers.
config BR2_TOOLCHAIN_HEADERS_LATEST
	bool

# This order guarantees that the highest version is set, as kconfig
# stops affecting a value on the first matching default.
config BR2_TOOLCHAIN_HEADERS_AT_LEAST
	string
	default "6.8"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_8
	default "6.7"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_7
	default "6.6"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6
	default "6.5"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5
	default "6.4"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4
	default "6.3"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3
	default "6.2"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2
	default "6.1"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1
	default "6.0"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0
	default "5.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19
	default "5.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18
	default "5.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17
	default "5.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16
	default "5.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15
	default "5.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14
	default "5.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13
	default "5.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12
	default "5.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11
	default "5.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10
	default "5.9"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9
	default "5.8"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8
	default "5.7"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7
	default "5.6"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6
	default "5.5"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5
	default "5.4"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4
	default "5.3"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3
	default "5.2"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2
	default "5.1"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1
	default "5.0"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0
	default "4.20" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20
	default "4.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19
	default "4.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18
	default "4.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17
	default "4.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16
	default "4.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15
	default "4.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14
	default "4.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13
	default "4.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12
	default "4.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11
	default "4.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10
	default "4.9"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9
	default "4.8"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8
	default "4.7"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7
	default "4.6"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6
	default "4.5"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5
	default "4.4"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4
	default "4.3"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3
	default "4.2"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2
	default "4.1"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1
	default "4.0"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0
	default "3.19" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19
	default "3.18" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18
	default "3.17" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
	default "3.16" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16
	default "3.15" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
	default "3.14" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
	default "3.13" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13
	default "3.12" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12
	default "3.11" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11
	default "3.10" if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
	default "3.9"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
	default "3.8"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8
	default "3.7"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7
	default "3.6"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
	default "3.5"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5
	default "3.4"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4
	default "3.3"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3
	default "3.2"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2
	default "3.1"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1
	default "3.0"  if BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
	default "2.6"

config BR2_TOOLCHAIN_GCC_AT_LEAST_4_3
	bool

config BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_3

config BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_4

config BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_5

config BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_6

config BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_7

config BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_8

config BR2_TOOLCHAIN_GCC_AT_LEAST_5
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

config BR2_TOOLCHAIN_GCC_AT_LEAST_6
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_5

config BR2_TOOLCHAIN_GCC_AT_LEAST_7
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_6

config BR2_TOOLCHAIN_GCC_AT_LEAST_8
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_7

config BR2_TOOLCHAIN_GCC_AT_LEAST_9
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_8

config BR2_TOOLCHAIN_GCC_AT_LEAST_10
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_9

config BR2_TOOLCHAIN_GCC_AT_LEAST_11
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_10

config BR2_TOOLCHAIN_GCC_AT_LEAST_12
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_11

config BR2_TOOLCHAIN_GCC_AT_LEAST_13
	bool
	select BR2_TOOLCHAIN_GCC_AT_LEAST_12

# This order guarantees that the highest version is set, as kconfig
# stops affecting a value on the first matching default.
config BR2_TOOLCHAIN_GCC_AT_LEAST
	string
	default "13"	if BR2_TOOLCHAIN_GCC_AT_LEAST_13
	default "12"	if BR2_TOOLCHAIN_GCC_AT_LEAST_12
	default "11"	if BR2_TOOLCHAIN_GCC_AT_LEAST_11
	default "10"	if BR2_TOOLCHAIN_GCC_AT_LEAST_10
	default "9"	if BR2_TOOLCHAIN_GCC_AT_LEAST_9
	default "8"	if BR2_TOOLCHAIN_GCC_AT_LEAST_8
	default "7"	if BR2_TOOLCHAIN_GCC_AT_LEAST_7
	default "6"	if BR2_TOOLCHAIN_GCC_AT_LEAST_6
	default "5"	if BR2_TOOLCHAIN_GCC_AT_LEAST_5
	default "4.9"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
	default "4.8"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
	default "4.7"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
	default "4.6"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_6
	default "4.5"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_5
	default "4.4"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_4
	default "4.3"	if BR2_TOOLCHAIN_GCC_AT_LEAST_4_3

config BR2_TOOLCHAIN_HAS_MNAN_OPTION
	bool
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_9

config BR2_TOOLCHAIN_HAS_SYNC_1
	bool
	default y
	depends on !BR2_m68k_cf
	depends on !BR2_microblaze
	depends on !BR2_sparc
	depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)

config BR2_TOOLCHAIN_HAS_SYNC_2
	bool
	default y if BR2_TOOLCHAIN_HAS_SYNC_1

config BR2_TOOLCHAIN_HAS_SYNC_4
	bool
	default y
	depends on !BR2_m68k_cf
	depends on !BR2_sparc
	depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)

# The availability of __sync for 8-byte types on ARM is somewhat
# complicated:
#
#  - It appeared in gcc starting with gcc 4.7.
#
#  - On ARMv7, there is no problem, it can be directly implemented in
#    userspace.
#
#  - On < ARMv7, it requires help from the kernel. Unfortunately, the
#    libgcc code implementing 8-byte __sync with the help from the
#    kernel calls __write() when a failure occurs, which is a function
#    internal to glibc, not available in uClibc and musl. This means
#    that the 8-byte __sync operations are not available on < ARMv7
#    with uClibc and musl. This problem was fixed as part of gcc
#    PR68059, which was backported to the gcc 5 branch, but isn't yet
#    part of any gcc 5.x release.
#
config BR2_TOOLCHAIN_ARM_HAS_SYNC_8
	bool
	default y
	depends on BR2_arm || BR2_armeb
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7
	depends on BR2_TOOLCHAIN_USES_GLIBC || BR2_ARM_CPU_ARMV7A

# 8-byte intrinsics available on most x86 CPUs, except a few old ones
config BR2_TOOLCHAIN_X86_HAS_SYNC_8
	bool
	default y
	depends on BR2_i386
	depends on !BR2_x86_i486
	depends on !BR2_x86_c3
	depends on !BR2_x86_winchip_c6
	depends on !BR2_x86_winchip2

# 8-byte intrinsics available:
#  - On all 64 bits architecture
#  - On a certain combinations of ARM platforms
#  - On certain x86 32 bits CPUs
config BR2_TOOLCHAIN_HAS_SYNC_8
	bool
	default y if BR2_ARCH_IS_64
	default y if BR2_TOOLCHAIN_ARM_HAS_SYNC_8
	default y if BR2_TOOLCHAIN_X86_HAS_SYNC_8

# libatomic is available since gcc 4.8, when thread support is
# enabled. Also, libatomic doesn't recognize "uclinux" as a valid OS
# part of the tuple, and is therefore not build on uclinux targets,
# which is why BR2_BINFMT_FLAT configurations are excluded.
config BR2_TOOLCHAIN_HAS_LIBATOMIC
	bool
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 && \
		BR2_TOOLCHAIN_HAS_THREADS && \
		!BR2_BINFMT_FLAT

# __atomic intrinsics are available:
# - with gcc 4.8, either through built-ins or libatomic, on all
#   architectures. Since we don't want to separate the cases where
#   libatomic is needed vs. not needed, we simplify thing and only
#   support situations where libatomic is available, even if on some
#   architectures libatomic is not strictly needed as all __atomic
#   intrinsics might be built-in. The only case where libatomic is
#   missing entirely is when the toolchain does not have support for
#   threads. However, a package that does not need threads but still
#   uses atomics is quite a corner case, which does not warrant the
#   added complexity.
# - with gcc 4.7, libatomic did not exist, so only built-ins are
#   available. This means that __atomic can only be used in a subset
#   of the architectures
config BR2_TOOLCHAIN_HAS_ATOMIC
	bool
	default y if BR2_TOOLCHAIN_HAS_LIBATOMIC
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_arm
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_armeb
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_xtensa
	default y if BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 && BR2_ARCH_IS_64

# - libquadmath is not needed/available on all architectures (but gcc
#   correctly handles this already).
# - At least, libquadmath is available on:
#   - i*86
#   - x86_64
#   - PowerPC with vector scalar (VSX) instruction set
# - When available, libquadmath requires wchar support.
config BR2_TOOLCHAIN_HAS_LIBQUADMATH
	bool
	default y if BR2_i386 || BR2_x86_64
	default y if BR2_POWERPC_CPU_HAS_VSX

comment "Bare metal toolchain"

config BR2_TOOLCHAIN_BARE_METAL_BUILDROOT
	bool "Build a bare metal toolchain"
	select BR2_PACKAGE_NEWLIB_BARE_METAL
	help
	  Select if you need a bare-metal toolchain for building
	  platform specific firmware images.

source "toolchain/toolchain-bare-metal-buildroot/Config.in"

endmenu
