scripts/build/binutils.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Thu Jun 11 21:47:19 2009 +0000 (2009-06-11)
branch1.4
changeset 1451 25d050084e98
parent 1117 f70e9b41339b
permissions -rw-r--r--
populate: fix installing dynamic linker 'ld.so'

The dynamic linker, ld.so, needs the execute bit to be set.
Detect tht the library being installed is in fact ld.so and
install it with 0755 instead of 0644.

Fix detecting src == dst.

Use a simpler command to copy src -> dst.

Also change echo to printf, get rid of 'echo -n', which is
highly non-portable.


-------- diffstat follows --------
/trunk/scripts/populate.in | 76 43 33 0 +++++++++++++++++++++++++++++-----------------------
1 file changed, 43 insertions(+), 33 deletions(-)
(transplanted from d7ddcb75e0f703e2ba6d17169167356389224870)
yann@1
     1
# This file adds functions to build binutils
yann@1
     2
# Copyright 2007 Yann E. MORIN
yann@1
     3
# Licensed under the GPL v2. See COPYING in the root of this package
yann@1
     4
yann@63
     5
# Download binutils
yann@63
     6
do_binutils_get() {
yann@1117
     7
    CT_GetFile "binutils-${CT_BINUTILS_VERSION}"                                        \
yann@936
     8
               {ftp,http}://{ftp.gnu.org/gnu,ftp.kernel.org/pub/linux/devel}/binutils   \
yann@936
     9
               ftp://gcc.gnu.org/pub/binutils/{releases,snapshots}
yann@63
    10
}
yann@63
    11
yann@63
    12
# Extract binutils
yann@63
    13
do_binutils_extract() {
yann@1126
    14
    CT_Extract "binutils-${CT_BINUTILS_VERSION}"
yann@1126
    15
    CT_Patch "binutils-${CT_BINUTILS_VERSION}"
yann@63
    16
}
yann@63
    17
yann@63
    18
# Build binutils
yann@1
    19
do_binutils() {
yann@1
    20
    mkdir -p "${CT_BUILD_DIR}/build-binutils"
yann@1
    21
    cd "${CT_BUILD_DIR}/build-binutils"
yann@1
    22
yann@1
    23
    CT_DoStep INFO "Installing binutils"
yann@1
    24
yann@466
    25
    binutils_opts=
yann@466
    26
    # If GMP and MPFR were configured, then use that,
yann@466
    27
    # otherwise let binutils find the system-wide libraries, if they exist.
yann@645
    28
    if [ "${CT_GMP_MPFR}" = "y" ]; then
yann@466
    29
        binutils_opts="--with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}"
yann@466
    30
    fi
yann@466
    31
yann@1
    32
    CT_DoLog EXTRA "Configuring binutils"
yann@1117
    33
    CFLAGS="${CT_CFLAGS_FOR_HOST}"                              \
yann@1117
    34
    CT_DoExecLog ALL                                            \
yann@1117
    35
    "${CT_SRC_DIR}/binutils-${CT_BINUTILS_VERSION}/configure"   \
yann@1117
    36
        --build=${CT_BUILD}                                     \
yann@1117
    37
        --host=${CT_HOST}                                       \
yann@1117
    38
        --target=${CT_TARGET}                                   \
yann@1117
    39
        --prefix=${CT_PREFIX_DIR}                               \
yann@1117
    40
        --disable-nls                                           \
yann@1117
    41
        --disable-multilib                                      \
yann@1117
    42
        --disable-werror                                        \
yann@1117
    43
        ${binutils_opts}                                        \
yann@1117
    44
        ${CT_ARCH_WITH_FLOAT}                                   \
yann@1117
    45
        ${CT_BINUTILS_EXTRA_CONFIG}                             \
yann@659
    46
        ${BINUTILS_SYSROOT_ARG}
yann@1
    47
yann@1
    48
    CT_DoLog EXTRA "Building binutils"
yann@659
    49
    CT_DoExecLog ALL make ${PARALLELMFLAGS}
yann@1
    50
yann@1
    51
    CT_DoLog EXTRA "Installing binutils"
yann@659
    52
    CT_DoExecLog ALL make install
yann@1
    53
yann@331
    54
    # Make those new tools available to the core C compilers to come.
yann@1
    55
    # Note: some components want the ${TARGET}-{ar,as,ld,strip} commands as
yann@305
    56
    # well. Create that.
yann@136
    57
    mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/bin"
yann@136
    58
    mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}/bin"
