scripts/build/debug/300-gdb.sh
author Daniel Price <daniel.price@gmail.com>
Tue Nov 20 16:59:17 2012 -0800 (2012-11-20)
changeset 3126 333d3e40cbd1
parent 3091 41967d32b54e
child 3187 575a6f1d3b52
permissions -rw-r--r--
scripts: refine static linking check to better guide the user

The current mechanism to check if static linking is possible, and the mesage
displayed on failure, can be puzzling to the unsuspecting user.

Also, the current implementation is not using the existing infrastructure,
and is thus difficult to enhance with new tests.

So, switch to using the standard CT_DoExecLog infra, and use four tests to
check for the host compiler:
- check we can run it
- check it can build a trivial program
- check it can statically link that program
- check if it statically link with libstdc++

That should cover most of the problems. Hopefully.

(At the same time, fix a typo in a comment)

Signed-off-by: Daniel Price <daniel.price@gmail.com>
[yann.morin.1998@free.fr: split original patch for self-contained changes]
[yann.morin.1998@free.fr: use steps to better see gcc's output]
[yann.morin.1998@free.fr: commit log]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Message-Id: <163f86b5216fc08c672a.1353459722@nipigon.dssd.com>
Patchwork-Id: 200536
yann@479
     1
# Build script for the gdb debug facility
yann@479
     2
yann@1743
     3
# The version of ncurses to use. Yes, it's hard-coded.
yann@1743
     4
# It's used only internally by crosstool-NG, and is
yann@1743
     5
# not exposed outside, so we don't care about providing
yann@1743
     6
# config options for this.
yann@2616
     7
CT_DEBUG_GDB_NCURSES_VERSION="5.9"
yann@1743
     8
yann@2101
     9
# Ditto for the expat library
bryanhundven@3036
    10
CT_DEBUG_GDB_EXPAT_VERSION="2.1.0"
yann@2101
    11
yann@821
    12
do_debug_gdb_parts() {
yann@821
    13
    do_gdb=
yann@821
    14
    do_ncurses=
yann@2101
    15
    do_expat=
yann@821
    16
yann@821
    17
    if [ "${CT_GDB_CROSS}" = y ]; then
yann@1916
    18
        do_gdb=y
yann@821
    19
    fi
yann@821
    20
yann@821
    21
    if [ "${CT_GDB_GDBSERVER}" = "y" ]; then
yann@821
    22
        do_gdb=y
yann@821
    23
    fi
yann@821
    24
yann@821
    25
    if [ "${CT_GDB_NATIVE}" = "y" ]; then
yann@821
    26
        do_gdb=y
linux@2021
    27
        # GDB on Mingw depends on PDcurses, not ncurses
linux@2021
    28
        if [ "${CT_MINGW32}" != "y" ]; then
linux@2021
    29
            do_ncurses=y
linux@2021
    30
        fi
yann@2101
    31
        do_expat=y
yann@821
    32
    fi
yann@821
    33
}
yann@821
    34
yann@479
    35
do_debug_gdb_get() {
yann@2303
    36
    local linaro_version
yann@2303
    37
    local linaro_series
yann@2303
    38
    local linaro_base_url="http://launchpad.net/gdb-linaro"
yann@2303
    39
yann@2303
    40
    # Account for the Linaro versioning
yann@2303
    41
    linaro_version="$( echo "${CT_GDB_VERSION}"      \
yann@2303
    42
                       |sed -r -e 's/^linaro-//;'   \
yann@2303
    43
                     )"
yann@2303
    44
    linaro_series="$( echo "${linaro_version}"      \
yann@2303
    45
                      |sed -r -e 's/-.*//;'         \
yann@2303
    46
                    )"
yann@2303
    47
yann@821
    48
    do_debug_gdb_parts
yann@821
    49
yann@821
    50
    if [ "${do_gdb}" = "y" ]; then
david@3091
    51
        if [ "${CT_GDB_CUSTOM}" = "y" ]; then
