172ecb8
172ecb8
%define build_all 1
172ecb8
%define build_alpha %{build_all}
172ecb8
%define build_arm %{build_all}
d08d987
%define build_aarch64 %{build_all}
172ecb8
%define build_avr32 %{build_all}
172ecb8
%define build_blackfin %{build_all}
172ecb8
%define build_c6x %{build_all}
172ecb8
%define build_cris %{build_all}
172ecb8
%define build_frv %{build_all}
172ecb8
%define build_h8300 %{build_all}
172ecb8
%define build_hppa64 %{build_all}
172ecb8
%define build_ia64 %{build_all}
172ecb8
%define build_m32r %{build_all}
172ecb8
%define build_m68k %{build_all}
172ecb8
%define build_microblaze %{build_all}
172ecb8
%define build_mips64 %{build_all}
172ecb8
%define build_mn10300 %{build_all}
172ecb8
%define build_openrisc %{build_all}
172ecb8
%define build_powerpc64 %{build_all}
172ecb8
%define build_s390x %{build_all}
172ecb8
%define build_score %{build_all}
d17fb9c
%define build_sh %{build_all}
d17fb9c
%define build_sh64 %{build_all}
172ecb8
%define build_sparc64 %{build_all}
172ecb8
%define build_tile %{build_all}
172ecb8
%define build_x86_64 %{build_all}
172ecb8
%define build_xtensa %{build_all}
172ecb8
172ecb8
# 32-bit packages we don't build as we can use the 64-bit package instead
172ecb8
%define build_hppa 0
172ecb8
%define build_i386 0
172ecb8
%define build_mips 0
172ecb8
%define build_powerpc 0
172ecb8
%define build_s390 0
172ecb8
%define build_sparc 0
d17fb9c
%define build_sh4 0
172ecb8
172ecb8
# not available in binutils-2.22
172ecb8
%define build_hexagon 0
172ecb8
%define build_unicore32 0
172ecb8
172ecb8
Summary: A GNU collection of cross-compilation binary utilities
172ecb8
Name: cross-binutils
d08d987
Version: 2.23.51.0.3
7429046
Release: 1%{?dist}.1
172ecb8
License: GPLv3+
172ecb8
Group: Development/Tools
172ecb8
URL: http://sources.redhat.com/binutils
172ecb8
d17fb9c
Source: ftp://ftp.kernel.org/pub/linux/devel/binutils/binutils-%{version}.tar.xz
172ecb8
# The ftp.kernel.org/pub/linux/devel/binutils/ page is (temporarily) unavailable
172ecb8
# so we use the GNU site instead.
172ecb8
# Source: http://ftp.gnu.org/gnu/binutils/binutils-%{version}.tar.bz2
172ecb8
Source2: binutils-2.19.50.0.1-output-format.sed
172ecb8
Patch01: binutils-2.20.51.0.2-libtool-lib64.patch
172ecb8
Patch02: binutils-2.20.51.0.10-ppc64-pie.patch
172ecb8
Patch03: binutils-2.20.51.0.2-ia64-lib64.patch
172ecb8
Patch04: binutils-2.20.51.0.2-version.patch
172ecb8
Patch05: binutils-2.20.51.0.2-set-long-long.patch
172ecb8
Patch06: binutils-2.20.51.0.10-copy-osabi.patch
172ecb8
Patch07: binutils-2.20.51.0.10-sec-merge-emit.patch
172ecb8
# Enable -zrelro by default: BZ #621983
d17fb9c
Patch08: binutils-2.22.52.0.1-relro-on-by-default.patch
d17fb9c
# Local patch - export demangle.h with the binutils-devel rpm.
d17fb9c
Patch09: binutils-2.22.52.0.1-export-demangle.h.patch
d08d987
# Disable checks that config.h has been included before system headers.  BZ #845084
d08d987
Patch10: binutils-2.22.52.0.4-no-config-h-check.patch
d08d987
# Renames ARM LDRALT insn to LDALT.  BZ# 869025
d08d987
Patch11: binutils-2.23.51.0.3-arm-ldralt.patch
7429046
# Deal with corrupted binaries (rh #1162676)
7429046
Patch21: binutils-2.23.51.0.3-corrupt-binaries.patch
7429046
172ecb8
Buildroot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
172ecb8
BuildRequires: texinfo >= 4.0, gettext, flex, bison, zlib-devel
172ecb8
# Required for: ld-bootstrap/bootstrap.exp bootstrap with --static
172ecb8
# It should not be required for: ld-elf/elf.exp static {preinit,init,fini} array
172ecb8
Conflicts: gcc-c++ < 4.0.0
172ecb8
%ifarch ia64
172ecb8
Obsoletes: gnupro <= 1117-1
172ecb8
%endif
9fbe009
Provides: bundled(libiberty)
172ecb8
172ecb8
%description
172ecb8
Binutils is a collection of binary utilities, including ar (for
172ecb8
creating, modifying and extracting from archives), as (a family of GNU
172ecb8
assemblers), gprof (for displaying call graph profile data), ld (the
172ecb8
GNU linker), nm (for listing symbols from object files), objcopy (for
172ecb8
copying and translating object files), objdump (for displaying
172ecb8
information from object files), ranlib (for generating an index for
172ecb8
the contents of an archive), readelf (for displaying detailed
172ecb8
information about binary files), size (for listing the section sizes
172ecb8
of an object or archive file), strings (for listing printable strings
172ecb8
from files), strip (for discarding symbols), and addr2line (for
172ecb8
converting addresses to file and line).
172ecb8
172ecb8
%package -n cross-binutils-common
172ecb8
Summary: Cross-build binary utility documentation and translation files
172ecb8
Group: Development/Tools
172ecb8
BuildArch: noarch
172ecb8
%description -n cross-binutils-common
172ecb8
Documentation, manual pages and translation files for cross-build binary image
172ecb8
generation, manipulation and query tools.
172ecb8
172ecb8
%define do_package() \
172ecb8
%if %2 \
172ecb8
%package -n binutils-%1 \
172ecb8
Summary: Cross-build binary utilities for %1 \
172ecb8
Group: Development/Tools \
172ecb8
Requires: cross-binutils-common == %{version}-%{release} \
172ecb8
%description -n binutils-%1 \
172ecb8
Cross-build binary image generation, manipulation and query tools. \
172ecb8
%endif
172ecb8
172ecb8
%do_package alpha-linux-gnu	%{build_alpha}
172ecb8
%do_package arm-linux-gnu	%{build_arm}
d08d987
%do_package aarch64-linux-gnu	%{build_aarch64}
172ecb8
%do_package avr32-linux-gnu	%{build_avr32}
172ecb8
%do_package bfin-linux-gnu	%{build_blackfin}
172ecb8
%do_package c6x-linux-gnu	%{build_c6x}
172ecb8
%do_package cris-linux-gnu	%{build_cris}
172ecb8
%do_package frv-linux-gnu	%{build_frv}
172ecb8
%do_package h8300-linux-gnu	%{build_h8300}
172ecb8
%do_package hexagon-linux-gnu	%{build_hexagon}
172ecb8
%do_package hppa-linux-gnu	%{build_hppa}
172ecb8
%do_package hppa64-linux-gnu	%{build_hppa64}
172ecb8
%do_package i386-linux-gnu	%{build_i386}
172ecb8
%do_package ia64-linux-gnu	%{build_ia64}
172ecb8
%do_package m32r-linux-gnu	%{build_m32r}
172ecb8
%do_package m68k-linux-gnu	%{build_m68k}
172ecb8
%do_package microblaze-linux-gnu %{build_microblaze}
172ecb8
%do_package mips-linux-gnu	%{build_mips}
172ecb8
%do_package mips64-linux-gnu	%{build_mips64}
172ecb8
%do_package mn10300-linux-gnu	%{build_mn10300}
172ecb8
%do_package openrisc-linux-gnu	%{build_openrisc}
172ecb8
%do_package powerpc-linux-gnu	%{build_powerpc}
172ecb8
%do_package powerpc64-linux-gnu	%{build_powerpc64}
172ecb8
%do_package s390-linux-gnu	%{build_s390}
172ecb8
%do_package s390x-linux-gnu	%{build_s390x}
172ecb8
%do_package score-linux-gnu	%{build_score}
172ecb8
%do_package sh-linux-gnu	%{build_sh}
172ecb8
%do_package sh4-linux-gnu	%{build_sh4}
172ecb8
%do_package sh64-linux-gnu	%{build_sh64}
172ecb8
%do_package sparc-linux-gnu	%{build_sparc}
172ecb8
%do_package sparc64-linux-gnu	%{build_sparc64}
172ecb8
%do_package tile-linux-gnu	%{build_tile}
172ecb8
%do_package unicore32-linux-gnu	%{build_unicore32}
172ecb8
%do_package x86_64-linux-gnu	%{build_x86_64}
172ecb8
%do_package xtensa-linux-gnu	%{build_xtensa}
172ecb8
172ecb8
# Where the binaries aimed at gcc will live (ie. /usr/<target>/bin/)
172ecb8
%define auxbin_prefix %{_exec_prefix}
172ecb8
172ecb8
###############################################################################
172ecb8
#
172ecb8
# Preparation
172ecb8
#
172ecb8
###############################################################################
172ecb8
%prep
172ecb8
172ecb8
%define srcdir binutils-%{version}
172ecb8
%setup -q -n %{srcdir} -c
172ecb8
cd %{srcdir}
172ecb8
%patch01 -p0 -b .libtool-lib64~
172ecb8
%patch02 -p0 -b .ppc64-pie~
172ecb8
%ifarch ia64
172ecb8
%if "%{_lib}" == "lib64"
172ecb8
%patch03 -p0 -b .ia64-lib64~
172ecb8
%endif
172ecb8
%endif
172ecb8
%patch04 -p0 -b .version~
172ecb8
%patch05 -p0 -b .set-long-long~
172ecb8
%patch06 -p0 -b .copy-osabi~
172ecb8
%patch07 -p0 -b .sec-merge-emit~
d17fb9c
%if 0%{?fedora} >= 18 || 0%{?rhel} >= 7
d17fb9c
%patch08 -p0 -b .relro~
172ecb8
%endif
d17fb9c
%patch09 -p0 -b .export-demangle-h~
d08d987
%patch10 -p0 -b .no-config-h-check~
d08d987
%patch11 -p0 -b .arm-ldralt~
7429046
%patch21 -p1 -b .currupted-binaries~
d2cefe8
172ecb8
# We cannot run autotools as there is an exact requirement of autoconf-2.59.
172ecb8
172ecb8
# On ppc64 we might use 64KiB pages
172ecb8
sed -i -e '/#define.*ELF_COMMONPAGESIZE/s/0x1000$/0x10000/' bfd/elf*ppc.c
172ecb8
# LTP sucks
172ecb8
perl -pi -e 's/i\[3-7\]86/i[34567]86/g' */conf*
172ecb8
sed -i -e 's/%''{release}/%{release}/g' bfd/Makefile{.am,.in}
172ecb8
sed -i -e '/^libopcodes_la_\(DEPENDENCIES\|LIBADD\)/s,$, ../bfd/libbfd.la,' opcodes/Makefile.{am,in}
172ecb8
# Build libbfd.so and libopcodes.so with -Bsymbolic-functions if possible.
172ecb8
if gcc %{optflags} -v --help 2>&1 | grep -q -- -Bsymbolic-functions; then
172ecb8
sed -i -e 's/^libbfd_la_LDFLAGS = /&-Wl,-Bsymbolic-functions /' bfd/Makefile.{am,in}
172ecb8
sed -i -e 's/^libopcodes_la_LDFLAGS = /&-Wl,-Bsymbolic-functions /' opcodes/Makefile.{am,in}
172ecb8
fi
172ecb8
# $PACKAGE is used for the gettext catalog name.
172ecb8
sed -i -e 's/^ PACKAGE=/ PACKAGE=cross-/' */configure
172ecb8
# Undo the name change to run the testsuite.
172ecb8
for tool in binutils gas ld
172ecb8
do
172ecb8
  sed -i -e "2aDEJATOOL = $tool" $tool/Makefile.am
