comment "gdb/gdbserver needs a toolchain w/ threads, threads debug"
	depends on !BR2_aarch64
	depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_HAS_THREADS_DEBUG

config BR2_PACKAGE_GDB
	bool "gdb"
	# When the external toolchain gdbserver is copied to the
	# target, we don't allow building a separate gdbserver. The
	# one from the external toolchain should be used.
	select BR2_PACKAGE_GDB_SERVER if \
	       (!BR2_PACKAGE_GDB_DEBUGGER && !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY)
	depends on BR2_TOOLCHAIN_HAS_THREADS && BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	depends on !BR2_aarch64
	help
	  GDB, the GNU Project debugger, allows you to see what is
	  going on `inside' another program while it executes -- or
	  what another program was doing at the moment it crashed.

	  This option allows to build gdbserver and/or the gdb
	  debugger for the target.

	  For embedded development, the most common solution is to
	  build only 'gdbserver' for the target, and use a cross-gdb
	  on the host. See BR2_PACKAGE_HOST_GDB in the Toolchain menu
	  to enable one. Notice that external toolchains often provide
	  their own pre-built cross-gdb and gdbserver binaries.

	  http://www.gnu.org/software/gdb/

if BR2_PACKAGE_GDB

config BR2_PACKAGE_GDB_SERVER
	bool "gdbserver"
	depends on !BR2_TOOLCHAIN_EXTERNAL_GDB_SERVER_COPY
	help
	  Build the gdbserver stub to run on the target.
	  A full gdb is needed to debug the progam.

config BR2_PACKAGE_GDB_DEBUGGER
	bool "full debugger"
	select BR2_PACKAGE_NCURSES
	depends on BR2_USE_WCHAR
	depends on !BR2_sh && !BR2_sh64 && !BR2_avr32 && !BR2_microblaze && !BR2_bfin

comment "full gdb on target needs a toolchain w/ wchar"
	depends on !BR2_sh && !BR2_sh64 && !BR2_avr32 && !BR2_microblaze && !BR2_bfin
	depends on !BR2_USE_WCHAR

endif
