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