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