6 BuildRequires: glibc-devel-static
9 BuildRequires: makeinfo
10 BuildRequires: zlib-devel-static
11 Requires(pre): update-alternatives
16 %define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?)
17 # check the vanilla binutils, with no patches applied
19 %define test_vanilla %(test ! -f %_sourcedir/TEST_VANILLA ; echo $?)
21 # handle test suite failures
23 %ifarch alpha %arm hppa mips sh4 %sparc
24 %define make_check_handling true
27 # XXX disabled because gold is seriously broken for now
28 %define make_check_handling true
30 # let make check fail anyway if RUN_TESTS was requested
32 %define make_check_handling false
34 # handle all binary object formats supported by SuSE (and a few more)
35 %ifarch %ix86 %arm ia64 ppc ppc64 s390 s390x x86_64
36 %define build_multitarget 1
38 %define build_multitarget 0
40 %define target_list alpha armv5l armv7l armv8l hppa hppa64 i686 ia64 m68k mips powerpc powerpc64 s390 s390x sh4 sparc sparc64 x86_64
44 Url: http://www.gnu.org/software/binutils/
45 %define binutils_version %(echo %version | sed 's/\\.[0-9]\\{8\\}$//')
47 License: GFDL-1.3 and GPL-3.0+
48 Group: Development/Tools/Building
49 Source: binutils-%{binutils_version}.tar.bz2
50 Source1: pre_checkin.sh
51 Source3: baselibs.conf
54 C compiler utilities: ar, as, gprof, ld, nm, objcopy, objdump, ranlib,
55 size, strings, and strip. These utilities are needed whenever you want
56 to compile a program or kernel.
60 Summary: The gold linker
62 Group: Development/Tools/Building
63 Requires: binutils = %{version}-%{release}
65 %define gold_archs %ix86 %arm x86_64 ppc ppc64 %sparc
69 gold is an ELF linker. It is intended to have complete support for ELF
70 and to run as fast as possible on modern systems. For normal use it is
71 a drop-in replacement for the older GNU linker.
75 Summary: GNU binutils (BFD development files)
77 Group: Development/Libraries/C and C++
78 Requires: binutils = %{version}-%{release}
80 Provides: binutils:/usr/include/bfd.h
83 This package includes header files and static libraries necessary to
84 build programs which use the GNU BFD library, which is part of
89 %define HOST %{_target_cpu}-tizen-linux-gnueabi
91 %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
93 %define DIST %(echo '%distribution' | sed 's/ (.*)//')
96 echo "make check will return with %{make_check_handling} in case of testsuite failures."
97 %setup -q -n binutils-%{binutils_version}
99 sed -i -e '/BFD_VERSION_DATE/s/$/-%(echo %release | sed 's/\.[0-9]*$//')/' bfd/version.h
101 RPM_OPT_FLAGS="$RPM_OPT_FLAGS -Wno-error"
102 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS |sed -e 's/atom/i686/g'`
104 # Building native binutils
105 echo "Building native binutils."
106 %if %build_multitarget
107 EXTRA_TARGETS="%(printf ,%%s-tizen-linux %target_list)"
108 EXTRA_TARGETS="$EXTRA_TARGETS,powerpc-macos,powerpc-macos10,spu-elf,x86_64-pep"
112 EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-tizen-linux"
115 EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-tizen-linux"
118 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-tizen-linux"
121 EXTRA_TARGETS="$EXTRA_TARGETS,s390-tizen-linux"
124 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-tizen-linux"
127 EXTRA_TARGETS="$EXTRA_TARGETS,spu-elf"
130 EXTRA_TARGETS="$EXTRA_TARGETS,arm-tizen-linux-gnueabi"
133 %define common_flags CFLAGS="${RPM_OPT_FLAGS}" CXXFLAGS="${RPM_OPT_FLAGS}" \\\
134 --prefix=%{_prefix} --libdir=%{_libdir} \\\
135 --infodir=%{_infodir} --mandir=%{_mandir} \\\
136 --with-bugurl=http://bugs.opensuse.org/ \\\
137 --with-pkgversion="GNU Binutils; %{DIST}" \\\
139 --with-separate-debug-dir=%{_prefix}/lib/debug \\\
140 --with-pic --build=%{HOST}
143 ../configure %common_flags \
144 ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"} \
150 make %{?_smp_mflags} all-bfd TARGET-bfd=headers
151 # force reconfiguring (???)
156 # building cross-TARGET-binutils
157 echo "Building cross binutils."
161 %if "%{TARGET}" == "sparc"
162 EXTRA_TARGETS="$EXTRA_TARGETS,sparc64-tizen-linux"
164 %if "%{TARGET}" == "powerpc"
165 EXTRA_TARGETS="$EXTRA_TARGETS,powerpc64-tizen-linux"
167 %if "%{TARGET}" == "s390"
168 EXTRA_TARGETS="$EXTRA_TARGETS,s390x-tizen-linux"
170 %if "%{TARGET}" == "s390x"
171 EXTRA_TARGETS="$EXTRA_TARGETS,s390-tizen-linux"
173 %if "%{TARGET}" == "i586"
174 EXTRA_TARGETS="$EXTRA_TARGETS,x86_64-tizen-linux"
176 %if "%{TARGET}" == "hppa"
177 EXTRA_TARGETS="$EXTRA_TARGETS,hppa64-tizen-linux"
179 %if "%{TARGET}" == "arm"
180 EXTRA_TARGETS="$EXTRA_TARGETS,arm-tizen-linux-gnueabi"
182 %if "%{TARGET}" == "avr" || "%{TARGET}" == "spu"
185 %if "%{TARGET}" == "arm"
186 TARGET_OS=%{TARGET}-tizen-linux-gnueabi
188 TARGET_OS=%{TARGET}-tizen-linux
191 ../configure CFLAGS="${RPM_OPT_FLAGS}" \
192 --prefix=%{_prefix} \
193 --with-bugurl=http://bugs.opensuse.org/ \
194 --with-pkgversion="GNU Binutils; %{DIST}" \
196 --build=%{HOST} --target=$TARGET_OS \
197 %if "%{TARGET}" == "spu"
198 --with-sysroot=/usr/spu \
200 --with-sysroot=%{_prefix}/$TARGET_OS/sys-root \
202 ${EXTRA_TARGETS:+--enable-targets="${EXTRA_TARGETS#,}"}
203 make %{?_smp_mflags} all-bfd TARGET-bfd=headers
204 # force reconfiguring
207 %if "%{TARGET}" == "avr"
208 # build an extra nesC version because nesC requires $'s in identifiers
210 echo '#include "tc-%{TARGET}-nesc.h"' > gas-nesc/targ-cpu.h
211 make -C gas-nesc clean
212 make -C gas-nesc %{?_smp_mflags}
220 make -k check CFLAGS="-O2 -g" CXXFLAGS="-O2 -g" || %{make_check_handling}
222 make -k check CFLAGS="$RPM_OPT_FLAGS -Wno-unused -Wno-unprototyped-calls" || :
228 # installing native binutils
230 make DESTDIR=$RPM_BUILD_ROOT install-gold
231 ln -sf ld.gold $RPM_BUILD_ROOT%{_bindir}/gold
233 make DESTDIR=$RPM_BUILD_ROOT install-info install
234 make -C gas/doc DESTDIR=$RPM_BUILD_ROOT install-info-am install-am
235 make DESTDIR=$RPM_BUILD_ROOT install-bfd install-opcodes
237 if [ ! -f "%buildroot/%_bindir/ld.bfd" ]; then
238 mv "%buildroot/%_bindir"/{ld,ld.bfd};
240 rm -f "%buildroot/%_bindir/ld";
242 mkdir -p "%buildroot/%_sysconfdir/alternatives";
243 ln -s "%_bindir/ld" "%buildroot/%_sysconfdir/alternatives/ld";
244 ln -s "%_sysconfdir/alternatives/ld" "%buildroot/%_bindir/ld";
245 rm -rf $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin
246 mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin
247 ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} $RPM_BUILD_ROOT%{_prefix}/%{HOST}/bin
249 #mv $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir}
250 #ln -sf ../../%{_lib}/ldscripts $RPM_BUILD_ROOT%{_prefix}/%{HOST}/lib/ldscripts
251 # Install header files
252 make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT
253 # We want the PIC libiberty.a
254 install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir}
256 chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-*
257 chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-*
258 # No shared linking outside binutils
259 rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so
260 rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la
261 # Remove unwanted files to shut up rpm
262 rm $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info*
263 rm $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1
266 #%find_lang bfd binutils.lang
267 #%find_lang gas binutils.lang
268 #%find_lang ld binutils.lang
269 #%find_lang opcodes binutils.lang
270 #%find_lang gprof binutils.lang
272 #%find_lang gold binutils-gold.lang
274 mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}
275 install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils
276 install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas
277 install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld
279 # installing cross-TARGET-binutils and TARGET-binutils
280 make DESTDIR=$RPM_BUILD_ROOT install
281 # Replace hard links by symlinks, so that rpmlint doesn't complain
282 T=$(basename %buildroot/usr/%{TARGET}*)
283 for f in %buildroot/usr/$T/bin/* ; do
284 ln -sf /usr/bin/$T-$(basename $f) $f
286 %if "%{TARGET}" == "avr"
287 install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET}-nesc-as
288 ln -sf ../../bin/%{TARGET}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET}/bin/nesc-as
290 rm -rf $RPM_BUILD_ROOT%{_mandir}
291 rm -rf $RPM_BUILD_ROOT%{_infodir}
292 rm -rf $RPM_BUILD_ROOT%{_prefix}/lib*
293 rm -rf $RPM_BUILD_ROOT%{_prefix}/include
294 rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
297 cd $RPM_BUILD_DIR/binutils-%version
303 "%_sbindir/update-alternatives" --install \
304 "%_bindir/ld" ld "%_bindir/ld.bfd" 2
307 "%_sbindir/update-alternatives" --install \
308 "%_bindir/ld" ld "%_bindir/ld.gold" 1
312 if [ "$1" = 0 ]; then
313 "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd";
317 if [ "$1" = 0 ]; then
318 "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold";
324 %defattr(-,root,root)
327 %{_prefix}/%{HOST}/bin/*
328 %{_prefix}/%{HOST}/lib/ldscripts
329 %ghost %_sysconfdir/alternatives/ld
330 #%{_libdir}/ldscripts
333 %exclude %{_bindir}/gold
334 %exclude %{_bindir}/ld.gold
336 %doc %{_infodir}/*.gz
337 %{_libdir}/lib*-%{version}*.so
339 %{_prefix}/%{TARGET}*
345 %defattr(-,root,root)
352 %defattr(-,root,root)
353 %{_prefix}/include/*.h