172ecb8
  sed -i -e "s/^DEJATOOL = .*/DEJATOOL = $tool/" $tool/Makefile.in
172ecb8
done
172ecb8
touch */configure
172ecb8
172ecb8
function prep_target () {
172ecb8
    target=$1
172ecb8
    cond=$2
172ecb8
172ecb8
    if [ $cond = 1 ]
172ecb8
    then
172ecb8
	echo $1 >&5
172ecb8
    fi
172ecb8
}
172ecb8
172ecb8
cd ..
172ecb8
(
172ecb8
    prep_target alpha-linux-gnu		%{build_alpha}
172ecb8
    prep_target arm-linux-gnu		%{build_arm}
d08d987
    prep_target aarch64-linux-gnu	%{build_aarch64}
172ecb8
    prep_target avr32-linux-gnu		%{build_avr32}
172ecb8
    prep_target bfin-linux-gnu		%{build_blackfin}
172ecb8
    prep_target c6x-linux-gnu		%{build_c6x}
172ecb8
    prep_target cris-linux-gnu		%{build_cris}
172ecb8
    prep_target frv-linux-gnu		%{build_frv}
172ecb8
    prep_target h8300-linux-gnu		%{build_h8300}
172ecb8
    prep_target hexagon-linux-gnu	%{build_hexagon}
172ecb8
    prep_target hppa-linux-gnu		%{build_hppa}
172ecb8
    prep_target hppa64-linux-gnu	%{build_hppa64}
172ecb8
    prep_target i386-linux-gnu		%{build_i386}
172ecb8
    prep_target ia64-linux-gnu		%{build_ia64}
172ecb8
    prep_target m32r-linux-gnu		%{build_m32r}
172ecb8
    prep_target m68k-linux-gnu		%{build_m68k}
172ecb8
    prep_target microblaze-linux-gnu	%{build_microblaze}
172ecb8
    prep_target mips-linux-gnu		%{build_mips}
172ecb8
    prep_target mips64-linux-gnu	%{build_mips64}
172ecb8
    prep_target mn10300-linux-gnu	%{build_mn10300}
172ecb8
    prep_target openrisc-linux-gnu	%{build_openrisc}
172ecb8
    prep_target powerpc-linux-gnu	%{build_powerpc}
172ecb8
    prep_target powerpc64-linux-gnu	%{build_powerpc64}
172ecb8
    prep_target s390-linux-gnu		%{build_s390}
172ecb8
    prep_target s390x-linux-gnu		%{build_s390x}
172ecb8
    prep_target score-linux-gnu		%{build_score}
172ecb8
    prep_target sh-linux-gnu		%{build_sh}
172ecb8
    prep_target sh4-linux-gnu		%{build_sh4}
172ecb8
    prep_target sh64-linux-gnu		%{build_sh64}
172ecb8
    prep_target sparc-linux-gnu		%{build_sparc}
172ecb8
    prep_target sparc64-linux-gnu	%{build_sparc64}
172ecb8
    prep_target tile-linux-gnu		%{build_tile}
172ecb8
    prep_target unicore32-linux-gnu	%{build_unicore32}
172ecb8
    prep_target x86_64-linux-gnu	%{build_x86_64}
172ecb8
    prep_target xtensa-linux-gnu	%{build_xtensa}
172ecb8
) 5>target.list
172ecb8
172ecb8
n=0
172ecb8
for target in `cat target.list`
172ecb8
do
172ecb8
    n=1
