author | "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> |
Tue Jul 29 16:48:20 2008 +0000 (2008-07-29) | |
changeset 750 | 0cbd1eb86f68 |
parent 645 | 8e58024f8e37 |
child 801 | abd105984689 |
permissions | -rw-r--r-- |
yann@479 | 1 |
# Build script for the gdb debug facility |
yann@479 | 2 |
|
yann@479 | 3 |
is_enabled="${CT_GDB}" |
yann@479 | 4 |
|
yann@479 | 5 |
do_print_filename() { |
yann@479 | 6 |
[ "${CT_GDB}" = "y" ] || return 0 |
yann@523 | 7 |
echo "gdb$(do_debug_gdb_suffix)" |
yann@598 | 8 |
if [ "${CT_GDB_NATIVE}" = "y" ]; then |
yann@598 | 9 |
echo "ncurses-${CT_NCURSES_VERSION}" |
yann@598 | 10 |
fi |
yann@479 | 11 |
} |
yann@479 | 12 |
|
yann@479 | 13 |
do_debug_gdb_suffix() { |
yann@479 | 14 |
case "${CT_GDB_VERSION}" in |
yann@479 | 15 |
snapshot) ;; |
yann@479 | 16 |
*) echo "-${CT_GDB_VERSION}";; |
yann@479 | 17 |
esac |
yann@479 | 18 |
} |
yann@479 | 19 |
|
yann@479 | 20 |
do_debug_gdb_get() { |
yann@573 | 21 |
CT_GetFile "gdb$(do_debug_gdb_suffix)" \ |
yann@573 | 22 |
{ftp,http}://ftp.gnu.org/pub/gnu/gdb \ |
yann@486 | 23 |
ftp://sources.redhat.com/pub/gdb/{{,old-}releases,snapshots/current} |
yann@573 | 24 |
if [ "${CT_GDB_NATIVE}" = "y" ]; then |
yann@573 | 25 |
CT_GetFile "ncurses-${CT_NCURSES_VERSION}" \ |
yann@573 | 26 |
{ftp,http}://ftp.gnu.org/pub/gnu/ncurses \ |
yann@573 | 27 |
ftp://invisible-island.net/ncurses |
yann@573 | 28 |
fi |
yann@479 | 29 |
} |
yann@479 | 30 |
|
yann@479 | 31 |
do_debug_gdb_extract() { |
yann@523 | 32 |
CT_ExtractAndPatch "gdb$(do_debug_gdb_suffix)" |
yann@598 | 33 |
if [ "${CT_GDB_NATIVE}" = "y" ]; then |
yann@598 | 34 |
CT_ExtractAndPatch "ncurses-${CT_NCURSES_VERSION}" |
yann@598 | 35 |
fi |
yann@479 | 36 |
} |
yann@479 | 37 |
|
yann@479 | 38 |
do_debug_gdb_build() { |
yann@523 | 39 |
gdb_src_dir="${CT_SRC_DIR}/gdb$(do_debug_gdb_suffix)" |
yann@479 | 40 |
|
yann@479 | 41 |
extra_config= |
yann@479 | 42 |
# Version 6.3 and below behave badly with gdbmi |
yann@479 | 43 |
case "${CT_GDB_VERSION}" in |
yann@479 | 44 |
6.2*|6.3) extra_config="${extra_config} --disable-gdbmi";; |
yann@479 | 45 |
esac |
yann@479 | 46 |
|
yann@479 | 47 |
if [ "${CT_GDB_CROSS}" = "y" ]; then |
yann@479 | 48 |
CT_DoStep INFO "Installing cross-gdb" |
yann@479 | 49 |
CT_DoLog EXTRA "Configuring cross-gdb" |
yann@479 | 50 |
|
yann@479 | 51 |
mkdir -p "${CT_BUILD_DIR}/build-gdb-cross" |
yann@479 | 52 |
cd "${CT_BUILD_DIR}/build-gdb-cross" |
yann@479 | 53 |
|
yann@602 | 54 |
cross_extra_config="${extra_config}" |
yann@645 | 55 |
if [ "${CT_GMP_MPFR}" = "y" ]; then |
yann@602 | 56 |
cross_extra_config="${cross_extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}" |
yann@583 | 57 |
fi |
yann@583 | 58 |
case "${CT_THREADS}" in |
yann@602 | 59 |
none) cross_extra_config="${cross_extra_config} --disable-threads";; |
yann@602 | 60 |
*) cross_extra_config="${cross_extra_config} --enable-threads";; |
yann@583 | 61 |
esac |
yann@583 | 62 |
|
yann@479 | 63 |
CC_for_gdb= |
yann@479 | 64 |
LD_for_gdb= |
yann@583 | 65 |
if [ "${CT_GDB_CROSS_STATIC}" = "y" ]; then |
yann@479 | 66 |
CC_for_gdb="gcc -static" |
yann@479 | 67 |
LD_for_gdb="ld -static" |
yann@479 | 68 |
fi |
yann@479 | 69 |
|
yann@602 | 70 |
CT_DoLog DEBUG "Extra config passed: '${cross_extra_config# }'" |
yann@602 | 71 |
|
yann@479 | 72 |
CC="${CC_for_gdb}" \ |
yann@583 | 73 |
LD="${LD_for_gdb}" \ |
yann@669 | 74 |
CT_DoExecLog ALL \ |
yann@479 | 75 |
"${gdb_src_dir}/configure" \ |
yann@479 | 76 |
--build=${CT_BUILD} \ |
yann@479 | 77 |
--host=${CT_HOST} \ |
yann@479 | 78 |
--target=${CT_TARGET} \ |
yann@479 | 79 |
--prefix="${CT_PREFIX_DIR}" \ |
yann@479 | 80 |
--with-build-sysroot="${CT_SYSROOT_DIR}" \ |
yann@669 | 81 |
${cross_extra_config} |
yann@479 | 82 |
|
yann@479 | 83 |
CT_DoLog EXTRA "Building cross-gdb" |
yann@669 | 84 |
CT_DoExecLog ALL make ${PARALLELMFLAGS} |
yann@479 | 85 |
|
yann@479 | 86 |
CT_DoLog EXTRA "Installing cross-gdb" |
yann@669 | 87 |
CT_DoExecLog ALL make install |
yann@479 | 88 |
|
yann@479 | 89 |
CT_EndStep |
yann@479 | 90 |
fi |
yann@479 | 91 |
|
yann@479 | 92 |
if [ "${CT_GDB_NATIVE}" = "y" ]; then |
yann@573 | 93 |
CT_DoStep INFO "Installing native gdb" |
yann@573 | 94 |
|
yann@573 | 95 |
CT_DoStep INFO "Installing ncurses library" |
yann@573 | 96 |
CT_DoLog EXTRA "Configuring ncurses" |
yann@573 | 97 |
mkdir -p "${CT_BUILD_DIR}/build-ncurses" |
yann@573 | 98 |
cd "${CT_BUILD_DIR}/build-ncurses" |
yann@573 | 99 |
|
yann@573 | 100 |
ncurses_opts= |
yann@573 | 101 |
[ "${CT_CC_LANG_CXX}" = "y" ] || ncurses_opts="${ncurses_opts} --without-cxx --without-cxx-binding" |
yann@609 | 102 |
[ "${CT_CC_LANG_ADA}" = "y" ] || ncurses_opts="${ncurses_opts} --without-ada" |
yann@573 | 103 |
|
yann@669 | 104 |
CT_DoExecLog ALL \ |
yann@573 | 105 |
"${CT_SRC_DIR}/ncurses-${CT_NCURSES_VERSION}/configure" \ |
yann@573 | 106 |
--build=${CT_BUILD} \ |
yann@573 | 107 |
--host=${CT_TARGET} \ |
yann@573 | 108 |
--with-build-cc=${CT_CC} \ |
yann@573 | 109 |
--with-build-cpp=${CT_CC} \ |
yann@573 | 110 |
--with-build-cflags="${CT_CFLAGS_FOR_HOST}" \ |
yann@573 | 111 |
--prefix=/usr \ |
yann@573 | 112 |
--with-shared \ |
yann@573 | 113 |
--without-sysmouse \ |
yann@573 | 114 |
--without-progs \ |
yann@573 | 115 |
--enable-termcap \ |
yann@669 | 116 |
${ncurses_opts} |
yann@573 | 117 |
|
yann@573 | 118 |
CT_DoLog EXTRA "Building ncurses" |
yann@669 | 119 |
CT_DoExecLog ALL make ${PARALLELMFLAGS} |
yann@573 | 120 |
|
yann@573 | 121 |
CT_DoLog EXTRA "Installing ncurses" |
yann@669 | 122 |
mkdir -p "${CT_SYSROOT_DIR}/usr/bin" |
yann@669 | 123 |
CT_DoExecLog ALL make DESTDIR="${CT_SYSROOT_DIR}" install |
yann@573 | 124 |
|
yann@573 | 125 |
CT_EndStep |
yann@573 | 126 |
|
yann@479 | 127 |
CT_DoLog EXTRA "Configuring native gdb" |
yann@479 | 128 |
|
yann@479 | 129 |
mkdir -p "${CT_BUILD_DIR}/build-gdb-native" |
yann@479 | 130 |
cd "${CT_BUILD_DIR}/build-gdb-native" |
yann@479 | 131 |
|
yann@602 | 132 |
native_extra_config="${extra_config}" |
yann@583 | 133 |
case "${CT_THREADS}" in |
yann@602 | 134 |
none) native_extra_config="${native_extra_config} --disable-threads";; |
yann@602 | 135 |
*) native_extra_config="${native_extra_config} --enable-threads";; |
yann@583 | 136 |
esac |
yann@622 | 137 |
if [ "${CT_GDB_NATIVE_USE_GMP_MPFR}" = "y" ]; then |
yann@602 | 138 |
native_extra_config="${native_extra_config} --with-gmp=${CT_SYSROOT_DIR}/usr --with-mpfr=${CT_SYSROOT_DIR}/usr" |
yann@602 | 139 |
fi |
yann@583 | 140 |
|
yann@583 | 141 |
if [ "${CT_GDB_NATIVE_STATIC}" = "y" ]; then |
yann@583 | 142 |
CC_for_gdb="${CT_TARGET}-gcc -static" |
yann@583 | 143 |
LD_for_gdb="${CT_TARGET}-ld -static" |
yann@626 | 144 |
else |
yann@626 | 145 |
CC_for_gdb="${CT_TARGET}-gcc" |
yann@626 | 146 |
LD_for_gdb="${CT_TARGET}-ld" |
yann@583 | 147 |
fi |
yann@583 | 148 |
|
yann@583 | 149 |
export ac_cv_func_strncmp_works=yes |
yann@583 | 150 |
|
yann@602 | 151 |
CT_DoLog DEBUG "Extra config passed: '${native_extra_config# }'" |
yann@602 | 152 |
|
yann@583 | 153 |
CC="${CC_for_gdb}" \ |
yann@583 | 154 |
LD="${LD_for_gdb}" \ |
yann@669 | 155 |
CT_DoExecLog ALL \ |
yann@479 | 156 |
"${gdb_src_dir}/configure" \ |
yann@479 | 157 |
--build=${CT_BUILD} \ |
yann@479 | 158 |
--host=${CT_TARGET} \ |
yann@479 | 159 |
--target=${CT_TARGET} \ |
yann@479 | 160 |
--prefix=/usr \ |
yann@479 | 161 |
--with-build-sysroot="${CT_SYSROOT_DIR}" \ |
yann@479 | 162 |
--without-uiout \ |
yann@479 | 163 |
--disable-tui \ |
yann@479 | 164 |
--disable-gdbtk \ |
yann@479 | 165 |
--without-x \ |
yann@479 | 166 |
--disable-sim \ |
yann@583 | 167 |
--disable-werror \ |
yann@479 | 168 |
--without-included-gettext \ |
yann@583 | 169 |
--without-develop \ |
yann@669 | 170 |
${native_extra_config} |
yann@479 | 171 |
|
yann@479 | 172 |
CT_DoLog EXTRA "Building native gdb" |
yann@669 | 173 |
CT_DoExecLog ALL make ${PARALLELMFLAGS} CC=${CT_TARGET}-${CT_CC} |
yann@479 | 174 |
|
yann@479 | 175 |
CT_DoLog EXTRA "Installing native gdb" |
yann@669 | 176 |
CT_DoExecLog ALL make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install |
yann@479 | 177 |
|
yann@583 | 178 |
# Building a native gdb also builds a gdbserver |
yann@583 | 179 |
find "${CT_DEBUG_INSTALL_DIR}" -type f -name gdbserver -exec rm -fv {} + 2>&1 |CT_DoLog ALL |
yann@583 | 180 |
|
yann@583 | 181 |
unset ac_cv_func_strncmp_works |
yann@583 | 182 |
|
yann@583 | 183 |
CT_EndStep |
yann@583 | 184 |
fi |
yann@583 | 185 |
|
yann@583 | 186 |
if [ "${CT_GDB_GDBSERVER}" = "y" ]; then |
yann@583 | 187 |
CT_DoStep INFO "Installing gdbserver" |
yann@583 | 188 |
CT_DoLog EXTRA "Configuring gdbserver" |
yann@583 | 189 |
|
yann@583 | 190 |
mkdir -p "${CT_BUILD_DIR}/build-gdb-gdbserver" |
yann@583 | 191 |
cd "${CT_BUILD_DIR}/build-gdb-gdbserver" |
yann@583 | 192 |
|
yann@583 | 193 |
# Workaround for bad versions, where the configure |
yann@583 | 194 |
# script for gdbserver is not executable... |
yann@583 | 195 |
# Bah, GNU folks strike again... :-( |
yann@583 | 196 |
chmod +x "${gdb_src_dir}/gdb/gdbserver/configure" |
yann@583 | 197 |
|
yann@583 | 198 |
gdbserver_LDFLAGS= |
yann@583 | 199 |
if [ "${CT_GDB_GDBSERVER_STATIC}" = "y" ]; then |
yann@583 | 200 |
gdbserver_LDFLAGS=-static |
yann@583 | 201 |
fi |
yann@583 | 202 |
|
yann@602 | 203 |
gdbserver_extra_config="${extra_config}" |
yann@602 | 204 |
|
yann@583 | 205 |
LDFLAGS="${gdbserver_LDFLAGS}" \ |
yann@669 | 206 |
CT_DoExecLog ALL \ |
yann@583 | 207 |
"${gdb_src_dir}/gdb/gdbserver/configure" \ |
yann@583 | 208 |
--build=${CT_BUILD} \ |
yann@583 | 209 |
--host=${CT_TARGET} \ |
yann@583 | 210 |
--target=${CT_TARGET} \ |
yann@583 | 211 |
--prefix=/usr \ |
yann@583 | 212 |
--sysconfdir=/etc \ |
yann@583 | 213 |
--localstatedir=/var \ |
yann@583 | 214 |
--includedir="${CT_HEADERS_DIR}" \ |
yann@583 | 215 |
--with-build-sysroot="${CT_SYSROOT_DIR}" \ |
yann@583 | 216 |
--program-prefix= \ |
yann@583 | 217 |
--without-uiout \ |
yann@583 | 218 |
--disable-tui \ |
yann@583 | 219 |
--disable-gdbtk \ |
yann@583 | 220 |
--without-x \ |
yann@583 | 221 |
--without-included-gettext \ |
yann@583 | 222 |
--without-develop \ |
yann@669 | 223 |
${gdbserver_extra_config} |
yann@583 | 224 |
|
yann@583 | 225 |
CT_DoLog EXTRA "Building gdbserver" |
yann@669 | 226 |
CT_DoExecLog ALL make ${PARALLELMFLAGS} CC=${CT_TARGET}-${CT_CC} |
yann@583 | 227 |
|
yann@583 | 228 |
CT_DoLog EXTRA "Installing gdbserver" |
yann@669 | 229 |
CT_DoExecLog ALL make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install |
yann@583 | 230 |
|
yann@479 | 231 |
CT_EndStep |
yann@479 | 232 |
fi |
yann@479 | 233 |
} |