yann@479: # Build script for the gdb debug facility yann@479: yann@479: is_enabled="${CT_GDB}" yann@479: yann@479: do_print_filename() { yann@479: [ "${CT_GDB}" = "y" ] || return 0 yann@523: echo "gdb$(do_debug_gdb_suffix)" yann@479: } yann@479: yann@479: do_debug_gdb_suffix() { yann@479: case "${CT_GDB_VERSION}" in yann@479: snapshot) ;; yann@479: *) echo "-${CT_GDB_VERSION}";; yann@479: esac yann@479: } yann@479: yann@479: do_debug_gdb_get() { yann@523: CT_GetFile "gdb$(do_debug_gdb_suffix)" \ yann@486: {ftp,http}://ftp.gnu.org/pub/gnu/gdb \ yann@486: ftp://sources.redhat.com/pub/gdb/{{,old-}releases,snapshots/current} yann@479: } yann@479: yann@479: do_debug_gdb_extract() { yann@523: CT_ExtractAndPatch "gdb$(do_debug_gdb_suffix)" yann@479: } yann@479: yann@479: do_debug_gdb_build() { yann@523: gdb_src_dir="${CT_SRC_DIR}/gdb$(do_debug_gdb_suffix)" yann@479: yann@479: extra_config= yann@479: # Version 6.3 and below behave badly with gdbmi yann@479: case "${CT_GDB_VERSION}" in yann@479: 6.2*|6.3) extra_config="${extra_config} --disable-gdbmi";; yann@479: esac yann@479: yann@479: if [ "${CT_GDB_CROSS}" = "y" ]; then yann@479: CT_DoStep INFO "Installing cross-gdb" yann@479: CT_DoLog EXTRA "Configuring cross-gdb" yann@479: yann@479: mkdir -p "${CT_BUILD_DIR}/build-gdb-cross" yann@479: cd "${CT_BUILD_DIR}/build-gdb-cross" yann@479: yann@479: CC_for_gdb= yann@479: LD_for_gdb= yann@479: if [ "${CT_GDB_CROSS_STATIC_GDBSERVER}" = "y" ]; then yann@479: CC_for_gdb="gcc -static" yann@479: LD_for_gdb="ld -static" yann@479: fi yann@479: yann@479: CC="${CC_for_gdb}" \ yann@479: LD="${LD_forgdb}" \ yann@479: "${gdb_src_dir}/configure" \ yann@479: --build=${CT_BUILD} \ yann@479: --host=${CT_HOST} \ yann@479: --target=${CT_TARGET} \ yann@479: --prefix="${CT_PREFIX_DIR}" \ yann@479: --with-build-sysroot="${CT_SYSROOT_DIR}" \ yann@479: --enable-threads \ yann@479: ${extra_config} 2>&1 |CT_DoLog ALL yann@479: yann@479: CT_DoLog EXTRA "Building cross-gdb" yann@479: make ${PARALLELMFLAGS} 2>&1 |CT_DoLog ALL yann@479: yann@479: CT_DoLog EXTRA "Installing cross-gdb" yann@479: make install 2>&1 |CT_DoLog ALL yann@479: yann@479: CT_EndStep yann@479: yann@479: CT_DoStep INFO "Installing gdbserver" yann@479: CT_DoLog EXTRA "Configuring gdbserver" yann@479: yann@479: mkdir -p "${CT_BUILD_DIR}/build-gdb-gdbserver" yann@479: cd "${CT_BUILD_DIR}/build-gdb-gdbserver" yann@479: yann@479: # Workaround for bad versions, where the configure yann@479: # script for gdbserver is not executable... yann@479: # Bah, GNU folks strike again... :-( yann@479: chmod +x "${gdb_src_dir}/gdb/gdbserver/configure" yann@479: yann@479: gdbserver_LDFLAGS= yann@479: if [ "${CT_GDB_CROSS_STATIC_GDBSERVER}" = "y" ]; then yann@479: gdbserver_LDFLAGS=-static yann@479: fi yann@479: yann@479: LDFLAGS="${gdbserver_LDFLAGS}" \ yann@479: "${gdb_src_dir}/gdb/gdbserver/configure" \ yann@479: --build=${CT_BUILD} \ yann@479: --host=${CT_TARGET} \ yann@479: --target=${CT_TARGET} \ yann@479: --prefix=/usr \ yann@479: --sysconfdir=/etc \ yann@479: --localstatedir=/var \ yann@479: --includedir="${CT_HEADERS_DIR}" \ yann@479: --with-build-sysroot="${CT_SYSROOT_DIR}" \ yann@479: --program-prefix= \ yann@479: --without-uiout \ yann@479: --disable-tui \ yann@479: --disable-gdbtk \ yann@479: --without-x \ yann@479: --without-included-gettext \ yann@479: ${extra_config} 2>&1 |CT_DoLog ALL yann@479: yann@479: CT_DoLog EXTRA "Building gdbserver" yann@479: make ${PARALLELMFLAGS} CC=${CT_TARGET}-${CT_CC} 2>&1 |CT_DoLog ALL yann@479: yann@479: CT_DoLog EXTRA "Installing gdbserver" yann@479: make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install 2>&1 |CT_DoLog ALL yann@479: yann@479: CT_EndStep yann@479: fi yann@479: yann@479: if [ "${CT_GDB_NATIVE}" = "y" ]; then yann@479: CT_DoStep EXTRA "Installing native gdb" yann@479: CT_DoLog EXTRA "Configuring native gdb" yann@479: yann@479: mkdir -p "${CT_BUILD_DIR}/build-gdb-native" yann@479: cd "${CT_BUILD_DIR}/build-gdb-native" yann@479: yann@479: "${gdb_src_dir}/configure" \ yann@479: --build=${CT_BUILD} \ yann@479: --host=${CT_TARGET} \ yann@479: --target=${CT_TARGET} \ yann@479: --prefix=/usr \ yann@479: --with-build-sysroot="${CT_SYSROOT_DIR}" \ yann@479: --without-uiout \ yann@479: --disable-tui \ yann@479: --disable-gdbtk \ yann@479: --without-x \ yann@479: --disable-sim \ yann@479: --disable-gdbserver \ yann@479: --without-included-gettext \ yann@479: ${extra_config} 2>&1 |CT_DoLog ALL yann@479: yann@479: CT_DoLog EXTRA "Building native gdb" yann@479: make ${PARALLELMFLAGS} CC=${CT_TARGET}-${CT_CC} 2>&1 |CT_DoLog ALL yann@479: yann@479: CT_DoLog EXTRA "Installing native gdb" yann@479: make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install 2>&1 |CT_DoLog ALL yann@479: yann@479: CT_EndStep yann@479: fi yann@479: }