172ecb8
    break
172ecb8
done
172ecb8
if [ $n = 0 ]
172ecb8
then
172ecb8
    echo "No targets selected" >&2
172ecb8
    exit 8
172ecb8
fi
172ecb8
172ecb8
###############################################################################
172ecb8
#
172ecb8
# Build
172ecb8
#
172ecb8
###############################################################################
172ecb8
%build
172ecb8
172ecb8
function config_target () {
172ecb8
    arch=$1
172ecb8
    prefix=$arch-
172ecb8
    build_dir=$arch
172ecb8
172ecb8
    case $arch in
172ecb8
	arm-*)		target=arm-linux-gnueabi;;
d08d987
	aarch64-*)	target=aarch64-linux-gnu;;
172ecb8
	avr32-*)	target=avr-linux;;
172ecb8
	bfin-*)		target=bfin-uclinux;;
172ecb8
	c6x-*)		target=c6x-uclinux;;
172ecb8
	h8300-*)	target=h8300-elf;;
172ecb8
	mn10300-*)	target=am33_2.0-linux;;
172ecb8
	m68knommu-*)	target=m68k-linux;;
172ecb8
	openrisc-*)	target=openrisc-elf;;
172ecb8
	score-*)	target=score-elf;;
d17fb9c
	sh64-*)		target=sh64-linux;;
