b737b12dad
If Binutils and/or GDB are fetched from the unified binutils-gdb repository, then the tarball will contain both Binutils and GDB sources, unlike the "normal" tarballs that contain only the titular package. To keep packages separated in Buildroot we need to disable undesired components when configuring. Binutils and GDB migrated to a common Git repository in the October 2013 [1]. Previous Git repositories were incomplete copies of CVS repository which copied only the relevant files (no binutils files in GDB, and vice versa). In the new binutils-gdb repository there is no such separation and a result all files exist in directory after checkout. So if "configure" and "make" are used without explicit targets, all projects will be built: binutils, ld, gas, bfd, opcodes, gdb, etc. In case of Buildroot this would mean that selecting Binutils only, still will build both Binutils and GDB. And if GDB is selected as well, then both packages will be built two times, and Binutils from GDB directory will overwrite initial build of Binutils (or vice versa if Binutils will be built after the GDB). This is a serious problem, because binutils and GDB use separate branches in this common repository. In case of Buildroot this means that separate Git commits (or tags) should be used when downloading source from Git. This affects only Git repositories, because GNU release tarballs still contain only relevant packages. This change is backward compatible, because if "normal" tarball is used (without extra directories), than --disable-* configure options are just ignored by configure. [1] https://sourceware.org/ml/gdb/2013-10/msg00071.html [Thomas: use variables to factorize options, and add comments in the relevant .mk files to explain what's going on.] Signed-off-by: Anton Kolesov <Anton.Kolesov@synopsys.com> Cc: Alexey Brodkin <abrodkin@synopsys.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
146 lines
4.2 KiB
Makefile
146 lines
4.2 KiB
Makefile
################################################################################
|
|
#
|
|
# gdb
|
|
#
|
|
################################################################################
|
|
|
|
GDB_VERSION = $(call qstrip,$(BR2_GDB_VERSION))
|
|
GDB_SITE = $(BR2_GNU_MIRROR)/gdb
|
|
|
|
ifeq ($(BR2_arc),y)
|
|
GDB_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,gdb,$(GDB_VERSION))
|
|
GDB_SOURCE = gdb-$(GDB_VERSION).tar.gz
|
|
GDB_FROM_GIT = y
|
|
endif
|
|
|
|
ifeq ($(BR2_microblaze),y)
|
|
GDB_SITE = $(call github,Xilinx,gdb,$(GDB_VERSION))
|
|
GDB_SOURCE = gdb-$(GDB_VERSION).tar.gz
|
|
GDB_FROM_GIT = y
|
|
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
|
|
|
|
# When gdb sources are fetched from the binutils-gdb repository, they
|
|
# also contain the binutils sources, but binutils shouldn't be built,
|
|
# so we disable it.
|
|
GDB_DISABLE_BINUTILS_CONF_OPT = \
|
|
--disable-binutils \
|
|
--disable-ld \
|
|
--disable-gas
|
|
|
|
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 \
|
|
$(GDB_DISABLE_BINUTILS_CONF_OPT) \
|
|
$(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 \
|
|
$(GDB_DISABLE_BINUTILS_CONF_OPT) \
|
|
--disable-sim
|
|
|
|
ifeq ($(GDB_FROM_GIT),y)
|
|
HOST_GDB_DEPENDENCIES += host-texinfo
|
|
else
|
|
# don't generate documentation
|
|
GDB_CONF_ENV += ac_cv_prog_MAKEINFO=missing
|
|
HOST_GDB_CONF_ENV += ac_cv_prog_MAKEINFO=missing
|
|
endif
|
|
|
|
# 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
|
|
|
|
HOST_GDB_POST_INSTALL_HOOKS += gen_gdbinit_file
|
|
|
|
$(eval $(autotools-package))
|
|
$(eval $(host-autotools-package))
|