#
# Conditional build:
-# _without_ada - build without ADA support
-# _without_java - build without Java support
+# _without_ada - build without ADA support
+# _without_java - build without Java support
+# _without_objc - build without objc support
#
%define DASHED_SNAP %{nil}
%define SNAP %(echo %{DASHED_SNAP} | sed -e "s#-##g")
-%define GCC_VERSION 3.2.1
+%define GCC_VERSION 3.2.2
%define KSI_VERSION pre55
+%define EPOCH 5
Summary: GNU Compiler Collection
Summary(pl): Kolekcja kompilatorów GNU
Name: gcc
Version: %{GCC_VERSION}
-Release: 0.pre.1
+Release: 0.5
+Epoch: %{EPOCH}
License: GPL
Group: Development/Languages
-Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{GCC_VERSION}/%{name}-3.2.tar.bz2
+Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{GCC_VERSION}/%{name}-%{GCC_VERSION}.tar.bz2
Source1: ftp://ftp.pld.org.pl/people/malekith/ksi/ksi-%{KSI_VERSION}.tar.gz
Source2: %{name}-non-english-man-pages.tar.bz2
Patch0: %{name}-slibdir.patch
Patch2: %{name}-ada-no-addr2line.patch
Patch3: %{name}-ada-no-prefix.o.patch
Patch4: %{name}-nolocalefiles.patch
-Patch5: %{name}-march-i686-fix.patch
+Patch5: %{name}-gcc-page.c.patch
Patch6: %{name}-info.patch
+Patch7: %{name}-ada-link-new-libgnat.patch
# -- stolen patches from RH --
Patch10: gcc32-ada-link.patch
Patch11: gcc32-attr-visibility.patch
Patch20: gcc32-c++-tsubst-asm.patch
Patch21: gcc32-cfg-eh.patch
Patch22: gcc32-debug-pr7241.patch
-Patch23: gcc32-doc-gcov.patch
+
Patch24: gcc32-duplicate-decl.patch
-Patch25: gcc32-dwarf2-pr6381.patch
+Patch25: gcc32-dwarf2-pr6381.patch
Patch26: gcc32-dwarf2-pr6436-test.patch
-Patch27: gcc32-fde-merge-compat.patch
-Patch28: gcc32-fold-const-associate.patch
+Patch27: gcc32-fde-merge-compat.patch
+
Patch29: gcc32-hard-reg-sharing.patch
-Patch30: gcc32-hard-reg-sharing2.patch
+Patch30: gcc32-hard-reg-sharing2.patch
Patch31: gcc32-i386-default-momit-leaf-frame-pointer.patch
-Patch32: gcc32-i386-memtest-test.patch
+Patch32: gcc32-i386-memtest-test.patch
Patch33: gcc32-i386-no-default-momit-leaf-frame-pointer.patch
Patch34: gcc32-i386-pic-label-thunk.patch
Patch35: gcc32-i386-profile-olfp.patch
-Patch36: gcc32-inline-label.patch
+Patch36: gcc32-inline-label.patch
Patch37: gcc32-java-no-rpath.patch
-Patch38: gcc32-pr6842.patch
+Patch38: gcc32-pr6842.patch
Patch39: gcc32-sparc-sll1.patch
-Patch40: gcc32-test-rh65771.patch
-Patch41: gcc32-test-rotate.patch
-Patch42: gcc32-tls-dwarf2.patch
-Patch43: gcc32-tls.patch
-Patch44: gcc32-tls2.patch
+Patch40: gcc32-test-rh65771.patch
+Patch41: gcc32-test-rotate.patch
+Patch42: gcc32-tls-dwarf2.patch
+Patch43: gcc32-tls.patch
+Patch44: gcc32-tls2.patch
Patch45: gcc32-tls3.patch
-Patch46: gcc32-tls4.patch
-Patch47: gcc32-tls5.patch
-Patch100: gcc-pre-3.2.1.patch.gz
+Patch46: gcc32-tls4.patch
+Patch47: gcc32-tls5.patch
BuildRequires: autoconf
BuildRequires: bison
BuildRequires: fileutils >= 4.0.41
BuildRequires: perl-devel
BuildRequires: texinfo >= 4.1
BuildRequires: zlib-devel
+BuildRequires: gettext-devel
Requires: binutils >= 2.12.90.0.4
Requires: cpp = %{GCC_VERSION}
Requires: libgcc = %{GCC_VERSION}
Summary(pl): Biblioteki Obiektowego C
Group: Libraries
Version: %{GCC_VERSION}
-Epoch: 3
%description -n libobjc
Objective C Libraries.
Summary(pl): Statyczne Biblioteki Obiektowego C
Group: Development/Libraries
Version: %{GCC_VERSION}
-Epoch: 4
Requires: libobjc = %{GCC_VERSION}
%description -n libobjc-static
%package g77
Summary: Fortran 77 support for gcc
Summary(pl): Obs³uga Fortranu 77 dla gcc
-Group: Development/Languages
+Group: Development/Languages/Fortran
Version: %{GCC_VERSION}
Obsoletes: egcs-g77
Requires: libg2c = %{GCC_VERSION}
Summary(pl): Statyczne Biblioteki Fortranu 77
Group: Development/Libraries
Version: %{GCC_VERSION}
-Epoch: 2
Requires: libg2c = %{GCC_VERSION}
%description -n libg2c-static
%package java
Summary: Java support for gcc
Summary(pl): Obs³uga Javy dla gcc
-Group: Development/Languages
+Group: Development/Languages/Java
Version: %{GCC_VERSION}
Requires: %{name} = %{version}
Requires: libgcj >= 3.0.0
+Requires: libgcj-devel >= 3.0.0
+Requires: java-shared
Provides: gcj = %{epoch}:%{GCC_VERSION}-%{release}
-Provides: jar = %{epoch}:%{GCC_VERSION}-%{release}
%description java
This package adds experimental support for compiling Java(tm) programs
do natywnego kodu. Dodatkowo wymagany jest pakiet libgcj, aby mo¿na
by³o przeprowadziæ kompilacjê.
+%package java-tools
+Summary: Shared java tools
+Summary(pl): Wspó³dzielone narzêdzia javy
+Group: Development/Languages/Java
+Version: %{GCC_VERSION}
+Provides: jar = %{epoch}:%{GCC_VERSION}-%{release}
+Provides: java-shared
+Obsoletes: fastjar
+Obsoletes: java-shared
+Obsoletes: jar
+
+%description java-tools
+This package contains tools that are common for every Java(tm) implementation,
+such as rmic or jar.
+
+%description java-tools -l pl
+Pakiet ten zawiera narzêdzia wspólne dla ka¿dej implementacji Javy(tm), takie
+jak rmic czy jar.
+
%package -n libgcj
Summary: Java Class Libraries
Summary(pl): Biblioteki Klas Javy
Group: Libraries
Version: %{GCC_VERSION}
-Epoch: 2
Requires: zlib
%description -n libgcj
Summary(pl): Pliki nag³ówkowe dla Bibliotek Klas Javy
Group: Development/Libraries
Version: %{GCC_VERSION}
-Epoch: 2
Requires: libgcj = %{GCC_VERSION}
Requires: %{name}-java
Summary(pl): Statyczne Biblioteki Klas Javy
Group: Development/Libraries
Version: %{GCC_VERSION}
-Epoch: 2
Requires: libstdc++-devel = %{GCC_VERSION}
Requires: libgcj-devel = %{GCC_VERSION}
%package -n libstdc++
Summary: GNU c++ library
-Summary(pl): Biblioteki GNU C++
+Summary(pl): Biblioteki GNU C++
Group: Libraries
Version: %{GCC_VERSION}
-Epoch: 1
Obsoletes: libg++
%description -n libstdc++
%package -n libstdc++-devel
Summary: Header files and documentatino for C++ development
Summary(de): Header-Dateien zur Entwicklung mit C++
-Summary(fr): Fichiers d'en-tête et biblitothèques pour développer en C++.
+Summary(fr): Fichiers d'en-tête et biblitothèques pour développer en C++
Summary(pl): Pliki nag³ówkowe i dokumentacja do biblioteki standardowej C++
Summary(tr): C++ ile program geliþtirmek için gerekli dosyalar
Group: Development/Libraries
Version: %{GCC_VERSION}
-Epoch: 1
Requires: libstdc++ = %{GCC_VERSION}
Requires: %{name}-c++
Obsoletes: libg++-devel
Summary(pl): Statyczna biblioteka standardowa C++
Group: Development/Libraries
Version: %{GCC_VERSION}
-Epoch: 1
Requires: libstdc++-devel = %{GCC_VERSION}
%description -n libstdc++-static
odpowiada fragment pliku wynikowego.
%prep
-%setup -q -a1 -n %{name}-3.2
+%setup -q -a1 -n %{name}-%{GCC_VERSION}
mv ksi-%{KSI_VERSION} gcc/ksi
-%patch100 -p1
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
-%ifarch %{ix86}
-%patch5 -p0
-%endif
-
-%patch10
-%patch11
-%patch12
-%patch13
-%patch14
-%patch15
-%patch16
-%patch17
-%patch18
-%patch19
-%patch20
-%patch21
-%patch22
-%patch23
-%patch24
-%patch25
-%patch26
-%patch27
-%patch28
-%patch29
-%patch30
-%patch31
-%patch32
-%patch33
-%patch34
-%patch35
-%patch36
-%patch37
-%patch38
-%patch39
-%patch40
-%patch41
-%patch42
+%patch5 -p1
+%patch7 -p1
+
+%patch10 -p1
+%patch11
+%patch12
+%patch13
+%patch14
+%patch15
+#%patch16
+%patch17
+%patch18
+%patch19
+%patch20
+%patch21
+%patch22
+
+%patch24
+%patch25
+%patch26
+%patch27
+%patch29
+%patch30
+%patch31
+%patch32
+%patch33
+%patch34
+%patch35
+%patch36
+%patch37
+%patch38
+%patch39
+%patch40
+%patch41
+%patch42
%patch43
-%patch44
-%patch45
+%patch44
+%patch45
%patch46
%patch47
%patch6 -p1
+perl -p -i -e 's/";/ (PLD Linux)";/' gcc/version.c
+
%build
# cd gcc && autoconf; cd ..
# autoconf is not needed!
--enable-shared \
--enable-threads=posix \
--enable-__cxa_atexit \
- --enable-languages="c,c++,f77,gcov,objc,ksi%{!?_without_ada:,ada}%{!?_without_java:,java}" \
+ --enable-languages="c,c++,f77,gcov%{?!_without_objc:,objc},ksi%{!?_without_ada:,ada}%{!?_without_java:,java}" \
--enable-c99 \
--enable-long-long \
--enable-multilib \
ln -sf g77 $RPM_BUILD_ROOT%{_bindir}/f77
echo .so g77.1 > $RPM_BUILD_ROOT%{_mandir}/man1/f77.1
-(cd $RPM_BUILD_ROOT%{_libdir} ; LIBSTDC=$(ls libstdc++.so.*.*.*) ; \
- cd $RPM_BUILD_ROOT%{_libdir}/gcc-lib/%{_target_cpu}*/*/ ; \
- ln -sf ../../../${LIBSTDC} libstdc++.so ; \
- ln -sf ../../../libstdc++.la libstdc++.la)
-
-mv $RPM_BUILD_ROOT%{_libdir}/libstdc++.a \
- $RPM_BUILD_ROOT%{_libdir}/gcc-lib/%{_target_cpu}*/*/
-
-LIBSTDC=$(ls -d $RPM_BUILD_ROOT%{_libdir}/gcc-lib/%{_target_cpu}*/* | sed -e "s#$RPM_BUILD_ROOT##g")
-mv $RPM_BUILD_ROOT%{_libdir}/libstdc++.la $RPM_BUILD_ROOT%{_libdir}/libstdc++.la.old
-sed -e "s#^libdir='/usr/lib'#libdir='$LIBSTDC'#g" $RPM_BUILD_ROOT%{_libdir}/libstdc++.la.old \
- > $RPM_BUILD_ROOT%{_libdir}/libstdc++.la
-
%if %{!?_without_ada:1}%{?_without_ada:0}
# move ada shared libraries to proper place...
mv $RPM_BUILD_ROOT%{_libdir}/gcc-lib/%{_target_cpu}*/*/adalib/*-*so.1 \
$RPM_BUILD_ROOT%{_libdir}
rm -f $RPM_BUILD_ROOT%{_libdir}/gcc-lib/%{_target_cpu}*/*/adalib/*.so.1
(cd $RPM_BUILD_ROOT%{_libdir} && \
- ln -s libgnat-*so.1 libgnat.so.1 && \
- ln -s libgnarl-*so.1 libgnarl.so.1)
+ ln -s libgnat-*so.1 libgnat.so.1 && ln -s libgnat-*so.1 libgnat.so && \
+ ln -s libgnarl-*so.1 libgnarl.so.1 && ln -s libgnarl-*so.1 libgnarl.so)
%endif
ln -sf %{_bindir}/cpp $RPM_BUILD_ROOT/lib/cpp
cp -f fastjar/README java-doc/README.fastjar
cp -f libffi/README java-doc/README.libffi
cp -f libffi/LICENSE java-doc/LICENSE.libffi
+%endif
+%if %{?!_without_objc:1}0
cp -f libobjc/README gcc/objc/README.libobjc
%endif
+# avoid -L poisoning in *.la - there should be only -L%{_libdir}/gcc-lib/*/%{version}
+for f in libstdc++.la %{!?_without_java:libgcj.la} ; do
+ perl -pi -e 's@-L[^ ]*[acs.] @@g' $RPM_BUILD_ROOT%{_libdir}/$f
+done
+
bzip2 -dc %{SOURCE2} | tar xf - -C $RPM_BUILD_ROOT%{_mandir}
mv -f $RPM_BUILD_ROOT%{_mandir}/ja/man1/{cccp,cpp}.1
%attr(755,root,root) %{_bindir}/%{_target_cpu}*-c++
%attr(755,root,root) %{_bindir}/c++filt
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/cc1plus
-%attr(755,root,root) %{_libdir}/libsupc++.la
+%{_libdir}/libsupc++.la
%ifarch ppc
-%attr(755,root,root) %{_libdir}/nof/libsupc++.la
+%{_libdir}/nof/libsupc++.la
%{_libdir}/nof/libsupc++.a
%endif
%{_libdir}/libsupc++.a
%doc libstdc++-v3/docs/html
%dir %{_includedir}/c++
%{_includedir}/c++/%{GCC_VERSION}
-%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/libstdc++.so
-%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/libstdc++.la
-%attr(755,root,root) %{_libdir}/libstdc++.la
+%attr(755,root,root) %{_libdir}/libstdc++.so
+%{_libdir}/libstdc++.la
%ifarch ppc
%attr(755,root,root) %{_libdir}/nof/libstdc++.so
-%attr(755,root,root) %{_libdir}/nof/libstdc++.la
+%{_libdir}/nof/libstdc++.la
%endif
%files -n libstdc++-static
%defattr(644,root,root,755)
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/libstdc++.a
+%{_libdir}/libstdc++.a
%ifarch ppc
%{_libdir}/nof/libstdc++.a
%endif
+%if %{?!_without_objc:1}0
%files objc
%defattr(644,root,root,755)
%doc gcc/objc/READ*
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/cc1obj
%attr(755,root,root) %{_libdir}/libobjc.so
-%attr(755,root,root) %{_libdir}/libobjc.la
+%{_libdir}/libobjc.la
%ifarch ppc
%attr(755,root,root) %{_libdir}/nof/libobjc.so
-%attr(755,root,root) %{_libdir}/nof/libobjc.la
+%{_libdir}/nof/libobjc.la
%endif
%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/objc
%ifarch ppc
%{_libdir}/nof/libobjc.a
%endif
+%endif
%files g77
%defattr(644,root,root,755)
%{_infodir}/g77*
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/f771
%{_libdir}/libfrtbegin.a
-%attr(755,root,root) %{_libdir}/libg2c.la
+%{_libdir}/libg2c.la
%attr(755,root,root) %{_libdir}/libg2c.so
%ifarch ppc
%{_libdir}/nof/libfrtbegin.a
-%attr(755,root,root) %{_libdir}/nof/libg2c.la
+%{_libdir}/nof/libg2c.la
%attr(755,root,root) %{_libdir}/nof/libg2c.so
%endif
%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/g2c.h
%endif
%files -n libg2c-static
+%defattr(644,root,root,755)
%{_libdir}/libg2c.a
%ifarch ppc
%{_libdir}/nof/libg2c.a
%attr(755,root,root) %{_bindir}/gij
%attr(755,root,root) %{_bindir}/jcf-dump
%attr(755,root,root) %{_bindir}/jv-*
-%attr(755,root,root) %{_bindir}/rmi*
-%attr(755,root,root) %{_bindir}/jar
%attr(755,root,root) %{_bindir}/grepjar
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/jc1
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/jvgenmain
%{_mandir}/man1/jv-*
%{_mandir}/man1/gij*
%{_mandir}/man1/gcj*
+
+%files java-tools
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/rmi*
+%attr(755,root,root) %{_bindir}/jar
%{_mandir}/man1/rmi*
+
%files -n libgcj
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/addr2name.awk
%{_includedir}/j*.h
%{_includedir}/gnu/*
%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/gcj
+%dir %{_libdir}/security
%{_libdir}/security/*
%dir %{_datadir}/java
%{_datadir}/java/libgcj*.jar
%{_libdir}/lib*cj.spec
-%attr(755,root,root) %{_libdir}/lib*cj*.la
+%{_libdir}/lib*cj*.la
%attr(755,root,root) %{_libdir}/lib*cj*.so
%ifarch ppc
-%{_libdir}/nof/lib*cj.spec
-%attr(755,root,root) %{_libdir}/nof/lib*cj*.la
+%{_libdir}/nof/lib*cj*.la
%attr(755,root,root) %{_libdir}/nof/lib*cj*.so
%endif
%{_libdir}/gcc-lib/%{_target_cpu}*/*/adalib/Makefile.adalib
%attr(755,root,root) %{_bindir}/gnat*
%{_infodir}/gnat*
-%attr(755,root,root) %{_libdir}/libgnat.so.1
-%attr(755,root,root) %{_libdir}/libgnarl.so.1
+%attr(755,root,root) %{_libdir}/libgnat.so*
+%attr(755,root,root) %{_libdir}/libgnarl.so*
%files -n libgnat
%defattr(644,root,root,755)