source: rtems/contrib/crossrpms/rtems4.9/bfin/rtems-4.9-bfin-rtems4.9-gcc.spec @ ab56160

4.104.114.95
Last change on this file since ab56160 was ab56160, checked in by Ralf Corsepius <ralf.corsepius@…>, on 12/20/07 at 16:13:08

Regenerate.

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