source: rtems/contrib/crossrpms/rtems4.10/bfin/rtems-4.10-bfin-rtems4.10-gcc.spec @ 5c7a69ba

4.104.114.95
Last change on this file since 5c7a69ba was 3f6e3fa, checked in by Ralf Corsepius <ralf.corsepius@…>, on 07/03/08 at 15:30:57

New.

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