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 |
|
---|
30 | Summary: A GNU collection of binary utilities
|
---|
31 | Name: %{?cross}binutils%{?_with_debug:-debug}
|
---|
32 | Version: 2.25
|
---|
33 | Release: 1%{?dist}
|
---|
34 | License: GPLv3+
|
---|
35 | Group: Development/Tools
|
---|
36 | URL: http://sources.redhat.com/binutils
|
---|
37 |
|
---|
38 | Source: %{name}-%{version}%{?svn_rev:-r%{svn_rev}}.zip
|
---|
39 | Vendor: bww bitwise works GmbH
|
---|
40 |
|
---|
41 | Provides: 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 |
|
---|
64 | BuildRequires: 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.
|
---|
71 | BuildRequires: dejagnu, zlib-static, glibc-static, sharutils, bc
|
---|
72 | %if "%{build_gold}" == "both"
|
---|
73 | # The GOLD testsuite needs a static libc++
|
---|
74 | BuildRequires: libstdc++-static
|
---|
75 | %endif
|
---|
76 | %endif
|
---|
77 | Conflicts: gcc-c++ < 4.0.0
|
---|
78 | #Requires(post): /sbin/install-info
|
---|
79 | #Requires(preun): /sbin/install-info
|
---|
80 | %ifarch ia64
|
---|
81 | Obsoletes: 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"
|
---|
90 | Requires(post): coreutils
|
---|
91 | Requires(post): %{_sbindir}/alternatives
|
---|
92 | Requires(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
|
---|
102 | Binutils is a collection of binary utilities, including ar (for
|
---|
103 | creating, modifying and extracting from archives), as (a family of GNU
|
---|
104 | assemblers), gprof (for displaying call graph profile data), ld (the
|
---|
105 | GNU linker), nm (for listing symbols from object files), objcopy (for
|
---|
106 | copying and translating object files), objdump (for displaying
|
---|
107 | information from object files), ranlib (for generating an index for
|
---|
108 | the contents of an archive), readelf (for displaying detailed
|
---|
109 | information about binary files), size (for listing the section sizes
|
---|
110 | of an object or archive file), strings (for listing printable strings
|
---|
111 | from files), strip (for discarding symbols), and addr2line (for
|
---|
112 | converting addresses to file and line).
|
---|
113 |
|
---|
114 | %package devel
|
---|
115 | Summary: BFD and opcodes dynamic libraries and header files
|
---|
116 | Group: System Environment/Libraries
|
---|
117 | Conflicts: binutils < 2.17.50.0.3-4
|
---|
118 | #Requires(post): /sbin/install-info
|
---|
119 | #Requires(preun): /sbin/install-info
|
---|
120 | Requires: zlib-devel
|
---|
121 | Requires: binutils = %{version}-%{release}
|
---|
122 | # BZ 1215242: We need touch...
|
---|
123 | Requires: coreutils
|
---|
124 |
|
---|
125 | %description devel
|
---|
126 | This package contains BFD and opcodes static and dynamic libraries.
|
---|
127 |
|
---|
128 | The dynamic libraries are in this package, rather than a seperate
|
---|
129 | base package because they are actually linker scripts that force
|
---|
130 | the use of the static libraries. This is because the API of the
|
---|
131 | BFD library is too unstable to be used dynamically.
|
---|
132 |
|
---|
133 | The static libraries are here because they are now needed by the
|
---|
134 | dynamic libraries.
|
---|
135 |
|
---|
136 | Developers starting new projects are strongly encouraged to consider
|
---|
137 | using 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
|
---|
145 | svn export %{?svn_rev:-r %{svn_rev}} %{svn_url} . --force
|
---|
146 | rm -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 |
|
---|
150 | autogen.sh
|
---|
151 |
|
---|
152 | %build
|
---|
153 | echo target is %{binutils_target}
|
---|
154 | %ifarch %{power64}
|
---|
155 | export CFLAGS="$RPM_OPT_FLAGS -Wno-error"
|
---|
156 | %else
|
---|
157 | export CFLAGS="$RPM_OPT_FLAGS"
|
---|
158 | %endif
|
---|
159 | CARGS=
|
---|
160 |
|
---|
161 | case %{binutils_target} in i?86*|sparc*|ppc*|s390*|sh*|arm*|aarch64*)
|
---|
162 | CARGS="$CARGS --enable-64-bit-bfd"
|
---|
163 | ;;
|
---|
164 | esac
|
---|
165 |
|
---|
166 | case %{binutils_target} in ia64*)
|
---|
167 | CARGS="$CARGS --enable-targets=i386-linux"
|
---|
168 | ;;
|
---|
169 | esac
|
---|
170 |
|
---|
171 | case %{binutils_target} in ppc*|ppc64*)
|
---|
172 | CARGS="$CARGS --enable-targets=spu"
|
---|
173 | ;;
|
---|
174 | esac
|
---|
175 |
|
---|
176 | case %{binutils_target} in ppc64-*)
|
---|
177 | CARGS="$CARGS --enable-targets=powerpc64le-linux"
|
---|
178 | ;;
|
---|
179 | esac
|
---|
180 |
|
---|
181 | case %{binutils_target} in ppc64le*)
|
---|
182 | CARGS="$CARGS --enable-targets=powerpc-linux"
|
---|
183 | ;;
|
---|
184 | esac
|
---|
185 |
|
---|
186 | %if 0%{?_with_debug:1}
|
---|
187 | CFLAGS="$CFLAGS -O0 -ggdb2 -Wno-error -D_FORTIFY_SOURCE=0"
|
---|
188 | %define enable_shared 0
|
---|
189 | %endif
|
---|
190 |
|
---|
191 | export 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/
|
---|
224 | make %{_smp_mflags} tooldir=%{_prefix} all
|
---|
225 | make %{_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}
|
---|
230 | echo ====================TESTSUITE DISABLED=========================
|
---|
231 | %else
|
---|
232 | make -k check < /dev/null || :
|
---|
233 | echo ====================TESTING=========================
|
---|
234 | cat {gas/testsuite/gas,ld/ld,binutils/binutils}.sum
|
---|
235 | echo ====================TESTING END=====================
|
---|
236 | for file in {gas/testsuite/gas,ld/ld,binutils/binutils}.{sum,log}
|
---|
237 | do
|
---|
238 | ln $file binutils-%{_target_platform}-$(basename $file) || :
|
---|
239 | done
|
---|
240 | tar cjf binutils-%{_target_platform}.tar.bz2 binutils-%{_target_platform}-*.{sum,log}
|
---|
241 | uuencode binutils-%{_target_platform}.tar.bz2 binutils-%{_target_platform}.tar.bz2
|
---|
242 | rm -f binutils-%{_target_platform}.tar.bz2 binutils-%{_target_platform}-*.{sum,log}
|
---|
243 | %endif
|
---|
244 |
|
---|
245 | %install
|
---|
246 | rm -rf %{buildroot}
|
---|
247 | make install DESTDIR=%{buildroot}
|
---|
248 | %if %{isnative}
|
---|
249 | make 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}
|
---|
253 | install -m 644 include/libiberty.h %{buildroot}%{_prefix}/include
|
---|
254 | #install -m 644 opcodes/libopcodes.a %{buildroot}%{_libdir}
|
---|
255 | # Remove Windows/Novell only man pages
|
---|
256 | rm -f %{buildroot}%{_mandir}/man1/{dlltool,nlmconv,windres,windmc}*
|
---|
257 |
|
---|
258 | %if %{enable_shared}
|
---|
259 | chmod +x %{buildroot}%{_libdir}/*.dll
|
---|
260 | %endif
|
---|
261 |
|
---|
262 | # Remove libtool files, which reference the .dll libs
|
---|
263 | rm -f %{buildroot}%{_libdir}/*.la
|
---|
264 |
|
---|
265 | %else # !%{isnative}
|
---|
266 | # For cross-binutils we drop the documentation.
|
---|
267 | rm -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}
|
---|
271 | rm -rf %{buildroot}%{_libdir}/libiberty.a
|
---|
272 | %endif # !%{isnative}
|
---|
273 |
|
---|
274 | # This one comes from gcc
|
---|
275 | rm -f %{buildroot}%{_infodir}/dir
|
---|
276 | rm -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
|
---|
283 | cat %{?cross}opcodes.lang >> %{?cross}binutils.lang
|
---|
284 | cat %{?cross}bfd.lang >> %{?cross}binutils.lang
|
---|
285 | cat %{?cross}gas.lang >> %{?cross}binutils.lang
|
---|
286 | cat %{?cross}gprof.lang >> %{?cross}binutils.lang
|
---|
287 |
|
---|
288 | if [ -x ld/ld-new ]; then
|
---|
289 | %find_lang %{?cross}ld
|
---|
290 | cat %{?cross}ld.lang >> %{?cross}binutils.lang
|
---|
291 | fi
|
---|
292 | if [ -x gold/ld-new ]; then
|
---|
293 | %find_lang %{?cross}gold
|
---|
294 | cat %{?cross}gold.lang >> %{?cross}binutils.lang
|
---|
295 | fi
|
---|
296 |
|
---|
297 | %clean
|
---|
298 | rm -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:
|
---|
312 | if [ -e %{_infodir}/binutils.info.gz ]
|
---|
313 | then
|
---|
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
|
---|
318 | fi
|
---|
319 | %endif # %{isnative}
|
---|
320 | exit 0
|
---|
321 |
|
---|
322 | %preun
|
---|
323 | %if "%{build_gold}" == "both"
|
---|
324 | if [ $1 = 0 ]; then
|
---|
325 | %{_sbindir}/alternatives --remove %{?cross}ld %{_bindir}/%{?cross}ld.bfd
|
---|
326 | %{_sbindir}/alternatives --remove %{?cross}ld %{_bindir}/%{?cross}ld.gold
|
---|
327 | fi
|
---|
328 | %endif
|
---|
329 | %if %{isnative}
|
---|
330 | if [ $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
|
---|
338 | fi
|
---|
339 | %endif
|
---|
340 | exit 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
|
---|