scripts/build/binutils/binutils.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Mon Aug 23 14:32:16 2010 +0200 (2010-08-23)
changeset 2100 f9fcfc002c8a
parent 1901 bdb3a98e064b
child 2154 250cdcc86441
permissions -rw-r--r--
debug/gdb: install dependable libs in a generic target static libs dir

For now, ncurses is the only dependable target library built for gdb.
But expat is coming, and there's no reason to install each library in
its own place.

So, install ncurses in a generic directory, where other dependable
libraries can be installed as well.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@1345
     1
# This file adds functions to build binutils
yann@1345
     2
# Copyright 2007 Yann E. MORIN
yann@1345
     3
# Licensed under the GPL v2. See COPYING in the root of this package
yann@1345
     4
yann@1345
     5
# Download binutils
yann@1345
     6
do_binutils_get() {
yann@1345
     7
    CT_GetFile "binutils-${CT_BINUTILS_VERSION}"                                        \
yann@1345
     8
               {ftp,http}://{ftp.gnu.org/gnu,ftp.kernel.org/pub/linux/devel}/binutils   \
yann@1345
     9
               ftp://gcc.gnu.org/pub/binutils/{releases,snapshots}
yann@1345
    10
}
yann@1345
    11
yann@1345
    12
# Extract binutils
yann@1345
    13
do_binutils_extract() {
yann@1345
    14
    CT_Extract "binutils-${CT_BINUTILS_VERSION}"
yann@1901
    15
    CT_Patch "binutils" "${CT_BINUTILS_VERSION}"
yann@1345
    16
}
yann@1345
    17
yann@1345
    18
# Build binutils
yann@1345
    19
do_binutils() {
yann@1483
    20
    local -a extra_config
yann@1483
    21
yann@1345
    22
    mkdir -p "${CT_BUILD_DIR}/build-binutils"
yann@1345
    23
    cd "${CT_BUILD_DIR}/build-binutils"
yann@1345
    24
yann@1345
    25
    CT_DoStep INFO "Installing binutils"
yann@1345
    26
yann@1345
    27
    CT_DoLog EXTRA "Configuring binutils"
yann@1345
    28
    CFLAGS="${CT_CFLAGS_FOR_HOST}"                              \
yann@1345
    29
    CT_DoExecLog ALL                                            \
yann@1345
    30
    "${CT_SRC_DIR}/binutils-${CT_BINUTILS_VERSION}/configure"   \
yann@1345
    31
        --build=${CT_BUILD}                                     \
yann@1345
    32
        --host=${CT_HOST}                                       \
yann@1345
    33
        --target=${CT_TARGET}                                   \
yann@1345
    34
        --prefix=${CT_PREFIX_DIR}                               \
yann@1345
    35
        --disable-nls                                           \
yann@1345
    36
        --disable-multilib                                      \
yann@1345
    37
        --disable-werror                                        \
yann@1483
    38
        "${extra_config[@]}"                                    \
yann@1345
    39
        ${CT_ARCH_WITH_FLOAT}                                   \
yann@1345
    40
        ${CT_BINUTILS_EXTRA_CONFIG}                             \
yann@1345
    41
        ${BINUTILS_SYSROOT_ARG}
yann@1345
    42
yann@1345
    43
    CT_DoLog EXTRA "Building binutils"
yann@1345
    44
    CT_DoExecLog ALL make ${PARALLELMFLAGS}
yann@1345
    45
yann@1345
    46
    CT_DoLog EXTRA "Installing binutils"
yann@1345
    47
    CT_DoExecLog ALL make install
yann@1345
    48
yann@1345
    49
    # Make those new tools available to the core C compilers to come.
yann@1345
    50
    # Note: some components want the ${TARGET}-{ar,as,ld,strip} commands as
yann@1345
    51
    # well. Create that.
yann@1345
    52
    mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/bin"
yann@1345
    53
    mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}/bin"
yann@1345
    54
    mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/bin"
yann@1345
    55
    mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}/bin"
yann@1345
    56
    for t in ar as ld strip; do
yann@1345
    57
        ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/bin/${t}"
yann@1345
    58
        ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_STATIC_PREFIX_DIR}/bin/${CT_TARGET}-${t}"
yann@1345
    59
        ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/bin/${t}"
yann@1345
    60
        ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_SHARED_PREFIX_DIR}/bin/${CT_TARGET}-${t}"
yann@1345
    61
    done 2>&1 |CT_DoLog ALL
yann@1345
    62
yann@1345
    63
    CT_EndStep
yann@1345
    64
}
yann@1345
    65
yann@1345
    66
# Now on for the target libraries
yann@1345
    67
do_binutils_target() {
yann@1483
    68
    local -a extra_config
yann@1483
    69
    local -a targets
yann@1483
    70
    local -a build_targets
yann@1483
    71
    local -a install_targets
yann@1483
    72
    local t
yann@1345
    73
yann@1483
    74
    [ "${CT_BINUTILS_FOR_TARGET_IBERTY}" = "y" ] && targets+=("libiberty")
yann@1483
    75
    [ "${CT_BINUTILS_FOR_TARGET_BFD}"    = "y" ] && targets+=("bfd")
yann@1483
    76
    for t in "${targets[@]}"; do
yann@1483
    77
        build_targets+=("all-${t}")
yann@1483
    78
        install_targets+=("install-${t}")
yann@1483
    79
    done
yann@1483
    80
yann@1483
    81
    if [ "${#targets[@]}" -ne 0 ]; then
yann@1345
    82
        CT_DoStep INFO "Installing binutils for target"
yann@1345
    83
        mkdir -p "${CT_BUILD_DIR}/build-binutils-for-target"
yann@1345
    84
        CT_Pushd "${CT_BUILD_DIR}/build-binutils-for-target"
yann@1345
    85
yann@1345
    86
        CT_DoLog EXTRA "Configuring binutils for target"
yann@1345
    87
        CT_DoExecLog ALL                                            \
yann@1345
    88
        "${CT_SRC_DIR}/binutils-${CT_BINUTILS_VERSION}/configure"   \
yann@1345
    89
            --build=${CT_BUILD}                                     \
yann@1345
    90
            --host=${CT_TARGET}                                     \
yann@1345
    91
            --target=${CT_TARGET}                                   \
yann@1345
    92
            --prefix=/usr                                           \
yann@1345
    93
            --disable-werror                                        \
yann@1345
    94
            --enable-shared                                         \
yann@1345
    95
            --enable-static                                         \
yann@1345
    96
            --disable-nls                                           \
yann@1345
    97
            --disable-multilib                                      \
yann@1483
    98
            "${extra_config[@]}"                                    \
yann@1345
    99
            ${CT_ARCH_WITH_FLOAT}                                   \
yann@1345
   100
            ${CT_BINUTILS_EXTRA_CONFIG}
yann@1345
   101
yann@1483
   102
        CT_DoLog EXTRA "Building binutils' libraries (${targets[*]}) for target"
yann@1483
   103
        CT_DoExecLog ALL make ${PARALLELMFLAGS} "${build_targets[@]}"
yann@1483
   104
        CT_DoLog EXTRA "Installing binutils' libraries (${targets[*]}) for target"
yann@1483
   105
        CT_DoExecLog ALL make DESTDIR="${CT_SYSROOT_DIR}" "${install_targets[@]}"
yann@1345
   106
yann@1345
   107
        CT_Popd
yann@1345
   108
        CT_EndStep
yann@1345
   109
    fi
yann@1345
   110
}