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 aarch64 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 aarch64 ia64 ppc ppc64 s390 s390x x86_64
39 %define build_multitarget 1
41 %define build_multitarget 0
43 %define target_list aarch64 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-%{version}.tar.bz2
53 Source1: pre_checkin.sh
54 Source3: baselibs.conf
57 C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib,
58 size, strings, and strip. These utilities are needed whenever you want
59 to compile a program or kernel.
63 Summary: The gold linker
65 Group: Development/Tools/Building
66 Requires: binutils = %{version}-%{release}
68 %define gold_archs %ix86 %arm aarch64 x86_64 ppc ppc64 %sparc
72 gold is an ELF linker. It is intended to have complete support for ELF
73 and to run as fast as possible on modern systems. For normal use it is
74 a drop-in replacement for the older GNU linker.
78 Summary: GNU binutils (BFD development files)
80 Group: Development/Libraries/C and C++
81 Requires: binutils = %{version}-%{release}
83 Provides: binutils:/usr/include/bfd.h
86 This package includes header files and static libraries necessary to
87 build programs which use the GNU BFD library, which is part of
92 %define HOST %{_target_cpu}-tizen-linux-gnueabi
94 %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
96 %define DIST %(echo '%distribution' | sed 's/ (.*)//')
99 echo "make check will return with %{make_check_handling} in case of testsuite failures."
100 %setup -q -n binutils-%{version}
102 sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h
104 RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error"
105 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS |sed -e 's/atom/i686/g'`
107 # Building native binutils
108 echo "Building native binutils."
109 %if %build_multitarget
110 EXTRA_TARGETS="%(printf ,%%s-tizen-linux %target_list)"
111 EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep"
115 EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-tizen-linux"
118 EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-tizen-linux"
121 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-tizen-linux"
124 EXTRA_TARGETS="$EXTRA_TARGETS,s390-tizen-linux"
127 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-tizen-linux"
130 EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf"
133 EXTRA_TARGETS="$EXTRA_TARGETS,arm-tizen-linux-gnueabi"
136 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-tizen-linux"
139 %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\
140 --prefix=%{_prefix} --libdir=%{_libdir} \\\
141 --infodir=%{_infodir} --mandir=%{_mandir} \\\
142 --with-bugurl=http://bugs.opensuse.org/ \\\
143 --with-pkgversion="GNU Binutils; %{DIST}" \\\
145 --with-separate-debug-dir=%{_prefix}/lib/debug \\\
146 --with-pic --build=%{HOST}
149 ../configure %common_flags \
150 ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \
156 make %{?_smp_mflags} all-bfd TARGET-bfd=headers
157 # force reconfiguring (???)
162 # building cross-TARGET-binutils
163 echo "Building cross binutils."
167 %if "%{TARGET}" == "sparc"
168 EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-tizen-linux"
170 %if "%{TARGET}" == "powerpc"
171 EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-tizen-linux"
173 %if "%{TARGET}" == "s390"
174 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-tizen-linux"
176 %if "%{TARGET}" == "s390x"
177 EXTRA_TARGETS="$EXTRA_TARGETS,s390-tizen-linux"
179 %if "%{TARGET}" == "i586"
180 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-tizen-linux"
182 %if "%{TARGET}" == "hppa"
183 EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-tizen-linux"
185 %if "%{TARGET}" == "arm"
186 EXTRA_TARGETS="$EXTRA_TARGETS,arm-tizen-linux-gnueabi"
188 %if "%{TARGET}" == "aarch64"
189 EXTRA_TARGETS="$EXTRA_TARGETS,aarch64-tizen-linux"
191 %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu"
194 %if "%{TARGET}" == "arm"
195 TARGET_OS=%{TARGET}-tizen-linux-gnueabi
197 TARGET_OS=%{TARGET}-tizen-linux
200 ../configure CFLAGS="${RPM_OPT_FLAGS}" \
201 --prefix=%{_prefix} \
202 --with-bugurl=http://bugs.opensuse.org/ \
203 --with-pkgversion="GNU Binutils; %{DIST}" \
205 --build=%{HOST} --target=$TARGET_OS \
206 %if "%{TARGET}" == "spu"
207 --with-sysroot=/usr/spu \
209 --with-sysroot=%{_prefix}/$TARGET_OS/sys-root \
211 ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"}
212 make %{?_smp_mflags} all-bfd TARGET-bfd=headers
213 # force reconfiguring
216 %if "%{TARGET}" == "avr"
217 # build an extra nesC version because nesC requires $'s in identifiers
219 echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h
220 make -C gas-nesc clean
221 make -C gas-nesc %{?_smp_mflags}
229 make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" || %{make_check_handling}
231 make -k check CFLAGS="$RPM_OPT_FLAGS -Wno-unused -Wno-unprototyped-calls" || :
237 # installing native binutils
239 make DESTDIR=$RPM_BUILD_ROOT install-gold
240 ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold
242 make DESTDIR=$RPM_BUILD_ROOT install-info install
243 make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am
244 make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes
246 if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then
247 mv "%buildroot/%_bindir"/{ld,ld.bfd};
249 rm -f "%buildroot/%_bindir/ld";
251 mkdir -p "%buildroot/%_sysconfdir/alternatives";
252 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld";
253 ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld";
254 rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin
255 mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin
256 ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin
258 mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir}
259 ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts
261 # Install header files
262 make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT
263 # We want the PIC libiberty.a
264 install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir}
266 chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-*
267 chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-*
268 # No shared linking outside binutils
269 rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so
270 rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la
271 # Remove unwanted files to shut up rpm
272 rm $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1
275 #%find_lang bfd binutils.lang
276 #%find_lang gas binutils.lang
277 #%find_lang ld binutils.lang
278 #%find_lang opcodes binutils.lang
279 #%find_lang gprof binutils.lang
281 #%find_lang gold binutils-gold.lang
283 mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}
284 install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils
285 install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas
286 install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld
288 # installing cross-TARGET-binutils and TARGET-binutils
289 make DESTDIR=$RPM_BUILD_ROOT install
290 # Replace hard links by symlinks, so that rpmlint doesn't complain
291 T=$(basename %buildroot/usr/%{TARGET}*)
292 for f in %buildroot/usr/$T/bin/* ; do
293 ln -sf /usr/bin/$T-$(basename $f) $f
295 %if "%{TARGET}" == "avr"
296 install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET}-nesc-as
297 ln -sf ../../bin/%{TARGET}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET}/bin/nesc-as
299 rm -rf $RPM_BUILD_ROOT%{_mandir}
300 rm -rf $RPM_BUILD_ROOT%{_infodir}
301 rm -rf $RPM_BUILD_ROOT%{_prefix}/lib*
302 rm -rf $RPM_BUILD_ROOT%{_prefix}/include
303 rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
306 cd $RPM_BUILD_DIR/binutils-%version
312 "%_sbindir/update-alternatives" --install \
313 "%_bindir/ld" ld "%_bindir/ld.bfd" 1
316 "%_sbindir/update-alternatives" --install \
317 "%_bindir/ld" ld "%_bindir/ld.gold" 2
321 if [ "$1" = 0 ]; then
322 "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd";
326 if [ "$1" = 0 ]; then
327 "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold";
333 %defattr(-,root,root)
336 %{_prefix}/%{HOST}/bin/*
337 %{_prefix}/%{HOST}/lib/ldscripts
338 %ghost %_sysconfdir/alternatives/ld
342 %exclude %{_bindir}/gold
343 %exclude %{_bindir}/ld.gold
345 %doc %{_infodir}/*.gz
346 %{_libdir}/lib*-%{version}*.so
348 %{_prefix}/%{TARGET}*
354 %defattr(-,root,root)
361 %defattr(-,root,root)
362 %{_prefix}/include/*.h