source: rtems/contrib/crossrpms/cygwin/i686/i686-pc-cygwin-gcc.spec @ ace475a

4.104.115
Last change on this file since ace475a was 6cc3dfb, checked in by Ralf Corsepius <ralf.corsepius@…>, on 11/30/09 at 08:50:56

Regenerate.

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