scripts/build/debug/300-gdb.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Sep 30 18:19:18 2008 +0000 (2008-09-30)
changeset 892 187d34a9adf4
parent 818 7f65fde1eb5b
child 916 68af6b83ff7e
permissions -rw-r--r--
Better handle the second pass core gcc build, differentiating between gcc prior to 4.3 with gcc from 4.3.
Simplify detecting wether gcc is 4.3 and later, or older than 4.3 (we already know from .config).

/trunk/scripts/build/cc/gcc.sh | 22 13 9 0 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
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@821
    20
do_debug_gdb_parts() {
yann@821
    21
    do_gdb=
yann@821
    22
    do_insight=
yann@821
    23
    do_ncurses=
yann@821
    24
yann@821
    25
    if [ "${CT_GDB_CROSS}" = y ]; then
yann@821
    26
        if [ "${CT_GDB_CROSS_INSIGHT}" = "y" ]; then
yann@821
    27
            do_insight=y
yann@821
    28
        else
yann@821
    29
            do_gdb=y
yann@821
    30
        fi
yann@821
    31
    fi
yann@821
    32
yann@821
    33
    if [ "${CT_GDB_GDBSERVER}" = "y" ]; then
yann@821
    34
        do_gdb=y
yann@821
    35
    fi
yann@821
    36
yann@821
    37
    if [ "${CT_GDB_NATIVE}" = "y" ]; then
yann@821
    38
        do_gdb=y
yann@821
    39
        do_ncurses=y
yann@821
    40
    fi
yann@821
    41
}
yann@821
    42
yann@479
    43
do_debug_gdb_get() {
yann@821
    44
    do_debug_gdb_parts
yann@821
    45
yann@821
    46
    if [ "${do_gdb}" = "y" ]; then
yann@821
    47
        CT_GetFile "gdb$(do_debug_gdb_suffix)"              \
yann@821
    48
                   {ftp,http}://ftp.gnu.org/pub/gnu/gdb     \
yann@821
    49
                   ftp://sources.redhat.com/pub/gdb/{{,old-}releases,snapshots/current}
yann@821
    50
    fi
yann@821
    51
yann@821
    52
    if [ "${do_insight}" = "y" ]; then
yann@821
    53
        CT_GetFile "insight-${CT_GDB_VERSION}"                                              \
yann@821
    54
                   ftp://sourceware.org/pub/insight/releases                                \
yann@821
    55
                   {ftp,http}://ftp.twaren.net/Unix/Sourceware/insight/releases             \
yann@821
    56
                   {ftp,http}://ftp.gwdg.de/pub/linux/sources.redhat.com/insight/releases
yann@821
    57
    fi
yann@821
    58
yann@821
    59
    if [ "${do_ncurses}" = "y" ]; then
yann@573
    60
        CT_GetFile "ncurses-${CT_NCURSES_VERSION}"          \
yann@573
    61
                   {ftp,http}://ftp.gnu.org/pub/gnu/ncurses \
yann@573
    62
                   ftp://invisible-island.net/ncurses
yann@573
    63
    fi
yann@479
    64
}
yann@479
    65
yann@479
    66
do_debug_gdb_extract() {
yann@821
    67
    do_debug_gdb_parts
yann@821
    68
yann@821
    69
    if [ "${do_gdb}" = "y" ]; then
yann@821
    70
        CT_ExtractAndPatch "gdb$(do_debug_gdb_suffix)"
yann@821
    71
    fi
yann@821
    72
yann@821
    73
    if [ "${do_insight}" = "y" ]; then
yann@821
    74
        CT_ExtractAndPatch "insight-${CT_GDB_VERSION}"
yann@821
    75
    fi
yann@821
    76
yann@821
    77
    if [ "${do_ncurses}" = "y" ]; then
yann@598
    78
        CT_ExtractAndPatch "ncurses-${CT_NCURSES_VERSION}"
yann@598
    79
    fi
yann@479
    80
}
yann@479
    81
yann@479
    82