david@3091
    52
            CT_GetCustom "gdb" "${CT_GDB_VERSION}" "${CT_GDB_CUSTOM_LOCATION}"
david@3091
    53
        else
david@3091
    54
            CT_GetFile "gdb-${CT_GDB_VERSION}"                          \
david@3091
    55
                       {ftp,http}://ftp.gnu.org/pub/gnu/gdb             \
david@3091
    56
                       ftp://sources.redhat.com/pub/gdb/{,old-}releases \
david@3091
    57
                       "${linaro_base_url}/${linaro_series}/${linaro_version}/+download"
david@3091
    58
        fi
yann@821
    59
    fi
yann@821
    60
yann@821
    61
    if [ "${do_ncurses}" = "y" ]; then
yann@1743
    62
        CT_GetFile "ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}" .tar.gz  \
yann@573
    63
                   {ftp,http}://ftp.gnu.org/pub/gnu/ncurses \
yann@573
    64
                   ftp://invisible-island.net/ncurses
yann@573
    65
    fi
yann@2101
    66
yann@2101
    67
    if [ "${do_expat}" = "y" ]; then
yann@2101
    68
        CT_GetFile "expat-${CT_DEBUG_GDB_EXPAT_VERSION}" .tar.gz    \
bryanhundven@3035
    69
                   http://downloads.sourceforge.net/project/expat/expat/${CT_DEBUG_GDB_EXPAT_VERSION}
yann@2101
    70
    fi
yann@479
    71
}
yann@479
    72
yann@479
    73
do_debug_gdb_extract() {
yann@821
    74
    do_debug_gdb_parts
yann@821
    75
yann@821
    76
    if [ "${do_gdb}" = "y" ]; then
david@3091
    77
        # If using custom directory location, nothing to do
david@3091
    78
        if [    "${CT_GDB_CUSTOM}" = "y" \
david@3091
    79
             -a -d "${CT_SRC_DIR}/gdb-${CT_GDB_VERSION}" ]; then
david@3091
    80
            return 0
david@3091
    81
        fi
yann@1899
    82
        CT_Extract "gdb-${CT_GDB_VERSION}"
yann@1901
    83
        CT_Patch "gdb" "${CT_GDB_VERSION}"
yann@821
    84
    fi
yann@821
    85
yann@821
    86
    if [ "${do_ncurses}" = "y" ]; then
yann@1743
    87
        CT_Extract "ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}"
yann@2326
    88
        CT_DoExecLog ALL chmod -R u+w "${CT_SRC_DIR}/ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}"
yann@1901
    89
        CT_Patch "ncurses" "${CT_DEBUG_GDB_NCURSES_VERSION}"
yann@598
    90
    fi
yann@2101
    91
yann@2101
    92
    if [ "${do_expat}" = "y" ]; then
yann@2101
    93
        CT_Extract "expat-${CT_DEBUG_GDB_EXPAT_VERSION}"
yann@2101
    94
        CT_Patch "expat" "${CT_DEBUG_GDB_EXPAT_VERSION}"
yann@2101
    95
    fi
yann@479
    96
}
yann@479
    97
yann@479
    98
do_debug_gdb_build() {
yann@1481
    99
    local -a extra_config
yann@1481
   100
linux@2021
   101
    do_debug_gdb_parts
linux@2021
   102
yann@1899
   103
    gdb_src_dir="${CT_SRC_DIR}/gdb-${CT_GDB_VERSION}"
yann@479
   104
yann@479
   105
    # Version 6.3 and below behave badly with gdbmi
yann@479
   106
    case "${CT_GDB_VERSION}" in
yann@1481
   107
        6.2*|6.3)   extra_config+=("--disable-gdbmi");;
yann@479
   108
    esac
yann@479
   109
benoit@2490
   110
    if [ "${CT_GDB_HAS_PKGVERSION_BUGURL}" = "y" ]; then
benoit@2503
   111
        extra_config+=("--with-pkgversion=${CT_PKGVERSION}")
benoit@2503
   112
        [ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}")
