-%define GCC_VERSION 3.0.4
-%define STDC_VERSION 3.0.4
-%define GCJ_VERSION 3.0.4
-%define KSI_VERSION pre46
+%define DASHED_SNAP %{nil}
+%define SNAP %(echo %{DASHED_SNAP} | sed -e "s#-##g")
+%define GCC_VERSION 3.1
+%define STDC_VERSION 4.0.0
+%define OBJC_VERSION 1.0.0
+%define GCJ_VERSION 3.1
+%define KSI_VERSION pre48
Summary: GNU Compiler Collection
Summary(pl): Kolekcja kompilatorów GNU
Name: gcc
Release: 1
License: GPL
Group: Development/Languages
-Group(de): Entwicklung/Sprachen
-Group(pl): Programowanie/Jêzyki
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
-Patch0: gcc-DESTDIR.patch
-Patch1: gcc-paths.patch
+Patch0: %{name}-slibdir.patch
+Patch1: %{name}-paths.patch
+Patch2: %{name}-ada-no-addr2line.patch
+Patch3: %{name}-ada-no-prefix.o.patch
BuildRequires: bison
-BuildRequires: texinfo
+BuildRequires: texinfo >= 4.1
BuildRequires: zlib-devel
BuildRequires: fileutils >= 4.0.41
BuildRequires: autoconf
-Requires: binutils >= 2.9.1.0.25
+BuildRequires: gcc
+BuildRequires: gcc-ada
+BuildRequires: perl-devel
+Requires: binutils >= 2.12.90.0.4
Requires: cpp = %{version}
+Requires: libgcc = %{version}
URL: http://gcc.gnu.org/
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%package c++
Summary: C++ support for gcc
-Summary(fr): Support C++ pour le compilateur gcc
-Summary(pl): Wspomaganie C++ dla kompilatora gcc
-Summary(tr): gcc için C++ desteði
Group: Development/Languages
-Group(de): Entwicklung/Sprachen
-Group(pl): Programowanie/Jêzyki
Obsoletes: egcc-c++
Obsoletes: egcs-c++
+Requires: gcc = %{GCC_VERSION}
%description c++
This package adds C++ support to the GNU C compiler. It includes
Summary(pl): Wspomaganie obiektowego C dla kompilatora gcc
Summary(tr): gcc için Objective C desteði
Group: Development/Languages
-Group(de): Entwicklung/Sprachen
-Group(pl): Programowanie/Jêzyki
-Requires: %{name} = %{version}
Obsoletes: egcc-objc
Obsoletes: egcs-objc
+Requires: libobjc = %{OBJC_VERSION}
+Requires: gcc = %{GCC_VERSION}
%description objc
This package adds Objective C support to the GNU C compiler. Objective
sistemlerde yaygýn olarak kullanýlýr. Standart Objective C nesne
kitaplýðý bu pakette yer almaz.
+%package -n libobjc
+Summary: Objective C Libraries
+Summary(pl): Biblioteki Obiektowego C
+Group: Libraries
+Version: %{OBJC_VERSION}
+Epoch: 2
+
+%description -n libobjc
+Objective C Libraries
+
+%description -n libobjc -l pl
+Biblioteki Obiektowego C
+
+%package -n libobjc-static
+Summary: Static Objective C Libraries
+Summary(pl): Statyczne Biblioteki Obiektowego C
+Group: Development/Libraries
+Version: %{OBJC_VERSION}
+Epoch: 3
+Requires: libobjc = %{OBJC_VERSION}
+
+%description -n libobjc-static
+Static Objective C Libraries
+
+%description -l pl -n libobjc-static
+Statyczne Obiektowego C
+
%package g77
Summary: Fortran 77 support for gcc
Summary(pl): Wspomaganie Fortran 77 dla gcc
Group: Development/Languages
-Group(de): Entwicklung/Sprachen
-Group(pl): Programowanie/Jêzyki
+Version: %{GCC_VERSION}
Obsoletes: egcs-g77
+Requires: libg2c = %{GCC_VERSION}
%description g77
This apckage adds support for compiling Fortran 77 programs with the
Ten pakiet jest wsparciem Fortran 77 dla kompilatora gcc. Jest
potrzebny do kompilowania programów pisanych w jêzyku Fortran 77.
-%package chill
-Summary: CHILL support for gcc
-Summary(pl): Wspomoganie CHILL dla gcc
-Group: Development/Languages
-Group(de): Entwicklung/Sprachen
-Group(pl): Programowanie/Jêzyki
-Requires: %{name} = %{version}
+%package -n libg2c
+Summary: Fortran 77 Libraries
+Summary(pl): Biblioteki Fortranu 77
+Group: Libraries
+Version: %{GCC_VERSION}
+
+%description -n libg2c
+Fortran 77 Libraries
+
+%description -n libg2c -l pl
+Biblioteki Fortranu 77
-%description chill
-This package adds support for compiling CHILL programs with the GNU
-compiler.
+%package -n libg2c-static
+Summary: Static Fortran 77 Libraries
+Summary(pl): Statyczne Biblioteki Fortranu 77
+Group: Development/Libraries
+Version: %{GCC_VERSION}
+Epoch: 2
+Requires: libg2c = %{GCC_VERSION}
-Chill is the "CCITT High-Level Language", where CCITT is the old name
-for what is now ITU, the International Telecommunications Union. It is
-is language in the Modula2 family, and targets many of the same
-applications as Ada (especially large embedded systems). Chill was
-never used much in the United States, but is still being used in
-Europe, Brazil, Korea, and other places.
+%description -n libg2c-static
+Static Fortran 77 Libraries
+
+%description -l pl -n libg2c-static
+Statyczne Fortranu 77
%package java
Summary: Java support for gcc
Summary(pl): Wspomoganie Java dla gcc
Group: Development/Languages
-Group(de): Entwicklung/Sprachen
-Group(pl): Programowanie/Jêzyki
+Version: %{GCC_VERSION}
Requires: %{name} = %{version}
Requires: libgcj >= 3.0.0
Summary: Java Class Libraries
Summary(pl): Biblioteki Klas Javy
Group: Libraries
-Group(de): Libraries
-Group(es): Bibliotecas
-Group(fr): Librairies
-Group(pl): Biblioteki
Version: %{GCJ_VERSION}
Epoch: 2
Requires: zlib
Summary: Development files for Java Class Libraries
Summary(pl): Pliki nag³ówkowe dla Bibliotek Klass Javy
Group: Development/Libraries
-Group(de): Entwicklung/Libraries
-Group(fr): Development/Librairies
-Group(pl): Programowanie/Biblioteki
Version: %{GCJ_VERSION}
Epoch: 2
Requires: libgcj = %{GCJ_VERSION}
Summary: Static Java Class Libraries
Summary(pl): Statyczne Biblioteki Klass Javy
Group: Development/Libraries
-Group(de): Entwicklung/Libraries
-Group(fr): Development/Librairies
-Group(pl): Programowanie/Biblioteki
Version: %{GCJ_VERSION}
Epoch: 2
-Requires: libstdc++-devel = %{GCJ_VERSION}
+Requires: libstdc++-devel = %{STDC_VERSION}
%description -n libgcj-static
Static Java Class Libraries
Summary: GNU c++ library
Summary(pl): Biblioteki GNU C++
Group: Libraries
-Group(de): Libraries
-Group(es): Bibliotecas
-Group(fr): Librairies
-Group(pl): Biblioteki
Version: %{STDC_VERSION}
Obsoletes: libg++
Summary(fr): Fichiers d'en-tête et biblitothèques pour développer en C++.
Summary(tr): C++ ile program geliþtirmek için gerekli dosyalar
Group: Development/Libraries
-Group(de): Entwicklung/Libraries
-Group(fr): Development/Librairies
-Group(pl): Programowanie/Biblioteki
Version: %{STDC_VERSION}
Requires: libstdc++ = %{STDC_VERSION}
Requires: %{name}-c++
Summary: Static c++ standard library
Summary(pl): Biblioteka statyczna c++
Group: Development/Libraries
-Group(de): Entwicklung/Libraries
-Group(fr): Development/Librairies
-Group(pl): Programowanie/Biblioteki
Version: %{STDC_VERSION}
Requires: libstdc++-devel = %{STDC_VERSION}
Summary: Shared gcc library
Summary(pl): Biblioteka gcc
Group: Libraries
-Group(de): Libraries
-Group(fr): Librairies
-Group(pl): Biblioteki
-Version: %{version}
+Version: %{GCC_VERSION}
%description -n libgcc
Shared gcc library.
Summary: The C Pre Processor
Summary(pl): Preprocesor C
Group: Development/Languages
-Group(de): Entwicklung/Sprachen
-Group(pl): Programowanie/Jêzyki
-Version: %{version}
+Version: %{GCC_VERSION}
Obsoletes: egcs-cpp
Obsoletes: gcc-cpp
Summary(pl): Wspomoganie Ksi dla gcc
Version: %{GCC_VERSION}.%{KSI_VERSION}
Group: Development/Languages
-Group(de): Entwicklung/Sprachen
-Group(pl): Programowanie/Jêzyki
-Requires: %{name} = %{GCC_VERSION}
+Requires: gcc = %{GCC_VERSION}
%description ksi
This package adds experimental support for compiling Ksi programs
¿e zamierzasz pisaæ kompilator u¿ywaj±cy Ksi jakos reprezentacji
po¶rednicz±cej, lub u¿ywasz takiego kompilatora (jak Gont).
+%package ada
+Summary: Ada support for gcc
+Summary(pl): Wsparcie dla Ady do gcc
+Group: Development/Languages
+Version: %{GCC_VERSION}
+Requires: libgnat = %{GCC_VERSION}
+Requires: gcc = %{GCC_VERSION}
+Obsoletes: gnat-devel
+
+%description ada
+This package adds experimental support for compiling Ada programs.
+
+%description -l pl ada
+Ten pakiet dodaje eksperymentalne wsparcie dla kompilacji programów
+w Adzie.
+
+%package -n libgnat
+Summary: Ada standard libraries
+Summary(pl): Biblioteki standardowe dla Ady
+Group: Libraries
+Version: %{GCC_VERSION}
+Obsoletes: gnat
+
+%description -n libgnat
+This package contains shared libraries needed to run programs written
+in Ada.
+
+%description -l pl -n libgnat
+Ten pakiet zawiera biblioteki potrzebne do uruchamiania programów napisanych
+w Adzie.
+
+%package -n libgnat-static
+Summary: Static Ada standard libraries
+Summary(pl): Statyczne biblioteki standardowe dla Ady
+Group: Libraries
+Version: %{GCC_VERSION}
+Obsoletes: gnat-static
+
+%description -n libgnat
+This package contains static libraries needed to run programs written
+in Ada.
+
+%description -l pl -n libgnat-static
+Ten pakiet zawiera biblioteki statyczne potrzebne do uruchamiania
+programów napisanych w Adzie.
%prep
-%setup -q -a1 -n %{name}-%{SNAP}
+%setup -q -a1 -n %{name}-%{GCC_VERSION}
mv ksi-%{KSI_VERSION} gcc/ksi
%patch0 -p1
%patch1 -p1
+%patch2 -p1
+%patch3 -p1
%build
# cd gcc && autoconf; cd ..
--mandir=%{_mandir} \
--enable-shared \
--enable-threads=posix \
- --enable-languages="c,c++,f77,gcov,java,objc,ksi" \
+ --enable-languages="c,c++,f77,gcov,java,objc,ksi,ada" \
--enable-long-long \
--enable-multilib \
--with-gnu-as \
PATH=$PATH:/sbin:%{_sbindir}
+# this dircty hack is relict of setting, where objdir is subdir of srcdir
+sed -e 's/srcdir=\$(fsrcdir)/srcdir=\$(fsrcdir) VPATH=\$(fsrcdir)/' \
+ gcc/ada/Makefile > makefile.tmp
+mv -f makefile.tmp gcc/ada/Makefile
+
cd ..
%{__make} -C obj-%{_target_platform} bootstrap-lean \
LDFLAGS_FOR_TARGET="%{rpmldflags}" \
mandir=%{_mandir} \
infodir=%{_infodir}
+%{__make} -C obj-%{_target_platform}/gcc gnatlib gnattools gnatlib-shared \
+ LDFLAGS_FOR_TARGET="%{rpmldflags}" \
+ mandir=%{_mandir} \
+ infodir=%{_infodir}
+
+# make Gnat Reference Manual
+%{__make} -C obj-%{_target_platform}/gcc/ada doc
+
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{/lib,%{_datadir}}
prefix=$RPM_BUILD_ROOT%{_prefix} \
mandir=$RPM_BUILD_ROOT%{_mandir} \
infodir=$RPM_BUILD_ROOT%{_infodir} \
- DESTDIR=$RPM_BUILD_ROOT
+ slibdir=$RPM_BUILD_ROOT/lib
ln -sf gcc $RPM_BUILD_ROOT%{_bindir}/cc
echo .so gcc.1 > $RPM_BUILD_ROOT%{_mandir}/man1/cc.1
mv $RPM_BUILD_ROOT%{_libdir}/libstdc++.a \
$RPM_BUILD_ROOT%{_libdir}/gcc-lib/%{_target_cpu}*/*/
+# move ada shared libraries to proper place...
+mv $RPM_BUILD_ROOT%{_libdir}/gcc-lib/%{_target_cpu}*/*/adalib/*-*so \
+ $RPM_BUILD_ROOT%{_libdir}
+rm -f $RPM_BUILD_ROOT%{_libdir}/gcc-lib/%{_target_cpu}*/*/adalib/*.so
+(cd $RPM_BUILD_ROOT%{_libdir} && \
+ ln -s libgnat-*so libgnat.so && \
+ ln -s libgnarl-*so libgnarl.so)
+
ln -sf %{_bindir}/cpp $RPM_BUILD_ROOT/lib/cpp
cd ..
+
+install obj-%{_target_platform}/gcc/ada/gnat_rm.info* $RPM_BUILD_ROOT%{_infodir}
+
gzip -9nf READ* ChangeLog
gzip -9nf gcc/ksi/README gcc/ksi/NEWS gcc/ksi/t/*.{ksi,c,foo}
-gzip -9nf libjava/doc/cni.sgml
+
+install -d java-doc
+mv -f libjava/doc/cni.sgml libjava/READ* java-doc
+mv -f fastjar/README java-doc/README.fastjar
+mv -f libffi/README java-doc/README.libffi
+mv -f libffi/LICENSE java-doc/LICENSE.libffi
+gzip -9nf java-doc/*
+
+mv libobjc/README gcc/objc/README.libobjc
+gzip -9nf gcc/objc/READ*
+
+%find_lang %{name}
%post
[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
%postun g77
[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
-%post chill
-[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
-
-%postun chill
-[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
-
%post java
[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
%postun -p /sbin/ldconfig -n libstdc++
%post -p /sbin/ldconfig -n libgcj
%postun -p /sbin/ldconfig -n libgcj
+%post -p /sbin/ldconfig -n libg2c
+%postun -p /sbin/ldconfig -n libg2c
+%post -p /sbin/ldconfig -n libobjc
+%postun -p /sbin/ldconfig -n libobjc
+%post -p /sbin/ldconfig -n libgnat
+%postun -p /sbin/ldconfig -n libgnat
%clean
rm -rf $RPM_BUILD_ROOT
-%files
+%files -f %{name}.lang
%defattr(644,root,root,755)
%doc READ* ChangeLog.gz
%dir %{_libdir}/gcc-lib
%{_infodir}/gcc*
%{_libdir}/gcc-lib/%{_target_cpu}*/*/libgcc.a
+%{_libdir}/gcc-lib/%{_target_cpu}*/*/libgcc_eh.a
%{_libdir}/gcc-lib/%{_target_cpu}*/*/specs
-#%ifnarch alpha
%attr(644,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/crt*.o
-#%endif
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/cc1
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/collect2
%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/float.h
%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/iso646.h
%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/limits.h
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/proto.h
%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/stdarg.h
%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/stdbool.h
%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/stddef.h
%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/syslimits.h
%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/varargs.h
+%ifarch %{ix86}
+%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/mmintrin.h
+%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/xmmintrin.h
+%endif
%files c++
%defattr(644,root,root,755)
%files objc
%defattr(644,root,root,755)
+%doc gcc/objc/*.gz
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/cc1obj
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/libobjc.a
-%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/libobjc.so*
-%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/libobjc.la
+%attr(755,root,root) %{_libdir}/libobjc.so
+%attr(755,root,root) %{_libdir}/libobjc.la
%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/objc
+%files -n libobjc
+%attr(755,root,root) %{_libdir}/libobjc.so.*.*.*
+
+%files -n libobjc-static
+%defattr(644,root,root,755)
+%{_libdir}/libobjc.a
+
%files g77
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/g77
%attr(755,root,root) %{_bindir}/f77
%{_infodir}/g77*
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/f771
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/libg2c.a
+%attr(755,root,root) %{_libdir}/libg2c.la
+%attr(755,root,root) %{_libdir}/libg2c.so
%{_mandir}/man1/g77.1*
%{_mandir}/man1/f77.1*
%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/g2c.h
+%files -n libg2c
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libg2c.so.*.*.*
+
+%files -n libg2c-static
+%{_libdir}/libg2c.a
+
%files ksi
-%doc gcc/ksi/*.gz gcc/ksi/t/*.gz
%defattr(644,root,root,755)
+%doc gcc/ksi/*.gz gcc/ksi/t/*.gz
%{_infodir}/ksi*
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/ksi1
-%ifarch no_longer_supported_by_gcc_team
-%files chill
+%files ada
%defattr(644,root,root,755)
-%doc gcc/ch/chill.brochure.gz
-
-%attr(755,root,root) %{_bindir}/chill
-%{_infodir}/chill*
-%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/cc1chill
-%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/chill*.o
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/libchill.a
+%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/gnat1
+%{_libdir}/gcc-lib/%{_target_cpu}*/*/adainclude
+%dir %{_libdir}/gcc-lib/%{_target_cpu}*/*/adalib
+%{_libdir}/gcc-lib/%{_target_cpu}*/*/adalib/*.ali
+%ifnarch ppc
+%{_libdir}/gcc-lib/%{_target_cpu}*/*/adalib/libgmem.a
%endif
+%{_libdir}/gcc-lib/%{_target_cpu}*/*/adalib/Makefile.adalib
+%attr(755,root,root) %{_bindir}/gnat*
+%{_infodir}/gnat*
+%attr(755,root,root) %{_libdir}/libgnat.so
+%attr(755,root,root) %{_libdir}/libgnarl.so
+
+%files -n libgnat-static
+%defattr(644,root,root,755)
+%{_libdir}/gcc-lib/%{_target_cpu}*/*/adalib/libgna*.a
+
+%files -n libgnat
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libgna*-*so
%files java
%defattr(644,root,root,755)
-%doc libjava/doc/*gz
+%doc java-doc/*.gz
%attr(755,root,root) %{_bindir}/gcj*
%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
%{_infodir}/gcj*
+%{_mandir}/man1/jcf-*
+%{_mandir}/man1/jv-*
+%{_mandir}/man1/gij*
+%{_mandir}/man1/gcj*
%files -n libgcj
%defattr(644,root,root,755)
%{_includedir}/gnu/*
%{_libdir}/lib*cj.spec
%{_libdir}/security/*
-%{_datadir}/libgcj.jar
+%dir %{_datadir}/java
+%{_datadir}/java/libgcj*.jar
%attr(755,root,root) %{_libdir}/lib*cj*.la
%attr(755,root,root) %{_libdir}/lib*cj*.so