172ecb8
6739dc5
%define cross cross
6739dc5
%define rpmprefix %{nil}
6739dc5
0b35bb5
%define build_all		1
0b35bb5
%define build_alpha		%{build_all}
0b35bb5
%define build_arm		%{build_all}
0b35bb5
%define build_aarch64		%{build_all}
0b35bb5
%define build_avr32		%{build_all}
0b35bb5
%define build_blackfin		%{build_all}
0b35bb5
%define build_c6x		%{build_all}
0b35bb5
%define build_cris		%{build_all}
0b35bb5
%define build_frv		%{build_all}
0b35bb5
%define build_h8300		%{build_all}
7c5a462
%define build_hppa		%{build_all}
0b35bb5
%define build_hppa64		%{build_all}
0b35bb5
%define build_ia64		%{build_all}
0b35bb5
%define build_m32r		%{build_all}
0b35bb5
%define build_m68k		%{build_all}
e4cc6a5
%define build_metag		%{build_all}
0b35bb5
%define build_microblaze	%{build_all}
0b35bb5
%define build_mips64		%{build_all}
0b35bb5
%define build_mn10300		%{build_all}
4626293
%define build_nios2		%{build_all}
0b35bb5
%define build_openrisc		%{build_all}
0b35bb5
%define build_powerpc64		%{build_all}
0b35bb5
%define build_s390x		%{build_all}
0b35bb5
%define build_score		%{build_all}
0b35bb5
%define build_sh		%{build_all}
0b35bb5
%define build_sh64		%{build_all}
0b35bb5
%define build_sparc64		%{build_all}
0b35bb5
%define build_tile		%{build_all}
0b35bb5
%define build_x86_64		%{build_all}
0b35bb5
%define build_xtensa		%{build_all}
172ecb8
172ecb8
# 32-bit packages we don't build as we can use the 64-bit package instead
0b35bb5
%define build_i386		0
0b35bb5
%define build_mips		0
0b35bb5
%define build_powerpc		0
0b35bb5
%define build_s390		0
0b35bb5
%define build_sparc		0
0b35bb5
%define build_sh4		0
172ecb8
322d22f
# not available in binutils-2.24
0b35bb5
%define build_hexagon		0
0b35bb5
%define build_unicore32		0
172ecb8
172ecb8
Summary: A GNU collection of cross-compilation binary utilities
6739dc5
Name: %{cross}-binutils
e4cc6a5
Version: 2.24
4626293
Release: 5%{?dist}
172ecb8
License: GPLv3+
172ecb8
Group: Development/Tools
172ecb8
URL: http://sources.redhat.com/binutils
172ecb8
c6dd967
# Note - the Linux Kernel binutils releases are too unstable and contain too
c6dd967
# many controversial patches so we stick with the official FSF version
c6dd967
# instead.
e4cc6a5
Source: http://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.bz2
e4cc6a5
172ecb8
Source2: binutils-2.19.50.0.1-output-format.sed
057864b
057864b
# Bring up to date with what's in the git release branch
057864b
Patch00: binutils-2.24-cab6c3ee9785f072a373afe31253df0451db93cf.patch
057864b
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
c6dd967
# Fix addr2line to use the dynamic symbol table if it could not find any ordinary symbols.
e4cc6a5
Patch11: binutils-2.23.52.0.1-addr2line-dynsymtab.patch
e4cc6a5
Patch12: binutils-2.23.2-kernel-ld-r.patch
e4cc6a5
# Correct bug introduced by patch 12
e4cc6a5
Patch13: binutils-2.23.2-aarch64-em.patch
e4cc6a5
# Fix building opcodes library with -Werror=format-security
e4cc6a5
Patch14: binutils-2.24-s390-mkopc.patch
e4cc6a5
# Import fixes for IFUNC and PLT handling for AArch64.
e4cc6a5
Patch15: binutils-2.24-elfnn-aarch64.patch
e4cc6a5
# Fix decoding of abstract instance names using DW_FORM_ref_addr.
e4cc6a5
Patch16: binutils-2.24-DW_FORM_ref_addr.patch
057864b
# Fix compiling using gcc 4.9
057864b
Patch17: binutils-2.24-set-section-macros.patch
057864b
# Fix detections of uncompressed .debug_str sections that look like they have been compressed.
057864b
Patch18: binutils-2.24-fake-zlib-sections.patch
057864b
# Fix detections little endian PPC shared libraries
057864b
Patch19: binutils-2.24-ldforcele.patch
d2cefe8
5884884
# Fix formatless sprintfs in Score-specific code.
5884884
Patch100: cross-binutils-2.24-score-sprintf.patch
057864b
Patch101: binutils-2.24-kernel-ld-r-fix.patch
cab55cf
Patch102: cross-binutils-2.24-m68k-gcc-error.patch
5884884
172ecb8
Buildroot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
172ecb8
BuildRequires: texinfo >= 4.0, gettext, flex, bison, zlib-devel
9fbc4f9
# BZ 920545: We need pod2man in order to build the manual pages.
9fbc4f9
BuildRequires: /usr/bin/pod2man
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
6739dc5
%package -n %{cross}-binutils-common
172ecb8
Summary: Cross-build binary utility documentation and translation files
172ecb8
Group: Development/Tools
172ecb8
BuildArch: noarch
6739dc5
%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 \
6739dc5
%package -n %{rpmprefix}binutils-%1 \
172ecb8
Summary: Cross-build binary utilities for %1 \
172ecb8
Group: Development/Tools \
6739dc5
Requires: %{cross}-binutils-common == %{version}-%{release} \
6739dc5
%description -n %{rpmprefix}binutils-%1 \
172ecb8
Cross-build binary image generation, manipulation and query tools. \
172ecb8
%endif
172ecb8
ed831d0
%define do_symlink() \
ed831d0
%if %2 \
ed831d0
%package -n %{rpmprefix}binutils-%1 \
ed831d0
Summary: Cross-build binary utilities for %1 \
ed831d0
Group: Development/Tools \
ed831d0
Requires: binutils-%3 == %{version}-%{release} \
ed831d0
%description -n %{rpmprefix}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}
e4cc6a5
%do_package metag-linux-gnu	%{build_metag}
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}
4626293
%do_package nios2-linux-gnu	%{build_nios2}
172ecb8
%do_package openrisc-linux-gnu	%{build_openrisc}
172ecb8
%do_package powerpc-linux-gnu	%{build_powerpc}
172ecb8
%do_package powerpc64-linux-gnu	%{build_powerpc64}
ed831d0
%do_symlink ppc-linux-gnu	%{build_powerpc}	powerpc-linux-gnu
ed831d0
%do_symlink ppc64-linux-gnu	%{build_powerpc64}	powerpc64-linux-gnu
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
e4cc6a5
%define srcdir binutils-%{version}
172ecb8
%setup -q -n %{srcdir} -c
172ecb8
cd %{srcdir}
057864b
%patch00 -p1 -b .latest-git~
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~
e4cc6a5
%patch11 -p0 -b .addr2line~
e4cc6a5
%patch12 -p0 -b .kernel-ld-r~
e4cc6a5
%patch13 -p0 -b .aarch64~
e4cc6a5
%patch14 -p0 -b .mkopc~
057864b
#%patch15 -p0 -b .elf-aarch64~
e4cc6a5
%patch16 -p0 -b .ref-addr~
057864b
%patch17 -p0 -b .sec-macros~
057864b
%patch18 -p0 -b .fake-zlib~
057864b
%patch19 -p0 -b .ldforcele~
d2cefe8
5884884
%patch100 -p1 -b .score~
057864b
%patch101 -p0 -b .kernel-ld-r-fix~
cab55cf
%patch102 -p1 -b .m68k-config-fix~
5884884
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.
6739dc5
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
0b35bb5
    if [ $cond != 0 ]
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}
e4cc6a5
    prep_target metag-linux-gnu		%{build_metag}
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}
4626293
    prep_target nios2-linux-gnu		%{build_nios2}
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-
0b35bb5
    build_dir=${1%%%%-*}
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;;
d648358
	parisc-*)	target=hppa-linux;;