172ecb8
	tile-*)		target=tilegx-linux;;
172ecb8
	v850-*)		target=v850e-linux;;
172ecb8
	*)		target=$arch;;
172ecb8
    esac
172ecb8
172ecb8
    echo $arch: target is $target
172ecb8
    export CFLAGS="$RPM_OPT_FLAGS"
172ecb8
    CARGS=
172ecb8
172ecb8
    case $target in hppa64*)
172ecb8
	    CARGS="$CARGS --enable-targets=hppa-linux-gnu"
172ecb8
	    ;;
172ecb8
    esac
172ecb8
172ecb8
    case $target in i?86*|sparc*|ppc*|s390*|sh*|arm*)
172ecb8
	    CARGS="$CARGS --enable-64-bit-bfd"
172ecb8
	    ;;
172ecb8
    esac
172ecb8
172ecb8
    case $target in ia64*)
172ecb8
	    CARGS="$CARGS --enable-targets=i386-linux"
172ecb8
	    ;;
172ecb8
    esac
172ecb8
172ecb8
    case $target in ppc*|ppc64*)
172ecb8
	    CARGS="$CARGS --enable-targets=spu"
172ecb8
	    ;;
172ecb8
    esac
172ecb8
172ecb8
    case $target in sh-*)
172ecb8
	    CARGS="$CARGS --enable-targets=sh4-linux"
