################################################################################ # # gdb # ################################################################################ GDB_VERSION = $(call qstrip,$(BR2_GDB_VERSION)) GDB_SITE = $(BR2_GNU_MIRROR)/gdb # When no version is defined, it means that cross-gdb for the host has # not been enabled, and we will only build gdbserver or gdb for the # target. In this case, use the latest available version # automatically. ifeq ($(GDB_VERSION),) ifeq ($(BR2_bfin),y) GDB_VERSION = 6.6a else ifeq ($(BR2_avr32),y) GDB_VERSION = 6.7.1-avr32-2.1.5 else GDB_VERSION = 7.5.1 endif endif ifeq ($(GDB_VERSION),6.7.1-avr32-2.1.5) GDB_SITE = ftp://www.at91.com/pub/buildroot/ endif GDB_SOURCE = gdb-$(GDB_VERSION).tar.bz2 GDB_LICENSE = GPLv2+ LGPLv2+ GPLv3+ LGPLv3+ GDB_LICENSE_FILES = COPYING COPYING.LIB COPYING3 COPYING3.LIB # We only want gdbserver and not the entire debugger. ifeq ($(BR2_PACKAGE_GDB_DEBUGGER),) GDB_SUBDIR = gdb/gdbserver HOST_GDB_SUBDIR = . else GDB_DEPENDENCIES = ncurses endif # For the host variant, we really want to build with XML support, # which is needed to read XML descriptions of target architectures. HOST_GDB_DEPENDENCIES = host-expat # Apply the Xtensa specific patches XTENSA_CORE_NAME = $(call qstrip, $(BR2_XTENSA_CORE_NAME)) ifneq ($(XTENSA_CORE_NAME),) define GDB_XTENSA_PRE_PATCH tar xf $(BR2_XTENSA_OVERLAY_DIR)/xtensa_$(XTENSA_CORE_NAME).tar \ -C $(@D) --strip-components=1 gdb endef GDB_PRE_PATCH_HOOKS += GDB_XTENSA_PRE_PATCH HOST_GDB_PRE_PATCH_HOOKS += GDB_XTENSA_PRE_PATCH endif GDB_CONF_ENV = \ ac_cv_type_uintptr_t=yes \ gt_cv_func_gettext_libintl=yes \ ac_cv_func_dcgettext=yes \ gdb_cv_func_sigsetjmp=yes \ bash_cv_func_strcoll_broken=no \ bash_cv_must_reinstall_sighandlers=no \ bash_cv_func_sigsetjmp=present \ bash_cv_have_mbstate_t=yes \ gdb_cv_func_sigsetjmp=yes GDB_CONF_OPT = \ --without-uiout \ --disable-tui \ --disable-gdbtk \ --without-x \ --disable-sim \ $(if $(BR2_PACKAGE_GDB_SERVER),--enable-gdbserver) \ --with-curses \ --without-included-gettext \ --disable-werror # This removes some unneeded Python scripts and XML target description # files that are not useful for a normal usage of the debugger. define GDB_REMOVE_UNNEEDED_FILES $(RM) -rf $(TARGET_DIR)/usr/share/gdb endef GDB_POST_INSTALL_TARGET_HOOKS += GDB_REMOVE_UNNEEDED_FILES # This installs the gdbserver somewhere into the $(HOST_DIR) so that # it becomes an integral part of the SDK, if the toolchain generated # by Buildroot is later used as an external toolchain. We install it # in debug-root/usr/bin/gdbserver so that it matches what Crosstool-NG # does. define GDB_SDK_INSTALL_GDBSERVER $(INSTALL) -D -m 0755 $(TARGET_DIR)/usr/bin/gdbserver \ $(HOST_DIR)/usr/$(GNU_TARGET_NAME)/debug-root/usr/bin/gdbserver endef ifeq ($(BR2_PACKAGE_GDB_SERVER),y) GDB_POST_INSTALL_TARGET_HOOKS += GDB_SDK_INSTALL_GDBSERVER endif # A few notes: # * --target, because we're doing a cross build rather than a real # host build. # * --enable-static because gdb really wants to use libbfd.a # * --disable-shared, otherwise the old 6.7 version specific to AVR32 # doesn't build because it wants to link a shared libbfd.so against # non-PIC liberty.a. HOST_GDB_CONF_OPT = \ --target=$(GNU_TARGET_NAME) \ --enable-static --disable-shared \ --without-uiout \ --disable-tui \ --disable-gdbtk \ --without-x \ --enable-threads \ --disable-werror \ --without-included-gettext \ --disable-sim # legacy $arch-linux-gdb symlink define HOST_GDB_ADD_SYMLINK cd $(HOST_DIR)/usr/bin && \ ln -snf $(GNU_TARGET_NAME)-gdb $(ARCH)-linux-gdb endef HOST_GDB_POST_INSTALL_HOOKS += HOST_GDB_ADD_SYMLINK $(eval $(autotools-package)) $(eval $(host-autotools-package))