benoit@2490
   113
    fi
benoit@2490
   114
yann@479
   115
    if [ "${CT_GDB_CROSS}" = "y" ]; then
yann@1481
   116
        local -a cross_extra_config
yann@2570
   117
        local gcc_version
yann@1481
   118
yann@479
   119
        CT_DoStep INFO "Installing cross-gdb"
yann@479
   120
        CT_DoLog EXTRA "Configuring cross-gdb"
yann@479
   121
yann@479
   122
        mkdir -p "${CT_BUILD_DIR}/build-gdb-cross"
yann@479
   123
        cd "${CT_BUILD_DIR}/build-gdb-cross"
yann@479
   124
yann@1481
   125
        cross_extra_config=("${extra_config[@]}")
yann@583
   126
        case "${CT_THREADS}" in
yann@1481
   127
            none)   cross_extra_config+=("--disable-threads");;
yann@1481
   128
            *)      cross_extra_config+=("--enable-threads");;
yann@583
   129
        esac
yann@2703
   130
        if [ "${CT_GDB_CROSS_PYTHON}" = "y" ]; then
yann@2703
   131
            cross_extra_config+=( "--with-python=yes" )
yann@2703
   132
        else
yann@2703
   133
            cross_extra_config+=( "--with-python=no" )
yann@2703
   134
        fi
zhenqiang@2856
   135
        if [ "${CT_GDB_CROSS_SIM}" = "y" ]; then
zhenqiang@2856
   136
            cross_extra_config+=( "--enable-sim" )
zhenqiang@2856
   137
        else
zhenqiang@2856
   138
            cross_extra_config+=( "--disable-sim" )
zhenqiang@2856
   139
        fi
yann@583
   140
yann@479
   141
        CC_for_gdb=
yann@479
   142
        LD_for_gdb=
yann@583
   143
        if [ "${CT_GDB_CROSS_STATIC}" = "y" ]; then
yann@479
   144
            CC_for_gdb="gcc -static"
yann@479
   145
            LD_for_gdb="ld -static"
yann@479
   146
        fi
yann@479
   147
david@3071
   148
        if [ "${do_expat}" = "y" ]; then
david@3071
   149
            cross_extra_config+=("--with-expat=yes")
david@3071
   150
        else
david@3071
   151
            cross_extra_config+=("--disable-expat")
david@3071
   152
            cross_extra_config+=("--with-expat=no")
david@3071
   153
        fi
david@3071
   154
zhenqiang@3072
   155
        [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] &&    \
zhenqiang@3072
   156
        cross_extra_config+=("--disable-nls")
zhenqiang@3072
   157
yann@821
   158
        gdb_cross_configure="${gdb_src_dir}/configure"
yann@821
   159
yann@1481
   160
        CT_DoLog DEBUG "Extra config passed: '${cross_extra_config[*]}'"
yann@602
   161
yann@2344
   162
        CT_DoExecLog CFG                                \
yann@479
   163
        CC="${CC_for_gdb}"                              \
yann@583
   164
        LD="${LD_for_gdb}"                              \
yann@821
   165
        "${gdb_cross_configure}"                        \
yann@479
   166
            --build=${CT_BUILD}                         \
yann@479
   167
            --host=${CT_HOST}                           \
yann@479
   168
            --target=${CT_TARGET}                       \
yann@479
   169
            --prefix="${CT_PREFIX_DIR}"                 \
yann@479
   170
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
benoit@2476
   171
            --with-sysroot="${CT_SYSROOT_DIR}"          \
yann@801
   172
            --disable-werror                            \
zhenqiang@2784
   173
            "${cross_extra_config[@]}"                  \
zhenqiang@2784
   174
            "${CT_GDB_CROSS_EXTRA_CONFIG_ARRAY[@]}"
yann@479
   175
yann@479
   176
        CT_DoLog EXTRA "Building cross-gdb"
yann@2275
   177
        CT_DoExecLog ALL make ${JOBSFLAGS}
yann@479
   178