172ecb8
	    ;;
172ecb8
    esac
172ecb8
172ecb8
    case $target in sh64*)
d17fb9c
	    CARGS="$CARGS --enable-targets=sh64-linux,sh-elf,sh-linux,sh4-linux"
172ecb8
	    ;;
172ecb8
    esac
172ecb8
172ecb8
    mkdir $build_dir
172ecb8
    cd $build_dir
172ecb8
172ecb8
    # We could optimize the cross builds size by --enable-shared but the produced
172ecb8
    # binaries may be less convenient in the embedded environment.
172ecb8
    LDFLAGS='-Wl,-z,relro ' \
172ecb8
    ../%{srcdir}/configure \
172ecb8
	--disable-dependency-tracking \
172ecb8
	--disable-silent-rules \
172ecb8
	--enable-checking \
172ecb8
	--prefix=%{_prefix} \
172ecb8
	--exec-prefix=%{auxbin_prefix} \
172ecb8
	--bindir=%{_bindir} \
172ecb8
	--sbindir=%{_sbindir} \
172ecb8
	--sysconfdir=%{_sysconfdir} \
172ecb8
	--datadir=%{_datadir} \
172ecb8
	--includedir=%{_includedir} \
172ecb8
	--libdir=%{_libdir} \
172ecb8
	--libexecdir=%{_libexecdir} \
172ecb8
	--localstatedir=%{_localstatedir} \
172ecb8
	--sharedstatedir=%{_sharedstatedir} \
172ecb8
	--mandir=%{_mandir} \
172ecb8
	--infodir=%{_infodir} \
172ecb8
	--build=%{_target_platform} \
172ecb8
	--host=%{_target_platform} \
172ecb8
	--target=$target \
172ecb8
	--program-prefix=$prefix \
172ecb8
	--disable-shared \
624ab3c
	--disable-install_libbfd \
172ecb8
	$CARGS \
172ecb8
	--with-bugurl=http://bugzilla.redhat.com/bugzilla/
172ecb8
    cd ..
172ecb8
}
172ecb8
172ecb8
for target in `cat target.list`
172ecb8
do
172ecb8
    config_target $target
172ecb8
done
172ecb8
172ecb8
function build_target () {
172ecb8
    arch=$1
172ecb8
    make -C $arch %{_smp_mflags} tooldir=%{_prefix} all
172ecb8
}
172ecb8
172ecb8
for target in `cat target.list`
172ecb8
do
172ecb8
    build_target $target
