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_8_3
	depends on !BR2_arc
	depends on !BR2_csky
	help
	  Select the version of gdb you wish to use.

config BR2_GDB_VERSION_8_2
	bool "gdb 8.2.x"

config BR2_GDB_VERSION_8_3
	bool "gdb 8.3.x"

config BR2_GDB_VERSION_9_2
	bool "gdb 9.2.x"

endchoice

endif

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