yann@479
   179
        CT_DoLog EXTRA "Installing cross-gdb"
yann@669
   180
        CT_DoExecLog ALL make install
yann@479
   181
michael@2765
   182
        if [ "${CT_BUILD_MANUALS}" = "y" ]; then
michael@2765
   183
            CT_DoLog EXTRA "Building and installing the cross-GDB manuals"
michael@2765
   184
            CT_DoExecLog ALL make ${JOBSFLAGS} pdf html
michael@2765
   185
            CT_DoExecLog ALL make install-{pdf,html}-gdb
michael@2765
   186
        fi
michael@2765
   187
yann@2575
   188
        if [ "${CT_GDB_INSTALL_GDBINIT}" = "y" ]; then
yann@2575
   189
            CT_DoLog EXTRA "Install '.gdbinit' template"
yann@2575
   190
            # See in scripts/build/internals.sh for why we do this
yann@2575
   191
            if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then
yann@2575
   192
                gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" )
yann@2575
   193
            else
yann@2575
   194
                gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \
yann@2575
   195
                                   "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/version.c"   \
yann@2575
   196
                             )
yann@2575
   197
            fi
yann@2575
   198
            ${sed} -r                                               \
yann@2575
   199
                   -e "s:@@PREFIX@@:${CT_PREFIX_DIR}:;"             \
yann@2575
   200
                   -e "s:@@VERSION@@:${gcc_version}:;"              \
yann@2575
   201
                   "${CT_LIB_DIR}/scripts/build/debug/gdbinit.in"   \
yann@2575
   202
                   >"${CT_PREFIX_DIR}/share/gdb/gdbinit"
yann@2575
   203
        fi # Install gdbinit sample
yann@2570
   204
yann@479
   205
        CT_EndStep
yann@479
   206
    fi
yann@479
   207
yann@479
   208
    if [ "${CT_GDB_NATIVE}" = "y" ]; then
yann@1481
   209
        local -a native_extra_config
yann@1481
   210
        local -a ncurses_opt
yann@2100
   211
        local -a gdb_native_CFLAGS
yann@1481
   212
yann@573
   213
        CT_DoStep INFO "Installing native gdb"
yann@573
   214
yann@2100
   215
        native_extra_config=("${extra_config[@]}")
yann@2100
   216
linux@2021
   217
        # GDB on Mingw depends on PDcurses, not ncurses
linux@2021
   218
        if [ "${do_ncurses}" = "y" ]; then
linux@2021
   219
            CT_DoLog EXTRA "Building static target ncurses"
yann@1281
   220
linux@2021
   221
            [ "${CT_CC_LANG_CXX}" = "y" ] || ncurses_opts+=("--without-cxx" "--without-cxx-binding")
linux@2021
   222
            [ "${CT_CC_LANG_ADA}" = "y" ] || ncurses_opts+=("--without-ada")
yann@1281
   223
linux@2021
   224
            mkdir -p "${CT_BUILD_DIR}/build-ncurses-build-tic"
linux@2021
   225
            cd "${CT_BUILD_DIR}/build-ncurses-build-tic"
yann@1264
   226
linux@2021
   227
            # Use build = CT_REAL_BUILD so that configure thinks it is
linux@2021
   228
            # cross-compiling, and thus will use the ${CT_BUILD}-*
linux@2021
   229
            # tools instead of searching for the native ones...
anthony@2154
   230
            CT_DoExecLog CFG                                                    \
linux@2021
   231
            "${CT_SRC_DIR}/ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}/configure"   \
linux@2021
   232
                --build=${CT_BUILD}                                             \
linux@2021
   233
                --host=${CT_BUILD}                                              \
linux@2021
   234
                --prefix=/usr                                                   \
linux@2021
   235
                --enable-symlinks                                               \
linux@2021
   236
                --with-build-cc=${CT_REAL_BUILD}-gcc                            \
linux@2021
   237
                --with-build-cpp=${CT_REAL_BUILD}-gcc                           \
