comment "GCC Options"

choice
	prompt "GCC compiler Version"
	default BR2_GCC_VERSION_ARC if BR2_arc
	default BR2_GCC_VERSION_CSKY if BR2_csky
	default BR2_GCC_VERSION_9_X
	help
	  Select the version of gcc you wish to use.

config BR2_GCC_VERSION_ARC
	bool "gcc arc (9.x)"
	# Only supported architecture
	depends on BR2_arc
	select BR2_TOOLCHAIN_GCC_AT_LEAST_9

config BR2_GCC_VERSION_CSKY
	bool "gcc csky"
	# Only supported architecture
	depends on BR2_csky
	select BR2_TOOLCHAIN_GCC_AT_LEAST_6

config BR2_GCC_VERSION_8_X
	bool "gcc 8.x"
	depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_9
	# Broken or unsupported architectures
	depends on !BR2_or1k
	select BR2_TOOLCHAIN_GCC_AT_LEAST_8

config BR2_GCC_VERSION_9_X
	bool "gcc 9.x"
	depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_10
	# powerpc spe support has been deprecated since gcc 8.x.
	# https://gcc.gnu.org/ml/gcc/2018-04/msg00102.html
	depends on !BR2_powerpc_SPE
	# C-SKY sk610 needs abiv1, which is not supported in
	# upstream gcc. C-SKY gcc upstream support not tested
	# with upstream binutils and glibc.
	depends on !BR2_csky
	select BR2_TOOLCHAIN_GCC_AT_LEAST_9

config BR2_GCC_VERSION_10_X
	bool "gcc 10.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_SPE
	# C-SKY sk610 needs abiv1, which is not supported in
	# upstream gcc. C-SKY gcc upstream support not tested
	# with upstream binutils and glibc.
	depends on !BR2_csky
	select BR2_TOOLCHAIN_GCC_AT_LEAST_10

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

config BR2_GCC_VERSION
	string
	default "8.4.0"     if BR2_GCC_VERSION_8_X
	default "9.3.0"     if BR2_GCC_VERSION_9_X
	default "10.2.0"    if BR2_GCC_VERSION_10_X
	default "arc-2020.09-release" if BR2_GCC_VERSION_ARC
	default "48152afb96c59733d5bc79e3399bb7b3d4b44266" if BR2_GCC_VERSION_CSKY

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)
	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_LTO
	bool "Enable compiler link-time-optimization support"
	select BR2_BINUTILS_ENABLE_LTO
	help
	  This option enables link-time optimization (LTO) support in
	  gcc.

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