do_debug_gdb_build() {
yann@523
    83
    gdb_src_dir="${CT_SRC_DIR}/gdb$(do_debug_gdb_suffix)"
yann@821
    84
    insight_src_dir="${CT_SRC_DIR}/insight-${CT_GDB_VERSION}"
yann@479
    85
yann@479
    86
    extra_config=
yann@479
    87
    # Version 6.3 and below behave badly with gdbmi
yann@479
    88
    case "${CT_GDB_VERSION}" in
yann@479
    89
        6.2*|6.3)   extra_config="${extra_config} --disable-gdbmi";;
yann@479
    90
    esac
yann@479
    91
yann@479
    92
    if [ "${CT_GDB_CROSS}" = "y" ]; then
yann@479
    93
        CT_DoStep INFO "Installing cross-gdb"
yann@479
    94
        CT_DoLog EXTRA "Configuring cross-gdb"
yann@479
    95
yann@479
    96
        mkdir -p "${CT_BUILD_DIR}/build-gdb-cross"
yann@479
    97
        cd "${CT_BUILD_DIR}/build-gdb-cross"
yann@479
    98
yann@602
    99
        cross_extra_config="${extra_config}"
yann@645
   100
        if [ "${CT_GMP_MPFR}" = "y" ]; then
yann@602
   101
            cross_extra_config="${cross_extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}"
yann@583
   102
        fi
yann@583
   103
        case "${CT_THREADS}" in
yann@602
   104
            none)   cross_extra_config="${cross_extra_config} --disable-threads";;
yann@602
   105
            *)      cross_extra_config="${cross_extra_config} --enable-threads";;
yann@583
   106
        esac
yann@583
   107
yann@479
   108
        CC_for_gdb=
yann@479
   109
        LD_for_gdb=
yann@583
   110
        if [ "${CT_GDB_CROSS_STATIC}" = "y" ]; then
yann@479
   111
            CC_for_gdb="gcc -static"
yann@479
   112
            LD_for_gdb="ld -static"
yann@479
   113
        fi
yann@479
   114
yann@821
   115
        gdb_cross_configure="${gdb_src_dir}/configure"
yann@821
   116
        [ "${CT_GDB_CROSS_INSIGHT}" = "y" ] && gdb_cross_configure="${insight_src_dir}/configure"
yann@821
   117
yann@602
   118
        CT_DoLog DEBUG "Extra config passed: '${cross_extra_config# }'"
yann@602
   119
yann@479
   120
        CC="${CC_for_gdb}"                              \
yann@583
   121
        LD="${LD_for_gdb}"                              \
yann@669
   122
        CT_DoExecLog ALL                                \
yann@821
   123
        "${gdb_cross_configure}"                        \
yann@479
   124
            --build=${CT_BUILD}                         \
yann@479
   125
            --host=${CT_HOST}                           \
yann@479
   126
            --target=${CT_TARGET}                       \
yann@479
   127
            --prefix="${CT_PREFIX_DIR}"                 \
yann@479
   128
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
yann@801
   129
            --disable-werror                            \
yann@669
   130
            ${cross_extra_config}
yann@479
   131
yann@479
   132
        CT_DoLog EXTRA "Building cross-gdb"
yann@669
   133
        CT_DoExecLog ALL make ${PARALLELMFLAGS}
yann@479
   134
yann@479
   135
        CT_DoLog EXTRA "Installing cross-gdb"
yann@669
   136
        CT_DoExecLog ALL make install
yann@479
   137
yann@479
   138
        CT_EndStep
yann@479
   139
    fi
yann@479
   140
yann@479
   141
    if [ "${CT_GDB_NATIVE}" = "y" ]; then
yann@573
   142
        CT_DoStep INFO "Installing native gdb"
yann@573
   143
yann@573
   144
        CT_DoStep INFO "Installing ncurses library"
yann@573
   145
        CT_DoLog EXTRA "Configuring ncurses"
yann@573
   146
        mkdir -p "${CT_BUILD_DIR}/build-ncurses"
yann@573
   147
        cd "${CT_BUILD_DIR}/build-ncurses"
yann@573
   148
yann@573
   149
        ncurses_opts=
yann@573
   150
        [ "${CT_CC_LANG_CXX}" = "y" ] || ncurses_opts="${ncurses_opts} --without-cxx --without-cxx-binding"