linux@2021
   238
                --with-build-cflags="${CT_CFLAGS_FOR_HOST}"                     \
linux@2021
   239
                "${ncurses_opts[@]}"
yann@1264
   240
yann@2617
   241
            # ncurses insists on linking tic statically. It does not work
yann@2617
   242
            # on some OSes (eg. MacOS-X/Darwin/whatever-you-call-it).
yann@2617
   243
            CT_DoExecLog DEBUG sed -r -i -e 's/-static//g;' "progs/Makefile"
yann@2617
   244
linux@2021
   245
            # Under some operating systems (eg. Winblows), there is an
linux@2021
   246
            # extension appended to executables. Find that.
linux@2021
   247
            tic_ext=$(grep -E '^x[[:space:]]*=' progs/Makefile |sed -r -e 's/^.*=[[:space:]]*//;')
yann@1267
   248
yann@2275
   249
            CT_DoExecLog ALL make ${JOBSFLAGS} -C include
yann@2275
   250
            CT_DoExecLog ALL make ${JOBSFLAGS} -C progs "tic${tic_ext}"
yann@1264
   251
w@2751
   252
            CT_DoExecLog ALL install -d -m 0755 "${CT_BUILDTOOLS_PREFIX_DIR}/bin"
w@2751
   253
            CT_DoExecLog ALL install -m 0755 "progs/tic${tic_ext}" "${CT_BUILDTOOLS_PREFIX_DIR}/bin"
yann@1264
   254
linux@2021
   255
            mkdir -p "${CT_BUILD_DIR}/build-ncurses"
linux@2021
   256
            cd "${CT_BUILD_DIR}/build-ncurses"
yann@573
   257
anthony@2154
   258
            CT_DoExecLog CFG                                                    \
w@2751
   259
            TIC_PATH="${CT_BUILDTOOLS_PREFIX_DIR}/bin/tic${tic_ext}"            \
linux@2021
   260
            "${CT_SRC_DIR}/ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}/configure"   \
linux@2021
   261
                --build=${CT_BUILD}                                             \
linux@2021
   262
                --host=${CT_TARGET}                                             \
linux@2021
   263
                --with-build-cc=${CT_BUILD}-gcc                                 \
linux@2021
   264
                --with-build-cpp=${CT_BUILD}-gcc                                \
linux@2021
   265
                --with-build-cflags="${CT_CFLAGS_FOR_HOST}"                     \
yann@2100
   266
                --prefix="${CT_BUILD_DIR}/static-target"                        \
linux@2021
   267
                --without-shared                                                \
linux@2021
   268
                --without-sysmouse                                              \
linux@2021
   269
                --without-progs                                                 \
linux@2021
   270
                --enable-termcap                                                \
linux@2021
   271
                "${ncurses_opts[@]}"
yann@573
   272
yann@2275
   273
            CT_DoExecLog ALL make ${JOBSFLAGS}
yann@573
   274
linux@2021
   275
            CT_DoExecLog ALL make install
yann@573
   276
yann@2100
   277
            native_extra_config+=("--with-curses")
yann@2100
   278
            # There's no better way to tell gdb where to find -lcurses... :-(
yann@2100
   279
            gdb_native_CFLAGS+=("-I${CT_BUILD_DIR}/static-target/include")
yann@2100
   280
            gdb_native_CFLAGS+=("-L${CT_BUILD_DIR}/static-target/lib")
linux@2021
   281
        fi # do_ncurses
yann@1281
   282
yann@2101
   283
        if [ "${do_expat}" = "y" ]; then
yann@2101
   284
            CT_DoLog EXTRA "Building static target expat"
yann@2101
   285
yann@2101
   286
            mkdir -p "${CT_BUILD_DIR}/expat-build"
yann@2101
   287
            cd "${CT_BUILD_DIR}/expat-build"
yann@2101
   288
anthony@2154
   289
            CT_DoExecLog CFG                                                \
yann@2101
   290
            "${CT_SRC_DIR}/expat-${CT_DEBUG_GDB_EXPAT_VERSION}/configure"   \
