comment "Gdb Options"

config BR2_PACKAGE_GDB
	bool "Build gdb debugger for the Target"
	select BR2_PACKAGE_NCURSES
	depends on BR2_USE_WCHAR
	help
	    Build the full gdb debugger to run on the target.

comment "Gdb debugger for the target needs WCHAR support in toolchain"
	depends on !BR2_USE_WHCAR

config BR2_PACKAGE_GDB_SERVER
	bool "Build gdb server for the Target"
	help
	    Build the gdbserver stub to run on the target.
	    A full gdb is needed to debug the progam.

config BR2_PACKAGE_GDB_HOST
	bool "Build gdb for the Host"
	# cross-gdb is supposed to be part of the external
	# toolchain. And the build currently fails.
	depends on !BR2_TOOLCHAIN_EXTERNAL
	help
	    Build gdb to run on the host to debug programs run on the target.

choice
	prompt "GDB debugger Version"
	default BR2_GDB_VERSION_6_8 if !BR2_avr32
	default BR2_GDB_VERSION_6_7_1_AVR32_2_1_5 if BR2_avr32
	depends on BR2_PACKAGE_GDB || BR2_PACKAGE_GDB_SERVER || BR2_PACKAGE_GDB_HOST
	help
	  Select the version of gdb you wish to use.

	config BR2_GDB_VERSION_6_6
		bool "gdb 6.6"
		depends on !BR2_avr32
		depends on BR2_DEPRECATED

	config BR2_GDB_VERSION_6_7_1
		depends on !BR2_avr32
		bool "gdb 6.7.1"

	config BR2_GDB_VERSION_6_7_1_AVR32_2_1_5
		depends on BR2_avr32
		bool "gdb 6.7.1-avr32-2.1.5"

	config BR2_GDB_VERSION_6_8
		bool "gdb 6.8"
		depends on !BR2_avr32

	config BR2_GDB_VERSION_7_0_1
		bool "gdb 7.0.1"
		select BR2_PTHREAD_DEBUG if !BR2_PTHREADS_NONE

	config BR2_GDB_VERSION_7_1
		bool "gdb 7.1"
		select BR2_PTHREAD_DEBUG if !BR2_PTHREADS_NONE

endchoice

config BR2_GDB_VERSION
	string
	default "6.6"      if BR2_GDB_VERSION_6_6
	default "6.7.1"    if BR2_GDB_VERSION_6_7_1
	default "6.7.1-avr32-2.1.5" if BR2_GDB_VERSION_6_7_1_AVR32_2_1_5
	default "6.8"      if BR2_GDB_VERSION_6_8
	default "7.0.1"    if BR2_GDB_VERSION_7_0_1
	default "7.1"      if BR2_GDB_VERSION_7_1
