1 ################################################################################
5 ################################################################################
7 GDB_VERSION
= $(call qstrip
,$(BR2_GDB_VERSION
))
8 GDB_SITE
= $(BR2_GNU_MIRROR
)/gdb
9 GDB_SOURCE
= gdb-
$(GDB_VERSION
).
tar.xz
12 GDB_SITE
= $(call github
,foss-for-synopsys-dwc-arc-processors
,binutils-gdb
,$(GDB_VERSION
))
13 GDB_SOURCE
= gdb-
$(GDB_VERSION
).
tar.gz
17 ifeq ($(BR2_microblaze
),y
)
18 GDB_SITE
= $(call github
,Xilinx
,gdb
,$(GDB_VERSION
))
19 GDB_SOURCE
= gdb-
$(GDB_VERSION
).
tar.gz
23 GDB_LICENSE
= GPLv2
+, LGPLv2
+, GPLv3
+, LGPLv3
+
24 GDB_LICENSE_FILES
= COPYING COPYING.LIB COPYING3 COPYING3.LIB
26 # We only want gdbserver and not the entire debugger.
27 ifeq ($(BR2_PACKAGE_GDB_DEBUGGER
),)
28 GDB_SUBDIR
= gdb
/gdbserver
31 GDB_DEPENDENCIES
= ncurses \
32 $(if
$(BR2_PACKAGE_LIBICONV
),libiconv
)
35 # For the host variant, we really want to build with XML support,
36 # which is needed to read XML descriptions of target architectures. We
38 HOST_GDB_DEPENDENCIES
= host-expat host-ncurses
40 # Disable building documentation
41 GDB_MAKE_OPTS
+= MAKEINFO
=true
42 GDB_INSTALL_TARGET_OPTS
+= MAKEINFO
=true DESTDIR
=$(TARGET_DIR
) install
43 HOST_GDB_MAKE_OPTS
+= MAKEINFO
=true
44 HOST_GDB_INSTALL_OPTS
+= MAKEINFO
=true
install
46 # Apply the Xtensa specific patches
47 XTENSA_CORE_NAME
= $(call qstrip
, $(BR2_XTENSA_CORE_NAME
))
48 ifneq ($(XTENSA_CORE_NAME
),)
49 define GDB_XTENSA_PRE_PATCH
50 tar xf
$(BR2_XTENSA_OVERLAY_DIR
)/xtensa_
$(XTENSA_CORE_NAME
).
tar \
51 -C
$(@D
) --strip-components
=1 gdb
53 GDB_PRE_PATCH_HOOKS
+= GDB_XTENSA_PRE_PATCH
54 HOST_GDB_PRE_PATCH_HOOKS
+= GDB_XTENSA_PRE_PATCH
57 ifeq ($(GDB_FROM_GIT
),y
)
58 GDB_DEPENDENCIES
+= host-flex host-bison
59 HOST_GDB_DEPENDENCIES
+= host-flex host-bison
62 # When gdb sources are fetched from the binutils-gdb repository, they
63 # also contain the binutils sources, but binutils shouldn't be built,
65 GDB_DISABLE_BINUTILS_CONF_OPTS
= \
71 ac_cv_type_uintptr_t
=yes \
72 gt_cv_func_gettext_libintl
=yes \
73 ac_cv_func_dcgettext
=yes \
74 gdb_cv_func_sigsetjmp
=yes \
75 bash_cv_func_strcoll_broken
=no \
76 bash_cv_must_reinstall_sighandlers
=no \
77 bash_cv_func_sigsetjmp
=present \
78 bash_cv_have_mbstate_t
=yes \
79 gdb_cv_func_sigsetjmp
=yes
81 # Starting with gdb 7.11, the bundled gnulib tries to use
82 # rpl_gettimeofday (gettimeofday replacement) due to the code being
83 # unable to determine if the replacement function should be used or
84 # not when cross-compiling with uClibc or musl as C libraries. So use
85 # gl_cv_func_gettimeofday_clobber=no to not use rpl_gettimeofday,
86 # assuming musl and uClibc have a properly working gettimeofday
87 # implementation. It needs to be passed to GDB_CONF_ENV to build
88 # gdbserver only but also to GDB_MAKE_ENV, because otherwise it does
89 # not get passed to the configure script of nested packages while
90 # building gdbserver with full debugger.
91 GDB_CONF_ENV
+= gl_cv_func_gettimeofday_clobber
=no
92 GDB_MAKE_ENV
= gl_cv_func_gettimeofday_clobber
=no
94 # The shared only build is not supported by gdb, so enable static build for
95 # build-in libraries with --enable-static.
101 $(GDB_DISABLE_BINUTILS_CONF_OPTS
) \
102 $(if
$(BR2_PACKAGE_GDB_SERVER
),--enable-gdbserver
) \
104 --without-included-gettext \
108 # When gdb is built as C++ application for ARC it segfaults at runtime
109 # So we pass --disable-build-with-cxx config option to force gdb not to
110 # be built as C++ app.
112 GDB_CONF_OPTS
+= --disable-build-with-cxx
115 # gdb 7.12+ by default builds with a C++ compiler, which doesn't work
116 # when we don't have C++ support in the toolchain
117 ifneq ($(BR2_INSTALL_LIBSTDCPP
),y
)
118 GDB_CONF_OPTS
+= --disable-build-with-cxx
121 ifeq ($(BR2_PACKAGE_GDB_TUI
),y
)
122 GDB_CONF_OPTS
+= --enable-tui
124 GDB_CONF_OPTS
+= --disable-tui
127 ifeq ($(BR2_PACKAGE_GDB_PYTHON
),y
)
128 GDB_CONF_OPTS
+= --with-python
=$(TOPDIR
)/package
/gdb
/gdb-python-config
129 GDB_DEPENDENCIES
+= python
131 GDB_CONF_OPTS
+= --without-python
134 ifeq ($(BR2_PACKAGE_EXPAT
),y
)
135 GDB_CONF_OPTS
+= --with-expat
136 GDB_CONF_OPTS
+= --with-libexpat-prefix
=$(STAGING_DIR
)/usr
137 GDB_DEPENDENCIES
+= expat
139 GDB_CONF_OPTS
+= --without-expat
142 ifeq ($(BR2_PACKAGE_XZ
),y
)
143 GDB_CONF_OPTS
+= --with-lzma
144 GDB_CONF_OPTS
+= --with-liblzma-prefix
=$(STAGING_DIR
)/usr
145 GDB_DEPENDENCIES
+= xz
147 GDB_CONF_OPTS
+= --without-lzma
150 ifeq ($(BR2_PACKAGE_ZLIB
),y
)
151 GDB_CONF_OPTS
+= --with-zlib
152 GDB_DEPENDENCIES
+= zlib
154 GDB_CONF_OPTS
+= --without-zlib
157 # This removes some unneeded Python scripts and XML target description
158 # files that are not useful for a normal usage of the debugger.
159 define GDB_REMOVE_UNNEEDED_FILES
160 $(RM
) -rf
$(TARGET_DIR
)/usr
/share
/gdb
163 GDB_POST_INSTALL_TARGET_HOOKS
+= GDB_REMOVE_UNNEEDED_FILES
165 # This installs the gdbserver somewhere into the $(HOST_DIR) so that
166 # it becomes an integral part of the SDK, if the toolchain generated
167 # by Buildroot is later used as an external toolchain. We install it
168 # in debug-root/usr/bin/gdbserver so that it matches what Crosstool-NG
170 define GDB_SDK_INSTALL_GDBSERVER
171 $(INSTALL
) -D
-m
0755 $(TARGET_DIR
)/usr
/bin
/gdbserver \
172 $(HOST_DIR
)/usr
/$(GNU_TARGET_NAME
)/debug-root
/usr
/bin
/gdbserver
175 ifeq ($(BR2_PACKAGE_GDB_SERVER
),y
)
176 GDB_POST_INSTALL_TARGET_HOOKS
+= GDB_SDK_INSTALL_GDBSERVER
180 # * --target, because we're doing a cross build rather than a real
182 # * --enable-static because gdb really wants to use libbfd.a
183 HOST_GDB_CONF_OPTS
= \
184 --target
=$(GNU_TARGET_NAME
) \
191 --without-included-gettext \
192 $(GDB_DISABLE_BINUTILS_CONF_OPTS
)
194 ifeq ($(BR2_PACKAGE_HOST_GDB_TUI
),y
)
195 HOST_GDB_CONF_OPTS
+= --enable-tui
197 HOST_GDB_CONF_OPTS
+= --disable-tui
200 ifeq ($(BR2_PACKAGE_HOST_GDB_PYTHON
),y
)
201 HOST_GDB_CONF_OPTS
+= --with-python
=$(HOST_DIR
)/usr
/bin
/python2
202 HOST_GDB_DEPENDENCIES
+= host-python
204 HOST_GDB_CONF_OPTS
+= --without-python
207 # workaround a bug if in-tree build is used for bfin sim
208 define HOST_GDB_BFIN_SIM_WORKAROUND
209 $(RM
) $(@D
)/sim
/common
/tconfig.h
212 ifeq ($(BR2_PACKAGE_HOST_GDB_SIM
),y
)
213 HOST_GDB_CONF_OPTS
+= --enable-sim
215 HOST_GDB_PRE_CONFIGURE_HOOKS
+= HOST_GDB_BFIN_SIM_WORKAROUND
218 HOST_GDB_CONF_OPTS
+= --disable-sim
221 # legacy $arch-linux-gdb symlink
222 define HOST_GDB_ADD_SYMLINK
223 cd
$(HOST_DIR
)/usr
/bin
&& \
224 ln
-snf
$(GNU_TARGET_NAME
)-gdb
$(ARCH
)-linux-gdb
227 HOST_GDB_POST_INSTALL_HOOKS
+= HOST_GDB_ADD_SYMLINK
229 HOST_GDB_POST_INSTALL_HOOKS
+= gen_gdbinit_file
231 $(eval
$(autotools-package
))
232 $(eval
$(host-autotools-package
))