summaryrefslogtreecommitdiff
path: root/scripts/build/debug/gdb.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/build/debug/gdb.sh')
-rw-r--r--scripts/build/debug/gdb.sh124
1 files changed, 124 insertions, 0 deletions
diff --git a/scripts/build/debug/gdb.sh b/scripts/build/debug/gdb.sh
new file mode 100644
index 0000000..457e899
--- /dev/null
+++ b/scripts/build/debug/gdb.sh
@@ -0,0 +1,124 @@
+# Build script for the gdb debug facility
+
+is_enabled="${CT_GDB}"
+
+do_debug_gdb_suffix() {
+ case "${CT_GDB_VERSION}" in
+ snapshot) ;;
+ *) echo "-${CT_GDB_VERSION}";;
+ esac
+}
+
+do_debug_gdb_get() {
+ CT_GetFile "gdb`do_debug_gdb_suffix`" \
+ ftp://ftp.gnu.org/pub/gnu/gdb \
+ ftp://sources.redhat.com/pub/gdb/releases \
+ ftp://sources.redhat.com/pub/gdb/old-releases \
+ ftp://sources.redhat.com/pub/gdb/snapshots/current
+}
+
+do_debug_gdb_extract() {
+ CT_ExtractAndPatch "gdb`do_debug_gdb_suffix`"
+}
+
+do_debug_gdb_build() {
+ gdb_src_dir="${CT_SRC_DIR}/gdb`do_debug_gdb_suffix`"
+
+ extra_config=
+ # Version 6.3 and below behave badly with gdbmi
+ case "${CT_GDB_VERSION}" in
+ 6.2*|6.3) extra_config="${extra_config} --disable-gdbmi";;
+ esac
+
+ if [ "${CT_GDB_CROSS}" = "y" ]; then
+ CT_DoStep EXTRA "Installing cross-gdb"
+ CT_DoLog EXTRA "Configuring cross-gdb"
+
+ mkdir -p "${CT_BUILD_DIR}/build-gdb-cross"
+ cd "${CT_BUILD_DIR}/build-gdb-cross"
+
+ "${gdb_src_dir}/configure" \
+ --build=${CT_BUILD} \
+ --host=${CT_HOST} \
+ --target=${CT_TARGET} \
+ --prefix="${CT_INSTALL_DIR}" \
+ --with-build-sysroot="${CT_SYSROOT_DIR}" \
+ --enable-threads \
+ ${extra_config} 2>&1 |CT_DoLog ALL
+
+ CT_DoLog EXTRA "Building cross-gdb"
+ make ${PARALLELMFLAGS} 2>&1 |CT_DoLog ALL
+
+ CT_DoLog EXTRA "Installing cross-gdb"
+ make install 2>&1 |CT_DoLog ALL
+
+ CT_EndStep
+
+ CT_DoStep EXTRA "Installing gdbserver"
+ CT_DoLog EXTRA "Configuring gdbserver"
+
+ mkdir -p "${CT_BUILD_DIR}/build-gdb-gdbserver"
+ cd "${CT_BUILD_DIR}/build-gdb-gdbserver"
+
+ # Workaround for bad versions, where the configure
+ # script for gdbserver is not executable...
+ # Bah, GNU folks strike again... :-(
+ chmod +x "${gdb_src_dir}/gdb/gdbserver/configure"
+
+ "${gdb_src_dir}/gdb/gdbserver/configure" \
+ --build=${CT_BUILD} \
+ --host=${CT_TARGET} \
+ --target=${CT_TARGET} \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --includedir="${CT_HEADERS_DIR}" \
+ --with-build-sysroot="${CT_SYSROOT_DIR}" \
+ --program-prefix= \
+ --without-uiout \
+ --disable-tui \
+ --disable-gdbtk \
+ --without-x \
+ --without-included-gettext \
+ ${extra_config} 2>&1 |CT_DoLog ALL
+
+ CT_DoLog EXTRA "Building gdbserver"
+ make ${PARALLELMFLAGS} CC=${CT_TARGET}-gcc 2>&1 |CT_DoLog ALL
+
+ CT_DoLog EXTRA "Installing gdbserver"
+ make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install 2>&1 |CT_DoLog ALL
+
+ CT_EndStep
+ fi
+
+ if [ "${CT_GDB_NATIVE}" = "y" ]; then
+ CT_DoStep EXTRA "Installing native gdb"
+ CT_DoLog EXTRA "Configuring native gdb"
+
+ mkdir -p "${CT_BUILD_DIR}/build-gdb-cross"
+ cd "${CT_BUILD_DIR}/build-gdb-cross"
+
+ "${gdb_src_dir}/configure" \
+ --build=${CT_BUILD} \
+ --host=${CT_TARGET} \
+ --target=${CT_TARGET} \
+ --prefix=/usr \
+ --with-build-sysroot="${CT_SYSROOT_DIR}" \
+ --without-uiout \
+ --disable-tui \
+ --disable-gdbtk \
+ --without-x \
+ --disable-sim \
+ --enable-gdbserver \
+ --without-included-gettext \
+ ${extra_config} 2>&1 |CT_DoLog ALL
+
+ CT_DoLog EXTRA "Building native gdb"
+ make ${PARALLELMFLAGS} CC=${CT_TARGET}-gcc 2>&1 |CT_DoLog ALL
+
+ CT_DoLog EXTRA "Installing native gdb"
+ make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install 2>&1 |CT_DoLog ALL
+
+ CT_EndStep
+ fi
+}