summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/debug/gdb.in.cross9
-rwxr-xr-xconfigure28
-rw-r--r--scripts/build/debug/300-gdb.sh1
3 files changed, 38 insertions, 0 deletions
diff --git a/config/debug/gdb.in.cross b/config/debug/gdb.in.cross
index 8309d8f..1c55100 100644
--- a/config/debug/gdb.in.cross
+++ b/config/debug/gdb.in.cross
@@ -3,10 +3,18 @@
config STATIC_TOOLCHAIN
select GDB_CROSS_STATIC if GDB_CROSS
+comment "Cross-gdb - disabled (requires expat; re-run ./configure to enable)"
+ depends on !CONFIGURE_has_expat
+
+comment "Static cross-gdb - disabled (requires static expat; re-run ./configure to enable)"
+ depends on STATIC_TOOLCHAIN && !CONFIGURE_has_static_expat
+
config GDB_CROSS
bool
prompt "Cross-gdb"
default y
+ depends on CONFIGURE_has_expat
+ depends on !STATIC_TOOLCHAIN || CONFIGURE_has_static_expat
select GDB_GDBSERVER if ! BARE_METAL
help
Build and install a cross-gdb for the target, to run on host.
@@ -16,6 +24,7 @@ if GDB_CROSS
config GDB_CROSS_STATIC
bool
prompt "Build a static cross gdb"
+ depends on CONFIGURE_has_static_expat
help
A static cross gdb can be usefull if you debug on a machine that is
not the one that is used to compile the toolchain.
diff --git a/configure b/configure
index 6823db0..05ff859 100755
--- a/configure
+++ b/configure
@@ -462,6 +462,34 @@ has_or_warn lib="libstdc++.a" \
err="static 'libstdc++' is needed to statically link the toolchain's executables" \
kconfig=has_static_libstdcxx
+expat_libs="$( for x in so dylib a; do \
+ printf "libexpat.$x "; \
+ done \
+ )"
+has_or_warn inc="expat.h" \
+ lib="${expat_libs}" \
+ err="The 'expat' header file and library are needed to link cross-gdb's executables" \
+ kconfig=has_expat
+
+# Yes, we may be checking twice for libexpat.a
+# The first is because we need one instance of libexpat (shared or static)
+# because it is needed for cross-gdb; the second is because the static version
+# is required for static-linking, and if missing, the option is removed.
+has_or_warn lib="libexpat.a" \
+ err="static 'expat' is needed to statically link cross-gdb's executables" \
+ kconfig=has_static_expat
+
+for v in 7 6 5 4; do
+ python_incs="${python_incs}$( printf "python2.$v/Python.h " )"
+ python_libs="${python_libs}$( for x in so dylib a; do \
+ printf "libpython2.$v.$x "; \
+ done \
+ )"
+done
+has_or_warn inc="${python_incs}" \
+ lib="${python_libs}" \
+ err="The 'python' header file and library are needed for some features of cross-gdb"
+
#---------------------------------------------------------------------
# Compute the version string
diff --git a/scripts/build/debug/300-gdb.sh b/scripts/build/debug/300-gdb.sh
index e7d771f..6f93cdd 100644
--- a/scripts/build/debug/300-gdb.sh
+++ b/scripts/build/debug/300-gdb.sh
@@ -139,6 +139,7 @@ do_debug_gdb_build() {
--prefix="${CT_PREFIX_DIR}" \
--with-build-sysroot="${CT_SYSROOT_DIR}" \
--with-sysroot="${CT_SYSROOT_DIR}" \
+ --with-expat=yes \
--disable-werror \
"${cross_extra_config[@]}"