scripts/build/debug/300-gdb.sh
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Sun May 11 23:43:52 2014 +0200 (2014-05-11)
changeset 3320 78af1c99bc6d
parent 3198 10059fe75e24
permissions -rw-r--r--
scripts/functions: add target_endian_le and target_endian_be

We currently define target_endian_el and target_endian_eb to be the
tuple extension depending on endianness, defined to be respectively
'el' or 'eb' according to the endianness.

Some architecture do not use 'el' or 'eb', but use 'le' or 'be'.

Provide that as well, as two new variables: target_endian_le and
target_endian_be.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Cody P Schafer <dev@codyps.com>
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@3187
    13
    need_gdb_src=
yann@3187
    14
    need_ncurses_src=
yann@3187
    15
    need_expat_src=
yann@821
    16
yann@821
    17
    if [ "${CT_GDB_CROSS}" = y ]; then
yann@3187
    18
        need_gdb_src=y
yann@821
    19
    fi
yann@821
    20
yann@821
    21
    if [ "${CT_GDB_GDBSERVER}" = "y" ]; then
yann@3187
    22
        need_gdb_src=y
yann@821
    23
    fi
yann@821
    24
yann@821
    25
    if [ "${CT_GDB_NATIVE}" = "y" ]; then
yann@3187
    26
        need_gdb_src=y
linux@2021
    27
        # GDB on Mingw depends on PDcurses, not ncurses
linux@2021
    28
        if [ "${CT_MINGW32}" != "y" ]; then
yann@3187
    29
            need_ncurses_src=y
linux@2021
    30
        fi
