config BR2_PACKAGE_GDB_ARCH_SUPPORTS
	bool
	default y
	depends on !((BR2_arm || BR2_armeb) && BR2_BINFMT_FLAT)
	depends on !BR2_microblaze

comment "gdb needs a glibc or uclibc toolchain"
	depends on BR2_or1k
	depends on BR2_TOOLCHAIN_USES_MUSL

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

comment "gdb/gdbserver >= 8.x needs a toolchain w/ C++, gcc >= 4.8"
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8

config BR2_PACKAGE_GDB
	bool "gdb"
	depends on BR2_TOOLCHAIN_HAS_THREADS && BR2_TOOLCHAIN_HAS_THREADS_DEBUG
	depends on BR2_PACKAGE_GDB_ARCH_SUPPORTS
	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
	depends on BR2_INSTALL_LIBSTDCPP
	# The or1k musl port is incomplete, elf_gregset_t definition is missing:
	# https://git.musl-libc.org/cgit/musl/tree/arch/or1k/bits/user.h?h=v1.2.3
	depends on !BR2_or1k || !BR2_TOOLCHAIN_USES_MUSL
	# 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)
	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 program.

config BR2_PACKAGE_GDB_DEBUGGER
	bool "full debugger"
	depends on BR2_USE_WCHAR
	depends on !BR2_sh
	select BR2_PACKAGE_GMP
	select BR2_PACKAGE_MPFR
	select BR2_PACKAGE_NCURSES
	select BR2_PACKAGE_ZLIB

comment "full gdb on target needs a toolchain w/ wchar"
	depends on !BR2_sh
	depends on !BR2_USE_WCHAR

if BR2_PACKAGE_GDB_DEBUGGER

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

	  "The GDB Text User Interface (TUI) is a terminal interface
	  which uses the curses library to show the source file, the
	  assembly output, the program registers and GDB commands in
	  separate text windows."

	  https://sourceware.org/gdb/current/onlinedocs/gdb/TUI.html

config BR2_PACKAGE_GDB_PYTHON
	bool "Python support"
	depends on BR2_PACKAGE_PYTHON3
	help
	  This option enables Python support in the target gdb.

endif

endif
