comment "GCC Options"

choice
	prompt "GCC compiler Version"
	default BR2_GCC_VERSION_ARC if BR2_GCC_VERSION_4_8_ARC # legacy
	default BR2_GCC_VERSION_ARC if BR2_arc
	default BR2_GCC_VERSION_POWERPC_SPE if BR2_POWERPC_CPU_HAS_SPE
	default BR2_GCC_VERSION_13_X
	help
	  Select the version of gcc you wish to use.

config BR2_GCC_VERSION_ARC
	bool "gcc arc (13.1)"
	# Only supported architecture
	depends on BR2_arc
	select BR2_TOOLCHAIN_GCC_AT_LEAST_13

config BR2_GCC_VERSION_POWERPC_SPE
	bool "gcc powerpc spe"
	# powerpc spe support has been deprecated since gcc 8.x.
	# https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html
	depends on BR2_POWERPC_CPU_HAS_SPE
	select BR2_TOOLCHAIN_GCC_AT_LEAST_8

config BR2_GCC_VERSION_LEGACY
	bool "gcc 8.x"
	select BR2_TOOLCHAIN_GCC_AT_LEAST_8

config BR2_GCC_VERSION_11_X
	bool "gcc 11.x"
	depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_12
	# powerpc spe support has been deprecated since gcc 8.x.
	# https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html
	depends on !BR2_POWERPC_CPU_HAS_SPE
	# ARC HS48 rel 31 only supported by gcc arc fork.
	depends on !BR2_archs4x_rel31
	select BR2_TOOLCHAIN_GCC_AT_LEAST_11

config BR2_GCC_VERSION_12_X
	bool "gcc 12.x"
	depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_13
	# powerpc spe support has been deprecated since gcc 8.x.
	# https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html
	depends on !BR2_POWERPC_CPU_HAS_SPE
	# ARC HS48 rel 31 only supported by gcc arc fork.
	depends on !BR2_archs4x_rel31
	select BR2_TOOLCHAIN_GCC_AT_LEAST_12

config BR2_GCC_VERSION_13_X
	bool "gcc 13.x"
	# powerpc spe support has been deprecated since gcc 8.x.
	# https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html
	depends on !BR2_POWERPC_CPU_HAS_SPE
	select BR2_TOOLCHAIN_GCC_AT_LEAST_13

endchoice

# libcilkrts was introduced in gcc 4.9 and removed in gcc 8.x
config BR2_GCC_SUPPORTS_LIBCILKRTS
	bool
	default y if !BR2_TOOLCHAIN_GCC_AT_LEAST_8

config BR2_GCC_SUPPORTS_DLANG
	bool
	default y if BR2_aarch64
	default y if BR2_arm
	default y if BR2_i386
	default y if BR2_mips || BR2_mipsel
	default y if BR2_mips64 || BR2_mips64el
	default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
	default y if BR2_x86_64
	default y if BR2_riscv && !BR2_RISCV_64
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_9
	depends on BR2_TOOLCHAIN_USES_GLIBC
	# "The D front-end is now itself written in D, in order to build GDC, you
	# will need a working GDC compiler (GCC version 9.1 or later)."
	# https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=5fee5ec362f7a243f459e6378fd49dfc89dc9fb5
	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_12

config BR2_GCC_VERSION
	string
	default "8.4.0"     if BR2_GCC_VERSION_LEGACY
	default "11.4.0"    if BR2_GCC_VERSION_11_X
	default "12.4.0"    if BR2_GCC_VERSION_12_X
	default "13.3.0"    if BR2_GCC_VERSION_13_X
	default "arc-2023.09-release" if BR2_GCC_VERSION_ARC

config BR2_EXTRA_GCC_CONFIG_OPTIONS
	string "Additional gcc options"
	default ""
	help
	  Any additional gcc configure options you may want to
	  include. Those options are applied for all of the gcc
	  initial, gcc intermediate and gcc final passes.

config BR2_TOOLCHAIN_BUILDROOT_CXX
	bool "Enable C++ support"
	select BR2_INSTALL_LIBSTDCPP
	help
	  Enable this option if you want your toolchain to support the
	  C++ language and you want C++ libraries to be installed on
	  your target system.

comment "Fortran support needs a toolchain w/ wchar"
	depends on BR2_TOOLCHAIN_HAS_LIBQUADMATH
	depends on !BR2_USE_WCHAR # libquadmath

config BR2_TOOLCHAIN_BUILDROOT_FORTRAN
	bool "Enable Fortran support"
	# on architecture building libquadmath, wchar is required
	depends on !BR2_TOOLCHAIN_HAS_LIBQUADMATH || \
		(BR2_TOOLCHAIN_HAS_LIBQUADMATH && BR2_USE_WCHAR)
	# internal compiler error: in gen_reg_rtx, at emit-rtl.cc:1167
	# fixed in gcc 14.x, so disable gcc 12.x/13.x
	depends on !(BR2_microblaze && \
		(BR2_GCC_VERSION_12_X || BR2_GCC_VERSION_13_X))
	select BR2_TOOLCHAIN_HAS_FORTRAN
	help
	  Enable this option if you want your toolchain to support the
	  Fortran language and you want Fortran libraries to be
	  installed on your target system.

config BR2_TOOLCHAIN_BUILDROOT_DLANG
	bool "Enable D language support"
	depends on BR2_GCC_SUPPORTS_DLANG
	select BR2_TOOLCHAIN_HAS_DLANG
	help
	  Enable this option if you want your toolchain to support the
	  D language and you want D libraries to be installed on your
	  target system.

config BR2_GCC_ENABLE_OPENMP
	bool "Enable compiler OpenMP support"
	depends on !BR2_PTHREADS_NONE && !BR2_arc && !BR2_microblaze
	select BR2_TOOLCHAIN_HAS_OPENMP
	help
	  Enable OpenMP support for the compiler

config BR2_GCC_ENABLE_GRAPHITE
	bool "Enable graphite support"
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5
	help
	  This option enables the graphite optimizations in the
	  compiler.

comment "graphite support needs gcc >= 5.x"
	depends on !BR2_TOOLCHAIN_GCC_AT_LEAST_5