%bcond_without ada # build without ADA support
%bcond_without java # build without Java support
%bcond_without objc # build without objc support
+%bcond_with ssp # build with stack-smashing protector support
#
-%define snap 20040416
%define GCC_VERSION 3.4.0
#
Summary: GNU Compiler Collection: the C compiler and shared files
Summary(pt_BR): Coleção dos compiladores GNU: o compilador C e arquivos compartilhados
Name: gcc
Version: %{GCC_VERSION}
-Release: 0.%{snap}.1
+Release: 3
Epoch: 5
License: GPL
Group: Development/Languages
-#Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{version}/%{name}-%{version}.tar.bz2
-Source0: ftp://gcc.gnu.org/pub/gcc/prerelease-%{version}-%{snap}/%{name}-%{version}-%{snap}.tar.bz2
-# Source0-md5: d6e215ce39a302c643f3ea8994ef6b68
-#Source0: ftp://gcc.gnu.org/pub/gcc/snapshots/%{version}-%{snap}/%{name}-%{version}-%{snap}.tar.bz2
+Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{version}/%{name}-%{version}.tar.bz2
+# Source0-md5: 85c6fc83d51be0fbb4f8205accbaff59
Source1: http://ep09.pld-linux.org/~djrzulf/gcc33/%{name}-non-english-man-pages.tar.bz2
# Source1-md5: 4736f3422ddfb808423b745629acc321
+Source2: http://www.trl.ibm.com/projects/security/ssp/gcc2_95_3/gcc_stack_protect.m4.gz
+# Source2-md5: 07d93ad5fc07ca44cdaba46c658820de
Patch0: %{name}-info.patch
Patch1: %{name}-nolocalefiles.patch
Patch2: %{name}-ada-link-new-libgnat.patch
+Patch3: %{name}-nodebug.patch
+Patch4: %{name}-ssp.patch
+Patch5: %{name}-pr14668.patch
+Patch6: %{name}-ada-link.patch
+URL: http://gcc.gnu.org/
BuildRequires: autoconf
BuildRequires: automake
-BuildRequires: binutils >= 2.14
+BuildRequires: binutils >= 2.15.90.0.3
BuildRequires: bison
BuildRequires: fileutils >= 4.0.41
BuildRequires: flex
-%{?with_ada:BuildRequires: gcc-ada}
+%if %{with ada}
+BuildRequires: gcc(ada)
+BuildRequires: gcc-ada
+%endif
BuildRequires: gettext-devel
BuildRequires: glibc-devel >= 2.2.5-20
+BuildRequires: gzip
BuildRequires: perl-devel
BuildRequires: texinfo >= 4.1
BuildRequires: zlib-devel
-Requires: binutils >= 2.14
+Requires: binutils >= 2.15.90.0.3
Requires: cpp = %{epoch}:%{version}-%{release}
Requires: libgcc = %{epoch}:%{version}-%{release}
+%{?with_ada:Provides: gcc(ada)}
+%{?with_ssp:Provides: gcc(ssp)}
+# ksi for gcc > 3.3.x not ready yet
+Obsoletes: gcc-ksi
+Obsoletes: gont
Conflicts: glibc-devel < 2.2.5-20
-URL: http://gcc.gnu.org/
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _slibdir /%{_lib}
Summary(pl): Obs³uga C++ dla gcc
Summary(pt_BR): Suporte C++ para o gcc
Group: Development/Languages
+Requires: %{name} = %{epoch}:%{version}-%{release}
Obsoletes: egcc-c++
Obsoletes: egcs-c++
-Requires: gcc = %{epoch}:%{version}-%{release}
%description c++
This package adds C++ support to the GNU Compiler Collection. It
Summary(pl): Obs³uga obiektowego C dla kompilatora gcc
Summary(tr): gcc için Objective C desteði
Group: Development/Languages
+Requires: %{name} = %{epoch}:%{version}-%{release}
+Requires: libobjc = %{epoch}:%{version}-%{release}
Obsoletes: egcc-objc
Obsoletes: egcs-objc
-Requires: libobjc = %{epoch}:%{version}-%{release}
-Requires: gcc = %{epoch}:%{version}-%{release}
%description objc
This package adds Objective C support to the GNU Compiler Collection.
Summary(pl): Obs³uga Fortranu 77 dla gcc
Summary(pt_BR): Suporte Fortran 77 para o GCC
Group: Development/Languages/Fortran
-Obsoletes: egcs-g77
Requires: libg2c = %{epoch}:%{version}-%{release}
+Obsoletes: egcs-g77
%description g77
This package adds support for compiling Fortran 77 programs with the
Summary(pl): Obs³uga Javy dla gcc
Group: Development/Languages/Java
Requires: %{name} = %{epoch}:%{version}-%{release}
-Requires: libgcj >= 3.0.0
-Requires: libgcj-devel >= 3.0.0
+Requires: libgcj = %{epoch}:%{version}-%{release}
+Requires: libgcj-devel = %{epoch}:%{version}-%{release}
Requires: java-shared
Provides: gcj = %{epoch}:%{version}-%{release}
Summary(es): Ficheros de desarrollo para las bibliotecas de clases de Java
Summary(pl): Pliki nag³ówkowe dla Bibliotek Klas Javy
Group: Development/Libraries
+Requires: %{name}-java = %{epoch}:%{version}-%{release}
Requires: libgcj = %{epoch}:%{version}-%{release}
-Requires: %{name}-java
-Requires: pkgconfig
Obsoletes: libgcj3-devel
%description -n libgcj-devel
Summary(es): Bibliotecas estáticas de clases de Java
Summary(pl): Statyczne Biblioteki Klas Javy
Group: Development/Libraries
-Requires: libstdc++-devel = %{epoch}:%{version}-%{release}
Requires: libgcj-devel = %{epoch}:%{version}-%{release}
+Requires: libstdc++-devel = %{epoch}:%{version}-%{release}
%description -n libgcj-static
Static Java Class Libraries.
Summary(pt_BR): Arquivos de inclusão e bibliotecas para o desenvolvimento em C++
Summary(tr): C++ ile program geliþtirmek için gerekli dosyalar
Group: Development/Libraries
-Requires: libstdc++ = %{epoch}:%{version}-%{release}
Requires: %{name}-c++ = %{epoch}:%{version}-%{release}
+Requires: libstdc++ = %{epoch}:%{version}-%{release}
Obsoletes: libg++-devel
Obsoletes: libstdc++3-devel
Summary(es): Soporte de Ada para gcc
Summary(pl): Obs³uga Ady do gcc
Group: Development/Languages
+Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: libgnat = %{epoch}:%{version}-%{release}
-Requires: gcc = %{epoch}:%{version}-%{release}
Obsoletes: gcc-gnat
Obsoletes: gnat-devel
Summary(pl): Preprocesor C
Summary(pt_BR): Preprocessador para a linguagem C
Group: Development/Languages
-Version: %{GCC_VERSION}
Obsoletes: egcs-cpp
Obsoletes: gcc-cpp
controle da numeração das linhas do programa.
%prep
-%setup -q -a1 -n %{name}-%{version}-%{snap}
-
+%setup -q -a1
%patch0 -p1
%patch1 -p1
%patch2 -p1
+%{!?debug:%patch3 -p1}
+%{?with_ssp:%patch4 -p1}
+%patch5 -p1
+%patch6 -p1
# because we distribute modified version of gcc...
-perl -pi -e 's/(version.*)";/$1 (PLD Linux)";/' gcc/version.c
+perl -pi -e 's/(version.*)";/$1 %{?with_ssp:SSP }(PLD Linux)";/' gcc/version.c
perl -pi -e 's@(bug_report_url.*<URL:).*";@$1http://bugs.pld-linux.org/>";@' gcc/version.c
mv ChangeLog ChangeLog.general
%build
# cd gcc && autoconf; cd ..
# autoconf is not needed!
-cp /usr/share/automake/config.sub .
+cp -f /usr/share/automake/config.sub .
rm -rf obj-%{_target_platform} && install -d obj-%{_target_platform} && cd obj-%{_target_platform}
cd ..
%{__make} -C obj-%{_target_platform} profiledbootstrap \
+ GCJFLAGS="%{rpmcflags}" \
BOOT_CFLAGS="%{rpmcflags}" \
STAGE1_CFLAGS="%{rpmcflags}" \
LDFLAGS_FOR_TARGET="%{rpmldflags}" \
infodir=%{_infodir}
%if %{with ada}
-%{__make} -C obj-%{_target_platform}/gcc gnatlib gnattools gnatlib-shared \
+# cannot build it in parallel
+for tgt in gnatlib-shared gnattools gnatlib; do
+%{__make} -C obj-%{_target_platform}/gcc $tgt \
+ BOOT_CFLAGS="%{rpmcflags}" \
LDFLAGS_FOR_TARGET="%{rpmldflags}" \
mandir=%{_mandir} \
infodir=%{_infodir}
+done
%endif
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT{/lib,%{_datadir},%{_infodir}}
+install -d $RPM_BUILD_ROOT{/lib,%{_aclocaldir},%{_datadir},%{_infodir}}
cd obj-%{_target_platform}
PATH=$PATH:/sbin:%{_sbindir}
%if %{with ada}
# move ada shared libraries to proper place...
-mv $RPM_BUILD_ROOT%{_libdir}/gcc/*/*/adalib/*.so \
- $RPM_BUILD_ROOT%{_libdir}/
+mv -f $RPM_BUILD_ROOT%{_libdir}/gcc/*/*/adalib/*.so.1 \
+ $RPM_BUILD_ROOT%{_libdir}
+# check if symlink to be made is valid
+test -f $RPM_BUILD_ROOT%{_libdir}/libgnat-3.4.so.1
+ln -sf libgnat-3.4.so.1 $RPM_BUILD_ROOT%{_libdir}/libgnat-3.4.so
+ln -sf libgnarl-3.4.so.1 $RPM_BUILD_ROOT%{_libdir}/libgnarl-3.4.so
+ln -sf libgnat-3.4.so $RPM_BUILD_ROOT%{_libdir}/libgnat.so
+ln -sf libgnarl-3.4.so $RPM_BUILD_ROOT%{_libdir}/libgnarl.so
%endif
ln -sf %{_bindir}/cpp $RPM_BUILD_ROOT/lib/cpp
%find_lang %{name}
%find_lang libstdc\+\+
+%if %{with ssp}
+zcat %{SOURCE2} > $RPM_BUILD_ROOT%{_aclocaldir}/gcc_stack_protect.m4
+%endif
+
%clean
rm -rf $RPM_BUILD_ROOT
%dir %{_libdir}/gcc/*
%dir %{_libdir}/gcc/*/*
%dir %{_libdir}/gcc/*/*/include
+%{?with_ssp:%{_aclocaldir}/gcc_stack_protect.m4}
%attr(755,root,root) %{_bindir}/*-gcc*
%attr(755,root,root) %{_bindir}/gcc
%attr(755,root,root) %{_bindir}/gccbug
%ifarch ppc
%attr(755,root,root) %{_libdir}/nof/lib*cj*.so.*
%endif
+%{_libdir}/logging.properties
%files -n libgcj-devel
%defattr(644,root,root,755)
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/gnat*
%attr(755,root,root) %{_bindir}/gpr*
+%attr(755,root,root) %{_libdir}/libgnarl*.so
+%attr(755,root,root) %{_libdir}/libgnat*.so
%attr(755,root,root) %{_libdir}/gcc/*/*/gnat1
%{_libdir}/gcc/*/*/adainclude
%dir %{_libdir}/gcc/*/*/adalib
%{_libdir}/gcc/*/*/adalib/*.ali
-%ifnarch ppc
+%{_libdir}/gcc/*/*/adalib/g-trasym.o
+%{_libdir}/gcc/*/*/adalib/libgccprefix.a
+%ifarch %{ix86}
%{_libdir}/gcc/*/*/adalib/libgmem.a
%endif
+%{_datadir}/gnat
%{_infodir}/gnat*
%files -n libgnat
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libgnarl*.so
-%attr(755,root,root) %{_libdir}/libgnat*.so
+%attr(755,root,root) %{_libdir}/libgnarl*.so.1
+%attr(755,root,root) %{_libdir}/libgnat*.so.1
%files -n libgnat-static
%defattr(644,root,root,755)