scripts/build/binutils.sh
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Tue Sep 23 14:48:10 2008 +0000 (2008-09-23)
changeset 872 fd4bf138f08f
parent 659 5fb8f5a33f74
child 936 1f0324a7201a
permissions -rw-r--r--
Bart De VOS pointed out that removing absolute paths from the libc linker scripts is plainly wrong.
It dates from dawn ages of the original crosstool code, and is not well explained. At that time, binutils might not understand the sysroot stuff, and it was necessary to remove absolute paths in that case.

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