1 Name: cross-arm-binutils
9 BuildRequires: glibc-devel-static
12 BuildRequires: makeinfo
13 BuildRequires: zlib-devel-static
14 Requires(pre): update-alternatives
19 %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?)
20 # check the vanilla binutils, with no patches applied
22 %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?)
24 # handle test suite failures
26 %ifarch alpha %arm hppa mips sh4 %sparc
27 %define make_check_handling true
30 # XXX disabled because gold is seriously broken for now
31 %define make_check_handling true
33 # let make check fail anyway if RUN_TESTS was requested
35 %define make_check_handling false
37 # handle all binary object formats supported by SuSE (and a few more)
38 %ifarch %ix86 %arm ia64 ppc ppc64 s390 s390x x86_64
39 %define build_multitarget 1
41 %define build_multitarget 0
43 %define target_list alpha armv5l armv7l armv8l hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 s390 s390x sh4 sparc sparc64 x86_64
47 Url: http://www.gnu.org/software/binutils/
48 %define binutils_version %(echo %version | sed 's/\\.[0-9]\\{8\\}$//')
50 License: GFDL-1.3 and GPL-3.0+
51 Group: Development/Tools/Building
52 Source: binutils-%{binutils_version}.tar.bz2
53 Source1: pre_checkin.sh
54 Source3: baselibs.conf
55 # Patches auto-generated by git-buildpackage:
56 Patch0: 0001-skip-rpaths.patch
57 Patch1: 0002-x86-64-biarch.patch
58 Patch2: 0003-unit-at-a-time.patch
59 Patch3: 0004-ld-dtags.patch
60 Patch4: 0005-ld-relro.patch
61 Patch5: 0006-testsuite.patch
62 Patch6: 0007-enable-targets-gold.patch
63 Patch7: 0008-use-hashtype-both-by-default.patch
64 Patch8: 0009-build-as-needed.patch
65 Patch9: 0010-fixup-testcase-perturb.patch
66 Patch10: 0011-gold-depend-on-opcodes.patch
67 Patch11: 0012-bso12451.patch
70 C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib,
71 size, strings, and strip. These utilities are needed whenever you want
72 to compile a program or kernel.
76 Summary: The gold linker
78 Group: Development/Tools/Building
79 Requires: binutils = %{version}-%{release}
81 %define gold_archs %ix86 %arm x86_64 ppc ppc64 %sparc
85 gold is an ELF linker. It is intended to have complete support for ELF
86 and to run as fast as possible on modern systems. For normal use it is
87 a drop-in replacement for the older GNU linker.
91 Summary: GNU binutils (BFD development files)
93 Group: Development/Libraries/C and C++
94 Requires: binutils = %{version}-%{release}
96 Provides: binutils:/usr/include/bfd.h
99 This package includes header files and static libraries necessary to
100 build programs which use the GNU BFD library, which is part of
105 %define HOST %{_target_cpu}-tizen-linux-gnueabi
107 %define HOST %(echo %{_target_cpu} | sed -e "s/parisc/hppa/" -e "s/i.86/i586/" -e "s/ppc/powerpc/" -e "s/sparc64v.*/sparc64/" -e "s/sparcv.*/sparc/")-tizen-linux
109 %define DIST %(echo '%distribution' | sed 's/ (.*)//')
112 echo "make check will return with %{make_check_handling} in case of testsuite failures."
113 %setup -q -n binutils-%{binutils_version}
114 # 0001-skip-rpaths.patch
116 # 0002-x86-64-biarch.patch
118 # 0003-unit-at-a-time.patch
120 # 0004-ld-dtags.patch
122 # 0005-ld-relro.patch
124 # 0006-testsuite.patch
126 # 0007-enable-targets-gold.patch
128 # 0008-use-hashtype-both-by-default.patch
130 # 0009-build-as-needed.patch
132 # 0010-fixup-testcase-perturb.patch
134 # 0011-gold-depend-on-opcodes.patch
136 # 0012-bso12451.patch
139 sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h
141 RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error"
142 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS |sed -e 's/atom/i686/g'`
144 # Building native binutils
145 echo "Building native binutils."
146 %if %build_multitarget
147 EXTRA_TARGETS="%(printf ,%%s-tizen-linux %target_list)"
148 EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep"
152 EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-tizen-linux"
155 EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-tizen-linux"
158 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-tizen-linux"
161 EXTRA_TARGETS="$EXTRA_TARGETS,s390-tizen-linux"
164 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-tizen-linux"
167 EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf"
170 EXTRA_TARGETS="$EXTRA_TARGETS,arm-tizen-linux-gnueabi"
173 %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\
174 --prefix=%{_prefix} --libdir=%{_libdir} \\\
175 --infodir=%{_infodir} --mandir=%{_mandir} \\\
176 --with-bugurl=http://bugs.opensuse.org/ \\\
177 --with-pkgversion="GNU Binutils; %{DIST}" \\\
179 --with-separate-debug-dir=%{_prefix}/lib/debug \\\
180 --with-pic --build=%{HOST}
183 ../configure %common_flags \
184 ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \
190 make %{?_smp_mflags} all-bfd TARGET-bfd=headers
191 # force reconfiguring (???)
196 # building cross-TARGET-binutils
197 echo "Building cross binutils."
201 %if "%{TARGET}" == "sparc"
202 EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-tizen-linux"
204 %if "%{TARGET}" == "powerpc"
205 EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-tizen-linux"
207 %if "%{TARGET}" == "s390"
208 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-tizen-linux"
210 %if "%{TARGET}" == "s390x"
211 EXTRA_TARGETS="$EXTRA_TARGETS,s390-tizen-linux"
213 %if "%{TARGET}" == "i586"
214 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-tizen-linux"
216 %if "%{TARGET}" == "hppa"
217 EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-tizen-linux"
219 %if "%{TARGET}" == "arm"
220 EXTRA_TARGETS="$EXTRA_TARGETS,arm-tizen-linux-gnueabi"
222 %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu"
225 %if "%{TARGET}" == "arm"
226 TARGET_OS=%{TARGET}-tizen-linux-gnueabi
228 TARGET_OS=%{TARGET}-tizen-linux
231 ../configure CFLAGS="${RPM_OPT_FLAGS}" \
232 --prefix=%{_prefix} \
233 --with-bugurl=http://bugs.opensuse.org/ \
234 --with-pkgversion="GNU Binutils; %{DIST}" \
236 --build=%{HOST} --target=$TARGET_OS \
237 %if "%{TARGET}" == "spu"
238 --with-sysroot=/usr/spu \
240 --with-sysroot=%{_prefix}/$TARGET_OS/sys-root \
242 ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"}
243 make %{?_smp_mflags} all-bfd TARGET-bfd=headers
244 # force reconfiguring
247 %if "%{TARGET}" == "avr"
248 # build an extra nesC version because nesC requires $'s in identifiers
250 echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h
251 make -C gas-nesc clean
252 make -C gas-nesc %{?_smp_mflags}
260 make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" || %{make_check_handling}
262 make -k check CFLAGS="$RPM_OPT_FLAGS -Wno-unused -Wno-unprototyped-calls" || :
268 # installing native binutils
270 make DESTDIR=$RPM_BUILD_ROOT install-gold
271 ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold
273 make DESTDIR=$RPM_BUILD_ROOT install-info install
274 make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am
275 make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes
277 if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then
278 mv "%buildroot/%_bindir"/{ld,ld.bfd};
280 rm -f "%buildroot/%_bindir/ld";
282 mkdir -p "%buildroot/%_sysconfdir/alternatives";
283 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld";
284 ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld";
285 rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin
286 mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin
287 ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin
289 mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir}
290 ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts
292 # Install header files
293 make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT
294 # We want the PIC libiberty.a
295 install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir}
297 chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-*
298 chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-*
299 # No shared linking outside binutils
300 rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so
301 rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la
302 # Remove unwanted files to shut up rpm
303 rm $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info*
304 rm $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1
307 #%find_lang bfd binutils.lang
308 #%find_lang gas binutils.lang
309 #%find_lang ld binutils.lang
310 #%find_lang opcodes binutils.lang
311 #%find_lang gprof binutils.lang
313 #%find_lang gold binutils-gold.lang
315 mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}
316 install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils
317 install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas
318 install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld
320 # installing cross-TARGET-binutils and TARGET-binutils
321 make DESTDIR=$RPM_BUILD_ROOT install
322 # Replace hard links by symlinks, so that rpmlint doesn't complain
323 T=$(basename %buildroot/usr/%{TARGET}*)
324 for f in %buildroot/usr/$T/bin/* ; do
325 ln -sf /usr/bin/$T-$(basename $f) $f
327 %if "%{TARGET}" == "avr"
328 install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET}-nesc-as
329 ln -sf ../../bin/%{TARGET}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET}/bin/nesc-as
331 rm -rf $RPM_BUILD_ROOT%{_mandir}
332 rm -rf $RPM_BUILD_ROOT%{_infodir}
333 rm -rf $RPM_BUILD_ROOT%{_prefix}/lib*
334 rm -rf $RPM_BUILD_ROOT%{_prefix}/include
335 rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
338 cd $RPM_BUILD_DIR/binutils-%version
344 "%_sbindir/update-alternatives" --install \
345 "%_bindir/ld" ld "%_bindir/ld.bfd" 1
348 "%_sbindir/update-alternatives" --install \
349 "%_bindir/ld" ld "%_bindir/ld.gold" 2
353 if [ "$1" = 0 ]; then
354 "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd";
358 if [ "$1" = 0 ]; then
359 "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold";
365 %defattr(-,root,root)
368 %{_prefix}/%{HOST}/bin/*
369 %{_prefix}/%{HOST}/lib/ldscripts
370 %ghost %_sysconfdir/alternatives/ld
374 %exclude %{_bindir}/gold
375 %exclude %{_bindir}/ld.gold
377 %doc %{_infodir}/*.gz
378 %{_libdir}/lib*-%{version}*.so
380 %{_prefix}/%{TARGET}*
386 %defattr(-,root,root)
393 %defattr(-,root,root)
394 %{_prefix}/include/*.h