#
+# TODO:
+# - http://gcc.gnu.org/PR11203
+# - http://gcc.gnu.org/PR17384
+# - http://gcc.gnu.org/PR17567
+#
# Conditional build:
%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 20040730
+%define _snap 20041008
#
Summary: GNU Compiler Collection: the C compiler and shared files
Summary(es): Colección de compiladores GNU: el compilador C y ficheros compartidos
Summary(pl): Kolekcja kompilatorów GNU: kompilator C i pliki wspó³dzielone
Summary(pt_BR): Coleção dos compiladores GNU: o compilador C e arquivos compartilhados
Name: gcc
-Version: 3.4.2
+Version: 3.4.3
Release: 0.%{_snap}.1
+#Release: 1
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}/gcc-%{version}-%{_snap}.tar.bz2
Source0: ftp://gcc.gnu.org/pub/gcc/snapshots/3.4-%{_snap}/gcc-3.4-%{_snap}.tar.bz2
-# Source0-md5: 373a70bf18865d34c08cff5a8148e712
+# Source0-md5: 9e5a58db111be1b31227b5a1139a740b
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
Patch6: %{name}-pr15666.patch
Patch7: %{name}-pr16276.patch
Patch8: %{name}-ada-bootstrap.patch
+#
+# -fvisibility={default|internal|hidden|protected}
+#
+# Set the default ELF image symbol visibility to the specified option.
+# All symbols will be marked with this unless overrided within the code.
+# Using this feature can very substantially improve linking and load times
+# of shared object libraries, produce more optimised code, provide near-perfect
+# API export and prevent symbol clashes. It is strongly recommended that you
+# use this in any shared objects you distribute.
+#
+# -fvisibility-inlines-hidden
+#
+# Causes all inlined methods to be marked with __attribute__((visibility("hidden")))
+# so that they do not appear in the export table of a DSO and do not require a PLT
+# indirection when used within the DSO. Enabling this option can have a dramatic
+# effect on load and link times of a DSO as it massively reduces the size
+# of the dynamic export table when the library makes heavy use of templates.
+# While it can cause bloating through duplication of code within each DSO
+# where it is used, often the wastage is less than the considerable space
+# occupied by a long symbol name in the export table which is typical when using
+# templates and namespaces.
+#
+# How to Write Shared Libraries: http://people.redhat.com/drepper/dsohowto.pdf
+#
+Patch9: %{name}-visibility.patch
+#
URL: http://gcc.gnu.org/
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: texinfo >= 4.1
BuildRequires: zlib-devel
Requires: binutils >= 2.15.91.0.2
-Requires: cpp = %{epoch}:%{version}-%{release}
Requires: libgcc = %{epoch}:%{version}-%{release}
+Provides: cpp = %{epoch}:%{version}-%{release}
%{?with_ada:Provides: gcc(ada)}
%{?with_ssp:Provides: gcc(ssp)}
# ksi for gcc > 3.3.x not ready yet
+Obsoletes: cpp
+Obsoletes: egcs-cpp
+Obsoletes: gcc-cpp
Obsoletes: gcc-ksi
Obsoletes: gont
Conflicts: glibc-devel < 2.2.5-20
Ten pakiet zawiera biblioteki statyczne dla programów napisanych w
Adzie.
-%package -n cpp
-Summary: The C Pre Processor
-Summary(es): El preprocesador de C
-Summary(pl): Preprocesor C
-Summary(pt_BR): Preprocessador para a linguagem C
-Group: Development/Languages
-Obsoletes: egcs-cpp
-Obsoletes: gcc-cpp
-
-%description -n cpp
-The C preprocessor is a "macro processor" that is used automatically
-by the C compiler to transform your program before actual compilation.
-It is called a macro processor because it allows you to define
-"macros", which are brief abbreviations for longer constructs.
-
-The C preprocessor provides four separate facilities that you can use
-as you see fit:
-
-- Inclusion of header files. These are files of declarations that can
- be substituted into your program.
-- Macro expansion. You can define "macros", which are abbreviations
- for arbitrary fragments of C code, and then the C preprocessor will
- replace the macros with their definitions throughout the program.
-- Conditional compilation. Using special preprocessing directives, you
- can include or exclude parts of the program according to various
- conditions.
-- Line control. If you use a program to combine or rearrange source
- files into an intermediate file which is then compiled, you can use
- line control to inform the compiler of where each source line
- originally came from.
-
-%description -n cpp -l es
-El preprocesador de C es un "procesador de macros" que es usado
-automáticamente por el compilador C para transformar su programa antes
-de que éste se actualmente compile. Se llama procesador de macros
-porque permite definir "macros", los que son abreviaciones concisas
-para construcciones más largas.
-
-El preprocesador C provee cuatro cualidadedes distintas que puede usar
-como le convenga:
-
-- Inclusión de ficheros de cabecera. Éstos son ficheros de
- declaraciones que pueden incorporarse a su programa.
-- Expansión de macros. Puede definir "macros", los que son
- abreviaciones para fragmentos arbitrarios de código C, y a lo largo
- del programa el preprocesador sustituirá los macros con sus
- definiciones.
-- Compilación condicional. Usando especiales directivas del preproceso
- puede incluir o excluir partes del programa según varias condiciones.
-- Control de líneas. Si usa un programa para combinar o reorganizar el
- código fuente en un fichero intermedio que luego es compilado, puede
- usar control de líneas para informar el compilador de dónde origina
- cada línea.
-
-%description -n cpp -l pl
-Przeprocesor C jest "makro procesorem" który jest automatycznie
-u¿ywany przez kompilator C do obróbki kompilowanego programu przed
-w³a¶ciw± kompilacj±. Jest on nazywany makroprocesorem, poniewa¿
-umo¿liwia definiowanie i rozwijanie makr umo¿liwiaj±cych skracanie
-d³ugich konstrukcji w jêzyku C.
-
-Preprocesor C umo¿liwia wykonywanie czterech ró¿nych typów operacji:
-
-- Do³±czanie plików (np. nag³ówkowych). Wstawia pliki w miejscu
- deklaracji polecenia do³±czenia innego pliku.
-- Rozwijanie makr. Mo¿na definiowaæ "makra" nadaj±c im identyfikatory,
- których pó¼niejsze u¿ycie powoduje podczas rozwijania podmienienie
- indentyfikatora deklarowan± wcze¶niej warto¶ci±.
-- Kompilacja warunkowa. W zale¿no¶ci od obecno¶ci symboli i dyrektyw w
- ¶rodowisku preprocesora s± w³±czane warunkowo, b±d¼ nie, pewne
- fragmenty obrabianego strumienia tekstów.
-- Kontrola linii ¼ród³a. Niezale¿nie od tego jakim przeobra¿eniom
- podlega wynikowy strumieñ danych w wyniku rozwijania makr i do³±czania
- s± zapamiêtywane informacje o tym, której linii pliku ¼ród³owego
- odpowiada fragment pliku wynikowego.
-
-%description -n cpp -l pt_BR
-O preprocessador C é um "processador de macros", que é utilizado pelo
-compilador C para fazer algumas modificações no seu programa, antes da
-compilação em si. Ele é chamado de "processador de macros" porque
-permite a você definir "macros", que são abreviações para construções
-mais complicadas.
-
-O preprocessador C fornece quatro funcionalidades básicas: inclusão de
-arquivos de cabeçalho; expansão de macros; compilação condicional; e
-controle da numeração das linhas do programa.
-
%prep
+# prerelease
+#setup -q -n %{name}-%{version}-%{_snap} -a1
+# snapshot
%setup -q -n %{name}-3.4-%{_snap} -a1
+# final
+#setup -q -n %{name}-%{version} -a1
+
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch6 -p0
%patch7 -p0
%ifarch alpha ia64
-# only for bootstrap using gcc 3.3.x
+# needed for bootstrap using gcc 3.3.x on alpha
+# and even using the same 3.4.x(!) (but not Debian's 3.3.x) on ia64
%patch8 -p2
%endif
+%patch9 -p1
# because we distribute modified version of gcc...
perl -pi -e 's/(version.*)";/$1 %{?with_ssp:SSP }(PLD Linux)";/' gcc/version.c
cd gcc
%{__autoconf}
cd ..
-# cd gcc && autoconf; cd ..
-# autoconf is not needed!
cp -f /usr/share/automake/config.sub .
rm -rf obj-%{_target_platform} && install -d obj-%{_target_platform} && cd obj-%{_target_platform}
gccdir=$(echo $RPM_BUILD_ROOT%{_libdir}/gcc/*/*/)
mkdir $gccdir/tmp
# we have to save these however
-mv -f $gccdir/include/{%{?with_objc:objc,}g2c.h,syslimits.h%{?with_java:,gcj}} $gccdir/tmp
+mv -f $gccdir/include/{%{?with_objc:objc,}g2c.h,syslimits.h%{?with_java:,libffi/ffitarget.h,gcj}} $gccdir/tmp
rm -rf $gccdir/include
mv -f $gccdir/tmp $gccdir/include
cp $gccdir/install-tools/include/*.h $gccdir/include
%postun java
[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
-%post -n cpp
-[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
-
-%postun -n cpp
-[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
-
%post -p /sbin/ldconfig -n libgcc
%postun -p /sbin/ldconfig -n libgcc
%post -p /sbin/ldconfig -n libstdc++
%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
%attr(755,root,root) %{_bindir}/gcov
%attr(755,root,root) %{_bindir}/cc
+%attr(755,root,root) %{_bindir}/cpp
-%{_mandir}/man1/gcc.1*
%{_mandir}/man1/cc.1*
-%{_mandir}/man1/gcov.1*
+%{_mandir}/man1/cpp.1*
+%lang(ja) %{_mandir}/ja/man1/cpp.1*
+%{_mandir}/man1/gcc.1*
%lang(fr) %{_mandir}/fr/man1/gcc.1*
%lang(ja) %{_mandir}/ja/man1/gcc.1*
+%{_mandir}/man1/gcov.1*
+
+%{_infodir}/cpp*
%{_infodir}/gcc*
+%attr(755,root,root) /lib/cpp
+
%attr(755,root,root) %{_slibdir}*/lib*.so
%{_libdir}/gcc/*/*/libgcov.a
%{_libdir}/gcc/*/*/libgcc.a
%files -n libffi-devel
%defattr(644,root,root,755)
+%{_libdir}/gcc/*/*/include/ffitarget.h
%attr(755,root,root) %{_libdir}/libffi.so
%{_libdir}/libffi.la
-%{_includedir}/ffi*
+%{_includedir}/ffi.h
%files -n libffi-static
%defattr(644,root,root,755)
%{_libdir}/gcc/*/*/adalib/libgnarl.a
%{_libdir}/gcc/*/*/adalib/libgnat.a
%endif
-
-%files -n cpp
-%defattr(644,root,root,755)
-%attr(755,root,root) /lib/cpp
-%attr(755,root,root) %{_bindir}/cpp
-%{_mandir}/man1/cpp.1*
-%lang(ja) %{_mandir}/ja/man1/cpp.1*
-%{_infodir}/cpp*