source: spec/trunk/SPECS/binutils.spec@ 771

Last change on this file since 771 was 771, checked in by Silvan Scherrer, 9 years ago

spec: binutils: updated to version 2.25

File size: 11.7 KB
Line 
1%define svn_url e:/trees/binutils/trunk
2#define svn_url http://svn.netlabs.org/repos/ports/binutils/trunk
3#define svn_rev 1585
4
5# rpmbuild parameters:
6# --define "binutils_target arm-linux-gnu" to create arm-linux-gnu-binutils.
7# --with debug: Build without optimizations and without splitting the debuginfo.
8# --without testsuite: Do not run the testsuite. Default is to run it.
9# --with testsuite: Run the testsuite. Default --with debug is not to run it.
10
11# we don't run the testsuit, as there are dependencies we don't have atm
12%define _without_testsuite 1
13
14%if 0%{!?binutils_target:1}
15# we always use _build, as target_platform isn't recognised by configure
16# define binutils_target %{_target_platform}
17%define binutils_target %{_build}
18%define isnative 1
19%define enable_shared 1
20%else
21%define cross %{binutils_target}-
22%define isnative 0
23%define enable_shared 0
24%endif
25# BZ 1124342: Provide a way to enable deterministic archives.
26# BZ 1195883: But do not do this by default.
27%define enable_deterministic_archives 0
28
29
30Summary: A GNU collection of binary utilities
31Name: %{?cross}binutils%{?_with_debug:-debug}
32Version: 2.25
33Release: 1%{?dist}
34License: GPLv3+
35Group: Development/Tools
36URL: http://sources.redhat.com/binutils
37
38Source: %{name}-%{version}%{?svn_rev:-r%{svn_rev}}.zip
39Vendor: bww bitwise works GmbH
40
41Provides: bundled(libiberty)
42
43# BZ 1173780: Building GOLD for PPC is not working at the moment.
44# define gold_arches %ix86 x86_64 %arm aarch64 ppc* %{power64}
45%define gold_arches %ix86 x86_64 %arm aarch64
46
47# we don't build on elf, so no gold for us
48# ifarch %gold_arches
49# define build_gold both
50# else
51%define build_gold no
52# endif
53
54%if 0%{?_with_debug:1}
55# Define this if you want to skip the strip step and preserve debug info.
56# Useful for testing.
57%define __debug_install_post : > %{_builddir}/%{?buildsubdir}/debugfiles.list
58%define debug_package %{nil}
59%define run_testsuite 0%{?_with_testsuite:1}
60%else
61%define run_testsuite 0%{!?_without_testsuite:1}
62%endif
63
64BuildRequires: texinfo >= 4.0, gettext, flex, bison, zlib-devel
65# BZ 920545: We need pod2man in order to build the manual pages.
66# BuildRequires: /@unixroot/usr/bin/pod2man
67# Required for: ld-bootstrap/bootstrap.exp bootstrap with --static
68# It should not be required for: ld-elf/elf.exp static {preinit,init,fini} array
69%if %{run_testsuite}
70# relro_test.sh uses dc which is part of the bc rpm, hence its inclusion here.
71BuildRequires: dejagnu, zlib-static, glibc-static, sharutils, bc
72%if "%{build_gold}" == "both"
73# The GOLD testsuite needs a static libc++
74BuildRequires: libstdc++-static
75%endif
76%endif
77Conflicts: gcc-c++ < 4.0.0
78#Requires(post): /sbin/install-info
79#Requires(preun): /sbin/install-info
80%ifarch ia64
81Obsoletes: gnupro <= 1117-1
82%endif
83
84
85# The higher of these two numbers determines the default ld.
86%{!?ld_bfd_priority: %define ld_bfd_priority 50}
87%{!?ld_gold_priority:%define ld_gold_priority 30}
88
89%if "%{build_gold}" == "both"
90Requires(post): coreutils
91Requires(post): %{_sbindir}/alternatives
92Requires(preun): %{_sbindir}/alternatives
93%endif
94
95# On ARM EABI systems, we do want -gnueabi to be part of the
96# target triple.
97%ifnarch %{arm}
98%define _gnu %{nil}
99%endif
100
101%description
102Binutils is a collection of binary utilities, including ar (for
103creating, modifying and extracting from archives), as (a family of GNU
104assemblers), gprof (for displaying call graph profile data), ld (the
105GNU linker), nm (for listing symbols from object files), objcopy (for
106copying and translating object files), objdump (for displaying
107information from object files), ranlib (for generating an index for
108the contents of an archive), readelf (for displaying detailed
109information about binary files), size (for listing the section sizes
110of an object or archive file), strings (for listing printable strings
111from files), strip (for discarding symbols), and addr2line (for
112converting addresses to file and line).
113
114%package devel
115Summary: BFD and opcodes dynamic libraries and header files
116Group: System Environment/Libraries
117Conflicts: binutils < 2.17.50.0.3-4
118#Requires(post): /sbin/install-info
119#Requires(preun): /sbin/install-info
120Requires: zlib-devel
121Requires: binutils = %{version}-%{release}
122# BZ 1215242: We need touch...
123Requires: coreutils
124
125%description devel
126This package contains BFD and opcodes static and dynamic libraries.
127
128The dynamic libraries are in this package, rather than a seperate
129base package because they are actually linker scripts that force
130the use of the static libraries. This is because the API of the
131BFD library is too unstable to be used dynamically.
132
133The static libraries are here because they are now needed by the
134dynamic libraries.
135
136Developers starting new projects are strongly encouraged to consider
137using libelf instead of BFD.
138
139
140%prep
141%if %{?svn_rev:%(sh -c 'if test -f "%{_sourcedir}/%{name}-%{version}-r%{svn_rev}.zip" ; then echo 1 ; else echo 0 ; fi')}%{!?svn_rev):0}
142%setup -q
143%else
144%setup -n "%{name}-%{version}" -Tc
145svn export %{?svn_rev:-r %{svn_rev}} %{svn_url} . --force
146rm -f "%{_sourcedir}/%{name}-%{version}%{?svn_rev:-r%{svn_rev}}.zip"
147(cd .. && zip -SrX9 "%{_sourcedir}/%{name}-%{version}%{?svn_rev:-r%{svn_rev}}.zip" "%{name}-%{version}")
148%endif
149
150autogen.sh
151
152%build
153echo target is %{binutils_target}
154%ifarch %{power64}
155export CFLAGS="$RPM_OPT_FLAGS -Wno-error"
156%else
157export CFLAGS="$RPM_OPT_FLAGS"
158%endif
159CARGS=
160
161case %{binutils_target} in i?86*|sparc*|ppc*|s390*|sh*|arm*|aarch64*)
162 CARGS="$CARGS --enable-64-bit-bfd"
163 ;;
164esac
165
166case %{binutils_target} in ia64*)
167 CARGS="$CARGS --enable-targets=i386-linux"
168 ;;
169esac
170
171case %{binutils_target} in ppc*|ppc64*)
172 CARGS="$CARGS --enable-targets=spu"
173 ;;
174esac
175
176case %{binutils_target} in ppc64-*)
177 CARGS="$CARGS --enable-targets=powerpc64le-linux"
178 ;;
179esac
180
181case %{binutils_target} in ppc64le*)
182 CARGS="$CARGS --enable-targets=powerpc-linux"
183 ;;
184esac
185
186%if 0%{?_with_debug:1}
187CFLAGS="$CFLAGS -O0 -ggdb2 -Wno-error -D_FORTIFY_SOURCE=0"
188%define enable_shared 0
189%endif
190
191export LDFLAGS=" -Zhigh-mem -Zomf -Zargs-wild -Zargs-resp"
192
193# We could optimize the cross builds size by --enable-shared but the produced
194# binaries may be less convenient in the embedded environment.
195# the below configure switchs we don't use
196# --build=%{_target_platform} --host=%{_target_platform} \
197%configure \
198 --target=%{binutils_target} \
199%ifarch %gold_arches
200%if "%{build_gold}" == "both"
201 --enable-gold=default --enable-ld \
202%else
203 --enable-ld \
204%endif
205%endif
206%if !%{isnative}
207 --enable-targets=%{_host} \
208 --with-sysroot=%{_prefix}/%{binutils_target}/sys-root \
209 --program-prefix=%{cross} \
210%endif
211%if %{enable_shared}
212 --enable-shared --disable-static \
213%else
214 --disable-shared \
215%endif
216%if %{enable_deterministic_archives}
217 --enable-deterministic-archives \
218%else
219 --enable-deterministic-archives=no \
220%endif
221 $CARGS \
222 --enable-plugins \
223 --with-bugurl=http://bugzilla.redhat.com/bugzilla/
224make %{_smp_mflags} tooldir=%{_prefix} all
225make %{_smp_mflags} tooldir=%{_prefix} info
226
227# Do not use %%check as it is run after %%install where libbfd.so is rebuild
228# with -fvisibility=hidden no longer being usable in its shared form.
229%if !%{run_testsuite}
230echo ====================TESTSUITE DISABLED=========================
231%else
232make -k check < /dev/null || :
233echo ====================TESTING=========================
234cat {gas/testsuite/gas,ld/ld,binutils/binutils}.sum
235echo ====================TESTING END=====================
236for file in {gas/testsuite/gas,ld/ld,binutils/binutils}.{sum,log}
237do
238 ln $file binutils-%{_target_platform}-$(basename $file) || :
239done
240tar cjf binutils-%{_target_platform}.tar.bz2 binutils-%{_target_platform}-*.{sum,log}
241uuencode binutils-%{_target_platform}.tar.bz2 binutils-%{_target_platform}.tar.bz2
242rm -f binutils-%{_target_platform}.tar.bz2 binutils-%{_target_platform}-*.{sum,log}
243%endif
244
245%install
246rm -rf %{buildroot}
247make install DESTDIR=%{buildroot}
248%if %{isnative}
249make prefix=%{buildroot}%{_prefix} infodir=%{buildroot}%{_infodir} install-info
250
251#install -m 644 bfd/libbfd.a %{buildroot}%{_libdir}
252#install -m 644 libiberty/libiberty.a %{buildroot}%{_libdir}
253install -m 644 include/libiberty.h %{buildroot}%{_prefix}/include
254#install -m 644 opcodes/libopcodes.a %{buildroot}%{_libdir}
255# Remove Windows/Novell only man pages
256rm -f %{buildroot}%{_mandir}/man1/{dlltool,nlmconv,windres,windmc}*
257
258%if %{enable_shared}
259chmod +x %{buildroot}%{_libdir}/*.dll
260%endif
261
262# Remove libtool files, which reference the .dll libs
263rm -f %{buildroot}%{_libdir}/*.la
264
265%else # !%{isnative}
266# For cross-binutils we drop the documentation.
267rm -rf %{buildroot}%{_infodir}
268# We keep these as one can have native + cross binutils of different versions.
269#rm -rf %{buildroot}%{_prefix}/share/locale
270#rm -rf %{buildroot}%{_mandir}
271rm -rf %{buildroot}%{_libdir}/libiberty.a
272%endif # !%{isnative}
273
274# This one comes from gcc
275rm -f %{buildroot}%{_infodir}/dir
276rm -rf %{buildroot}%{_prefix}/%{binutils_target}
277
278%find_lang %{?cross}binutils
279%find_lang %{?cross}opcodes
280%find_lang %{?cross}bfd
281%find_lang %{?cross}gas
282%find_lang %{?cross}gprof
283cat %{?cross}opcodes.lang >> %{?cross}binutils.lang
284cat %{?cross}bfd.lang >> %{?cross}binutils.lang
285cat %{?cross}gas.lang >> %{?cross}binutils.lang
286cat %{?cross}gprof.lang >> %{?cross}binutils.lang
287
288if [ -x ld/ld-new ]; then
289 %find_lang %{?cross}ld
290 cat %{?cross}ld.lang >> %{?cross}binutils.lang
291fi
292if [ -x gold/ld-new ]; then
293 %find_lang %{?cross}gold
294 cat %{?cross}gold.lang >> %{?cross}binutils.lang
295fi
296
297%clean
298rm -rf %{buildroot}
299
300%post
301%if "%{build_gold}" == "both"
302%__rm -f %{_bindir}/%{?cross}ld
303%{_sbindir}/alternatives --install %{_bindir}/%{?cross}ld %{?cross}ld \
304 %{_bindir}/%{?cross}ld.bfd %{ld_bfd_priority}
305%{_sbindir}/alternatives --install %{_bindir}/%{?cross}ld %{?cross}ld \
306 %{_bindir}/%{?cross}ld.gold %{ld_gold_priority}
307%{_sbindir}/alternatives --auto %{?cross}ld
308%endif
309%if %{isnative}
310#/sbin/ldconfig
311# For --excludedocs:
312if [ -e %{_infodir}/binutils.info.gz ]
313then
314 %{_sbindir}/install-info --info-dir=%{_infodir} %{_infodir}/as.info.gz
315 %{_sbindir}/install-info --info-dir=%{_infodir} %{_infodir}/binutils.info.gz
316 %{_sbindir}/install-info --info-dir=%{_infodir} %{_infodir}/gprof.info.gz
317 %{_sbindir}/install-info --info-dir=%{_infodir} %{_infodir}/ld.info.gz
318fi
319%endif # %{isnative}
320exit 0
321
322%preun
323%if "%{build_gold}" == "both"
324if [ $1 = 0 ]; then
325 %{_sbindir}/alternatives --remove %{?cross}ld %{_bindir}/%{?cross}ld.bfd
326 %{_sbindir}/alternatives --remove %{?cross}ld %{_bindir}/%{?cross}ld.gold
327fi
328%endif
329%if %{isnative}
330if [ $1 = 0 ]; then
331 if [ -e %{_infodir}/binutils.info.gz ]
332 then
333 %{_sbindir}/install-info --delete --info-dir=%{_infodir} %{_infodir}/as.info.gz
334 %{_sbindir}/install-info --delete --info-dir=%{_infodir} %{_infodir}/binutils.info.gz
335 %{_sbindir}/install-info --delete --info-dir=%{_infodir} %{_infodir}/gprof.info.gz
336 %{_sbindir}/install-info --delete --info-dir=%{_infodir} %{_infodir}/ld.info.gz
337 fi
338fi
339%endif
340exit 0
341
342%if %{isnative}
343#%postun -p /sbin/ldconfig
344%endif # %{isnative}
345
346%files -f %{?cross}binutils.lang
347%defattr(-,root,root,-)
348%doc README
349%{_bindir}/%{?cross}[!l]*
350%if "%{build_gold}" == "both"
351%{_bindir}/%{?cross}ld.*
352%ghost %{_bindir}/%{?cross}ld
353%else
354#%{_bindir}/%{?cross}ld*
355%endif
356%{_mandir}/man1/*
357%if %{enable_shared}
358%{_libdir}/*.dll
359%endif
360
361%if %{isnative}
362%{_infodir}/[^b]*info*
363%{_infodir}/binutils*info*
364
365%files devel
366%defattr(-,root,root,-)
367%{_prefix}/include/*
368%{_libdir}/*_dll.a
369%{_infodir}/bfd*info*
370
371%endif # %{isnative}
372
373%changelog
374* Tue May 31 2016 Silvan Scherrer <silvan.scherrer@aroa.ch> 2.25-1
375- update to version 2.25
376
377* Wed Oct 5 2011 yd <yd@os2power.com> 2.21-1
378- Initial version
Note: See TracBrowser for help on using the repository browser.