#
# TODO:
-# - gconf peer? (but libgcj needs split anyway)
+# - gconf peer? (but libgcj needs split anyway)
+# - package?
+# /usr/bin/aot-compile
+# /usr/bin/gjdoc
+# /usr/share/man/man1/aot-compile.1.gz
+# /usr/share/man/man1/gjdoc.1.gz
+# /usr/share/python/aotcompile.py
+# /usr/share/python/classfile.py
#
# Conditional build:
%bcond_without ada # build without ADA support
%bcond_without alsa # don't build libgcj ALSA MIDI interface
%bcond_without dssi # don't build libgcj DSSI MIDI interface
%bcond_without gtk # don't build libgcj GTK peer
-%bcond_without mozilla # don't build libgcjwebplugin
+%bcond_with mozilla # don't build libgcjwebplugin (needs fix for new xulrunner)
%bcond_with qt # build libgcj Qt peer (currently doesn't build with libtool-2.x)
%bcond_without x # don't build libgcj Xlib-dependent AWTs (incl. GTK/Qt)
%bcond_without multilib # build without multilib support (it needs glibc[32&64]-devel)
%undefine with_multilib
%endif
-%define _major_ver 4.3
-%define _minor_ver 2
+%ifarch sparc64
+%undefine with_ada
+%endif
+
+%define major_ver 4.4
+%define minor_ver 3
# class data version seen with file(1) that this jvm is able to load
-%define _classdataversion 49.0
+%define _classdataversion 50.0
Summary: GNU Compiler Collection: the C compiler and shared files
Summary(es.UTF-8): Colección de compiladores GNU: el compilador C y ficheros compartidos
Summary(pl.UTF-8): Kolekcja kompilatorów GNU: kompilator C i pliki współdzielone
Summary(pt_BR.UTF-8): Coleção dos compiladores GNU: o compilador C e arquivos compartilhados
Name: gcc
-Version: %{_major_ver}.%{_minor_ver}
+Version: %{major_ver}.%{minor_ver}
Release: 5
Epoch: 6
License: GPL v3+
Group: Development/Languages
Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{version}/%{name}-%{version}.tar.bz2
-# Source0-md5: 5dfac5da961ecd5f227c3175859a486d
+# Source0-md5: fe1ca818fc6d2caeffc9051fe67ff103
Source1: %{name}-optimize-la.pl
-Source2: ftp://sourceware.org/pub/java/ecj-%{_major_ver}.jar
+#Source2: ftp://sourceware.org/pub/java/ecj-%{major_ver}.jar
+Source2: ftp://sourceware.org/pub/java/ecj-latest.jar
# Source2-md5: fd299f26c02268878b5d6c0e86f57c43
-Patch100: %{name}-branch.diff.bz2
-Patch101: %{name}-ix86-branch.diff.bz2
+# svn diff svn://gcc.gnu.org/svn/gcc//tags/gcc_4_4_3_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch > gcc-branch.diff
+Patch100: %{name}-branch.diff
Patch0: %{name}-info.patch
Patch1: %{name}-nolocalefiles.patch
Patch2: %{name}-nodebug.patch
Patch3: %{name}-ada-link.patch
Patch4: %{name}-sparc64-ada_fix.patch
-
Patch6: %{name}-ppc64-m32-m64-multilib-only.patch
Patch7: %{name}-libjava-multilib.patch
Patch8: %{name}-enable-java-awt-qt.patch
Patch9: %{name}-hash-style-gnu.patch
Patch10: %{name}-moresparcs.patch
+Patch11: %{name}-build-id.patch
URL: http://gcc.gnu.org/
BuildRequires: autoconf
%{?with_tests:BuildRequires: autogen}
BuildRequires: glibc-devel(s390)
%endif
%ifarch sparc64
-BuildRequires: glibc-devel(sparc)
+BuildRequires: glibc-devel(sparcv9)
%endif
%endif
BuildRequires: gmp-devel >= 4.1
%if %{with java}
%{?with_alsa:BuildRequires: alsa-lib-devel}
%if %{with dssi}
-BuildRequires: dssi
+BuildRequires: dssi-devel
BuildRequires: jack-audio-connection-kit-devel
%endif
BuildRequires: libxml2-devel >= 1:2.6.8
BuildRequires: gtk+2-devel >= 2:2.4.0
BuildRequires: libart_lgpl-devel
BuildRequires: pango-devel
+BuildRequires: xorg-lib-libXt-devel
BuildRequires: xorg-lib-libXtst-devel
%endif
%if %{with qt}
%endif
%{?with_mozilla:BuildRequires: xulrunner-devel >= 1.8.1.3-1.20070321.5}
%endif
-Requires: binutils >= 2:2.17.50.0.9-1
+Requires: binutils >= 2:2.20.51.0.2
Requires: libgcc = %{epoch}:%{version}-%{release}
Provides: cpp = %{epoch}:%{version}-%{release}
%{?with_ada:Provides: gcc(ada)}
%endif
%define filterout -fwrapv -fno-strict-aliasing -fsigned-char
+%define filterout_ld -Wl,--as-needed
%description
A compiler aimed at integrating all the optimizations and features
Group: Development/Languages
Requires: %{name}
Requires: libgcc-multilib = %{epoch}:%{version}-%{release}
-%{?with_multilib:Provides: gcc(multilib)}
+%{?with_multilib:Provides: gcc(multilib)}
+Obsoletes: libgcc32
%ifarch %{x8664}
Requires: glibc-devel(i686)
%endif
Requires: glibc-devel(s390)
%endif
%ifarch sparc64
-Requires: glibc-devel(sparc)
+Requires: glibc-devel(sparcv9)
%endif
%description multilib
Ten pakiet dodaje eksperymentalne wsparcie dla kompilacji programów w
Adzie.
+%package ada-multilib
+Summary: Ada support for gcc
+Summary(es.UTF-8): Soporte de Ada para gcc
+Summary(pl.UTF-8): Obsługa Ady do gcc
+Group: Development/Languages
+Requires: %{name}-ada = %{epoch}:%{version}-%{release}
+Requires: libgnat-multilib = %{epoch}:%{version}-%{release}
+
+%description ada-multilib
+This package adds experimental support for compiling Ada programs.
+
+%description ada-multilib -l es.UTF-8
+Este paquete añade soporte experimental para compilar programas en
+Ada.
+
+%description ada-multilib -l pl.UTF-8
+Ten pakiet dodaje eksperymentalne wsparcie dla kompilacji programów w
+Adzie.
+
%package -n libgnat
Summary: Ada standard libraries
Summary(es.UTF-8): Bibliotecas estándares de Ada
Ten pakiet zawiera biblioteki potrzebne do uruchamiania programów
napisanych w Adzie.
+%package -n libgnat-multilib
+Summary: Ada standard libraries
+Summary(es.UTF-8): Bibliotecas estándares de Ada
+Summary(pl.UTF-8): Biblioteki standardowe dla Ady
+License: GPL v2+ with linking exception
+Group: Libraries
+
+%description -n libgnat-multilib
+This package contains shared libraries needed to run programs written
+in Ada.
+
+%description -n libgnat-multilib -l es.UTF-8
+Este paquete contiene las bibliotecas compartidas necesarias para
+ejecutar programas escritos en Ada.
+
+%description -n libgnat-multilib -l pl.UTF-8
+Ten pakiet zawiera biblioteki potrzebne do uruchamiania programów
+napisanych w Adzie.
+
%package -n libgnat-static
Summary: Static Ada standard libraries
Summary(pl.UTF-8): Statyczne biblioteki standardowe dla Ady
Ten pakiet zawiera biblioteki statyczne dla programów napisanych w
Adzie.
+%package -n libgnat-multilib-static
+Summary: Static Ada standard libraries
+Summary(pl.UTF-8): Statyczne biblioteki standardowe dla Ady
+License: GPL v2+ with linking exception
+Group: Development/Libraries
+
+%description -n libgnat-multilib-static
+This package contains static libraries for programs written in Ada.
+
+%description -n libgnat-multilib-static -l pl.UTF-8
+Ten pakiet zawiera biblioteki statyczne dla programów napisanych w
+Adzie.
+
%package c++
Summary: C++ support for gcc
Summary(es.UTF-8): Soporte de C++ para gcc
Group: Development/Libraries
Requires: %{name}-c++-multilib
Requires: libstdc++-devel = %{epoch}:%{version}-%{release}
-Requires: libstdc++-multilib
+Requires: libstdc++-multilib = %{epoch}:%{version}-%{release}
%description -n libstdc++-multilib-devel
This is the GNU implementation of the standard C++ libraries. This
Summary(pl.UTF-8): Obsługa Fortranu 95 dla gcc
Summary(pt_BR.UTF-8): Suporte Fortran 95 para o GCC
Group: Development/Languages/Fortran
+Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: libgfortran = %{epoch}:%{version}-%{release}
Provides: gcc-g77 = %{epoch}:%{version}-%{release}
Obsoletes: egcs-g77
Requires: libgcj-devel = %{epoch}:%{version}-%{release}
Provides: gcc-java-tools
Provides: gcj = %{epoch}:%{version}-%{release}
-Obsoletes: gcc-java-tools
Obsoletes: eclipse-ecj
+Obsoletes: gcc-java-tools
+Obsoletes: java-gnu-classpath-tools
%description java
This package adds experimental support for compiling Java(TM) programs
%prep
%setup -q
%patch100 -p0
-%patch101 -p0
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch8 -p1
%endif
%patch9 -p1
-%patch10 -p1
+%patch10 -p0
+%patch11 -p0
mv ChangeLog ChangeLog.general
%build
cd gcc
-%{__autoconf}
+#{__autoconf}
cd ..
%if %{with qt}
cd libjava/classpath
--infodir=%{_infodir} \
--mandir=%{_mandir} \
--x-libraries=%{_libdir} \
+ --enable-checking=release \
--enable-shared \
--enable-threads=posix \
--enable-linux-futex \
--%{?with_mudflap:en}%{!?with_mudflap:dis}able-libmudflap \
--enable-c99 \
--enable-long-long \
+ --enable-decimal-float=yes \
--%{?with_multilib:en}%{!?with_multilib:dis}able-multilib \
--enable-nls \
--disable-werror \
cd ..
-%{__make} -C builddir \
- %{?with_bootstrap:%{?with_profiling:profiledbootstrap}} \
- GCJFLAGS="%{rpmcflags}" \
- BOOT_CFLAGS="%{rpmcflags}" \
- STAGE1_CFLAGS="%{rpmcflags} -O0 -g0" \
- GNATLIBCFLAGS="%{rpmcflags}" \
- LDFLAGS_FOR_TARGET="%{rpmldflags}" \
- mandir=%{_mandir} \
- infodir=%{_infodir}
+cat << 'EOF' > Makefile
+all := $(filter-out all Makefile,$(MAKECMDGOALS))
+
+all $(all):
+ $(MAKE) -C builddir $(MAKE_OPTS) $(all) \
+ %{?with_bootstrap:%{?with_profiling:profiledbootstrap}} \
+ GCJFLAGS="%{rpmcflags}" \
+ BOOT_CFLAGS="%{rpmcflags}" \
+ STAGE1_CFLAGS="%{rpmcflags} -O0" \
+ GNATLIBCFLAGS="%{rpmcflags}" \
+ LDFLAGS_FOR_TARGET="%{rpmldflags}" \
+ mandir=%{_mandir} \
+ infodir=%{_infodir}
+EOF
+
+%{__make}
%if %{with tests}
if [ ! -r /dev/pts/0 ]; then
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-4.3.so.1
-ln -sf libgnat-4.3.so.1 $RPM_BUILD_ROOT%{_libdir}/libgnat-4.3.so
-ln -sf libgnarl-4.3.so.1 $RPM_BUILD_ROOT%{_libdir}/libgnarl-4.3.so
-ln -sf libgnat-4.3.so $RPM_BUILD_ROOT%{_libdir}/libgnat.so
-ln -sf libgnarl-4.3.so $RPM_BUILD_ROOT%{_libdir}/libgnarl.so
+test -f $RPM_BUILD_ROOT%{_libdir}/libgnat-4.4.so.1
+ln -sf libgnat-4.4.so.1 $RPM_BUILD_ROOT%{_libdir}/libgnat-4.4.so
+ln -sf libgnarl-4.4.so.1 $RPM_BUILD_ROOT%{_libdir}/libgnarl-4.4.so
+ln -sf libgnat-4.4.so $RPM_BUILD_ROOT%{_libdir}/libgnat.so
+ln -sf libgnarl-4.4.so $RPM_BUILD_ROOT%{_libdir}/libgnarl.so
+%if %{with multilib}
+mv -f $RPM_BUILD_ROOT%{_libdir}/gcc/*/*/32/adalib/*.so.1 \
+ $RPM_BUILD_ROOT%{_libdir32}
+# check if symlink to be made is valid
+test -f $RPM_BUILD_ROOT%{_libdir32}/libgnat-4.4.so.1
+ln -sf libgnat-4.4.so.1 $RPM_BUILD_ROOT%{_libdir32}/libgnat-4.4.so
+ln -sf libgnarl-4.4.so.1 $RPM_BUILD_ROOT%{_libdir32}/libgnarl-4.4.so
+ln -sf libgnat-4.4.so $RPM_BUILD_ROOT%{_libdir32}/libgnat.so
+ln -sf libgnarl-4.4.so $RPM_BUILD_ROOT%{_libdir32}/libgnarl.so
+%endif
%endif
cd ..
%endif
# gcj-$version-$gcjsonamever
-%define gcjdbexecdir gcj-%{version}-9
+%define gcjdbexecdir gcj-%{version}-10
# avoid -L poisoning in *.la - there should be only -L%{_libdir}/gcc/*/%{version}
# normalize libdir, to avoid propagation of unnecessary RPATHs by libtool
install libstdc++-v3/include/precompiled/* $RPM_BUILD_ROOT%{_includedir}
%endif
-# cvs snap doesn't contain (release does) below files,
+# svn snap doesn't contain (release does) below files,
# so let's create dummy entries to satisfy %%files.
[ ! -f NEWS ] && touch NEWS
[ ! -f libgfortran/AUTHORS ] && touch libgfortran/AUTHORS
%postun -p /sbin/ldconfig -n libmudflap-multilib
%post -p /sbin/ldconfig -n libgnat
%postun -p /sbin/ldconfig -n libgnat
+%post -p /sbin/ldconfig -n libgnat-multilib
+%postun -p /sbin/ldconfig -n libgnat-multilib
%post -p /sbin/ldconfig -n libstdc++
%postun -p /sbin/ldconfig -n libstdc++
%post -p /sbin/ldconfig -n libstdc++-multilib
%{_libdir}/gcc/*/*/include/varargs.h
%ifarch %{ix86} %{x8664}
%{_libdir}/gcc/*/*/include/ammintrin.h
+%{_libdir}/gcc/*/*/include/avxintrin.h
%{_libdir}/gcc/*/*/include/bmmintrin.h
%{_libdir}/gcc/*/*/include/cpuid.h
+%{_libdir}/gcc/*/*/include/cross-stdarg.h
%{_libdir}/gcc/*/*/include/emmintrin.h
+%{_libdir}/gcc/*/*/include/immintrin.h
%{_libdir}/gcc/*/*/include/mm3dnow.h
%{_libdir}/gcc/*/*/include/mm_malloc.h
%{_libdir}/gcc/*/*/include/mmintrin-common.h
%{_libdir}/gcc/*/*/include/smmintrin.h
%{_libdir}/gcc/*/*/include/tmmintrin.h
%{_libdir}/gcc/*/*/include/wmmintrin.h
+%{_libdir}/gcc/*/*/include/x86intrin.h
%{_libdir}/gcc/*/*/include/xmmintrin.h
%endif
%ifarch powerpc ppc ppc64
%endif
%{_infodir}/gnat*
+%if %{with multilib}
+%files ada-multilib
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir32}/libgnarl*.so
+%attr(755,root,root) %{_libdir32}/libgnat*.so
+%{_libdir}/gcc/*/*/32/adainclude
+%dir %{_libdir}/gcc/*/*/32/adalib
+%{_libdir}/gcc/*/*/32/adalib/*.ali
+%{_libdir}/gcc/*/*/32/adalib/g-trasym.o
+%{_libdir}/gcc/*/*/32/adalib/libgccprefix.a
+%ifarch %{ix86} %{x8664}
+%{_libdir}/gcc/*/*/32/adalib/libgmem.a
+%endif
+%endif
+
%files -n libgnat
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libgnarl*.so.1
%attr(755,root,root) %{_libdir}/libgnat*.so.1
+%if %{with multilib}
+%files -n libgnat-multilib
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir32}/libgnarl*.so.1
+%attr(755,root,root) %{_libdir32}/libgnat*.so.1
+%endif
+
%files -n libgnat-static
%defattr(644,root,root,755)
%{_libdir}/gcc/*/*/adalib/libgnala.a
%{_libdir}/gcc/*/*/adalib/libgnarl.a
%{_libdir}/gcc/*/*/adalib/libgnat.a
+
+%if %{with multilib}
+%files -n libgnat-multilib-static
+%defattr(644,root,root,755)
+%{_libdir}/gcc/*/*/32/adalib/libgnala.a
+%{_libdir}/gcc/*/*/32/adalib/libgnarl.a
+%{_libdir}/gcc/*/*/32/adalib/libgnat.a
+%endif
%endif
%if %{with cxx}
%defattr(644,root,root,755)
%doc libstdc++-v3/{ChangeLog,README}
%attr(755,root,root) %{_libdir}/libstdc++.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libstdc++.so.6
%if %{with multilib}
%files -n libstdc++-multilib
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir32}/libstdc++.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir32}/libstdc++.so.6
%endif
%files -n libstdc++-devel
%{_mandir}/man1/gtnameserv*
%{_mandir}/man1/jcf-*
%{_mandir}/man1/jv-*
+%{_mandir}/man1/rebuild-gcj-db*
%files -n libgcj
%defattr(644,root,root,755)
%doc libjava/{ChangeLog,LIBGCJ_LICENSE,NEWS,README,THANKS}
-%attr(755,root,root) %{_bindir}/addr2name.awk
%attr(755,root,root) %{_bindir}/gij
%attr(755,root,root) %{_libdir}/libgcj-tools.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libgcj-tools.so.10
%attr(755,root,root) %{_libdir}/libgcj.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libgcj.so.10
%attr(755,root,root) %{_libdir}/libgcj_bc.so
%attr(755,root,root) %{_libdir}/libgcj_bc.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libgcj_bc.so.1
%attr(755,root,root) %{_libdir}/libgij.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libgij.so.10
%{?with_x:%attr(755,root,root) %{_libdir}/lib-gnu-awt-xlib.so.*.*.*}
+%{?with_x:%attr(755,root,root) %ghost %{_libdir}/lib-gnu-awt-xlib.so.10}
%dir %{_libdir}/%{gcjdbexecdir}
%{_libdir}/%{gcjdbexecdir}/classmap.db
%{?with_mozilla:%attr(755,root,root) %{_libdir}/%{gcjdbexecdir}/libgcjwebplugin.so}
%{?with_dssi:%attr(755,root,root) %{_libdir}/%{gcjdbexecdir}/libgjsmdssi.so*}
%{?with_gtk:%attr(755,root,root) %{_libdir}/%{gcjdbexecdir}/libgtkpeer.so}
%{?with_gtk:%attr(755,root,root) %{_libdir}/%{gcjdbexecdir}/libjawt.so}
+%attr(755,root,root) %{_libdir}/%{gcjdbexecdir}/libjavamath.so
%attr(755,root,root) %{_libdir}/%{gcjdbexecdir}/libjvm.so
%{?with_qt:%attr(755,root,root) %{_libdir}/%{gcjdbexecdir}/libqtpeer.so}
%attr(755,root,root) %{_libdir}/%{gcjdbexecdir}/libxmlj.so*
%{?with_dssi:%{_libdir}/%{gcjdbexecdir}/libgjsmdssi.la}
%{?with_gtk:%{_libdir}/%{gcjdbexecdir}/libgtkpeer.la}
%{?with_gtk:%{_libdir}/%{gcjdbexecdir}/libjawt.la}
+%{_libdir}/%{gcjdbexecdir}/libjavamath.la
%{_libdir}/%{gcjdbexecdir}/libjvm.la
%{?with_qt:%{_libdir}/%{gcjdbexecdir}/libqtpeer.la}
%{?with_mozilla:%{_libdir}/%{gcjdbexecdir}/libgcjwebplugin.la}
%attr(755,root,root) %{_libdir}/lib-gnu-awt-xlib.so
%{_libdir}/lib-gnu-awt-xlib.la
%endif
-%{_pkgconfigdir}/libgcj-%{_major_ver}.pc
+%{_pkgconfigdir}/libgcj-%{major_ver}.pc
%files -n libgcj-static
%defattr(644,root,root,755)