config BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS
	bool
	default y
	depends on !((BR2_arm || BR2_armeb) && BR2_BINFMT_FLAT)
	depends on !BR2_microblaze
	depends on !BR2_nios2
	depends on !BR2_or1k
	depends on !BR2_riscv
	depends on !BR2_nds32

comment "Host GDB Options"
	depends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
	depends on BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS

config BR2_PACKAGE_HOST_GDB
	bool "Build cross gdb for the host"
	# When the external toolchain gdbserver is used, we shouldn't
	# allow to build a cross-gdb, as the one of the external
	# toolchain should be used.
	depends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
	depends on BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS
	help
	  Build a cross gdb that runs on the host machine and debugs
	  programs running on the target. It requires 'gdbserver'
	  installed on the target, see BR2_PACKAGE_GDB_SERVER to
	  enable it.

if BR2_PACKAGE_HOST_GDB

config BR2_PACKAGE_HOST_GDB_TUI
	bool "TUI support"
	help
	  This option enables terminal user interface (TUI) for gdb

choice
	prompt "Python support"
	default BR2_PACKAGE_HOST_GDB_NOPYTHON
	help
	  Select the version of Python you wish to use

config BR2_PACKAGE_HOST_GDB_NOPYTHON
	bool "None"
	help
	  This option disables Python support in the cross gdb.

config BR2_PACKAGE_HOST_GDB_PYTHON
	bool "Python 2"
	help
	  This option enables the Python 2 support in the cross gdb.

config BR2_PACKAGE_HOST_GDB_PYTHON3
	bool "Python 3"
	help
	  This option enables the Python 3 support in the cross gdb.

endchoice

config BR2_PACKAGE_HOST_GDB_SIM
	bool "Simulator support"
	depends on !BR2_arc
	help
	  This option enables the simulator support in the cross gdb.

choice
	prompt "GDB debugger Version"
	default BR2_GDB_VERSION_9_2
	depends on !BR2_arc
	depends on !BR2_csky
	help
	  Select the version of gdb you wish to use.

config BR2_GDB_VERSION_8_3
	bool "gdb 8.3.x"

config BR2_GDB_VERSION_9_2
	bool "gdb 9.2.x"

config BR2_GDB_VERSION_10
	bool "gdb 10.x"

endchoice

endif

# If cross-gdb is not enabled, the latest working version is chosen.
config BR2_GDB_VERSION
	string
	default "arc-2020.09-release-gdb" if BR2_arc
	default "4ecb98fbc2f94dbe01b69384afbc515107de73df" if BR2_csky
	default "8.3.1"    if BR2_GDB_VERSION_8_3
	default "9.2"      if BR2_GDB_VERSION_9_2 || !BR2_PACKAGE_HOST_GDB
	default "10.1"	   if BR2_GDB_VERSION_10
	depends on BR2_PACKAGE_GDB || BR2_PACKAGE_HOST_GDB