yann@3187
    31
        need_expat_src=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@3187
    50
    if [ "${need_gdb_src}" = "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@3187
    61
    if [ "${need_ncurses_src}" = "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@3187
    67
    if [ "${need_expat_src}" = "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@3187
    76
    if [ "${need_gdb_src}" = "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@3187
    86
    if [ "${need_ncurses_src}" = "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@3187
    92
    if [ "${need_expat_src}" = "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@3193
   126
        cross_extra_config+=("--enable-expat")
yann@3193
   127
        cross_extra_config+=("--with-expat=yes")
yann@583
   128
        case "${CT_THREADS}" in
yann@1481
   129
            none)   cross_extra_config+=("--disable-threads");;
yann@1481
   130
            *)      cross_extra_config+=("--enable-threads");;
yann@583
   131
        esac
yann@2703
   132
        if [ "${CT_GDB_CROSS_PYTHON}" = "y" ]; then
yann@2703
   133
            cross_extra_config+=( "--with-python=yes" )
yann@2703
   134
        else
yann@2703
   135
            cross_extra_config+=( "--with-python=no" )
yann@2703
   136
        fi
zhenqiang@2856
   137
        if [ "${CT_GDB_CROSS_SIM}" = "y" ]; then
zhenqiang@2856
   138
            cross_extra_config+=( "--enable-sim" )
zhenqiang@2856
   139
        else
zhenqiang@2856
   140
            cross_extra_config+=( "--disable-sim" )
zhenqiang@2856
   141
        fi
yann@3193
   142
        if [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ]; then
yann@3193
   143
            cross_extra_config+=("--disable-nls")
yann@3193
   144
        fi
yann@583
   145
yann@479
   146
        CC_for_gdb=
yann@479
   147
        LD_for_gdb=
yann@583
   148
        if [ "${CT_GDB_CROSS_STATIC}" = "y" ]; then
yann@3249
   149
            CC_for_gdb="${CT_HOST}-gcc -static"
yann@3249
   150
            LD_for_gdb="${CT_HOST}-ld -static"
yann@479
   151
        fi
yann@479
   152
yann@1481
   153
        CT_DoLog DEBUG "Extra config passed: '${cross_extra_config[*]}'"
yann@602
   154
yann@2344
   155
        CT_DoExecLog CFG                                \
yann@479
   156
        CC="${CC_for_gdb}"                              \
yann@583
   157
        LD="${LD_for_gdb}"                              \
yann@3193
   158
        "${gdb_src_dir}/configure"                      \
yann@479
   159
            --build=${CT_BUILD}                         \
yann@479
   160
            --host=${CT_HOST}                           \
yann@479
   161
            --target=${CT_TARGET}                       \
yann@479
   162
            --prefix="${CT_PREFIX_DIR}"                 \
yann@479
   163
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
benoit@2476
   164
            --with-sysroot="${CT_SYSROOT_DIR}"          \
yann@801
   165
            --disable-werror                            \
zhenqiang@2784
   166
            "${cross_extra_config[@]}"                  \
zhenqiang@2784
   167
            "${CT_GDB_CROSS_EXTRA_CONFIG_ARRAY[@]}"
yann@479
   168
yann@479
   169
        CT_DoLog EXTRA "Building cross-gdb"
yann@2275
   170
        CT_DoExecLog ALL make ${JOBSFLAGS}
yann@479
   171
yann@479
   172
        CT_DoLog EXTRA "Installing cross-gdb"
yann@669
   173
        CT_DoExecLog ALL make install
yann@479
   174
michael@2765
   175
        if [ "${CT_BUILD_MANUALS}" = "y" ]; then
michael@2765
   176
            CT_DoLog EXTRA "Building and installing the cross-GDB manuals"
michael@2765
   177
            CT_DoExecLog ALL make ${JOBSFLAGS} pdf html
michael@2765
   178
            CT_DoExecLog ALL make install-{pdf,html}-gdb
michael@2765
   179
        fi
michael@2765
   180
yann@2575
   181
        if [ "${CT_GDB_INSTALL_GDBINIT}" = "y" ]; then
yann@3193
   182
            CT_DoLog EXTRA "Installing '.gdbinit' template"
yann@2575
   183
            # See in scripts/build/internals.sh for why we do this
yann@2575
   184
            if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then
yann@2575
   185
                gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" )
yann@2575
   186
            else
yann@2575
   187
                gcc_version=$( sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \
yann@2575
   188
                                   "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/version.c"   \
yann@2575
   189
                             )
yann@2575
   190
            fi
yann@2575
   191
            ${sed} -r                                               \
yann@2575
   192
                   -e "s:@@PREFIX@@:${CT_PREFIX_DIR}:;"             \
yann@2575
   193
                   -e "s:@@VERSION@@:${gcc_version}:;"              \
yann@2575
   194
                   "${CT_LIB_DIR}/scripts/build/debug/gdbinit.in"   \
yann@2575
   195
                   >"${CT_PREFIX_DIR}/share/gdb/gdbinit"
yann@2575
   196
        fi # Install gdbinit sample
yann@2570
   197
yann@479
   198
        CT_EndStep
yann@479
   199
    fi
yann@479
   200
yann@479
   201
    if [ "${CT_GDB_NATIVE}" = "y" ]; then
yann@1481
   202
        local -a native_extra_config
yann@1481
   203
        local -a ncurses_opt
yann@2100
   204
        local -a gdb_native_CFLAGS
yann@1481
   205
yann@573
   206
        CT_DoStep INFO "Installing native gdb"
yann@573
   207
yann@2100
   208
        native_extra_config=("${extra_config[@]}")
yann@2100
   209
linux@2021
   210
        # GDB on Mingw depends on PDcurses, not ncurses
yann@3188
   211
        if [ "${CT_MINGW32}" != "y" ]; then
linux@2021
   212
            CT_DoLog EXTRA "Building static target ncurses"
yann@1281
   213
yann@3191
   214
            CT_mkdir_pushd "${CT_BUILD_DIR}/build-ncurses-target-${CT_TARGET}"
yann@3191
   215
            do_gdb_ncurses_backend host="${CT_TARGET}"                      \
yann@3191
   216
                                   prefix="${CT_BUILD_DIR}/static-target"   \
yann@3191
   217
                                   cflags="${CT_CFLAGS_FOR_HOST}"           \
yann@3191
   218
                                   ldflags=""
yann@3191
   219
            CT_Popd
yann@2100
   220
            native_extra_config+=("--with-curses")
yann@2100
   221
            # There's no better way to tell gdb where to find -lcurses... :-(
yann@2100
   222
            gdb_native_CFLAGS+=("-I${CT_BUILD_DIR}/static-target/include")
yann@2100
   223
            gdb_native_CFLAGS+=("-L${CT_BUILD_DIR}/static-target/lib")
yann@3187
   224
        fi # need_ncurses_src
yann@1281
   225
yann@3189
   226
        # Build libexpat
yann@3189
   227
        CT_DoLog EXTRA "Building static target expat"
yann@3189
   228
        CT_mkdir_pushd "${CT_BUILD_DIR}/build-expat-target-${CT_TARGET}"
yann@3190
   229
        do_gdb_expat_backend host="${CT_TARGET}"                    \
yann@3190
   230
                             prefix="${CT_BUILD_DIR}/static-target" \
yann@3190
   231
                             cflags=""                              \
yann@3190
   232
                             ldflags=""
yann@3189
   233
        CT_Popd
yann@3189
   234
        native_extra_config+=("--with-expat")
yann@3189
   235
        native_extra_config+=("--with-libexpat-prefix=${CT_BUILD_DIR}/static-target")
yann@2101
   236
yann@479
   237
        CT_DoLog EXTRA "Configuring native gdb"
yann@479
   238
yann@479
   239
        mkdir -p "${CT_BUILD_DIR}/build-gdb-native"
yann@479
   240
        cd "${CT_BUILD_DIR}/build-gdb-native"
yann@479
   241
yann@583
   242
        case "${CT_THREADS}" in
yann@1481
   243
            none)   native_extra_config+=("--disable-threads");;
yann@1481
   244
            *)      native_extra_config+=("--enable-threads");;
yann@583
   245
        esac
yann@583
   246
zhenqiang@3072
   247
        [ "${CT_TOOLCHAIN_ENABLE_NLS}" != "y" ] &&    \
zhenqiang@3072
   248
        native_extra_config+=("--disable-nls")
zhenqiang@3072
   249
yann@583
   250
        if [ "${CT_GDB_NATIVE_STATIC}" = "y" ]; then
yann@583
   251
            CC_for_gdb="${CT_TARGET}-gcc -static"
yann@583
   252
            LD_for_gdb="${CT_TARGET}-ld -static"
yann@626
   253
        else
yann@626
   254
            CC_for_gdb="${CT_TARGET}-gcc"
yann@626
   255
            LD_for_gdb="${CT_TARGET}-ld"
yann@583
   256
        fi
yann@583
   257
yann@583
   258
        export ac_cv_func_strncmp_works=yes
yann@583
   259
yann@1481
   260
        CT_DoLog DEBUG "Extra config passed: '${native_extra_config[*]}'"
yann@602
   261
yann@2344
   262
        CT_DoExecLog CFG                                \
yann@583
   263
        CC="${CC_for_gdb}"                              \
yann@583
   264
        LD="${LD_for_gdb}"                              \
yann@2344
   265
        CFLAGS="${gdb_native_CFLAGS[*]}"                \
yann@479
   266
        "${gdb_src_dir}/configure"                      \
yann@479
   267
            --build=${CT_BUILD}                         \
yann@479
   268
            --host=${CT_TARGET}                         \
yann@479
   269
            --target=${CT_TARGET}                       \
yann@479
   270
            --prefix=/usr                               \
yann@479
   271
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
yann@479
   272
            --without-uiout                             \
yann@479
   273
            --disable-tui                               \
yann@479
   274
            --disable-gdbtk                             \
yann@479
   275
            --without-x                                 \
yann@479
   276
            --disable-sim                               \
yann@583
   277
            --disable-werror                            \
yann@479
   278
            --without-included-gettext                  \
yann@583
   279
            --without-develop                           \
yann@1481
   280
            "${native_extra_config[@]}"
yann@479
   281
yann@479
   282
        CT_DoLog EXTRA "Building native gdb"
yann@2275
   283
        CT_DoExecLog ALL make ${JOBSFLAGS} CC=${CT_TARGET}-${CT_CC}
yann@479
   284
yann@479
   285
        CT_DoLog EXTRA "Installing native gdb"
yann@1219
   286
        CT_DoExecLog ALL make DESTDIR="${CT_DEBUGROOT_DIR}" install
yann@479
   287
yann@583
   288
        # Building a native gdb also builds a gdbserver
yann@1219
   289
        find "${CT_DEBUGROOT_DIR}" -type f -name gdbserver -exec rm -fv {} \; 2>&1 |CT_DoLog ALL
yann@583
   290
yann@583
   291
        unset ac_cv_func_strncmp_works
yann@583
   292
yann@1281
   293
        CT_EndStep # native gdb build
yann@583
   294
    fi
yann@583
   295
yann@583
   296
    if [ "${CT_GDB_GDBSERVER}" = "y" ]; then
yann@1481
   297
        local -a gdbserver_extra_config
yann@1481
   298
yann@583
   299
        CT_DoStep INFO "Installing gdbserver"
yann@583
   300
        CT_DoLog EXTRA "Configuring gdbserver"
yann@583
   301
yann@583
   302
        mkdir -p "${CT_BUILD_DIR}/build-gdb-gdbserver"
yann@583
   303
        cd "${CT_BUILD_DIR}/build-gdb-gdbserver"
yann@583
   304
yann@583
   305
        # Workaround for bad versions, where the configure
yann@583
   306
        # script for gdbserver is not executable...
yann@583
   307
        # Bah, GNU folks strike again... :-(
yann@583
   308
        chmod +x "${gdb_src_dir}/gdb/gdbserver/configure"
yann@583
   309
yann@583
   310
        gdbserver_LDFLAGS=
yann@583
   311
        if [ "${CT_GDB_GDBSERVER_STATIC}" = "y" ]; then
yann@583
   312
            gdbserver_LDFLAGS=-static
yann@583
   313
        fi
yann@583
   314
yann@1481
   315
        gdbserver_extra_config=("${extra_config[@]}")
yann@602
   316
yann@2986
   317
        if [ "${CT_GDB_GDBSERVER_HAS_IPA_LIB}" = "y" ]; then
yann@2986
   318
            if [ "${CT_GDB_GDBSERVER_BUILD_IPA_LIB}" = "y" ]; then
yann@2986
   319
                gdbserver_extra_config+=( --enable-inprocess-agent )
yann@2986
   320
            else
yann@2986
   321
                gdbserver_extra_config+=( --disable-inprocess-agent )
yann@2986
   322
            fi
yann@2986
   323
        fi
yann@2986
   324
yann@2344
   325
        CT_DoExecLog CFG                                \
s@3198
   326
        CC="${CT_TARGET}-gcc"                           \
s@3198
   327
        CPP="${CT_TARGET}-cpp"                          \
s@3198
   328
        LD="${CT_TARGET}-ld"                            \
yann@583
   329
        LDFLAGS="${gdbserver_LDFLAGS}"                  \
yann@583
   330
        "${gdb_src_dir}/gdb/gdbserver/configure"        \
yann@583
   331
            --build=${CT_BUILD}                         \
yann@583
   332
            --host=${CT_TARGET}                         \
yann@583
   333
            --target=${CT_TARGET}                       \
yann@583
   334
            --prefix=/usr                               \
yann@583
   335
            --sysconfdir=/etc                           \
yann@583
   336
            --localstatedir=/var                        \
yann@583
   337
            --includedir="${CT_HEADERS_DIR}"            \
yann@583
   338
            --with-build-sysroot="${CT_SYSROOT_DIR}"    \
yann@583
   339
            --program-prefix=                           \
yann@583
   340
            --without-uiout                             \
yann@583
   341
            --disable-tui                               \
yann@583
   342
            --disable-gdbtk                             \
yann@583
   343
            --without-x                                 \
yann@583
   344
            --without-included-gettext                  \
yann@583
   345
            --without-develop                           \
yann@801
   346
            --disable-werror                            \
yann@1481
   347
            "${gdbserver_extra_config[@]}"
yann@583
   348
yann@583
   349
        CT_DoLog EXTRA "Building gdbserver"
yann@2275
   350
        CT_DoExecLog ALL make ${JOBSFLAGS} CC=${CT_TARGET}-${CT_CC}
yann@583
   351
yann@583
   352
        CT_DoLog EXTRA "Installing gdbserver"
yann@1219
   353
        CT_DoExecLog ALL make DESTDIR="${CT_DEBUGROOT_DIR}" install
yann@583
   354
yann@479
   355
        CT_EndStep
yann@479
   356
    fi
yann@479
   357
}
yann@3189
   358
yann@3191
   359
# Build libncurses
yann@3191
   360
#   Parameter     : description               : type      : default
yann@3191
   361
#   host          : machine to run on         : tuple     : (none)
yann@3191
   362
#   prefix        : prefix to install into    : dir       : (none)
yann@3191
   363
#   cflags        : cflags to use             : string    : (empty)
yann@3191
   364
#   ldflags       : ldflags to use            : string    : (empty)
yann@3191
   365
do_gdb_ncurses_backend() {
yann@3191
   366
    local host
yann@3191
   367
    local prefix
yann@3191
   368
    local cflags
yann@3191
   369
    local ldflags
yann@3191
   370
    local arg
yann@3191
   371
yann@3191
   372
    for arg in "$@"; do
yann@3191
   373
        eval "${arg// /\\ }"
yann@3191
   374
    done
yann@3191
   375
yann@3191
   376
    [ "${CT_CC_LANG_CXX}" = "y" ] || ncurses_opts+=("--without-cxx" "--without-cxx-binding")
yann@3191
   377
    [ "${CT_CC_LANG_ADA}" = "y" ] || ncurses_opts+=("--without-ada")
yann@3191
   378
yann@3191
   379
    CT_mkdir_pushd "build-tic"
yann@3191
   380
yann@3191
   381
    # We need a tic that runs on build, not on host nor on target
yann@3191
   382
    # Use build = CT_REAL_BUILD so that configure thinks it is
yann@3191
   383
    # cross-compiling, and thus will use the ${CT_BUILD}-*
yann@3191
   384
    # tools instead of searching for the native ones...
yann@3191
   385
    CT_DoExecLog CFG                                                    \
yann@3191
   386
    "${CT_SRC_DIR}/ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}/configure"   \
yann@3191
   387
        --build=${CT_BUILD}                                             \
yann@3191
   388
        --host=${CT_BUILD}                                              \
yann@3191
   389
        --prefix=/usr                                                   \
yann@3191
   390
        --enable-symlinks                                               \
yann@3191
   391
        --with-build-cc=${CT_REAL_BUILD}-gcc                            \
yann@3191
   392
        --with-build-cpp=${CT_REAL_BUILD}-gcc                           \
yann@3191
   393
        --with-build-cflags="${CT_CFLAGS_FOR_HOST}"                     \
yann@3191
   394
        "${ncurses_opts[@]}"
yann@3191
   395
yann@3191
   396
    # ncurses insists on linking tic statically. It does not work
yann@3191
   397
    # on some OSes (eg. MacOS-X/Darwin/whatever-you-call-it).
yann@3191
   398
    CT_DoExecLog DEBUG sed -r -i -e 's/-static//g;' "progs/Makefile"
yann@3191
   399
yann@3191
   400
    # Under some operating systems (eg. Winblows), there is an
yann@3191
   401
    # extension appended to executables. Find that.
yann@3191
   402
    tic_ext=$(grep -E '^x[[:space:]]*=' progs/Makefile |sed -r -e 's/^.*=[[:space:]]*//;')
yann@3191
   403
yann@3191
   404
    CT_DoExecLog ALL make ${JOBSFLAGS} -C include
yann@3191
   405
    CT_DoExecLog ALL make ${JOBSFLAGS} -C progs "tic${tic_ext}"
yann@3191
   406
yann@3191
   407
    CT_DoExecLog ALL install -d -m 0755 "${CT_BUILDTOOLS_PREFIX_DIR}/bin"
yann@3191
   408
    CT_DoExecLog ALL install -m 0755 "progs/tic${tic_ext}" "${CT_BUILDTOOLS_PREFIX_DIR}/bin"
yann@3191
   409
yann@3191
   410
    CT_Popd
yann@3191
   411
yann@3191
   412
    CT_mkdir_pushd "ncurses"
yann@3191
   413
yann@3191
   414
    CT_DoExecLog CFG                                                    \
yann@3191
   415
    TIC_PATH="${CT_BUILDTOOLS_PREFIX_DIR}/bin/tic${tic_ext}"            \
yann@3191
   416
    "${CT_SRC_DIR}/ncurses-${CT_DEBUG_GDB_NCURSES_VERSION}/configure"   \
yann@3191
   417
        --build=${CT_BUILD}                                             \
yann@3191
   418
        --host=${host}                                                  \
yann@3191
   419
        --with-build-cc=${CT_BUILD}-gcc                                 \
yann@3191
   420
        --with-build-cpp=${CT_BUILD}-gcc                                \
yann@3191
   421
        --with-build-cflags="${CT_CFLAGS_FOR_HOST}"                     \
yann@3191
   422
        --prefix="${prefix}"                                            \
yann@3191
   423
        --without-shared                                                \
yann@3191
   424
        --without-sysmouse                                              \
yann@3191
   425
        --without-progs                                                 \
yann@3191
   426
        --enable-termcap                                                \
yann@3191
   427
        "${ncurses_opts[@]}"
yann@3191
   428
yann@3191
   429
    CT_DoExecLog ALL make ${JOBSFLAGS}
yann@3191
   430
    CT_DoExecLog ALL make install
yann@3191
   431
yann@3191
   432
    CT_Popd
yann@3191
   433
}
yann@3191
   434
yann@3189
   435
# Build libexpat
yann@3189
   436
#   Parameter     : description               : type      : default
yann@3189
   437
#   host          : machine to run on         : tuple     : (none)
yann@3189
   438
#   prefix        : prefix to install into    : dir       : (none)
yann@3189
   439
#   cflags        : cflags to use             : string    : (empty)
yann@3189
   440
#   ldflags       : ldflags to use            : string    : (empty)
yann@3189
   441
do_gdb_expat_backend() {
yann@3189
   442
    local host
yann@3189
   443
    local prefix
yann@3189
   444
    local cflags
yann@3189
   445
    local ldflags
yann@3189
   446
    local arg
yann@3189
   447
yann@3189
   448
    for arg in "$@"; do
yann@3189
   449
        eval "${arg// /\\ }"
yann@3189
   450
    done
yann@3189
   451
yann@3189
   452
    CT_DoExecLog CFG                                                \
yann@3189
   453
    "${CT_SRC_DIR}/expat-${CT_DEBUG_GDB_EXPAT_VERSION}/configure"   \
yann@3189
   454
        --build=${CT_BUILD}                                         \
yann@3189
   455
        --host=${host}                                              \
yann@3189
   456
        --prefix="${prefix}"                                        \
yann@3189
   457
        --enable-static                                             \
yann@3189
   458
        --disable-shared
yann@3189
   459
yann@3189
   460
    CT_DoExecLog ALL make ${JOBSFLAGS}
yann@3189
   461
    CT_DoExecLog ALL make install
yann@3189
   462
}