source: rtems/contrib/crossrpms/rtems4.8/bfin/rtems-4.8-bfin-rtems4.8-gcc.spec @ 8683760

4.8
Last change on this file since 8683760 was 8683760, checked in by Ralf Corsepius <ralf.corsepius@…>, on 09/03/08 at 09:30:34

Regenerate.

  • Property mode set to 100644
File size: 15.5 KB
Line 
1#
2# Please send bugfixes or comments to
3#       http://www.rtems.org/bugzilla
4#
5
6%define _prefix                 /opt/rtems-4.8
7%define _infodir                %{_prefix}/info
8%define _mandir                 %{_prefix}/man
9
10%ifos cygwin cygwin32 mingw mingw32
11%define _exeext .exe
12%else
13%define _exeext %{nil}
14%endif
15
16%ifos cygwin cygwin32
17%define optflags -O3 -pipe -march=i486 -funroll-loops
18%define _libdir                 %{_exec_prefix}/lib
19%define debug_package           %{nil}
20%endif
21
22%if "%{_build}" != "%{_host}"
23%define _host_rpmprefix rtems-4.8-%{_host}-
24%else
25%define _host_rpmprefix %{nil}
26%endif
27
28
29%define gcc_pkgvers 4.2.4
30%define gcc_version 4.2.4
31%define gcc_rpmvers %{expand:%(echo "4.2.4" | tr - _ )}
32
33%define newlib_version          1.15.0
34%define gccnewlib_version       gcc%{gcc_version}newlib%{newlib_version}
35
36%define mpfr_version    2.3.1
37
38Name:           rtems-4.8-bfin-rtems4.8-gcc
39Summary:        bfin-rtems4.8 gcc
40
41Group:          Development/Tools
42Version:        %{gcc_rpmvers}
43Release:        31%{?dist}
44License:        GPL
45URL:            http://gcc.gnu.org
46BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
47
48%define _use_internal_dependency_generator 0
49
50BuildRequires:  %{_host_rpmprefix}gcc
51
52%if "%{gcc_version}" >= "4.3.0"
53BuildRequires:  gmp-devel >= 4.1
54%if "%{_build}" != "%{_host}"
55BuildRequires:  %{_host_rpmprefix}gmp-devel
56BuildRequires:  %{_host_rpmprefix}mpfr-devel
57%endif
58%if "%{?fedora}" >= "8"
59BuildRequires:  mpfr-devel >= 2.3.0
60%endif
61%if "%{?suse}" > "10.3"
62BuildRequires:  mpfr-devel >= 2.3.0
63%endif
64# These distros ship an insufficient mpfr
65%{?el4:%define  _build_mpfr     1}
66%{?suse10_2:%define     _build_mpfr     1}
67%{?suse10_3:%define     _build_mpfr     1}
68%endif
69
70%if "%{_build}" != "%{_host}"
71BuildRequires:  rtems-4.8-bfin-rtems4.8-gcc
72%endif
73
74%if "%{gcc_version}" >= "4.2.0"
75BuildRequires:  flex bison
76%endif
77
78
79BuildRequires:  texinfo >= 4.2
80BuildRequires:  rtems-4.8-bfin-rtems4.8-binutils
81
82Requires:       rtems-4.8-gcc-common
83Requires:       rtems-4.8-bfin-rtems4.8-binutils
84Requires:       rtems-4.8-bfin-rtems4.8-newlib = %{newlib_version}-%{release}
85
86
87%if "%{gcc_version}" >= "3.4"
88%define gcclib %{_libdir}/gcc
89%define gccexec %{_libexecdir}/gcc
90%else
91%define gcclib %{_libdir}/gcc-lib
92%define gccexec %{_libdir}/gcc-lib
93%endif
94
95%if "%{gcc_version}" == "4.3.0"
96Source0:        ftp://ftp.gnu.org/pub/gnu/gcc/%{gcc_pkgvers}/gcc-core-%{gcc_pkgvers}.tar.bz2
97Patch0:         gcc-core-%{gcc_pkgvers}-rtems4.8-20080417.diff
98%endif
99%if "%{gcc_version}" == "4.2.2"
100Source0:        ftp://gcc.gnu.org/pub/gcc/%{gcc_pkgvers}/gcc-core-%{gcc_pkgvers}.tar.bz2
101Patch0:         gcc-core-4.2.2-rtems4.8-20071127.diff
102%endif
103%if "%{gcc_version}" == "4.2.3"
104Source0:        ftp://gcc.gnu.org/pub/gcc/%{gcc_pkgvers}/gcc-core-%{gcc_pkgvers}.tar.bz2
105Patch0:         gcc-core-4.2.3-rtems4.8-20080508.diff
106%endif
107%if "%{gcc_version}" == "4.2.4"
108Source0:        ftp://gcc.gnu.org/pub/gcc/%{gcc_pkgvers}/gcc-core-%{gcc_pkgvers}.tar.bz2
109Patch0:         gcc-core-4.2.4-rtems4.8-20080526.diff
110%endif
111%{?_without_sources:NoSource:   0}
112
113Source50:       ftp://sources.redhat.com/pub/newlib/newlib-%{newlib_version}.tar.gz
114%if "%{newlib_version}" == "1.15.0"
115Patch50:        newlib-1.15.0-rtems4.8-20080903.diff
116%endif
117%{?_without_sources:NoSource:   50}
118
119%if "%{gcc_version}" >= "4.3.0"
120Source60:    http://www.mpfr.org/mpfr-current/mpfr-%{mpfr_version}.tar.bz2
121%endif
122
123%description
124Cross gcc for bfin-rtems4.8.
125
126%prep
127%setup -c -T -n %{name}-%{version}
128
129%setup -q -T -D -n %{name}-%{version} -a0
130%{?PATCH0:%patch0 -p0}
131
132
133
134
135
136
137%setup -q -T -D -n %{name}-%{version} -a50
138cd newlib-%{newlib_version}
139%{?PATCH50:%patch50 -p1}
140cd ..
141  # Copy the C library into gcc's source tree
142  ln -s ../newlib-%{newlib_version}/newlib gcc-%{gcc_pkgvers}
143
144%if 0%{?_build_mpfr}
145%setup -q -T -D -n %{name}-%{version} -a60
146%{?PATCH60:%patch60 -p1}
147  # Build mpfr one-tree style
148  ln -s ../mpfr-%{mpfr_version} gcc-%{gcc_pkgvers}/mpfr
149%endif
150
151%if "%{gcc_version}" < "4.1.0"
152  sed -e 's/\(version_string.* = \"[^\"]*\)/\1 (RTEMS gcc-%{gcc_version}\/newlib-%{newlib_version}-%release)/' \
153  gcc-%{gcc_pkgvers}/gcc/version.c > gcc-%{gcc_pkgvers}/gcc/version.c~
154%else
155  sed -e 's/^#define VERSUFFIX.*$/#define VERSUFFIX \" (RTEMS gcc-%{gcc_version}\/newlib-%{newlib_version}-%{release})\"/' \
156    gcc-%{gcc_pkgvers}/gcc/version.c > gcc-%{gcc_pkgvers}/gcc/version.c~
157%endif
158  mv gcc-%{gcc_pkgvers}/gcc/version.c~ gcc-%{gcc_pkgvers}/gcc/version.c
159
160
161  # Fix timestamps
162  cd gcc-%{gcc_pkgvers}
163  contrib/gcc_update --touch
164  cd ..
165%build
166  mkdir -p build
167
168  cd build
169
170  languages="c"
171  export PATH="%{_bindir}:${PATH}"
172%if "%{_build}" != "%{_host}"
173  CFLAGS_FOR_BUILD="-g -O2 -Wall" \
174  CC="%{_host}-gcc ${RPM_OPT_FLAGS}" \
175%else
176  CC="%{__cc} ${RPM_OPT_FLAGS}" \
177%endif
178  ../gcc-%{gcc_pkgvers}/configure \
179    --prefix=%{_prefix} \
180    --bindir=%{_bindir} \
181    --exec_prefix=%{_exec_prefix} \
182    --includedir=%{_includedir} \
183    --libdir=%{_libdir} \
184    --libexecdir=%{_libexecdir} \
185    --mandir=%{_mandir} \
186    --infodir=%{_infodir} \
187    --datadir=%{_datadir} \
188    --build=%_build --host=%_host \
189    --target=bfin-rtems4.8 \
190    --disable-libstdcxx-pch \
191    --with-gnu-as --with-gnu-ld --verbose \
192    --with-newlib \
193    --with-system-zlib \
194    --disable-nls --without-included-gettext \
195    --disable-win32-registry \
196    --enable-version-specific-runtime-libs \
197    --enable-threads \
198    --enable-languages="$languages" $optargs
199
200%if "%_host" != "%_build"
201  # Bug in gcc-3.2.1:
202  # Somehow, gcc doesn't get syslimits.h right for Cdn-Xs
203  mkdir -p gcc/include
204  cp ../gcc-%{gcc_pkgvers}/gcc/gsyslimits.h gcc/include/syslimits.h
205%endif
206
207  make %{?_smp_mflags} all
208  make info
209  cd ..
210
211%install
212  export PATH="%{_bindir}:${PATH}"
213  rm -rf $RPM_BUILD_ROOT
214
215  cd build
216
217  make DESTDIR=$RPM_BUILD_ROOT install
218  cd ..
219
220  cd build/bfin-rtems4.8/newlib
221  make DESTDIR=$RPM_BUILD_ROOT install-info
222  cd ../../..
223
224%if "%{gcc_version}" <= "4.1.2"
225# Misplaced header file
226  if test -f $RPM_BUILD_ROOT%{_includedir}/mf-runtime.h; then
227    mv $RPM_BUILD_ROOT%{_includedir}/mf-runtime.h \
228      $RPM_BUILD_ROOT%{gcclib}/bfin-rtems4.8/%{gcc_version}/include/
229  fi
230%endif
231
232  # host library
233  rm -f  ${RPM_BUILD_ROOT}%{_libdir}/libiberty.a
234
235  # We use the version from binutils
236  rm -f $RPM_BUILD_ROOT%{_bindir}/bfin-rtems4.8-c++filt%{_exeext}
237
238
239  # We don't ship info/dir
240  rm -f $RPM_BUILD_ROOT%{_infodir}/dir
241  touch $RPM_BUILD_ROOT%{_infodir}/dir
242
243
244%if "%{gcc_version}" >= "3.4"
245  # Bug in gcc-3.4.0pre
246  rm -f $RPM_BUILD_ROOT%{_bindir}/bfin-rtems4.8-bfin-rtems4.8-gcjh%{_exeext}
247%endif
248
249%if "%{gcc_version}" >= "3.3"
250  # Bug in gcc-3.3.x/gcc-3.4.x: Despite we don't need fixincludes, it installs
251  # the fixinclude-install-tools
252  rm -rf ${RPM_BUILD_ROOT}%{gcclib}/bfin-rtems4.8/%{gcc_version}/install-tools
253  rm -rf ${RPM_BUILD_ROOT}%{gccexec}/bfin-rtems4.8/%{gcc_version}/install-tools
254%endif
255
256  # Collect multilib subdirectories
257  f=`build/gcc/xgcc -Bbuild/gcc/ --print-multi-lib | sed -e 's,;.*$,,'`
258
259  echo "%defattr(-,root,root,-)" > build/files.newlib
260  TGTDIR="%{_exec_prefix}/bfin-rtems4.8/lib"
261  for i in $f; do
262    case $i in
263    \.) echo "%dir ${TGTDIR}" >> build/files.newlib
264      ;;
265    *)  echo "%dir ${TGTDIR}/$i" >> build/files.newlib
266      ;;
267    esac
268  done
269
270  rm -f dirs ;
271  echo "%defattr(-,root,root,-)" >> dirs
272  echo "%dir %{_prefix}" >> dirs
273  echo "%dir %{_libdir}" >> dirs
274%if "%{gcc_version}" >= "3.4"
275  echo "%dir %{_libexecdir}" >> dirs
276%endif
277  echo "%dir %{gcclib}" >> dirs
278  echo "%dir %{gcclib}/bfin-rtems4.8" >> dirs
279
280  TGTDIR="%{gcclib}/bfin-rtems4.8/%{gcc_version}"
281  for i in $f; do
282    case $i in
283    \.) echo "%dir ${TGTDIR}" >> dirs
284      ;;
285    *)  echo "%dir ${TGTDIR}/$i" >> dirs
286      ;;
287    esac
288  done
289
290  # Collect files to go into different packages
291  cp dirs build/files.gcc
292  cp dirs build/files.g77
293  cp dirs build/files.gfortran
294  cp dirs build/files.objc
295  cp dirs build/files.gcj
296  cp dirs build/files.g++
297
298  TGTDIR="%{gcclib}/bfin-rtems4.8/%{gcc_version}"
299  f=`find ${RPM_BUILD_ROOT}${TGTDIR} ! -type d -print | sed -e "s,^$RPM_BUILD_ROOT,,g"`;
300  for i in $f; do
301    case $i in
302    *lib*.la) rm ${RPM_BUILD_ROOT}/$i ;; # ignore: gcc produces bogus libtool libs
303    *f771) ;;
304    *f951) ;;
305    *cc1) ;;
306    *cc1obj) ;;
307    *cc1plus) ;; # ignore: explicitly put into rpm elsewhere
308    *collect2) ;;
309    *libobjc*) echo "$i" >> build/files.objc ;;
310    *include/objc*) ;;
311    *include/g++*);;
312    *include/c++*);;
313    *adainclude*);;
314    *adalib*);;
315    *gnat1);;
316    *jc1) ;;
317    *jvgenmain) ;;
318    */libgfortran*.*) echo "$i" >> build/files.gfortran ;;
319    */libstdc++.*) echo "$i" >> build/files.g++ ;;
320    */libsupc++.*) echo "$i" >> build/files.g++ ;;
321    *) echo "$i" >> build/files.gcc ;;
322    esac
323  done
324
325  TGTDIR="%{_exec_prefix}/bfin-rtems4.8/lib"
326  f=`find ${RPM_BUILD_ROOT}${TGTDIR} ! -type d -print | sed -e "s,^$RPM_BUILD_ROOT,,g"`;
327  for i in $f; do
328    case $i in
329    *lib*.la) rm ${RPM_BUILD_ROOT}/$i;; # ignore - gcc produces bogus libtool libs
330    *libiberty.a) rm ${RPM_BUILD_ROOT}/$i ;; # ignore - GPL'ed
331# all other files belong to newlib
332    *) echo "$i" >> build/files.newlib ;;
333    esac
334  done
335# Extract %%__os_install_post into os_install_post~
336cat << \EOF > os_install_post~
337%__os_install_post
338EOF
339
340# Generate customized brp-*scripts
341cat os_install_post~ | while read a x y; do
342case $a in
343# Prevent brp-strip* from trying to handle foreign binaries
344*/brp-strip*)
345  b=$(basename $a)
346  sed -e 's,find $RPM_BUILD_ROOT,find $RPM_BUILD_ROOT%_bindir $RPM_BUILD_ROOT%_libexecdir,' $a > $b
347  chmod a+x $b
348  ;;
349# Fix up brp-compress to handle %%_prefix != /usr
350*/brp-compress*)
351  b=$(basename $a)
352  sed -e 's,\./usr/,.%{_prefix}/,g' < $a > $b
353  chmod a+x $b
354  ;;
355esac
356done
357
358sed -e 's,^[ ]*/usr/lib/rpm.*/brp-strip,./brp-strip,' \
359  -e 's,^[ ]*/usr/lib/rpm.*/brp-compress,./brp-compress,' \
360< os_install_post~ > os_install_post
361%define __os_install_post . ./os_install_post
362
363
364cat << EOF > %{_builddir}/%{name}-%{gcc_rpmvers}/find-provides
365#!/bin/sh
366grep -E -v '^${RPM_BUILD_ROOT}%{_exec_prefix}/bfin-rtems4.8/(lib|include|sys-root)' \
367  | grep -v '^${RPM_BUILD_ROOT}%{gcclib}/bfin-rtems4.8/' | %__find_provides
368EOF
369chmod +x %{_builddir}/%{name}-%{gcc_rpmvers}/find-provides
370%define __find_provides %{_builddir}/%{name}-%{gcc_rpmvers}/find-provides
371
372cat << EOF > %{_builddir}/%{name}-%{gcc_rpmvers}/find-requires
373#!/bin/sh
374grep -E -v '^${RPM_BUILD_ROOT}%{_exec_prefix}/bfin-rtems4.8/(lib|include|sys-root)' \
375  | grep -v '^${RPM_BUILD_ROOT}%{gcclib}/bfin-rtems4.8/' | %__find_requires
376EOF
377chmod +x %{_builddir}/%{name}-%{gcc_rpmvers}/find-requires
378%define __find_requires %{_builddir}/%{name}-%{gcc_rpmvers}/find-requires
379
380%clean
381  rm -rf $RPM_BUILD_ROOT
382
383# ==============================================================
384# rtems-4.8-bfin-rtems4.8-gcc
385# ==============================================================
386# %package -n rtems-4.8-bfin-rtems4.8-gcc
387# Summary:        GNU cc compiler for bfin-rtems4.8
388# Group:          Development/Tools
389# Version:        %{gcc_rpmvers}
390# Requires:       rtems-4.8-bfin-rtems4.8-binutils
391# Requires:       rtems-4.8-bfin-rtems4.8-newlib = %{newlib_version}-%{release}
392# License:      GPL
393
394# %if %build_infos
395# Requires:      rtems-4.8-gcc-common
396# %endif
397
398%description -n rtems-4.8-bfin-rtems4.8-gcc
399GNU cc compiler for bfin-rtems4.8.
400
401%files -n rtems-4.8-bfin-rtems4.8-gcc -f build/files.gcc
402%defattr(-,root,root)
403%dir %{_mandir}
404%dir %{_mandir}/man1
405%{_mandir}/man1/bfin-rtems4.8-gcc.1*
406%if "%{gcc_version}" >= "3.4"
407%{_mandir}/man1/bfin-rtems4.8-cpp.1*
408%{_mandir}/man1/bfin-rtems4.8-gcov.1*
409%endif
410
411%dir %{_bindir}
412%{_bindir}/bfin-rtems4.8-cpp%{_exeext}
413%{_bindir}/bfin-rtems4.8-gcc%{_exeext}
414%if "%{gcc_version}" >= "3.3"
415%{_bindir}/bfin-rtems4.8-gcc-%{gcc_version}%{_exeext}
416%endif
417%{_bindir}/bfin-rtems4.8-gcov%{_exeext}
418%{_bindir}/bfin-rtems4.8-gccbug
419
420%dir %{gcclib}/bfin-rtems4.8/%{gcc_version}/include
421%if "%{gcc_version}" > "4.0.3"
422%if "bfin-rtems4.8" != "bfin-rtems4.8"
423%if "bfin-rtems4.8" != "avr-rtems4.8"
424%dir %{gcclib}/bfin-rtems4.8/%{gcc_version}/include/ssp
425%endif
426%endif
427%endif
428
429%dir %{gccexec}
430%dir %{gccexec}/bfin-rtems4.8
431%dir %{gccexec}/bfin-rtems4.8/%{gcc_version}
432%{gccexec}/bfin-rtems4.8/%{gcc_version}/cc1%{_exeext}
433%{gccexec}/bfin-rtems4.8/%{gcc_version}/collect2%{_exeext}
434
435# ==============================================================
436# rtems-4.8-gcc-common
437# ==============================================================
438%package -n rtems-4.8-gcc-common
439Summary:        Base package for rtems gcc and newlib C Library
440Group:          Development/Tools
441Version:        %{gcc_rpmvers}
442License:        GPL
443
444Requires(post):         /sbin/install-info
445Requires(preun):        /sbin/install-info
446
447%description -n rtems-4.8-gcc-common
448GCC files that are shared by all targets.
449
450%files -n rtems-4.8-gcc-common
451%defattr(-,root,root)
452%dir %{_infodir}
453%ghost %{_infodir}/dir
454%{_infodir}/cpp.info*
455%{_infodir}/cppinternals.info*
456%{_infodir}/gcc.info*
457%{_infodir}/gccint.info*
458%if "%{gcc_version}" >= "3.4"
459%{_infodir}/gccinstall.info*
460%endif
461
462%dir %{_mandir}
463%if "%{gcc_version}" < "3.4"
464%dir %{_mandir}/man1
465%{_mandir}/man1/cpp.1*
466%{_mandir}/man1/gcov.1*
467%endif
468%dir %{_mandir}/man7
469%{_mandir}/man7/fsf-funding.7*
470%{_mandir}/man7/gfdl.7*
471%{_mandir}/man7/gpl.7*
472
473%post -n rtems-4.8-gcc-common
474  /sbin/install-info --info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
475  /sbin/install-info --info-dir=%{_infodir} %{_infodir}/cppinternals.info.gz || :
476  /sbin/install-info --info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
477  /sbin/install-info --info-dir=%{_infodir} %{_infodir}/gccint.info.gz || :
478%if "%{gcc_version}" >= "3.4"
479  /sbin/install-info --info-dir=%{_infodir} %{_infodir}/gccinstall.info.gz || :
480%endif
481
482%preun -n rtems-4.8-gcc-common
483if [ $1 -eq 0 ]; then
484  /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
485  /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/cppinternals.info.gz || :
486  /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
487  /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/gccint.info.gz || :
488%if "%{gcc_version}" >= "3.4"
489  /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/gccinstall.info.gz || :
490%endif
491fi
492
493
494
495
496# ==============================================================
497# rtems-4.8-bfin-rtems4.8-newlib
498# ==============================================================
499%package -n rtems-4.8-bfin-rtems4.8-newlib
500Summary:        C Library (newlib) for bfin-rtems4.8
501Group:          Development/Tools
502License:        Distributable
503Version:        %{newlib_version}
504
505Provides:       rtems-4.8-bfin-rtems4.8-libc = %{newlib_version}-%{release}
506Obsoletes:      rtems-4.8-bfin-rtems4.8-libc < %{newlib_version}-%{release}
507
508Requires:       rtems-4.8-newlib-common
509
510%description -n rtems-4.8-bfin-rtems4.8-newlib
511Newlib C Library for bfin-rtems4.8.
512
513%files -n rtems-4.8-bfin-rtems4.8-newlib -f build/files.newlib
514%defattr(-,root,root)
515%dir %{_prefix}
516%dir %{_exec_prefix}/bfin-rtems4.8
517%{_exec_prefix}/bfin-rtems4.8/include
518
519# ==============================================================
520# rtems-4.8-newlib-common
521# ==============================================================
522%package -n rtems-4.8-newlib-common
523Summary:        Base package for RTEMS newlib C Library
524Group:          Development/Tools
525Version:        %{newlib_version}
526License:        Distributable
527
528Requires(post):         /sbin/install-info
529Requires(preun):        /sbin/install-info
530
531%description -n rtems-4.8-newlib-common
532newlib files that are shared by all targets.
533
534%files -n rtems-4.8-newlib-common
535%defattr(-,root,root)
536%dir %{_infodir}
537%ghost %{_infodir}/dir
538%{_infodir}/libc.info*
539%{_infodir}/libm.info*
540
541%post -n rtems-4.8-newlib-common
542  /sbin/install-info --info-dir=%{_infodir} %{_infodir}/libc.info.gz || :
543  /sbin/install-info --info-dir=%{_infodir} %{_infodir}/libm.info.gz || :
544
545%preun -n rtems-4.8-newlib-common
546if [ $1 -eq 0 ]; then
547  /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/libc.info.gz || :
548  /sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/libm.info.gz || :
549fi
550
Note: See TracBrowser for help on using the repository browser.