scripts/build/binutils/binutils.sh
author Remy Bohmer <linux@bohmer.net>
Sun Jul 11 22:23:34 2010 +0200 (2010-07-11)
changeset 2021 3e52a1510f87
parent 1809 b488b4815f9b
child 2097 056a2c826185
permissions -rw-r--r--
debug/gdb: Fix compilation for Mingw hosts

GDB requires PDcurses instead of ncurses while running on Windows.
So, do not always compile ncurses in case GDB needs to build.

PDcurses is provided by an earlier build step and is not described in
this file.

Signed-off-by: Remy Bohmer <linux@bohmer.net>
[yann.morin.1998@anciense.nib.fr: we already have a way to detect ncurses usage]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     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 # Download binutils
     6 do_binutils_get() {
     7     CT_GetFile "binutils-${CT_BINUTILS_VERSION}"                                        \
     8                {ftp,http}://{ftp.gnu.org/gnu,ftp.kernel.org/pub/linux/devel}/binutils   \
     9                ftp://gcc.gnu.org/pub/binutils/{releases,snapshots}
    10 }
    11 
    12 # Extract binutils
    13 do_binutils_extract() {
    14     CT_Extract "binutils-${CT_BINUTILS_VERSION}"
    15     CT_Patch "binutils" "${CT_BINUTILS_VERSION}"
    16 }
    17 
    18 # Build binutils
    19 do_binutils() {
    20     local -a extra_config
    21 
    22     mkdir -p "${CT_BUILD_DIR}/build-binutils"
    23     cd "${CT_BUILD_DIR}/build-binutils"
    24 
    25     CT_DoStep INFO "Installing binutils"
    26 
    27     # If GMP and MPFR were configured, then use that,
    28     # otherwise let binutils find the system-wide libraries, if they exist.
    29     [ -z "${CT_GMP}"    ] || extra_config+=("--with-gmp=${CT_PREFIX_DIR}")
    30     [ -z "${CT_MPFR}"   ] || extra_config+=("--with-mpfr=${CT_PREFIX_DIR}")
    31 
    32     CT_DoLog EXTRA "Configuring binutils"
    33     CFLAGS="${CT_CFLAGS_FOR_HOST}"                              \
    34     CT_DoExecLog ALL                                            \
    35     "${CT_SRC_DIR}/binutils-${CT_BINUTILS_VERSION}/configure"   \
    36         --build=${CT_BUILD}                                     \
    37         --host=${CT_HOST}                                       \
    38         --target=${CT_TARGET}                                   \
    39         --prefix=${CT_PREFIX_DIR}                               \
    40         --disable-nls                                           \
    41         --disable-multilib                                      \
    42         --disable-werror                                        \
    43         "${extra_config[@]}"                                    \
    44         ${CT_ARCH_WITH_FLOAT}                                   \
    45         ${CT_BINUTILS_EXTRA_CONFIG}                             \
    46         ${BINUTILS_SYSROOT_ARG}
    47 
    48     CT_DoLog EXTRA "Building binutils"
    49     CT_DoExecLog ALL make ${PARALLELMFLAGS}
    50 
    51     CT_DoLog EXTRA "Installing binutils"
    52     CT_DoExecLog ALL make install
    53 
    54     # Make those new tools available to the core C compilers to come.
    55     # Note: some components want the ${TARGET}-{ar,as,ld,strip} commands as
    56     # well. Create that.
    57     mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/bin"
    58     mkdir -p "${CT_CC_CORE_STATIC_PREFIX_DIR}/bin"
    59     mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/bin"
    60     mkdir -p "${CT_CC_CORE_SHARED_PREFIX_DIR}/bin"
    61     for t in ar as ld strip; do
    62         ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_STATIC_PREFIX_DIR}/${CT_TARGET}/bin/${t}"
    63         ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_STATIC_PREFIX_DIR}/bin/${CT_TARGET}-${t}"
    64         ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_SHARED_PREFIX_DIR}/${CT_TARGET}/bin/${t}"
    65         ln -sv "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" "${CT_CC_CORE_SHARED_PREFIX_DIR}/bin/${CT_TARGET}-${t}"
    66     done 2>&1 |CT_DoLog ALL
    67 
    68     CT_EndStep
    69 }
    70 
    71 # Now on for the target libraries
    72 do_binutils_target() {
    73     local -a extra_config
    74     local -a targets
    75     local -a build_targets
    76     local -a install_targets
    77     local t
    78 
    79     [ "${CT_BINUTILS_FOR_TARGET_IBERTY}" = "y" ] && targets+=("libiberty")
    80     [ "${CT_BINUTILS_FOR_TARGET_BFD}"    = "y" ] && targets+=("bfd")
    81     for t in "${targets[@]}"; do
    82         build_targets+=("all-${t}")
    83         install_targets+=("install-${t}")
    84     done
    85 
    86     # If GMP and MPFR were configured, then use that
    87     if [ "${CT_BINUTILS_TARGET_USE_GMP_MPFR}" = "y" ]; then
    88         extra_config+=("--with-gmp=${CT_SYSROOT_DIR}/usr")
    89         extra_config+=("--with-mpfr=${CT_SYSROOT_DIR}/usr")
    90     fi
    91 
    92     if [ "${#targets[@]}" -ne 0 ]; then
    93         CT_DoStep INFO "Installing binutils for target"
    94         mkdir -p "${CT_BUILD_DIR}/build-binutils-for-target"
    95         CT_Pushd "${CT_BUILD_DIR}/build-binutils-for-target"
    96 
    97         CT_DoLog EXTRA "Configuring binutils for target"
    98         CT_DoExecLog ALL                                            \
    99         "${CT_SRC_DIR}/binutils-${CT_BINUTILS_VERSION}/configure"   \
   100             --build=${CT_BUILD}                                     \
   101             --host=${CT_TARGET}                                     \
   102             --target=${CT_TARGET}                                   \
   103             --prefix=/usr                                           \
   104             --disable-werror                                        \
   105             --enable-shared                                         \
   106             --enable-static                                         \
   107             --disable-nls                                           \
   108             --disable-multilib                                      \
   109             "${extra_config[@]}"                                    \
   110             ${CT_ARCH_WITH_FLOAT}                                   \
   111             ${CT_BINUTILS_EXTRA_CONFIG}
   112 
   113         CT_DoLog EXTRA "Building binutils' libraries (${targets[*]}) for target"
   114         CT_DoExecLog ALL make ${PARALLELMFLAGS} "${build_targets[@]}"
   115         CT_DoLog EXTRA "Installing binutils' libraries (${targets[*]}) for target"
   116         CT_DoExecLog ALL make DESTDIR="${CT_SYSROOT_DIR}" "${install_targets[@]}"
   117 
   118         CT_Popd
   119         CT_EndStep
   120     fi
   121 }