yann@609
   151
        [ "${CT_CC_LANG_ADA}" = "y" ] || ncurses_opts="${ncurses_opts} --without-ada"
yann@573
   152
yann@669
   153
        CT_DoExecLog ALL                                        \
yann@573
   154
        "${CT_SRC_DIR}/ncurses-${CT_NCURSES_VERSION}/configure" \
yann@573
   155
            --build=${CT_BUILD}                                 \
yann@573
   156
            --host=${CT_TARGET}                                 \
yann@573
   157
            --with-build-cc=${CT_CC}                            \
yann@573
   158
            --with-build-cpp=${CT_CC}                           \
yann@573
   159
            --with-build-cflags="${CT_CFLAGS_FOR_HOST}"         \
yann@573
   160
            --prefix=/usr                                       \
yann@573
   161
            --with-shared                                       \
yann@573
   162
            --without-sysmouse                                  \
yann@573
   163
            --without-progs                                     \
yann@573
   164
            --enable-termcap                                    \
yann@669
   165
            ${ncurses_opts}
yann@573
   166
yann@573
   167
        CT_DoLog EXTRA "Building ncurses"
yann@669
   168
        CT_DoExecLog ALL make ${PARALLELMFLAGS}
yann@573
   169
yann@573
   170
        CT_DoLog EXTRA "Installing ncurses"
yann@669
   171
        mkdir -p "${CT_SYSROOT_DIR}/usr/bin"
yann@669
   172
        CT_DoExecLog ALL make DESTDIR="${CT_SYSROOT_DIR}" install
yann@573
   173
yann@573
   174
        CT_EndStep
yann@573
   175
yann@479
   176
        CT_DoLog EXTRA "Configuring native gdb"
yann@479
   177
yann@479
   178
        mkdir -p "${CT_BUILD_DIR}/build-gdb-native"
yann@479
   179
        cd "${CT_BUILD_DIR}/build-gdb-native"
yann@479
   180
yann@602
   181
        native_extra_config="${extra_config}"
yann@583
   182
        case "${CT_THREADS}" in
yann@602
   183
            none)   native_extra_config="${native_extra_config} --disable-threads";;
yann@602
   184
            *)      native_extra_config="${native_extra_config} --enable-threads";;
yann@583
   185
        esac
yann@622
   186
        if [ "${CT_GDB_NATIVE_USE_GMP_MPFR}" = "y" ]; then
yann@602
   187
            native_extra_config="${native_extra_config} --with-gmp=${CT_SYSROOT_DIR}/usr --with-mpfr=${CT_SYSROOT_DIR}/usr"
yann@602
   188
        fi
yann@583
   189
yann@583
   190
        if [ "${CT_GDB_NATIVE_STATIC}" = "y" ]; then
yann@583
   191
            CC_for_gdb="${CT_TARGET}-gcc -static"
yann@583
   192
            LD_for_gdb="${CT_TARGET}-ld -static"
yann@626
   193
        else
yann@626
   194
            CC_for_gdb="${CT_TARGET}-gcc"
yann@626
   195
            LD_for_gdb="${CT_TARGET}-ld"
yann@583
   196
        fi
yann@583
   197
yann@583
   198
        export ac_cv_func_strncmp_works=yes
yann@583
   199
yann@602
   200
        CT_DoLog DEBUG "Extra config passed: '${native_extra_config# }'"
yann@602
   201
yann@583
   202
        CC="${CC_for_gdb}"                              \
yann@583
   203
        LD="${LD_for_gdb}"                              \
yann@669
   204
        CT_DoExecLog ALL                                \
yann@479
   205
        "${gdb_src_dir}/configure"                      \
yann@479
   206
            --build=${CT_BUILD}                         \
yann@479
   207
            --host=${CT_TARGET}                         \
yann@479
   208
            --target=${CT_TARGET}                       \
yann@479
   209
            --prefix=/usr                               \
yann@479
   210
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
yann@479
   211
            --without-uiout                             \
yann@479
   212
            --disable-tui                               \
yann@479
   213
            --disable-gdbtk                             \