yann@136
    59
    mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/bin"
yann@136
    60
    mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}/bin"
yann@1
    61
    for t in ar as ld strip; do
yann@136
    62
        ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/bin/${t}"
yann@136
    63
        ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_STATIC_PREFIX_DIR}/bin/${CT_TARGET}-${t}"
yann@136
    64
        ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/bin/${t}"
yann@136
    65
        ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_SHARED_PREFIX_DIR}/bin/${CT_TARGET}-${t}"
yann@659
    66
    done 2>&1 |CT_DoLog ALL
yann@1
    67
yann@461
    68
    CT_EndStep
yann@461
    69
}
yann@461
    70
yann@461
    71
# Now on for the target libraries
yann@461
    72
do_binutils_target() {
yann@458
    73
    targets=
yann@463
    74
    [ "${CT_BINUTILS_FOR_TARGET_IBERTY}" = "y" ] && targets="${targets} libiberty"
yann@463
    75
    [ "${CT_BINUTILS_FOR_TARGET_BFD}"    = "y" ] && targets="${targets} bfd"
yann@458
    76
    targets="${targets# }"
yann@458
    77
yann@1035
    78
    binutils_opts=
yann@1035
    79
    # If GMP and MPFR were configured, then use that
yann@1035
    80
    if [ "${CT_GMP_MPFR_TARGET}" = "y" ]; then
yann@1035
    81
        binutils_opts="--with-gmp=${CT_SYSROOT_DIR}/usr --with-mpfr=${CT_SYSROOT_DIR}/usr"
yann@1035
    82
    fi
yann@1035
    83
yann@458
    84
    if [ -n "${targets}" ]; then
yann@458
    85
        CT_DoStep INFO "Installing binutils for target"
yann@458
    86
        mkdir -p "${CT_BUILD_DIR}/build-binutils-for-target"
yann@458
    87
        CT_Pushd "${CT_BUILD_DIR}/build-binutils-for-target"
yann@458
    88
yann@458
    89
        CT_DoLog EXTRA "Configuring binutils for target"
yann@1117
    90
        CT_DoExecLog ALL                                            \
yann@1117
    91
        "${CT_SRC_DIR}/binutils-${CT_BINUTILS_VERSION}/configure"   \
yann@1117
    92
            --build=${CT_BUILD}                                     \
yann@1117
    93
            --host=${CT_TARGET}                                     \
yann@1117
    94
            --target=${CT_TARGET}                                   \
yann@1117
    95
            --prefix=/usr                                           \
yann@1117
    96
            --disable-werror                                        \
yann@1117
    97
            --enable-shared                                         \
yann@1117
    98
            --enable-static                                         \
yann@1117
    99
            --disable-nls                                           \
yann@1117
   100
            --disable-multilib                                      \
yann@1117
   101
            ${binutils_opts}                                        \
yann@1117
   102
            ${CT_ARCH_WITH_FLOAT}                                   \
yann@659
   103
            ${CT_BINUTILS_EXTRA_CONFIG}
yann@458
   104
yann@458
   105
        build_targets=$(echo "${targets}" |sed -r -e 's/(^| +)/\1all-/g;')
yann@458
   106
        install_targets=$(echo "${targets}" |sed -r -e 's/(^| +)/\1install-/g;')
yann@458
   107
yann@458
   108
        CT_DoLog EXTRA "Building binutils' libraries (${targets}) for target"
yann@660
   109
        CT_DoExecLog ALL make ${PARALLELMFLAGS} ${build_targets}
yann@458
   110
        CT_DoLog EXTRA "Installing binutils' libraries (${targets}) for target"
yann@660
   111
        CT_DoExecLog ALL make DESTDIR="${CT_SYSROOT_DIR}" ${install_targets}
yann@458
   112
yann@458
   113
        CT_Popd
yann@458
   114
        CT_EndStep
yann@458
   115
    fi
yann@1
   116
}