File cross-msp430-binutils.spec of Package cross-msp430-binutils
# norootforbuild
Name: cross-msp430-binutils
BuildRequires: dejagnu gcc-c++
#
# RUN_TESTS
%define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?)
# check the vanilla binutils, with no patches applied
# TEST_VANILLA
%define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?)
#
# handle test suite failures
#
%ifarch alpha armv4l hppa mips sh4 sparc sparc64
%define make_check_handling true
%else
%define make_check_handling false
%endif
# let make check fail anyway if RUN_TESTS was requested
%if %{run_tests}
%define make_check_handling false
%endif
# handle all binary object formats supported by SuSE (and a few more)
%ifarch %ix86 ia64 ppc ppc64 s390 s390x x86_64
%define build_multitarget 1
%else
%define build_multitarget 0
%endif
%define target_list alpha arm hppa i686 ia64 m68k powerpc powerpc64 s390 s390x sh4 sparc sparc64 x86_64
#
#
#
URL: http://www.gnu.org/software/binutils/
License: GNU General Public License (GPL), GNU Library General Public License v. 2.0 and 2.1 (LGPL)
Group: Development/Tools/Building
PreReq: %{install_info_prereq}
%if "%name" == "binutils"
Obsoletes: binuti_o
%endif
Autoreqprov: on
Version: 2.17.50.20070219
Release: 2
%define binutils_version %(echo %version | sed 's/\\.[0-9]\\{8\\}$//')
Summary: GNU Binutils
Source: binutils-%{binutils_version}.tar.bz2
Source1: pre_checkin.sh
Source2: README.First-for.SuSE.packagers
Patch1: mips-pic.patch
Patch2: s390-pic.patch
Patch3: binutils-skip-rpaths.patch
Patch4: s390-biarch.diff
Patch5: x86-64-biarch.patch
Patch6: unit-at-a-time.patch
Patch7: ld-dtags.diff
Patch8: ld-relro.diff
Patch9: testsuite.diff
Patch10: enable-targets.diff
Patch11: use-hashtype-both-by-default.diff
Patch12: default-execstack.diff
Patch16: s390-pic-dso.diff
Patch17: suse-bdirect.diff
Patch18: suse-dynsort.diff
Patch19: suse-hashvals.diff
Patch90: cross-avr-nesc-as.patch
Patch92: cross-avr-omit_section_dynsym.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%if "%{name}" != "binutils"
%define _prefix /opt/cross
%else
%define _prefix /usr
%endif
%description
C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib,
size, strings, and strip.
These utilities are needed whenever you want to compile a program or
kernel.
This version has been compiled by SUSE with the corresponding C
library. It is not designed for cross-compiling to other architectures.
Authors:
--------
Alan Modra <amodra@bigpond.net.au>
Andreas Jaeger <aj@suse.de>
Andreas Schwab <schwab@suse.de>
Bill Cox <bill@cygnus.com>
Brendan Kehoe <brendan@cygnus.com>
D. V. Henkel-Wallace <gumby@cygnus.com>
DJ Delorie <dj@redhat.com>
David D "Zoo" Zuhn <zoo@cygnus.com>
David J. Mackenzie <djm@cygnus.com>
Denis Chertykov <denisc@overta.ru>
Diego Novillo <dnovillo@redhat.com>
Doug Evans <dje@cygnus.com>
Eric Christopher <echristo@redhat.com>
Eric Youngdale <eric@aib.com>
Fred Fish <fnf@cygnus.com>
Geoff Keating <geoffk@redhat.com>
H.J.Lu <hjl@gnu.org>
Hans-Peter Nilsson <hp@axis.com>
Ian Dall <dall@hfrd.dsto.gov.au>
Ian Taylor <ian@zembu.com>
J.T. Conklin <jtc@cygnus.com>
Jakub Jelinek <jakub@redhat.com>
Jan Hubicka <jh@suse.cz>
Jason Eckhardt <jle@redhat.com>
Jason Merrill <jason@redhat.com>
Jeff Law <law@redhat.com>
Jeffrey Osier <jeffrey@cygnus.com>
Jeffrey Wheat <cassidy@cygnus.com>
Jim Kingdon <kingdon@cygnus.com>
Jim Wilson <wilson@redhat.com>
John Gilmore <gnu@cygnus.com>
J�rn Rennecke <amylaar@redhat.com>
K. Richard Pixley <rich@cygnus.com>
Ken Raeburn <raeburn@cygnus.com>
Kung Hsu <kung@cygnus.com>
Mark Eichin <eichin@cygnus.com>
Michael Meissner <meissner@redhat.com>
Michael Tiemann <tiemann@cygnus.com>
Mike Werner <mtw@cygnus.com>
Nick Clifton <nickc@redhat.com>
Per Bothner <bothner@cygnus.com>
Peter Schauer <pes@regent.e-technik.tu-muenchen.de>
Richard Earnshaw <rwe@pegasus.esprit.ec.org>
Richard Henderson <rth@redhat.com>
Richard Stallman <rms@gnu.org>
Rob Savoye <rob@cygnus.com>
Roland H. Pesch <pesch@wrs.com>
Sean Eric Fagan <sef@cygnus.com>
Stan Shebs <shebs@apple.com>
Stephane Carrez <Stephane.Carrez@worldnet.fr>
Steve Chamberlain <sac@cygnus.com>
Stu Grossman <grossman@cygnus.com>
Torbjorn Granlund <tege@cygnus.com>
Ulf Carlsson <ulfc@calypso.engr.sgi.com>
%if "%{name}" != "binutils"
%define TARGET %(echo %{name}|sed -e "s/cross-\\(.*\\)-binutils/\\1/;s/-/_/g;s/parisc/hppa/;s/i.86/i586/;s/ppc/powerpc/")
%endif
%define HOST %(echo %{_target_cpu}|sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/")-suse-linux
%prep
echo "make check will return with %{make_check_handling} in case of testsuite failures."
%setup -q -n binutils-%{binutils_version}
%if !%{test_vanilla}
%patch1
%patch2
%patch3
%patch4
%patch5
%patch6
%patch7 -p1
%patch8
%patch9
%patch10
%patch11
%patch12
%patch16
%patch17 -p1
%patch18 -p1
%patch19 -p1
%if "%{TARGET}" == "avr"
cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h
%patch90
%patch92
%endif
%patch190
#
# test_vanilla
%endif
%define full_version %version-%release
sed -i '/AM_INIT_AUTOMAKE(bfd, /s/ .*)/ %full_version)/' bfd/configure.in
sed -i '/ VERSION=/s/=.*/=%full_version/' bfd/configure
sed -i '/BFD_VERSION_STRING/s/$/ " (SUSE Linux)"/' bfd/version.h
%build
RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error"
%if "%{name}" == "binutils"
# Building native binutils
echo "Building native binutils."
%if %build_multitarget
ADDITIONAL_TARGETS="%(echo %target_list | sed -e 's/[^ ]\+/&-suse-linux/g')"
%ifarch ppc
ADDITIONAL_TARGETS="$ADDITIONAL_TARGETS powerpc-macos powerpc-macos10"
%endif
%ifarch %ix86 x86_64
%if !%{test_vanilla}
ADDITIONAL_TARGETS="$ADDITIONAL_TARGETS i386-macos10 i386-pe"
%endif
%endif
%else
ADDITIONAL_TARGETS=
%endif
ADDITIONAL_LD_TARGETS=
%ifarch sparc
ADDITIONAL_LD_TARGETS="sparc64-suse-linux"
%endif
%ifarch ppc
ADDITIONAL_LD_TARGETS="powerpc64-suse-linux"
%endif
%ifarch s390
ADDITIONAL_LD_TARGETS="s390x-suse-linux"
%endif
%ifarch s390x
ADDITIONAL_LD_TARGETS="s390-suse-linux"
%endif
%ifarch %ix86
ADDITIONAL_LD_TARGETS="x86_64-suse-linux"
%endif
mkdir build-dir
cd build-dir
# Workaround lack of DESTDIR support
CFLAGS="${RPM_OPT_FLAGS} -L$RPM_BUILD_ROOT%{_libdir}" CC=gcc \
../configure --prefix=%{_prefix} \
--with-bugurl=http://bugs.opensuse.org/ \
--enable-shared --with-gnu-ld --with-gnu-as --libdir=%{_libdir} \
--infodir=%{_infodir} --mandir=%{_mandir} \
--build=%{HOST} \
--disable-ld-targets \
${ADDITIONAL_LD_TARGETS:+--enable-ld-targets="${ADDITIONAL_LD_TARGETS// /,}"} \
${ADDITIONAL_TARGETS:+--enable-targets="${ADDITIONAL_TARGETS// /,}"}
make %{?jobs:-j%jobs} all-bfd TARGET-bfd=headers
# force reconfiguring
rm bfd/Makefile
make %{?jobs:-j%jobs}
%ifnarch %arm
make -k check CFLAGS="$RPM_OPT_FLAGS -Wno-unused" || %{make_check_handling}
%endif
#
#
#
%else
# building cross-TARGET-binutils
echo "Building cross binutils."
mkdir build-dir
cd build-dir
ADDITIONAL_TARGETS=
%if "%{TARGET}" == "sparc"
ADDITIONAL_TARGETS="sparc64-suse-linux"
%endif
%if "%{TARGET}" == "powerpc"
ADDITIONAL_TARGETS="powerpc64-suse-linux"
%endif
%if "%{TARGET}" == "s390"
ADDITIONAL_TARGETS="s390x-suse-linux"
%endif
%if "%{TARGET}" == "s390x"
ADDITIONAL_TARGETS="s390-suse-linux"
%endif
%if "%{TARGET}" == "i586"
ADDITIONAL_TARGETS="x86_64-suse-linux"
%endif
%if "%{TARGET}" == "hppa"
ADDITIONAL_TARGETS="hppa64-suse-linux"
%endif
%if "%{TARGET}" == "avr" || "%{TARGET}" == "msp430"
TARGET_OS=%{TARGET}
%else
TARGET_OS=%{TARGET}-linux
%endif
# Workaround lack of DESTDIR support
CFLAGS="${RPM_OPT_FLAGS} -L$RPM_BUILD_ROOT%{_libdir}" CC=gcc \
../configure --prefix=%{_prefix} \
--with-bugurl=http://bugs.opensuse.org/ \
--disable-nls \
--build=%{HOST} --target=$TARGET_OS \
${ADDITIONAL_TARGETS:+--enable-targets="${ADDITIONAL_TARGETS// /,}"}
make %{?jobs:-j%jobs} all-bfd TARGET-bfd=headers
# force reconfiguring
rm bfd/Makefile
make %{?jobs:-j%jobs}
%if "%{TARGET}" == "avr"
# build an extra nesC version because nesC requires $'s in identifiers
cp -a gas gas-nesc
echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h
make -C gas-nesc clean
make -C gas-nesc %{?jobs:-j%jobs}
%endif
make -k check CFLAGS="$RPM_OPT_FLAGS -Wno-unused" || :
%endif
%install
cd build-dir
%if "%name" == "binutils"
# installing native binutils
make DESTDIR=$RPM_BUILD_ROOT install-info install
make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am
rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin/*
mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin
ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin
mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir}
ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts
# Install header files
make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT
# We want the PIC libiberty.a
install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir}
#
chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-*
chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-*
# Remove build prefixes from *.la
perl -pi -e "s| -L[^ ']*||g" $RPM_BUILD_ROOT%{_libdir}/lib*.la
# Remove unwanted files to shut up rpm
rm $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info*
rm $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1
%ifarch %ix86 x86_64
# don't want these for now
rm $RPM_BUILD_ROOT%{_bindir}/dlltool $RPM_BUILD_ROOT%{_bindir}/dllwrap
rm $RPM_BUILD_ROOT%{_bindir}/windres
%endif
cd ..
%find_lang binutils
%find_lang bfd binutils.lang
%find_lang gas binutils.lang
%find_lang ld binutils.lang
%find_lang opcodes binutils.lang
%find_lang gprof binutils.lang
%else
# installing cross-TARGET-binutils
make DESTDIR=$RPM_BUILD_ROOT install
%if "%{TARGET}" == "avr"
install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET}-nesc-as
ln -sf ../../bin/%{TARGET}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET}/bin/nesc-as
%endif
rm -rf $RPM_BUILD_ROOT%{_prefix}/man
rm -rf $RPM_BUILD_ROOT%{_prefix}/info
rm -rf $RPM_BUILD_ROOT%{_prefix}/lib
rm -rf $RPM_BUILD_ROOT%{_prefix}/include
rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
> ../binutils.lang
%endif
%clean
rm -rf $RPM_BUILD_ROOT
%if "%name" == "binutils"
%post
%install_info --info-dir=%{_infodir} %{_infodir}/as.info.gz
%install_info --info-dir=%{_infodir} %{_infodir}/bfd.info.gz
%install_info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz
%install_info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz
%install_info --info-dir=%{_infodir} %{_infodir}/ld.info.gz
%postun
%install_info_delete --info-dir=%{_infodir} %{_infodir}/as.info.gz
%install_info_delete --info-dir=%{_infodir} %{_infodir}/bfd.info.gz
%install_info_delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz
%install_info_delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz
%install_info_delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz
%endif
%files -f binutils.lang
%defattr(-,root,root)
%if "%name" == "binutils"
%{_prefix}/%{HOST}/bin/*
%{_prefix}/%{HOST}/lib/ldscripts
%{_libdir}/ldscripts
%{_bindir}/*
%doc %{_infodir}/*.gz
%{_libdir}/lib*-%{full_version}.so
%doc %{_mandir}/man1/*.1.gz
%else
%{_prefix}
%endif