yann@479
   214
            --without-x                                 \
yann@479
   215
            --disable-sim                               \
yann@583
   216
            --disable-werror                            \
yann@479
   217
            --without-included-gettext                  \
yann@583
   218
            --without-develop                           \
yann@669
   219
            ${native_extra_config}
yann@479
   220
yann@479
   221
        CT_DoLog EXTRA "Building native gdb"
yann@669
   222
        CT_DoExecLog ALL make ${PARALLELMFLAGS} CC=${CT_TARGET}-${CT_CC}
yann@479
   223
yann@479
   224
        CT_DoLog EXTRA "Installing native gdb"
yann@669
   225
        CT_DoExecLog ALL make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install
yann@479
   226
yann@583
   227
        # Building a native gdb also builds a gdbserver
yann@818
   228
        find "${CT_DEBUG_INSTALL_DIR}" -type f -name gdbserver -exec rm -fv {} \; 2>&1 |CT_DoLog ALL
yann@583
   229
yann@583
   230
        unset ac_cv_func_strncmp_works
yann@583
   231
yann@583
   232
        CT_EndStep
yann@583
   233
    fi
yann@583
   234
yann@583
   235
    if [ "${CT_GDB_GDBSERVER}" = "y" ]; then
yann@583
   236
        CT_DoStep INFO "Installing gdbserver"
yann@583
   237
        CT_DoLog EXTRA "Configuring gdbserver"
yann@583
   238
yann@583
   239
        mkdir -p "${CT_BUILD_DIR}/build-gdb-gdbserver"
yann@583
   240
        cd "${CT_BUILD_DIR}/build-gdb-gdbserver"
yann@583
   241
yann@583
   242
        # Workaround for bad versions, where the configure
yann@583
   243
        # script for gdbserver is not executable...
yann@583
   244
        # Bah, GNU folks strike again... :-(
yann@583
   245
        chmod +x "${gdb_src_dir}/gdb/gdbserver/configure"
yann@583
   246
yann@583
   247
        gdbserver_LDFLAGS=
yann@583
   248
        if [ "${CT_GDB_GDBSERVER_STATIC}" = "y" ]; then
yann@583
   249
            gdbserver_LDFLAGS=-static
yann@583
   250
        fi
yann@583
   251
yann@602
   252
        gdbserver_extra_config="${extra_config}"
yann@602
   253
yann@583
   254
        LDFLAGS="${gdbserver_LDFLAGS}"                  \
yann@669
   255
        CT_DoExecLog ALL                                \
yann@583
   256
        "${gdb_src_dir}/gdb/gdbserver/configure"        \
yann@583
   257
            --build=${CT_BUILD}                         \
yann@583
   258
            --host=${CT_TARGET}                         \
yann@583
   259
            --target=${CT_TARGET}                       \
yann@583
   260
            --prefix=/usr                               \
yann@583
   261
            --sysconfdir=/etc                           \
yann@583
   262
            --localstatedir=/var                        \
yann@583
   263
            --includedir="${CT_HEADERS_DIR}"            \
yann@583
   264
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
yann@583
   265
            --program-prefix=                           \
yann@583
   266
            --without-uiout                             \
yann@583
   267
            --disable-tui                               \
yann@583
   268
            --disable-gdbtk                             \
yann@583
   269
            --without-x                                 \
yann@583
   270
            --without-included-gettext                  \
yann@583
   271
            --without-develop                           \
yann@801
   272
            --disable-werror                            \
yann@669
   273
            ${gdbserver_extra_config}
yann@583
   274
yann@583
   275
        CT_DoLog EXTRA "Building gdbserver"
yann@669
   276
        CT_DoExecLog ALL make ${PARALLELMFLAGS} CC=${CT_TARGET}-${CT_CC}
yann@583
   277
yann@583
   278
        CT_DoLog EXTRA "Installing gdbserver"
yann@669
   279
        CT_DoExecLog ALL make DESTDIR="${CT_DEBUG_INSTALL_DIR}" install
yann@583
   280
yann@479
   281
        CT_EndStep
yann@479
   282
    fi
yann@479
   283
}