172ecb8
done
172ecb8
172ecb8
# for documentation purposes only
172ecb8
mkdir cross-binutils
172ecb8
cd cross-binutils
172ecb8
../%{srcdir}/configure \
172ecb8
    --disable-dependency-tracking \
172ecb8
    --disable-silent-rules \
172ecb8
    --prefix=%{_prefix} \
172ecb8
    --exec-prefix=%{auxbin_prefix} \
172ecb8
    --bindir=%{_bindir} \
172ecb8
    --sbindir=%{_sbindir} \
172ecb8
    --sysconfdir=%{_sysconfdir} \
172ecb8
    --datadir=%{_datadir} \
172ecb8
    --includedir=%{_includedir} \
172ecb8
    --libdir=%{_libdir} \
172ecb8
    --libexecdir=%{_libexecdir} \
172ecb8
    --localstatedir=%{_localstatedir} \
172ecb8
    --sharedstatedir=%{_sharedstatedir} \
172ecb8
    --mandir=%{_mandir} \
172ecb8
    --infodir=%{_infodir} \
172ecb8
    --program-prefix=cross- \
172ecb8
    --disable-shared \
172ecb8
    --with-bugurl=http://bugzilla.redhat.com/bugzilla/
172ecb8
make %{_smp_mflags} tooldir=%{_prefix} all
172ecb8
cd ..
172ecb8
172ecb8
###############################################################################
172ecb8
#
172ecb8
# Installation
172ecb8
#
172ecb8
###############################################################################
172ecb8
%install
172ecb8
rm -rf %{buildroot}
172ecb8
172ecb8
function install_bin () {
172ecb8
    cross=$1
172ecb8
    make install -C $cross DESTDIR=%{buildroot}
172ecb8
}
172ecb8
172ecb8
for target in `cat target.list`
172ecb8
do
d17fb9c
    echo "=== INSTALL target $target ==="
172ecb8
    install_bin $target
d17fb9c
d17fb9c
#    if [ $target = sh64-linux-gnu ]
d17fb9c
#    then
d17fb9c
#	ln -s %{auxbin_prefix}/sh64-elf %{buildroot}%{auxbin_prefix}/sh64-linux
d17fb9c
#    fi
172ecb8
done
172ecb8
d17fb9c
echo "=== INSTALL man targets ==="
172ecb8
make install-man1 -C cross-binutils/binutils/doc DESTDIR=%{buildroot}
172ecb8
make install-man1 -C cross-binutils/gas/doc DESTDIR=%{buildroot}
172ecb8
make install-man1 -C cross-binutils/ld DESTDIR=%{buildroot}
172ecb8
make install-man1 -C cross-binutils/gprof DESTDIR=%{buildroot}
172ecb8
d17fb9c
echo "=== INSTALL po targets ==="
172ecb8
make install -C cross-binutils/binutils/po DESTDIR=%{buildroot}
172ecb8
make install -C cross-binutils/gas/po DESTDIR=%{buildroot}
172ecb8
make install -C cross-binutils/ld/po DESTDIR=%{buildroot}
172ecb8
make install -C cross-binutils/gprof/po DESTDIR=%{buildroot}
172ecb8
make install -C cross-binutils/bfd/po DESTDIR=%{buildroot}
172ecb8
make install -C cross-binutils/opcodes/po DESTDIR=%{buildroot}
172ecb8
172ecb8
# For cross-binutils we drop the documentation.
d17fb9c
echo "=== REMOVE documentation ==="
172ecb8
rm -rf %{buildroot}%{_infodir}
172ecb8
rm -f %{buildroot}%{_infodir}/dir
172ecb8
d17fb9c
echo "=== REMOVE libraries and scripts ==="
172ecb8
rm -rf %{buildroot}%{_libdir}/libiberty.a
172ecb8
rm -rf %{buildroot}%{auxbin_prefix}/*/lib/ldscripts
d17fb9c
rmdir %{buildroot}%{auxbin_prefix}/*/lib || :
172ecb8
d17fb9c
echo "=== BUILD file lists ==="
172ecb8
function build_file_list () {
172ecb8
    arch=$1
172ecb8
    cpu=${arch%%%%-*}
172ecb8
172ecb8
    case $cpu in
172ecb8
	avr32)		target_cpu=avr;;
