comment "Gdb Options"

config BR2_PACKAGE_GDB
	bool "Build gdb debugger for the Target"
	select BR2_PACKAGE_NCURSES
	depends on BR2_USE_WCHAR
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on !BR2_sh && !BR2_sh64
	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_WCHAR

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_6 if !BR2_bfin
	default BR2_GDB_VERSION_6_7_1_AVR32_2_1_5 if BR2_avr32
	default BR2_GDB_VERSION_7_3
	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_bfin

	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 || BR2_bfin)
		depends on BR2_DEPRECATED

	config BR2_GDB_VERSION_7_0_1
		bool "gdb 7.0.1"
		depends on !BR2_bfin
		depends on BR2_DEPRECATED
		select BR2_PTHREAD_DEBUG if !BR2_PTHREADS_NONE

	config BR2_GDB_VERSION_7_1
		bool "gdb 7.1"
		depends on !BR2_bfin
		select BR2_PTHREAD_DEBUG if !BR2_PTHREADS_NONE

	config BR2_GDB_VERSION_7_2
		bool "gdb 7.2.x"
		depends on !BR2_bfin
		select BR2_PTHREAD_DEBUG if !BR2_PTHREADS_NONE

	config BR2_GDB_VERSION_7_3
		bool "gdb 7.3.x"
		depends on !BR2_bfin
		select BR2_PTHREAD_DEBUG if !BR2_PTHREADS_NONE

endchoice

config BR2_GDB_VERSION
	string
	default "6.6a"     if BR2_GDB_VERSION_6_6
	default "6.7.1-avr32-2.1.5" if BR2_GDB_VERSION_6_7_1_AVR32_2_1_5
	default "6.8a"     if BR2_GDB_VERSION_6_8
	default "7.0.1a"   if BR2_GDB_VERSION_7_0_1
	default "7.1a"     if BR2_GDB_VERSION_7_1
	default "7.2a"     if BR2_GDB_VERSION_7_2
	default "7.3.1"    if BR2_GDB_VERSION_7_3