yann@2101
   291
                --build=${CT_BUILD}                                         \
yann@2101
   292
                --host=${CT_TARGET}                                         \
yann@2101
   293
                --prefix="${CT_BUILD_DIR}/static-target"                    \
yann@2101
   294
                --enable-static                                             \
yann@2101
   295
                --disable-shared
yann@2101
   296
yann@2275
   297
            CT_DoExecLog ALL make ${JOBSFLAGS}
yann@2101
   298
            CT_DoExecLog ALL make install
yann@2101
   299
yann@2101
   300
            native_extra_config+=("--with-expat")
yann@2101
   301
            native_extra_config+=("--with-libexpat-prefix=${CT_BUILD_DIR}/static-target")
yann@2101
   302
        fi # do_expat
yann@2101
   303
yann@479
   304
        CT_DoLog EXTRA "Configuring native gdb"
yann@479
   305
yann@479
   306
        mkdir -p "${CT_BUILD_DIR}/build-gdb-native"
yann@479
   307
        cd "${CT_BUILD_DIR}/build-gdb-native"
yann@479
   308
yann@583
   309
        case "${CT_THREADS}" in
yann@1481
   310
            none)   native_extra_config+=("--disable-threads");;
yann@1481
   311
            *)      native_extra_config+=("--enable-threads");;
yann@583
   312
        esac
yann@583
   313
zhenqiang@3072
   314
        [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] &&    \
zhenqiang@3072
   315
        native_extra_config+=("--disable-nls")
zhenqiang@3072
   316
yann@583
   317
        if [ "${CT_GDB_NATIVE_STATIC}" = "y" ]; then
yann@583
   318
            CC_for_gdb="${CT_TARGET}-gcc -static"
yann@583
   319
            LD_for_gdb="${CT_TARGET}-ld -static"
yann@626
   320
        else
yann@626
   321
            CC_for_gdb="${CT_TARGET}-gcc"
yann@626
   322
            LD_for_gdb="${CT_TARGET}-ld"
yann@583
   323
        fi
yann@583
   324
yann@583
   325
        export ac_cv_func_strncmp_works=yes
yann@583
   326
yann@1481
   327
        CT_DoLog DEBUG "Extra config passed: '${native_extra_config[*]}'"
yann@602
   328
yann@2344
   329
        CT_DoExecLog CFG                                \
yann@583
   330
        CC="${CC_for_gdb}"                              \
yann@583
   331
        LD="${LD_for_gdb}"                              \
yann@2344
   332
        CFLAGS="${gdb_native_CFLAGS[*]}"                \
yann@479
   333
        "${gdb_src_dir}/configure"                      \
yann@479
   334
            --build=${CT_BUILD}                         \
yann@479
   335
            --host=${CT_TARGET}                         \
yann@479
   336
            --target=${CT_TARGET}                       \
yann@479
   337
            --prefix=/usr                               \
yann@479
   338
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
yann@479
   339
            --without-uiout                             \
yann@479
   340
            --disable-tui                               \
yann@479
   341
            --disable-gdbtk                             \
yann@479
   342
            --without-x                                 \
yann@479
   343
            --disable-sim                               \
yann@583
   344
            --disable-werror                            \
yann@479
   345
            --without-included-gettext                  \
yann@583
   346
            --without-develop                           \
yann@1481
   347
            "${native_extra_config[@]}"
yann@479
   348
yann@479
   349
        CT_DoLog EXTRA "Building native gdb"
yann@2275
   350
        CT_DoExecLog ALL make ${JOBSFLAGS} CC=${CT_TARGET}-${CT_CC}
yann@479
   351
yann@479
   352
        CT_DoLog EXTRA "Installing native gdb"
yann@1219
   353
        CT_DoExecLog ALL make DESTDIR="${CT_DEBUGROOT_DIR}" install
yann@479
   354
yann@583
   355
        # Building a native gdb also builds a gdbserver
