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
252 # Install header files
253 make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=$RPM_BUILD_ROOT
254 # We want the PIC libiberty.a
255 install -m 644 libiberty/pic/libiberty.a $RPM_BUILD_ROOT%{_libdir}
257 chmod a+x $RPM_BUILD_ROOT%{_libdir}/libbfd-*
258 chmod a+x $RPM_BUILD_ROOT%{_libdir}/libopcodes-*
259 # No shared linking outside binutils
260 rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.so
261 rm $RPM_BUILD_ROOT%{_libdir}/lib{bfd,opcodes}.la
262 # Remove unwanted files to shut up rpm
263 rm $RPM_BUILD_ROOT%{_infodir}/configure* $RPM_BUILD_ROOT%{_infodir}/standards.info*
264 rm $RPM_BUILD_ROOT%{_mandir}/man1/dlltool.1 $RPM_BUILD_ROOT%{_mandir}/man1/windres.1 $RPM_BUILD_ROOT%{_mandir}/man1/windmc.1
267 #%find_lang bfd binutils.lang
268 #%find_lang gas binutils.lang
269 #%find_lang ld binutils.lang
270 #%find_lang opcodes binutils.lang
271 #%find_lang gprof binutils.lang
273 #%find_lang gold binutils-gold.lang
275 mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{name}
276 install -m 644 binutils/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-binutils
277 install -m 644 gas/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-gas
278 install -m 644 ld/NEWS $RPM_BUILD_ROOT%{_docdir}/%{name}/NEWS-ld
280 # installing cross-TARGET-binutils and TARGET-binutils
281 make DESTDIR=$RPM_BUILD_ROOT install
282 # Replace hard links by symlinks, so that rpmlint doesn't complain
283 T=$(basename %buildroot/usr/%{TARGET}*)
284 for f in %buildroot/usr/$T/bin/* ; do
285 ln -sf /usr/bin/$T-$(basename $f) $f
287 %if "%{TARGET}" == "avr"
288 install -c gas-nesc/as-new $RPM_BUILD_ROOT%{_prefix}/bin/%{TARGET}-nesc-as
289 ln -sf ../../bin/%{TARGET}-nesc-as $RPM_BUILD_ROOT%{_prefix}/%{TARGET}/bin/nesc-as
291 rm -rf $RPM_BUILD_ROOT%{_mandir}
292 rm -rf $RPM_BUILD_ROOT%{_infodir}
293 rm -rf $RPM_BUILD_ROOT%{_prefix}/lib*
294 rm -rf $RPM_BUILD_ROOT%{_prefix}/include
295 rm -f $RPM_BUILD_ROOT%{_prefix}/bin/*-c++filt
298 cd $RPM_BUILD_DIR/binutils-%version
304 "%_sbindir/update-alternatives" --install \
305 "%_bindir/ld" ld "%_bindir/ld.bfd" 1
308 "%_sbindir/update-alternatives" --install \
309 "%_bindir/ld" ld "%_bindir/ld.gold" 2
313 if [ "$1" = 0 ]; then
314 "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.bfd";
318 if [ "$1" = 0 ]; then
319 "%_sbindir/update-alternatives" --remove ld "%_bindir/ld.gold";
325 %defattr(-,root,root)
328 %{_prefix}/%{HOST}/bin/*
329 %{_prefix}/%{HOST}/lib/ldscripts
330 %ghost %_sysconfdir/alternatives/ld
334 %exclude %{_bindir}/gold
335 %exclude %{_bindir}/ld.gold
337 %doc %{_infodir}/*.gz
338 %{_libdir}/lib*-%{version}*.so
340 %{_prefix}/%{TARGET}*
346 %defattr(-,root,root)
353 %defattr(-,root,root)
354 %{_prefix}/include/*.h