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@573: [ "${CT_GDB_NATIVE}" = "y" ] && echo "ncurses-${CT_NCURSES_VERSION}" 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@573: CT_GetFile "gdb$(do_debug_gdb_suffix)" \ yann@573: {ftp,http}://ftp.gnu.org/pub/gnu/gdb \ yann@486: ftp://sources.redhat.com/pub/gdb/{{,old-}releases,snapshots/current} yann@573: if [ "${CT_GDB_NATIVE}" = "y" ]; then yann@573: CT_GetFile "ncurses-${CT_NCURSES_VERSION}" \ yann@573: {ftp,http}://ftp.gnu.org/pub/gnu/ncurses \ yann@573: ftp://invisible-island.net/ncurses yann@573: fi yann@479: } yann@479: yann@479: do_debug_gdb_extract() { yann@523: CT_ExtractAndPatch "gdb$(do_debug_gdb_suffix)" yann@573: [ "${CT_GDB_NATIVE}" = "y" ] && CT_ExtractAndPatch "ncurses-${CT_NCURSES_VERSION}" 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@573: CT_DoStep INFO "Installing native gdb" yann@573: yann@573: CT_DoStep INFO "Installing ncurses library" yann@573: CT_DoLog EXTRA "Configuring ncurses" yann@573: mkdir -p "${CT_BUILD_DIR}/build-ncurses" yann@573: cd "${CT_BUILD_DIR}/build-ncurses" yann@573: yann@573: ncurses_opts= yann@573: [ "${CT_CC_LANG_CXX}" = "y" ] || ncurses_opts="${ncurses_opts} --without-cxx --without-cxx-binding" yann@573: yann@573: "${CT_SRC_DIR}/ncurses-${CT_NCURSES_VERSION}/configure" \ yann@573: --build=${CT_BUILD} \ yann@573: --host=${CT_TARGET} \ yann@573: --with-build-cc=${CT_CC} \ yann@573: --with-build-cpp=${CT_CC} \ yann@573: --with-build-cflags="${CT_CFLAGS_FOR_HOST}" \ yann@573: --prefix=/usr \ yann@573: --with-shared \ yann@573: --without-sysmouse \ yann@573: --without-progs \ yann@573: --enable-termcap \ yann@573: --without-develop \ yann@573: ${ncurses_opts} 2>&1 |CT_DoLog ALL yann@573: yann@573: CT_DoLog EXTRA "Building ncurses" yann@573: make ${PARALLELMFLAGS} 2>&1 |CT_DoLog ALL yann@573: yann@573: CT_DoLog EXTRA "Installing ncurses" yann@573: make DESTDIR="${CT_SYSROOT_DIR}" install 2>&1 |CT_DoLog ALL yann@573: yann@573: CT_EndStep yann@573: 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@573: --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: }