]>
Commit | Line | Data |
---|---|---|
59e455fe ER |
1 | |
2 | %define cross cross | |
3 | %define rpmprefix %{nil} | |
4 | ||
5 | %define build_all 1 | |
6 | %define build_alpha %{build_all} | |
7 | %define build_arm %{build_all} | |
8 | %define build_aarch64 %{build_all} | |
9 | %define build_avr32 %{build_all} | |
10 | %define build_blackfin %{build_all} | |
11 | %define build_c6x %{build_all} | |
12 | %define build_cris %{build_all} | |
13 | %define build_frv %{build_all} | |
14 | %define build_h8300 %{build_all} | |
15 | %define build_hppa %{build_all} | |
16 | %define build_hppa64 %{build_all} | |
17 | %define build_ia64 %{build_all} | |
18 | %define build_m32r %{build_all} | |
19 | %define build_m68k %{build_all} | |
20 | %define build_metag %{build_all} | |
21 | %define build_microblaze %{build_all} | |
22 | %define build_mips64 %{build_all} | |
23 | %define build_mn10300 %{build_all} | |
24 | %define build_nios2 %{build_all} | |
25 | %define build_openrisc %{build_all} | |
26 | %define build_powerpc64 %{build_all} | |
27 | %define build_s390x %{build_all} | |
28 | %define build_score %{build_all} | |
29 | %define build_sh %{build_all} | |
30 | %define build_sh64 %{build_all} | |
31 | %define build_sparc64 %{build_all} | |
32 | %define build_tile %{build_all} | |
33 | %define build_x86_64 %{build_all} | |
34 | %define build_xtensa %{build_all} | |
35 | ||
36 | # 32-bit packages we don't build as we can use the 64-bit package instead | |
37 | %define build_i386 0 | |
38 | %define build_mips 0 | |
39 | %define build_powerpc 0 | |
40 | %define build_s390 0 | |
41 | %define build_sparc 0 | |
42 | %define build_sh4 0 | |
43 | ||
44 | # not available in binutils-2.24 | |
45 | %define build_hexagon 0 | |
46 | %define build_unicore32 0 | |
47 | ||
48 | Summary: A GNU collection of cross-compilation binary utilities | |
49 | Name: %{cross}-binutils | |
50 | Version: 2.25 | |
10ca4dcc | 51 | Release: 0.4 |
59e455fe ER |
52 | License: GPL v3+ |
53 | Group: Development/Tools | |
54 | URL: http://sources.redhat.com/binutils | |
55 | # Note - the Linux Kernel binutils releases are too unstable and contain too | |
56 | # many controversial patches so we stick with the official FSF version | |
57 | # instead. | |
58 | Source0: http://ftp.gnu.org/gnu/binutils/binutils-%{version}.tar.bz2 | |
59 | # Source0-md5: d9f3303f802a5b6b0bb73a335ab89d66 | |
60 | Source2: binutils-2.19.50.0.1-output-format.sed | |
61 | # Bring up to date with what's in the git release branch | |
62 | #Patch00: binutils-2.24-cde98f8566e14f52b896abc92c357cdd14717505.patch | |
63 | Patch01: binutils-2.20.51.0.2-libtool-lib64.patch | |
64 | Patch02: binutils-2.20.51.0.10-ppc64-pie.patch | |
65 | Patch03: binutils-2.20.51.0.2-ia64-lib64.patch | |
66 | Patch04: binutils-2.25-version.patch | |
67 | Patch05: binutils-2.25-set-long-long.patch | |
68 | Patch06: binutils-2.20.51.0.10-copy-osabi.patch | |
69 | Patch07: binutils-2.20.51.0.10-sec-merge-emit.patch | |
70 | # Enable -zrelro by default: BZ #621983 | |
71 | Patch08: binutils-2.22.52.0.1-relro-on-by-default.patch | |
72 | # Local patch - export demangle.h with the binutils-devel rpm. | |
73 | Patch09: binutils-2.22.52.0.1-export-demangle.h.patch | |
74 | # Disable checks that config.h has been included before system headers. BZ #845084 | |
75 | Patch10: binutils-2.22.52.0.4-no-config-h-check.patch | |
76 | # Fix addr2line to use the dynamic symbol table if it could not find any ordinary symbols. | |
77 | Patch11: binutils-2.23.52.0.1-addr2line-dynsymtab.patch | |
78 | Patch12: binutils-2.25-kernel-ld-r.patch | |
79 | # Correct bug introduced by patch 12 | |
80 | Patch13: binutils-2.23.2-aarch64-em.patch | |
81 | # Fix detections little endian PPC shared libraries | |
82 | Patch14: binutils-2.24-ldforcele.patch | |
83 | BuildRequires: bison | |
84 | BuildRequires: flex | |
85 | BuildRequires: gettext | |
86 | BuildRequires: texinfo >= 4.0 | |
87 | BuildRequires: zlib-devel | |
88 | # BZ 920545: We need pod2man in order to build the manual pages. | |
89 | BuildRequires: /usr/bin/pod2man | |
90 | # Required for: ld-bootstrap/bootstrap.exp bootstrap with --static | |
91 | # It should not be required for: ld-elf/elf.exp static {preinit,init,fini} array | |
92 | Conflicts: gcc-c++ < 4.0.0 | |
93 | %ifarch ia64 | |
94 | Obsoletes: gnupro <= 1117-1 | |
95 | %endif | |
96 | Provides: bundled(libiberty) | |
97 | BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) | |
98 | ||
99 | # Where the binaries aimed at gcc will live (ie. /usr/<target>/bin/) | |
100 | %define auxbin_prefix %{_exec_prefix} | |
101 | %define srcdir binutils-%{version} | |
102 | ||
103 | %description | |
104 | Binutils is a collection of binary utilities, including ar (for | |
105 | creating, modifying and extracting from archives), as (a family of GNU | |
106 | assemblers), gprof (for displaying call graph profile data), ld (the | |
107 | GNU linker), nm (for listing symbols from object files), objcopy (for | |
108 | copying and translating object files), objdump (for displaying | |
109 | information from object files), ranlib (for generating an index for | |
110 | the contents of an archive), readelf (for displaying detailed | |
111 | information about binary files), size (for listing the section sizes | |
112 | of an object or archive file), strings (for listing printable strings | |
113 | from files), strip (for discarding symbols), and addr2line (for | |
114 | converting addresses to file and line). | |
115 | ||
116 | %package -n %{cross}-binutils-common | |
117 | Summary: Cross-build binary utility documentation and translation files | |
118 | Group: Development/Tools | |
119 | %if "%{_rpmversion}" >= "5" | |
120 | BuildArch: noarch | |
121 | %endif | |
122 | ||
123 | %description -n %{cross}-binutils-common | |
124 | Documentation, manual pages and translation files for cross-build | |
125 | binary image generation, manipulation and query tools. | |
126 | ||
127 | %define do_package() \ | |
128 | %package -n %{rpmprefix}binutils-%1 \ | |
129 | Summary: Cross-build binary utilities for %1 \ | |
130 | Group: Development/Tools \ | |
131 | Requires: %{cross}-binutils-common = %{version}-%{release}\ | |
132 | \ | |
133 | %description -n %{rpmprefix}binutils-%1 \ | |
134 | Cross-build binary image generation, manipulation and query tools. \ | |
135 | ||
136 | %define do_symlink() \ | |
137 | %package -n %{rpmprefix}binutils-%1 \ | |
138 | Summary: Cross-build binary utilities for %1 \ | |
139 | Group: Development/Tools \ | |
140 | Requires: binutils-%3 = %{version}-%{release}\ | |
141 | \ | |
142 | %description -n %{rpmprefix}binutils-%1 \ | |
143 | Cross-build binary image generation, manipulation and query tools. \ | |
144 | ||
145 | %do_package alpha-linux-gnu %{build_alpha} | |
146 | %do_package arm-linux-gnu %{build_arm} | |
147 | %do_package aarch64-linux-gnu %{build_aarch64} | |
148 | %do_package avr32-linux-gnu %{build_avr32} | |
149 | %do_package bfin-linux-gnu %{build_blackfin} | |
150 | %do_package c6x-linux-gnu %{build_c6x} | |
151 | %do_package cris-linux-gnu %{build_cris} | |
152 | %do_package frv-linux-gnu %{build_frv} | |
153 | %do_package h8300-linux-gnu %{build_h8300} | |
154 | %do_package hexagon-linux-gnu %{build_hexagon} | |
155 | %do_package hppa-linux-gnu %{build_hppa} | |
156 | %do_package hppa64-linux-gnu %{build_hppa64} | |
157 | %do_package i386-linux-gnu %{build_i386} | |
158 | %do_package ia64-linux-gnu %{build_ia64} | |
159 | %do_package m32r-linux-gnu %{build_m32r} | |
160 | %do_package m68k-linux-gnu %{build_m68k} | |
161 | %do_package metag-linux-gnu %{build_metag} | |
162 | %do_package microblaze-linux-gnu %{build_microblaze} | |
163 | %do_package mips-linux-gnu %{build_mips} | |
164 | %do_package mips64-linux-gnu %{build_mips64} | |
165 | %do_package mn10300-linux-gnu %{build_mn10300} | |
166 | %do_package nios2-linux-gnu %{build_nios2} | |
167 | %do_package openrisc-linux-gnu %{build_openrisc} or1k-linux-gnu | |
168 | %do_package powerpc-linux-gnu %{build_powerpc} | |
169 | %do_package powerpc64-linux-gnu %{build_powerpc64} | |
170 | %do_symlink ppc-linux-gnu %{build_powerpc} powerpc-linux-gnu | |
171 | %do_symlink ppc64-linux-gnu %{build_powerpc64} powerpc64-linux-gnu | |
172 | %do_package s390-linux-gnu %{build_s390} | |
173 | %do_package s390x-linux-gnu %{build_s390x} | |
174 | %do_package score-linux-gnu %{build_score} | |
175 | %do_package sh-linux-gnu %{build_sh} | |
176 | %do_package sh4-linux-gnu %{build_sh4} | |
177 | %do_package sh64-linux-gnu %{build_sh64} | |
178 | %do_package sparc-linux-gnu %{build_sparc} | |
179 | %do_package sparc64-linux-gnu %{build_sparc64} | |
180 | %do_package tile-linux-gnu %{build_tile} | |
181 | %do_package unicore32-linux-gnu %{build_unicore32} | |
182 | %do_package x86_64-linux-gnu %{build_x86_64} | |
183 | %do_package xtensa-linux-gnu %{build_xtensa} | |
184 | ||
185 | %prep | |
186 | %setup -qc | |
187 | cd %{srcdir} | |
188 | %if 1 | |
189 | #%patch00 -p1 -b .latest-git~ | |
190 | %patch01 -p1 | |
191 | %patch02 -p1 | |
192 | %ifarch ia64 | |
193 | %if "%{_lib}" == "lib64" | |
194 | %patch03 -p1 | |
195 | %endif | |
196 | %endif | |
197 | %patch04 -p1 | |
198 | %patch05 -p1 | |
199 | %patch06 -p1 | |
200 | %patch07 -p1 | |
201 | %patch08 -p1 | |
202 | %patch09 -p1 | |
203 | %patch10 -p1 | |
204 | %patch11 -p1 | |
205 | %patch12 -p1 | |
206 | %patch13 -p1 | |
207 | %patch14 -p1 | |
208 | %endif | |
209 | ||
210 | # We cannot run autotools as there is an exact requirement of autoconf-2.59. | |
211 | ||
212 | # On ppc64 we might use 64KiB pages | |
213 | sed -i -e '/#define.*ELF_COMMONPAGESIZE/s/0x1000$/0x10000/' bfd/elf*ppc.c | |
214 | # LTP sucks | |
215 | perl -pi -e 's/i\[3-7\]86/i[34567]86/g' */conf* | |
216 | sed -i -e 's/%''{release}/%{release}/g' bfd/Makefile{.am,.in} | |
217 | sed -i -e '/^libopcodes_la_\(DEPENDENCIES\|LIBADD\)/s,$, ../bfd/libbfd.la,' opcodes/Makefile.{am,in} | |
218 | # Build libbfd.so and libopcodes.so with -Bsymbolic-functions if possible. | |
219 | if gcc %{optflags} -v --help 2>&1 | grep -q -- -Bsymbolic-functions; then | |
220 | sed -i -e 's/^libbfd_la_LDFLAGS = /&-Wl,-Bsymbolic-functions /' bfd/Makefile.{am,in} | |
221 | sed -i -e 's/^libopcodes_la_LDFLAGS = /&-Wl,-Bsymbolic-functions /' opcodes/Makefile.{am,in} | |
222 | fi | |
223 | ||
224 | # $PACKAGE is used for the gettext catalog name. | |
225 | sed -i -e 's/^ PACKAGE=/ PACKAGE=%{cross}-/' */configure | |
226 | # Undo the name change to run the testsuite. | |
227 | for tool in binutils gas ld; do | |
228 | sed -i -e "2aDEJATOOL = $tool" $tool/Makefile.am | |
229 | sed -i -e "s/^DEJATOOL = .*/DEJATOOL = $tool/" $tool/Makefile.in | |
230 | done | |
231 | touch */configure | |
232 | ||
10ca4dcc | 233 | prep_target() { |
59e455fe ER |
234 | target=$1 |
235 | cond=$2 | |
236 | ||
237 | if [ $cond != 0 ]; then | |
238 | echo $1 >&5 | |
239 | fi | |
240 | } | |
241 | ||
242 | cd .. | |
243 | ( | |
244 | prep_target alpha-linux-gnu %{build_alpha} | |
245 | prep_target arm-linux-gnu %{build_arm} | |
246 | prep_target aarch64-linux-gnu %{build_aarch64} | |
247 | prep_target avr32-linux-gnu %{build_avr32} | |
248 | prep_target bfin-linux-gnu %{build_blackfin} | |
249 | prep_target c6x-linux-gnu %{build_c6x} | |
250 | prep_target cris-linux-gnu %{build_cris} | |
251 | prep_target frv-linux-gnu %{build_frv} | |
252 | prep_target h8300-linux-gnu %{build_h8300} | |
253 | prep_target hexagon-linux-gnu %{build_hexagon} | |
254 | prep_target hppa-linux-gnu %{build_hppa} | |
255 | prep_target hppa64-linux-gnu %{build_hppa64} | |
256 | prep_target i386-linux-gnu %{build_i386} | |
257 | prep_target ia64-linux-gnu %{build_ia64} | |
258 | prep_target m32r-linux-gnu %{build_m32r} | |
259 | prep_target m68k-linux-gnu %{build_m68k} | |
260 | prep_target metag-linux-gnu %{build_metag} | |
261 | prep_target microblaze-linux-gnu %{build_microblaze} | |
262 | prep_target mips-linux-gnu %{build_mips} | |
263 | prep_target mips64-linux-gnu %{build_mips64} | |
264 | prep_target mn10300-linux-gnu %{build_mn10300} | |
265 | prep_target nios2-linux-gnu %{build_nios2} | |
266 | prep_target openrisc-linux-gnu %{build_openrisc} | |
267 | prep_target powerpc-linux-gnu %{build_powerpc} | |
268 | prep_target powerpc64-linux-gnu %{build_powerpc64} | |
269 | prep_target s390-linux-gnu %{build_s390} | |
270 | prep_target s390x-linux-gnu %{build_s390x} | |
271 | prep_target score-linux-gnu %{build_score} | |
272 | prep_target sh-linux-gnu %{build_sh} | |
273 | prep_target sh4-linux-gnu %{build_sh4} | |
274 | prep_target sh64-linux-gnu %{build_sh64} | |
275 | prep_target sparc-linux-gnu %{build_sparc} | |
276 | prep_target sparc64-linux-gnu %{build_sparc64} | |
277 | prep_target tile-linux-gnu %{build_tile} | |
278 | prep_target unicore32-linux-gnu %{build_unicore32} | |
279 | prep_target x86_64-linux-gnu %{build_x86_64} | |
280 | prep_target xtensa-linux-gnu %{build_xtensa} | |
281 | ) 5>target.list | |
282 | ||
283 | n=0 | |
284 | for target in $(cat target.list); do | |
285 | n=1 | |
286 | break | |
287 | done | |
288 | if [ $n = 0 ]; then | |
289 | echo >&2 "No targets selected" | |
290 | exit 8 | |
291 | fi | |
292 | ||
293 | %build | |
294 | ||
295 | config_target() { | |
296 | arch=$1 | |
297 | prefix=$arch- | |
298 | build_dir=${1%%%%-*} | |
299 | ||
300 | case $arch in | |
301 | arm-*) target=arm-linux-gnueabi;; | |
302 | aarch64-*) target=aarch64-linux-gnu;; | |
303 | avr32-*) target=avr-linux;; | |
304 | bfin-*) target=bfin-uclinux;; | |
305 | c6x-*) target=c6x-uclinux;; | |
306 | h8300-*) target=h8300-elf;; | |
307 | m32r-*) target=m32r-elf;; | |
308 | mn10300-*) target=am33_2.0-linux;; | |
309 | m68knommu-*) target=m68k-linux;; | |
310 | openrisc-*) target=or1k-linux-gnu;; | |
311 | parisc-*) target=hppa-linux;; | |
312 | score-*) target=score-elf;; | |
313 | sh64-*) target=sh64-linux;; | |
314 | tile-*) target=tilegx-linux;; | |
315 | v850-*) target=v850e-linux;; | |
316 | x86-*) target=x86_64-linux;; | |
317 | *) target=$arch;; | |
318 | esac | |
319 | ||
320 | echo $arch: target is $target | |
321 | export CFLAGS="$RPM_OPT_FLAGS" | |
322 | CARGS= | |
323 | ||
324 | case $target in i?86*|sparc*|ppc*|s390*|sh*|arm*) | |
325 | CARGS="$CARGS --enable-64-bit-bfd" | |
326 | ;; | |
327 | esac | |
328 | ||
329 | case $target in ia64*) | |
330 | CARGS="$CARGS --enable-targets=i386-linux" | |
331 | ;; | |
332 | esac | |
333 | ||
334 | case $target in ppc*|ppc64*) | |
335 | CARGS="$CARGS --enable-targets=spu" | |
336 | ;; | |
337 | esac | |
338 | ||
339 | case $target in sh-*) | |
340 | CARGS="$CARGS --enable-targets=sh4-linux" | |
341 | ;; | |
342 | esac | |
343 | ||
344 | case $target in sh64*) | |
345 | CARGS="$CARGS --enable-targets=sh64-linux,sh-elf,sh-linux,sh4-linux" | |
346 | ;; | |
347 | esac | |
348 | ||
349 | mkdir $build_dir | |
350 | cd $build_dir | |
351 | ||
352 | # We could optimize the cross builds size by --enable-shared but the produced | |
353 | # binaries may be less convenient in the embedded environment. | |
354 | LDFLAGS="-Wl,-z,relro " \ | |
355 | ../%{srcdir}/configure \ | |
356 | --disable-dependency-tracking \ | |
357 | --disable-silent-rules \ | |
358 | --enable-checking \ | |
359 | --prefix=%{_prefix} \ | |
360 | --exec-prefix=%{auxbin_prefix} \ | |
361 | --bindir=%{_bindir} \ | |
362 | --sbindir=%{_sbindir} \ | |
363 | --sysconfdir=%{_sysconfdir} \ | |
364 | --datadir=%{_datadir} \ | |
365 | --includedir=%{_includedir} \ | |
366 | --libdir=%{_libdir} \ | |
367 | --libexecdir=%{_libexecdir} \ | |
368 | --localstatedir=%{_localstatedir} \ | |
369 | --sharedstatedir=%{_sharedstatedir} \ | |
370 | --mandir=%{_mandir} \ | |
371 | --infodir=%{_infodir} \ | |
372 | --build=%{_target_platform} \ | |
373 | --host=%{_target_platform} \ | |
374 | --target=$target \ | |
375 | --program-prefix=$prefix \ | |
376 | --disable-shared \ | |
377 | --disable-install_libbfd \ | |
378 | --with-sysroot=%{_prefix}/$arch/sys-root \ | |
379 | $CARGS \ | |
380 | --with-bugurl="http://bugs.pld-linux.org" | |
381 | cd .. | |
382 | } | |
383 | ||
384 | for target in $(cat target.list); do | |
385 | config_target $target | |
386 | done | |
387 | ||
388 | build_target() { | |
389 | build_dir=${1%%%%-*} | |
390 | make -C $build_dir %{_smp_mflags} tooldir=%{_prefix} all | |
391 | } | |
392 | ||
393 | for target in $(cat target.list); do | |
394 | build_target $target | |
395 | done | |
396 | ||
397 | # for documentation purposes only | |
398 | mkdir %{cross}-binutils | |
399 | cd %{cross}-binutils | |
400 | ../%{srcdir}/configure \ | |
401 | --disable-dependency-tracking \ | |
402 | --disable-silent-rules \ | |
403 | --prefix=%{_prefix} \ | |
404 | --exec-prefix=%{auxbin_prefix} \ | |
405 | --bindir=%{_bindir} \ | |
406 | --sbindir=%{_sbindir} \ | |
407 | --sysconfdir=%{_sysconfdir} \ | |
408 | --datadir=%{_datadir} \ | |
409 | --includedir=%{_includedir} \ | |
410 | --libdir=%{_libdir} \ | |
411 | --libexecdir=%{_libexecdir} \ | |
412 | --localstatedir=%{_localstatedir} \ | |
413 | --sharedstatedir=%{_sharedstatedir} \ | |
414 | --mandir=%{_mandir} \ | |
415 | --infodir=%{_infodir} \ | |
416 | --program-prefix=%{cross}- \ | |
417 | --disable-shared \ | |
418 | --with-bugurl="http://bugs.pld-linux.org" | |
419 | ||
420 | %{__make} tooldir=%{_prefix} all | |
421 | cd .. | |
422 | ||
423 | %install | |
424 | rm -rf $RPM_BUILD_ROOT | |
425 | ||
426 | install_bin() { | |
427 | cpu=${1%%%%-*} | |
428 | build_dir=$cpu | |
429 | %{__make} install -C $build_dir DESTDIR=$RPM_BUILD_ROOT | |
430 | ||
431 | # We want links for ppc and ppc64 also if we make powerpc or powerpc64 | |
432 | case $cpu in | |
433 | powerpc*) | |
434 | cd $RPM_BUILD_ROOT%{_bindir} | |
435 | for i in $cpu-*; do | |
436 | ln -s $i ppc${i#powerpc} | |
437 | done | |
438 | cd - | |
439 | cd $RPM_BUILD_ROOT%{_prefix} | |
440 | for i in $cpu-*; do | |
441 | ln -s $i ppc${i#powerpc} | |
442 | done | |
443 | cd - | |
444 | cd $RPM_BUILD_ROOT%{_mandir}/man1 | |
445 | for i in $cpu-*; do | |
446 | ln -s $i ppc${i#powerpc} | |
447 | done | |
448 | cd - | |
449 | ;; | |
450 | esac | |
451 | } | |
452 | ||
453 | for target in $(cat target.list); do | |
454 | echo "=== INSTALL target $target ===" | |
455 | install -d $RPM_BUILD_ROOT%{_prefix}/$target/sys-root | |
456 | install_bin $target | |
457 | ||
458 | if [ $target = sh64-linux-gnu ]; then | |
459 | ln -s %{auxbin_prefix}/sh64-elf $RPM_BUILD_ROOT%{auxbin_prefix}/sh64-linux | |
460 | fi | |
461 | done | |
462 | ||
463 | echo "=== INSTALL man targets ===" | |
464 | %{__make} install-man1 -C %{cross}-binutils/binutils/doc DESTDIR=$RPM_BUILD_ROOT | |
465 | %{__make} install-man1 -C %{cross}-binutils/gas/doc DESTDIR=$RPM_BUILD_ROOT | |
466 | %{__make} install-man1 -C %{cross}-binutils/ld DESTDIR=$RPM_BUILD_ROOT | |
467 | %{__make} install-man1 -C %{cross}-binutils/gprof DESTDIR=$RPM_BUILD_ROOT | |
468 | ||
469 | echo "=== INSTALL po targets ===" | |
470 | %{__make} install -C %{cross}-binutils/binutils/po DESTDIR=$RPM_BUILD_ROOT | |
471 | %{__make} install -C %{cross}-binutils/gas/po DESTDIR=$RPM_BUILD_ROOT | |
472 | %{__make} install -C %{cross}-binutils/ld/po DESTDIR=$RPM_BUILD_ROOT | |
473 | %{__make} install -C %{cross}-binutils/gprof/po DESTDIR=$RPM_BUILD_ROOT | |
474 | %{__make} install -C %{cross}-binutils/bfd/po DESTDIR=$RPM_BUILD_ROOT | |
475 | %{__make} install -C %{cross}-binutils/opcodes/po DESTDIR=$RPM_BUILD_ROOT | |
476 | ||
477 | # Add the additional symlink-only targets | |
478 | grep ^powerpc target.list | sed -e s/powerpc/ppc/ > symlink-target.list | |
59e455fe ER |
479 | |
480 | # For cross-binutils we drop the documentation. | |
481 | echo "=== REMOVE documentation ===" | |
482 | rm -rf $RPM_BUILD_ROOT%{_infodir} | |
483 | rm -f $RPM_BUILD_ROOT%{_infodir}/dir | |
484 | ||
485 | echo "=== REMOVE libraries and scripts ===" | |
486 | rm -rf $RPM_BUILD_ROOT%{_libdir}/libiberty.a | |
487 | rm -rf $RPM_BUILD_ROOT%{auxbin_prefix}/*/lib/ldscripts | |
488 | rmdir $RPM_BUILD_ROOT%{auxbin_prefix}/*/lib || : | |
489 | ||
490 | echo "=== BUILD file lists ===" | |
491 | build_file_list() { | |
492 | arch=$1 | |
493 | cpu=${arch%%%%-*} | |
494 | ||
495 | case $cpu in | |
496 | avr32) target_cpu=avr;; | |
497 | bfin) target_cpu=bfin;; | |
498 | h8300) target_cpu=h8300;; | |
499 | mn10300) target_cpu=am33_2.0;; | |
500 | openrisc) target_cpu=or1k;; | |
501 | score) target_cpu=score;; | |
502 | tile) target_cpu=tilegx;; | |
503 | v850) target_cpu=v850e;; | |
504 | *) target_cpu=$cpu;; | |
505 | esac | |
506 | ||
507 | ( | |
268d7a93 ER |
508 | echo "%%defattr(-,root,root,-)" |
509 | echo "%{_bindir}/$arch-[!l]*" | |
510 | echo "%{_bindir}/$arch-ld*" | |
59e455fe | 511 | if [ -L $RPM_BUILD_ROOT%{auxbin_prefix}/$target_cpu-* ]; then |
268d7a93 | 512 | echo "%{auxbin_prefix}/$target_cpu-*" |
59e455fe | 513 | else |
268d7a93 ER |
514 | echo "%{auxbin_prefix}/$target_cpu-*/bin/*" |
515 | echo "%{_prefix}/$arch/sys-root" | |
59e455fe | 516 | fi |
268d7a93 | 517 | echo "%{_mandir}/man1/$arch-*" |
59e455fe ER |
518 | ) > files.$arch |
519 | } | |
520 | ||
10ca4dcc | 521 | for target in $(cat target.list symlink-target.list); do |
59e455fe ER |
522 | build_file_list $target |
523 | done | |
524 | ||
525 | # All the installed manual pages and translation files for each program are the | |
526 | # same, so symlink them to the core package | |
527 | echo "=== CROSSLINK man pages ===" | |
528 | cd $RPM_BUILD_ROOT%{_mandir}/man1 | |
529 | for i in %{cross}-*.1*; do | |
530 | j=${i#%{cross}-} | |
531 | ||
532 | for k in *-$j; do | |
533 | if [ $k != $i ]; then | |
534 | ln -sf $i $k | |
535 | fi | |
536 | done | |
537 | done | |
538 | ||
539 | # Add ld.bfd manual pages | |
540 | find * -name "*ld.1*" -a ! -name "%{cross}-ld.1*" -print | | |
541 | while read x; do | |
542 | y=$(echo $x | sed -e s/ld[.]1/ld.bfd.1/) | |
543 | ln -s $x $y | |
544 | done | |
545 | cd - | |
546 | ||
547 | # Find the language files which only exist in the common package | |
548 | %find_lang %{cross}-binutils | |
549 | %find_lang %{cross}-opcodes | |
550 | %find_lang %{cross}-bfd | |
551 | %find_lang %{cross}-gas | |
552 | %find_lang %{cross}-ld | |
553 | %find_lang %{cross}-gprof | |
554 | cat \ | |
555 | %{cross}-binutils.lang \ | |
556 | %{cross}-opcodes.lang \ | |
557 | %{cross}-bfd.lang \ | |
558 | %{cross}-gas.lang \ | |
559 | %{cross}-ld.lang \ | |
560 | %{cross}-gprof.lang \ | |
561 | > files.cross | |
562 | ||
563 | %clean | |
564 | rm -rf $RPM_BUILD_ROOT | |
565 | ||
566 | %files -n %{cross}-binutils-common -f files.cross | |
567 | %defattr(644,root,root,755) | |
568 | %doc %{srcdir}/README | |
569 | %doc %{srcdir}/COPYING* | |
570 | %{_mandir}/man1/%{cross}-* | |
571 | ||
572 | %define do_files() \ | |
573 | %if %2 \ | |
574 | %files -n %{rpmprefix}binutils-%1 -f files.%1 \ | |
575 | %defattr(644,root,root,755) \ | |
576 | %endif | |
577 | ||
578 | %do_files alpha-linux-gnu %{build_alpha} | |
579 | %do_files arm-linux-gnu %{build_arm} | |
580 | %do_files aarch64-linux-gnu %{build_aarch64} | |
581 | %do_files avr32-linux-gnu %{build_avr32} | |
582 | %do_files bfin-linux-gnu %{build_blackfin} | |
583 | %do_files c6x-linux-gnu %{build_c6x} | |
584 | %do_files cris-linux-gnu %{build_cris} | |
585 | %do_files frv-linux-gnu %{build_frv} | |
586 | %do_files h8300-linux-gnu %{build_h8300} | |
587 | %do_files hexagon-linux-gnu %{build_hexagon} | |
588 | %do_files hppa-linux-gnu %{build_hppa} | |
589 | %do_files hppa64-linux-gnu %{build_hppa64} | |
590 | %do_files i386-linux-gnu %{build_i386} | |
591 | %do_files ia64-linux-gnu %{build_ia64} | |
592 | %do_files m32r-linux-gnu %{build_m32r} | |
593 | %do_files m68k-linux-gnu %{build_m68k} | |
594 | %do_files metag-linux-gnu %{build_metag} | |
595 | %do_files microblaze-linux-gnu %{build_microblaze} | |
596 | %do_files mips-linux-gnu %{build_mips} | |
597 | %do_files mips64-linux-gnu %{build_mips64} | |
598 | %do_files mn10300-linux-gnu %{build_mn10300} | |
599 | %do_files nios2-linux-gnu %{build_nios2} | |
600 | %do_files openrisc-linux-gnu %{build_openrisc} | |
601 | %do_files powerpc-linux-gnu %{build_powerpc} | |
602 | %do_files powerpc64-linux-gnu %{build_powerpc64} | |
603 | %do_files ppc-linux-gnu %{build_powerpc} | |
604 | %do_files ppc64-linux-gnu %{build_powerpc64} | |
605 | %do_files s390-linux-gnu %{build_s390} | |
606 | %do_files s390x-linux-gnu %{build_s390x} | |
607 | %do_files score-linux-gnu %{build_score} | |
608 | %do_files sh-linux-gnu %{build_sh} | |
609 | %do_files sh4-linux-gnu %{build_sh4} | |
610 | %do_files sh64-linux-gnu %{build_sh64} | |
611 | %do_files sparc-linux-gnu %{build_sparc} | |
612 | %do_files sparc64-linux-gnu %{build_sparc64} | |
613 | %do_files tile-linux-gnu %{build_tile} | |
614 | %do_files unicore32-linux-gnu %{build_unicore32} | |
615 | %do_files x86_64-linux-gnu %{build_x86_64} | |
616 | %do_files xtensa-linux-gnu %{build_xtensa} |