172ecb8
	bfin)		target_cpu=bfin;;
172ecb8
	h8300)		target_cpu=h8300;;
172ecb8
	mn10300)	target_cpu=am33_2.0;;
172ecb8
	openrisc)	target_cpu=openrisc;;
172ecb8
	score)		target_cpu=score;;
172ecb8
	tile)		target_cpu=tilegx;;
172ecb8
	v850)		target_cpu=v850e;;
172ecb8
	*)		target_cpu=$cpu;;
172ecb8
    esac
172ecb8
172ecb8
    (
172ecb8
	echo '%%defattr(-,root,root,-)'
172ecb8
	echo %{_bindir}/$arch-[!l]\*
172ecb8
	echo %{_bindir}/$arch-ld\*
172ecb8
	echo %{auxbin_prefix}/$target_cpu-*/bin/\*
172ecb8
	echo %{_mandir}/man1/$arch-\*
172ecb8
    ) >files.$arch
172ecb8
}
172ecb8
172ecb8
for target in `cat target.list`
172ecb8
do
172ecb8
    build_file_list $target
172ecb8
done
172ecb8
172ecb8
# All the installed manual pages and translation files for each program are the
172ecb8
# same, so symlink them to the core package
d17fb9c
echo "=== CROSSLINK man pages ==="
172ecb8
cd %{buildroot}%{_mandir}/man1
172ecb8
for i in cross-*.1*
172ecb8
do
172ecb8
    j=${i#cross-}
172ecb8
172ecb8
    for k in *-$j
172ecb8
    do
172ecb8
	if [ $k != $i ]
172ecb8
	then
172ecb8
	    ln -sf $i $k
172ecb8
	fi
172ecb8
    done
172ecb8
done
172ecb8
172ecb8
172ecb8
# Add ld.bfd manual pages
172ecb8
find * -name "*ld.1*" -a ! -name "cross-ld.1*" -print |
172ecb8
while read x
172ecb8
do
172ecb8
    y=`echo $x | sed -e s/ld[.]1/ld.bfd.1/`
172ecb8
    ln -s $x $y
172ecb8
done
172ecb8
172ecb8
cd -
172ecb8
172ecb8
# Find the language files which only exist in the common package
172ecb8
(
172ecb8
    %find_lang cross-binutils
172ecb8
    %find_lang cross-opcodes
172ecb8
    %find_lang cross-bfd
172ecb8
    %find_lang cross-gas
172ecb8
    %find_lang cross-ld
172ecb8
    %find_lang cross-gprof
172ecb8
    cat cross-binutils.lang
172ecb8
    cat cross-opcodes.lang
172ecb8
    cat cross-bfd.lang
172ecb8
    cat cross-gas.lang
172ecb8
    cat cross-ld.lang
172ecb8
    cat cross-gprof.lang
172ecb8
) >files.cross
172ecb8
172ecb8
172ecb8
172ecb8
###############################################################################
172ecb8
#
172ecb8
# Cleanup
172ecb8
#
172ecb8
###############################################################################
172ecb8
%clean
172ecb8
rm -rf %{buildroot}
172ecb8
172ecb8
###############################################################################
172ecb8
#
172ecb8
# Filesets
172ecb8
#
172ecb8
###############################################################################
172ecb8
%files -n cross-binutils-common -f files.cross
172ecb8
%doc %{srcdir}/README
172ecb8
%doc %{srcdir}/COPYING*
172ecb8
%{_mandir}/man1/cross-*
172ecb8
172ecb8
%define do_files() \
172ecb8
%if %2 \
172ecb8
%files -n binutils-%1 -f files.%1 \
172ecb8
%endif
172ecb8
172ecb8
%do_files alpha-linux-gnu	%{build_alpha}
172ecb8
%do_files arm-linux-gnu		%{build_arm}
d08d987
%do_files aarch64-linux-gnu	%{build_aarch64}
172ecb8
%do_files avr32-linux-gnu	%{build_avr32}
172ecb8
%do_files bfin-linux-gnu	%{build_blackfin}
172ecb8
%do_files c6x-linux-gnu		%{build_c6x}
172ecb8
%do_files cris-linux-gnu	%{build_cris}
172ecb8
%do_files frv-linux-gnu		%{build_frv}
172ecb8
%do_files h8300-linux-gnu	%{build_h8300}
172ecb8
%do_files hexagon-linux-gnu	%{build_hexagon}
172ecb8
%do_files hppa-linux-gnu	%{build_hppa}
172ecb8
%do_files hppa64-linux-gnu	%{build_hppa64}
172ecb8
%do_files i386-linux-gnu	%{build_i386}
172ecb8
%do_files ia64-linux-gnu	%{build_ia64}
172ecb8
%do_files m32r-linux-gnu	%{build_m32r}
172ecb8
%do_files m68k-linux-gnu	%{build_m68k}
172ecb8
%do_files microblaze-linux-gnu	%{build_microblaze}
172ecb8
%do_files mips-linux-gnu	%{build_mips}
172ecb8
%do_files mips64-linux-gnu	%{build_mips64}
172ecb8
%do_files mn10300-linux-gnu	%{build_mn10300}
172ecb8
%do_files openrisc-linux-gnu	%{build_openrisc}
172ecb8
%do_files powerpc-linux-gnu	%{build_powerpc}
172ecb8
%do_files powerpc64-linux-gnu	%{build_powerpc64}
172ecb8
%do_files s390-linux-gnu	%{build_s390}
172ecb8
%do_files s390x-linux-gnu	%{build_s390x}
172ecb8
%do_files score-linux-gnu	%{build_score}
172ecb8
%do_files sh-linux-gnu		%{build_sh}
172ecb8
%do_files sh4-linux-gnu		%{build_sh4}
172ecb8
%do_files sh64-linux-gnu	%{build_sh64}
172ecb8
%do_files sparc-linux-gnu	%{build_sparc}
172ecb8
%do_files sparc64-linux-gnu	%{build_sparc64}
172ecb8
%do_files tile-linux-gnu	%{build_tile}
172ecb8
%do_files unicore32-linux-gnu	%{build_unicore32}
172ecb8
%do_files x86_64-linux-gnu	%{build_x86_64}
172ecb8
%do_files xtensa-linux-gnu	%{build_xtensa}
172ecb8
172ecb8
%changelog
7429046
* Tue Nov 11 2014 Lubomir Rintel <lkundrak@v3.sk> - 2.23.51.0.3-1.1
7429046
- Deal with corrupted object files (rh #1162676)
7429046
d7a083d
* Fri Nov 2 2012 David Howells <dhowells@redhat.com> - 2.23.51.0.3-1
d08d987
- Update to binutils-2.23.51.0.3.
d08d987
- Added support for aarch64.
d08d987
9fbe009
* Mon Oct 15 2012 Jon Ciesla <limburgher@gmail.com> - 2.22.52.0.3-4
9fbe009
- Provides: bundled(libiberty)
9fbe009
3860a20
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.22.52.0.3-3
3860a20
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
3860a20
624ab3c
* Wed Jul 11 2012 Dan HorĂ¡k <dan[at]danny.cz> - 2.22.52.0.3-2
624ab3c
- don't install libbfd/libopcode when host == target (eg. on s390x)
624ab3c
d17fb9c
* Wed May 30 2012 David Howells <dhowells@redhat.com> - 2.22.52.0.3-1
d17fb9c
- Update to binutils-2.22.52.0.3.
d2cefe8
- Fixed a warning in the assembler for h8300 that caused the build to fail.
d17fb9c
172ecb8
* Thu Mar 22 2012 David Howells <dhowells@redhat.com> - 2.22.52.0.1-8.1
172ecb8
- Initial import of cross-binutils [BZ 761619].
172ecb8
172ecb8
* Wed Mar 07 2012 Jakub Jelinek <jakub@redhat.com> - 2.22.52.0.1-8
172ecb8
- Fix up handling of hidden ifunc relocs on x86_64
172ecb8
- Add Intel TSX support