view sources/sections/binutils.build @ 1719:78050a31d1ee draft

Sigh. Checked in the wrong version of the patch (typo fix).
author Rob Landley <rob@landley.net>
date Tue, 06 Jan 2015 13:15:33 -0600
parents 3675adfb4e36
children eca87f8f58fb
line wrap: on
line source

# Build binutils, which provides the linker and assembler and such.

if [ ! -z "$ELF2FLT" ]
then
  BINUTILS_FLAGS="$BINUTILS_FLAGS --enable-install-libbfd"
fi

function configure_binutils()
{
#  AR=ar AS=as LD=ld NM=nm OBJDUMP=objdump OBJCOPY=objcopy \
    "$CURSRC/configure" --prefix="$STAGE_DIR" "$@" --target="$CROSS_TARGET" \
    --disable-nls --disable-shared --disable-multilib --disable-werror \
    --with-lib-path=lib --program-prefix="$TOOLCHAIN_PREFIX" $BINUTILS_FLAGS

  [ $? -ne 0 ] && dienow
}

# Don't require objective C on the host.
find . -name "*.m" | xargs rm

blank_workdir build-binutils

if [ -z "$HOST_ARCH" ]
then
  # Create a simple cross compiler, from this host to target $ARCH.
  # This has no prerequisites.

  # Define lots of environment variables to make configure behave.

  AR=ar AS=as LD=ld NM=nm OBJDUMP=objdump OBJCOPY=objcopy configure_binutils
else
  # Canadian cross for an arbitrary host/target.  The new compiler will run
  # on $HOST_ARCH as its host, and build executables for $ARCH as its target.
  # (Use host==target to produce a native compiler.)  Doing this requires
  # existing host ($HOST_ARCH) _and_ target ($ARCH) cross compilers as
  # prerequisites.


  AR="${HOST_ARCH}-ar" CC="${HOST_ARCH}-cc" configure_binutils \
    --build="$CROSS_HOST" --host="$CROSS_TARGET"
fi

# Now that it's configured, build and install binutils

make -j $CPUS configure-host &&
make -j $CPUS CFLAGS="-O2 $STATIC_FLAGS $CFLAGS" &&
ln -s lib "$STAGE_DIR/lib64" &&
make -j $CPUS install &&
rm "$STAGE_DIR/lib64" &&

# Fix up install

mkdir -p "$STAGE_DIR/include" &&
cp "$CURSRC/include/libiberty.h" "$STAGE_DIR/include" || dienow


if [ -z "$NO_CLEANUP" ]
then
  cd .. && rm -rf build-binutils || dienow
fi