172ecb8
	score-*)	target=score-elf;;
d17fb9c
	sh64-*)		target=sh64-linux;;
172ecb8
	tile-*)		target=tilegx-linux;;
172ecb8
	v850-*)		target=v850e-linux;;
d648358
	x86-*)		target=x86_64-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 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 \
d648358
	--with-sysroot=%{_prefix}/$arch/sys-root \
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 () {
0b35bb5
    build_dir=${1%%%%-*}
0b35bb5
    make -C $build_dir %{_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
6739dc5
mkdir %{cross}-binutils
6739dc5
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} \
6739dc5
    --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 () {
ed831d0
    cpu=${1%%%%-*}
ed831d0
    build_dir=$cpu
0b35bb5
    make install -C $build_dir DESTDIR=%{buildroot}
ed831d0
ed831d0
    # We want links for ppc and ppc64 also if we make powerpc or powerpc64
ed831d0
    case $cpu in
ed831d0
	powerpc*)
ed831d0
	    cd %{buildroot}/usr/bin
ed831d0
	    for i in $cpu-*
ed831d0
	    do
ed831d0
		ln -s $i ppc${i#powerpc}
ed831d0
	    done
ed831d0
	    cd -
ed831d0
	    cd %{buildroot}/usr/
ed831d0
	    for i in $cpu-*
ed831d0
	    do
ed831d0
		ln -s $i ppc${i#powerpc}
ed831d0
	    done
ed831d0
	    cd -
ed831d0
	    cd %{buildroot}/usr/share/man/man1
ed831d0
	    for i in $cpu-*
ed831d0
	    do
ed831d0
		ln -s $i ppc${i#powerpc}
ed831d0
	    done
ed831d0
	    cd -
ed831d0
	    ;;
ed831d0
    esac
172ecb8
}
172ecb8
172ecb8
for target in `cat target.list`
172ecb8
do
d17fb9c
    echo "=== INSTALL target $target ==="
d648358
    mkdir -p %{buildroot}%{_prefix}/$target/sys-root
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 ==="
6739dc5
make install-man1 -C %{cross}-binutils/binutils/doc DESTDIR=%{buildroot}
6739dc5
make install-man1 -C %{cross}-binutils/gas/doc DESTDIR=%{buildroot}
6739dc5
make install-man1 -C %{cross}-binutils/ld DESTDIR=%{buildroot}
6739dc5
make install-man1 -C %{cross}-binutils/gprof DESTDIR=%{buildroot}
172ecb8
d17fb9c
echo "=== INSTALL po targets ==="
6739dc5
make install -C %{cross}-binutils/binutils/po DESTDIR=%{buildroot}
6739dc5
make install -C %{cross}-binutils/gas/po DESTDIR=%{buildroot}
6739dc5
make install -C %{cross}-binutils/ld/po DESTDIR=%{buildroot}
6739dc5
make install -C %{cross}-binutils/gprof/po DESTDIR=%{buildroot}
6739dc5
make install -C %{cross}-binutils/bfd/po DESTDIR=%{buildroot}
6739dc5
make install -C %{cross}-binutils/opcodes/po DESTDIR=%{buildroot}
172ecb8
ed831d0
# Add the additional symlink-only targets
ed831d0
grep ^powerpc target.list | sed -e s/powerpc/ppc/ >symlink-target.list
ed831d0
cat symlink-target.list >>target.list
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\*
ed831d0
	if [ -L %{buildroot}%{auxbin_prefix}/$target_cpu-* ]
ed831d0
	then
ed831d0
	    echo %{auxbin_prefix}/$target_cpu-*
ed831d0
	else
ed831d0
	    echo %{auxbin_prefix}/$target_cpu-*/bin/\*
ed831d0
	fi
172ecb8
	echo %{_mandir}/man1/$arch-\*
d648358
	echo %{_prefix}/$arch/sys-root
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
6739dc5
for i in %{cross}-*.1*
172ecb8
do
6739dc5
    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
6739dc5
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
(
6739dc5
    %find_lang %{cross}-binutils
6739dc5
    %find_lang %{cross}-opcodes
6739dc5
    %find_lang %{cross}-bfd
6739dc5
    %find_lang %{cross}-gas
6739dc5
    %find_lang %{cross}-ld
6739dc5
    %find_lang %{cross}-gprof
6739dc5
    cat %{cross}-binutils.lang
6739dc5
    cat %{cross}-opcodes.lang
6739dc5
    cat %{cross}-bfd.lang
6739dc5
    cat %{cross}-gas.lang
6739dc5
    cat %{cross}-ld.lang
6739dc5
    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
###############################################################################
6739dc5
%files -n %{cross}-binutils-common -f files.cross
172ecb8
%doc %{srcdir}/README
172ecb8
%doc %{srcdir}/COPYING*
6739dc5
%{_mandir}/man1/%{cross}-*
172ecb8
172ecb8
%define do_files() \
172ecb8
%if %2 \
6739dc5
%files -n %{rpmprefix}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}
e4cc6a5
%do_files metag-linux-gnu	%{build_metag}
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}
4626293
%do_files nios2-linux-gnu	%{build_nios2}
172ecb8
%do_files openrisc-linux-gnu	%{build_openrisc}
172ecb8
%do_files powerpc-linux-gnu	%{build_powerpc}
172ecb8
%do_files powerpc64-linux-gnu	%{build_powerpc64}
ed831d0
%do_files ppc-linux-gnu		%{build_powerpc}
ed831d0
%do_files ppc64-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
4626293
* Fri Jul 18 2014 David Howells <dhowells@redhat.com> - 2.24-5
4626293
- Add NIOS2 arch support.
4626293
cab55cf
* Mon Jun 16 2014 David Howells <dhowells@redhat.com> - 2.24-4
cab55cf
- Fix gcc-4.9 new compile error in m68k handler in gas.
cab55cf
057864b
* Wed Jun 11 2014 David Howells <dhowells@redhat.com> - 2.24-4
057864b
- Sync with binutils-2.24-15 fixing the bfd_set_section_alignment() error [BZ 1106093]
057864b
- Apply the changes on binutils-2_24-branch in git to cab6c3ee9785f072a373afe31253df0451db93cf.
bc120a5
d648358
* Fri Mar 28 2014 David Howells <dhowells@redhat.com> - 2.24-2
d648358
- A sysroot of / is bad, so make it /usr/<program-prefix>/sys-root/.
d648358
5884884
* Thu Mar 27 2014 David Howells <dhowells@redhat.com> - 2.24-1
5884884
- Fix formatless sprintfs in Score.
5884884
e4cc6a5
* Wed Mar 26 2014 David Howells <dhowells@redhat.com> - 2.24-1
e4cc6a5
- Update to binutils-2.24-1.
e4cc6a5
- Add metag arch support.
e4cc6a5
9b0bba2
* Fri Aug 9 2013 David Howells <dhowells@redhat.com> - 2.23.88.0.1-2
9b0bba2
- Fix a build error in xtensa
9b0bba2
9fbc4f9
* Thu Aug 8 2013 David Howells <dhowells@redhat.com> - 2.23.88.0.1-2
9fbc4f9
- Backport S390 .machinemode pseudo-op support from binutils-2.23.88.0.1-10.
9fbc4f9
- Add pod2man as a build requirement.
9fbc4f9
c6dd967
* Tue Jun 4 2013 David Howells <dhowells@redhat.com> - 2.23.88.0.1-1
c6dd967
- Update to binutils-2.22.88.0.1 to fix F19 texinfo issues [BZ 912921].
c6dd967
0b35bb5
* Tue Jun 4 2013 David Howells <dhowells@redhat.com> - 2.23.51.0.3-2
0b35bb5
- Backport cleanups from the RHEL-6.4 cross-compiler.
6739dc5
- Backport some macroisation from the RHEL-6.4 cross-compiler.
7c5a462
- The hppa64 target cannot actually build hppa, so provide hppa [BZ 892220].
0b35bb5
05605c9
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.23.51.0.3-2
05605c9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
05605c9
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