-#
-# spec file for package cross-i386-binutils
-#
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
-#
-# All modifications and additions to the file contributed by third parties
-# remain the property of their copyright owners, unless otherwise agreed
-# upon. The license for this file, and modifications and additions to the
-# file, is the same license as for the pristine package itself (unless the
-# license for the pristine package is not an Open Source License, in which
-# case the license is the MIT License). An "Open Source License" is a
-# license that conforms to the Open Source Definition (Version 1.9)
-# published by the Open Source Initiative.
-
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
-#
-
-
-Name: cross-i386-binutils
-ExcludeArch: %ix86
+Name: cross-i386-binutils
+ExclusiveArch: %{ix86} x86_64
%define cross 1
%define TARGET i586
BuildRequires: bison
BuildRequires: glibc-devel-static
# for some gold tests
BuildRequires: bc
-BuildRequires: makeinfo
+BuildRequires: makeinfo ncurses-devel
BuildRequires: zlib-devel-static
-Version: 2.22
+Requires(pre): update-alternatives
+Version: 2.25
Release: 0
#
# RUN_TESTS
#
# handle test suite failures
#
-%ifarch alpha %arm hppa mips sh4 %sparc
+%ifarch alpha %arm aarch64 hppa mips sh4 %sparc
%define make_check_handling true
%else
# XXX check again
%define make_check_handling false
%endif
# handle all binary object formats supported by SuSE (and a few more)
-%ifarch %ix86 %arm ia64 ppc ppc64 s390 s390x x86_64
+%ifarch %ix86 %arm aarch64 ia64 ppc ppc64 s390 s390x x86_64
%define build_multitarget 1
%else
%define build_multitarget 0
%endif
-%define target_list alpha armv5l armv7l armv8l hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 s390 s390x sh4 sparc sparc64 x86_64
+%define target_list aarch64 alpha armv5l armv7l armv8l hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 s390 s390x sh4 sparc sparc64 x86_64
#
#
#
Url: http://www.gnu.org/software/binutils/
-%define binutils_version %(echo %version | sed 's/\\.[0-9]\\{8\\}$//')
+#%define binutils_version %(echo %version | sed 's/\\.[0-9]\\{8\\}$//')
Summary: GNU Binutils
License: GFDL-1.3 and GPL-3.0+
-Group: Development/Tools/Building
-Source: binutils-%{binutils_version}.tar.bz2
+Group: Development/Building
+Source: binutils-%{version}.tar.bz2
Source1: pre_checkin.sh
-Source2: README.First-for.SuSE.packagers
Source3: baselibs.conf
-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-gold.diff
-Patch11: use-hashtype-both-by-default.diff
-Patch14: binutils-build-as-needed.diff
-Patch15: fixup-testcase-perturb.diff
-Patch18: gold-depend-on-opcodes.diff
-Patch19: bso12451.diff
-Patch20: bso13449.diff
-Patch90: cross-avr-nesc-as.patch
-Patch92: cross-avr-omit_section_dynsym.patch
-Patch93: avr-binutils-relocs.patch
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib,
%package gold
Summary: The gold linker
License: GPL-3.0+
-Group: Development/Tools/Building
-Requires: binutils = %{version}-%{release}
-%if 0%{!?cross:1}
-%define gold_archs %ix86 %arm x86_64 ppc ppc64 %sparc
-%endif
+Group: Development/Building
+Requires: %{name} = %{version}-%{release}
+%define gold_archs %ix86 %arm aarch64 x86_64 ppc ppc64 %sparc
%description gold
gold is an ELF linker. It is intended to have complete support for ELF
%package devel
Summary: GNU binutils (BFD development files)
License: GPL-3.0+
-Group: Development/Libraries/C and C++
+Group: Development/Building
Requires: binutils = %{version}-%{release}
Requires: zlib-devel
Provides: binutils:/usr/include/bfd.h
%prep
echo "make check will return with %{make_check_handling} in case of testsuite failures."
-%setup -q -n binutils-%{binutils_version}
-%if !%{test_vanilla}
-%patch3
-%patch4
-%patch5
-%patch6
-%patch7 -p1
-%patch8
-%patch9
-%patch10
-%patch11
-%patch14
-%patch15
-%patch18
-%patch19 -p1
-%patch20 -p1
-%if "%{TARGET}" == "avr"
-cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h
-%patch90
-%patch92
-%patch93 -p1
+%setup -q -n binutils-%{version}
+
+%if 0%{!?cross:1}
+%ifarch %arm
+ulimit -Hs unlimited
+ulimit -s unlimited
%endif
-#
-# test_vanilla
%endif
-sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h
+sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h
%build
RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error"
+RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS |sed -e 's/atom/i686/g'`
%if 0%{!?cross:1}
# Building native binutils
echo "Building native binutils."
%ifarch %arm
EXTRA_TARGETS="$EXTRA_TARGETS,arm-tizen-linux-gnueabi"
%endif
+%ifarch aarch64
+EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-tizen-linux"
+%endif
%endif
%define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\
--prefix=%{_prefix} --libdir=%{_libdir} \\\
--with-pic --build=%{HOST}
mkdir build-dir
cd build-dir
+
+%ifarch %arm
+export CONFIG_SHELL="/bin/bash"
+export SHELL="/bin/bash"
+%endif
+
../configure %common_flags \
${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \
--enable-plugins \
%if "%{TARGET}" == "arm"
EXTRA_TARGETS="$EXTRA_TARGETS,arm-tizen-linux-gnueabi"
%endif
+%if "%{TARGET}" == "aarch64"
+EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-tizen-linux"
+%endif
%if "%{TARGET}" == "avr" || "%{TARGET}" == "spu"
TARGET_OS=%{TARGET}
%else
%endif
%endif
../configure CFLAGS="${RPM_OPT_FLAGS}" \
+ --enable-plugins \
+%ifarch %gold_archs
+ --enable-gold \
+%endif
--prefix=%{_prefix} \
--with-bugurl=http://bugs.opensuse.org/ \
--with-pkgversion="GNU Binutils; %{DIST}" \
make DESTDIR=$RPM_BUILD_ROOT install-gold
ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold
%endif
+
make DESTDIR=$RPM_BUILD_ROOT install-info install
make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am
make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes
-# we could eventually use alternatives for /usr/bin/ld
-if test -f $RPM_BUILD_ROOT%{_bindir}/ld.bfd; then
- rm $RPM_BUILD_ROOT%{_bindir}/ld
- ln -sf ld.bfd $RPM_BUILD_ROOT%{_bindir}/ld;
+
+# We have gdb in separate package
+rm -f %buildroot/%_bindir/gdb*
+
+if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then
+ mv "%buildroot/%_bindir"/{ld,ld.bfd};
+else
+ rm -f "%buildroot/%_bindir/ld";
fi
+mkdir -p "%buildroot/%_sysconfdir/alternatives";
+ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld";
+ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld";
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
+%ifarch %gold_archs
+ln -sf ../../bin/ld.gold $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin
+%endif
+
+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
chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-*
chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-*
# No shared linking outside binutils
-rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so
-rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la
+rm -f $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes,inproctrace}.so
+rm -f $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.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 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1
+rm -f $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1
cd ..
#%find_lang binutils
#%find_lang bfd binutils.lang
rm -rf $RPM_BUILD_ROOT%{_prefix}/lib*
rm -rf $RPM_BUILD_ROOT%{_prefix}/include
rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
+
+# We have gdb in separate package
+rm -f $RPM_BUILD_ROOT%{_bindir}/gdb*
+rm -rf $RPM_BUILD_ROOT%{_datadir}/gdb
+
> ../binutils.lang
%endif
cd $RPM_BUILD_DIR/binutils-%version
-%clean
-rm -rf $RPM_BUILD_ROOT
%if 0%{!?cross:1}
%docs_package
+%post
+"%_sbindir/update-alternatives" --install \
+ "%_bindir/ld" ld "%_bindir/ld.bfd" 1
+
+%post gold
+"%_sbindir/update-alternatives" --install \
+ "%_bindir/ld" ld "%_bindir/ld.gold" 2
+
+
+%preun
+if [ "$1" = 0 ]; then
+ "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd";
+fi;
+
+%preun gold
+if [ "$1" = 0 ]; then
+ "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold";
+fi;
+
%endif
%files
%{_docdir}/%{name}
%{_prefix}/%{HOST}/bin/*
%{_prefix}/%{HOST}/lib/ldscripts
-#%{_libdir}/ldscripts
+%ghost %_sysconfdir/alternatives/ld
+%{_libdir}/ldscripts
%{_bindir}/*
%ifarch %gold_archs
-%exclude %{_bindir}/gold
-%exclude %{_bindir}/ld.gold
+%exclude %{_bindir}/*gold
%endif
%doc %{_infodir}/*.gz
%{_libdir}/lib*-%{version}*.so
%ifarch %gold_archs
%files gold
%defattr(-,root,root)
-%doc gold/NEWS gold/README
-%{_bindir}/gold
-%{_bindir}/ld.gold
+%{_bindir}/*gold
+%if 0%{?cross:1}
+%if "%{TARGET}" == "arm"
+%{_prefix}/%{TARGET}-tizen-linux-gnueabi/bin/*gold
+%else
+%{_prefix}/%{TARGET}-tizen-linux/bin/*gold
+%endif
+%else
+%{_prefix}/%{HOST}/bin/*gold
+%endif
%endif
%if 0%{!?cross:1}
%files devel
%defattr(-,root,root)
%{_prefix}/include/*.h
+%{_prefix}/include/gdb/*.h
%{_libdir}/lib*.*a
+%{_datadir}/gdb/*
%endif
%changelog