yann@1219
   356
        find "${CT_DEBUGROOT_DIR}" -type f -name gdbserver -exec rm -fv {} \; 2>&1 |CT_DoLog ALL
yann@583
   357
yann@583
   358
        unset ac_cv_func_strncmp_works
yann@583
   359
yann@1281
   360
        CT_EndStep # native gdb build
yann@583
   361
    fi
yann@583
   362
yann@583
   363
    if [ "${CT_GDB_GDBSERVER}" = "y" ]; then
yann@1481
   364
        local -a gdbserver_extra_config
yann@1481
   365
yann@583
   366
        CT_DoStep INFO "Installing gdbserver"
yann@583
   367
        CT_DoLog EXTRA "Configuring gdbserver"
yann@583
   368
yann@583
   369
        mkdir -p "${CT_BUILD_DIR}/build-gdb-gdbserver"
yann@583
   370
        cd "${CT_BUILD_DIR}/build-gdb-gdbserver"
yann@583
   371
yann@583
   372
        # Workaround for bad versions, where the configure
yann@583
   373
        # script for gdbserver is not executable...
yann@583
   374
        # Bah, GNU folks strike again... :-(
yann@583
   375
        chmod +x "${gdb_src_dir}/gdb/gdbserver/configure"
yann@583
   376
yann@583
   377
        gdbserver_LDFLAGS=
yann@583
   378
        if [ "${CT_GDB_GDBSERVER_STATIC}" = "y" ]; then
yann@583
   379
            gdbserver_LDFLAGS=-static
yann@583
   380
        fi
yann@583
   381
yann@1481
   382
        gdbserver_extra_config=("${extra_config[@]}")
yann@602
   383
yann@2986
   384
        if [ "${CT_GDB_GDBSERVER_HAS_IPA_LIB}" = "y" ]; then
yann@2986
   385
            if [ "${CT_GDB_GDBSERVER_BUILD_IPA_LIB}" = "y" ]; then
yann@2986
   386
                gdbserver_extra_config+=( --enable-inprocess-agent )
yann@2986
   387
            else
yann@2986
   388
                gdbserver_extra_config+=( --disable-inprocess-agent )
yann@2986
   389
            fi
yann@2986
   390
        fi
yann@2986
   391
yann@2344
   392
        CT_DoExecLog CFG                                \
yann@583
   393
        LDFLAGS="${gdbserver_LDFLAGS}"                  \
yann@583
   394
        "${gdb_src_dir}/gdb/gdbserver/configure"        \
yann@583
   395
            --build=${CT_BUILD}                         \
yann@583
   396
            --host=${CT_TARGET}                         \
yann@583
   397
            --target=${CT_TARGET}                       \
yann@583
   398
            --prefix=/usr                               \
yann@583
   399
            --sysconfdir=/etc                           \
yann@583
   400
            --localstatedir=/var                        \
yann@583
   401
            --includedir="${CT_HEADERS_DIR}"            \
yann@583
   402
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
yann@583
   403
            --program-prefix=                           \
yann@583
   404
            --without-uiout                             \
yann@583
   405
            --disable-tui                               \
yann@583
   406
            --disable-gdbtk                             \
yann@583
   407
            --without-x                                 \
yann@583
   408
            --without-included-gettext                  \
yann@583
   409
            --without-develop                           \
yann@801
   410
            --disable-werror                            \
yann@1481
   411
            "${gdbserver_extra_config[@]}"
yann@583
   412
yann@583
   413
        CT_DoLog EXTRA "Building gdbserver"
yann@2275
   414
        CT_DoExecLog ALL make ${JOBSFLAGS} CC=${CT_TARGET}-${CT_CC}
yann@583
   415
yann@583
   416
        CT_DoLog EXTRA "Installing gdbserver"
yann@1219
   417
        CT_DoExecLog ALL make DESTDIR="${CT_DEBUGROOT_DIR}" install
yann@583
   418
yann@479
   419
        CT_EndStep
yann@479
   420
    fi
yann@479
   421
}