%bcond_without java # build without Java support
%bcond_without objc # build without Objective-C support
%bcond_without objcxx # build without Objective-C++ support
-%bcond_with multilib # build with multilib support (it needs glibc[32&64]-devel)
+%bcond_without multilib # build without multilib support (it needs glibc[32&64]-devel)
%bcond_with profiling # build with profiling
%bcond_without bootstrap # omit 3-stage bootstrap
%bcond_with tests # torture gcc
-%if %{with multilib}
-# the latest chrpath(64) can't handle 32-bit binaries :/
-%define _noautochrpath .*/lib/.*\\.so.*
-%endif
-
%if %{without cxx}
%undefine with_java
%undefine with_objcxx
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: 4.1.0
-%define _snap 20051206r108118
-Release: 0.%{_snap}.2.1
+Version: 4.1.1
+%define _snap 20060416r112984
+Release: 0.%{_snap}.1
+#Release: 2
Epoch: 5
License: GPL v2+
Group: Development/Languages
+#Source0: ftp://gcc.gnu.org/pub/gcc/prerelease-%{version}-%{_snap}/gcc-%{version}-%{_snap}.tar.bz2
#Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{version}/%{name}-%{version}.tar.bz2
#Source0: ftp://gcc.gnu.org/pub/gcc/snapshots/4.1-%{_snap}/gcc-4.1-%{_snap}.tar.bz2
Source0: gcc-4.1-%{_snap}.tar.bz2
-# Source0-md5: 7ea00be8faff603a89a3aeed4d817464
+# Source0-md5: 13423f858965b2c8811db8788a173363
Source1: %{name}-optimize-la.pl
Patch0: %{name}-info.patch
Patch1: %{name}-nolocalefiles.patch
Patch2: %{name}-nodebug.patch
-Patch3: %{name}-ada-link-new-libgnat.patch
-Patch4: %{name}-ada-link.patch
+Patch3: %{name}-ada-link.patch
+Patch4: %{name}-sparc64-ada_fix.patch
Patch5: %{name}-alpha-ada_fix.patch
# -fvisibility fixes...
Patch6: %{name}-pr19664_gnu_internal.patch
# PRs
Patch10: %{name}-pr7776.patch
-Patch11: %{name}-pr20297.patch
-Patch12: %{name}-pr22533.patch
-Patch13: %{name}-pr25180.patch
-#Patch14: %{name}-x87-mmx-switch.patch NEEDS UPDATE
-#Patch15: %{name}-x87-mmx-eh.patch NEEDS UPDATE
-Patch16: %{name}-pr23948.patch
+
+Patch12: %{name}-pr19606.patch
+Patch13: %{name}-pr24879.patch
+
Patch17: %{name}-pr19505.patch
Patch18: %{name}-pr24419.patch
Patch19: %{name}-pr24669.patch
Patch20: %{name}-pr17390.patch
-Patch21: %{name}-pr25248.patch
-Patch22: %{name}-pr13676.patch
+Patch21: %{name}-pr13676.patch
+Patch22: %{name}-pr25626.patch
+Patch23: %{name}-libstdcxx-bitset.patch
+
+Patch25: %{name}-libjava-multilib.patch
+Patch26: %{name}-ppc64-m32-m64-multilib-only.patch
+Patch27: %{name}-enable-java-awt-qt.patch
+
+# 128-bit long double support for glibc 2.4
+Patch30: %{name}-ldbl-default-libstdc++.patch
+Patch31: %{name}-ldbl-default.patch
+
URL: http://gcc.gnu.org/
BuildRequires: autoconf
%{?with_tests:BuildRequires: autogen}
BuildRequires: automake
-BuildRequires: binutils >= 2:2.15.94.0.1
+# binutils 2.16.91 or newer are required for compiling medium model now
+BuildRequires: binutils >= 2:2.16.91.0.1
BuildRequires: bison
+BuildRequires: chrpath >= 0.13-2
%{?with_tests:BuildRequires: dejagnu}
BuildRequires: fileutils >= 4.0.41
BuildRequires: flex
BuildRequires: gcc-ada
%endif
BuildRequires: gettext-devel
+BuildRequires: glibc-devel >= 6:2.4-1
%if %{with multilib}
-BuildRequires: glibc-devel >= 6:2.3.4-1.5
%ifarch %{x8664}
BuildRequires: glibc-devel(i686)
%endif
%ifarch sparc64
BuildRequires: glibc-devel(sparc)
%endif
-%else
-BuildRequires: glibc-devel >= 2.2.5-20
%endif
BuildRequires: perl-devel
BuildRequires: rpmbuild(macros) >= 1.211
BuildRequires: libmpfr-devel
%endif
%if %{with java}
+BuildRequires: QtGui-devel >= 4.0.1
BuildRequires: alsa-lib-devel
BuildRequires: cairo-devel >= 0.5.0
BuildRequires: dssi
BuildRequires: libxslt-devel
BuildRequires: pango-devel
BuildRequires: pkgconfig
-#BR: X-lib-libXtst-devel
+BuildRequires: qt4-build
+BuildRequires: xorg-lib-libXtst-devel
%endif
# AS_NEEDED directive for dynamic linker
# http://sources.redhat.com/ml/glibc-cvs/2005-q1/msg00614.html
%prep
#setup -q -n gcc-%{version}
+#setup -q -n gcc-%{version}-%{_snap}
%setup -q -n gcc-4_1-branch
%patch0 -p1
# PRs
%patch10 -p1
-%patch11 -p1
-%patch12 -p1
-%patch13 -p1
-%ifarch %{ix86} %{x8664}
-#patch14 -p1
-#patch15 -p1
-%endif
-%patch16 -p1
+
+%patch12 -p0
+%patch13 -p0
+
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
+%patch23 -p1
+
+%patch25 -p1
+%patch26 -p1
+%patch27 -p1
+
+%patch30 -p0
+%patch31 -p0
# because we distribute modified version of gcc...
-perl -pi -e 's/(version.*)";/$1 (PLD Linux)";/' gcc/version.c
+sed -i 's:#define VERSUFFIX.*:#define VERSUFFIX " (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
cd gcc
%{__autoconf}
cd ..
-cd libjava/classpath
+cd libjava
+%{__autoconf}
+cd classpath
%{__autoconf}
cd ../..
cp -f /usr/share/automake/config.sub .
-rm -rf obj-%{_target_platform}
-install -d obj-%{_target_platform}
-cd obj-%{_target_platform}
+rm -rf builddir && install -d builddir && cd builddir
CFLAGS="%{rpmcflags}" \
CXXFLAGS="%{rpmcxxflags}" \
TEXCONFIG=false \
../configure \
--prefix=%{_prefix} \
+ --with-local-prefix=%{_prefix}/local \
--libdir=%{_libdir} \
--libexecdir=%{_libdir} \
--infodir=%{_infodir} \
--mandir=%{_mandir} \
- --x-libraries=/usr/X11R6/%{_lib} \
+ --x-libraries=%{_libdir} \
--enable-shared \
--enable-threads=posix \
- --enable-__cxa_atexit \
- --enable-languages="c%{?with_cxx:,c++}%{?with_fortran:,f95}%{?with_objc:,objc}%{?with_objcxx:,obj-c++}%{?with_ada:,ada}%{?with_java:,java}" \
+ --enable-languages="c%{?with_cxx:,c++}%{?with_fortran:,fortran}%{?with_objc:,objc}%{?with_objcxx:,obj-c++}%{?with_ada:,ada}%{?with_java:,java}" \
--enable-c99 \
--enable-long-long \
--%{?with_multilib:en}%{!?with_multilib:dis}able-multilib \
--with-demangler-in-ld \
--with-system-zlib \
--with-slibdir=%{_slibdir} \
+%ifnarch ia64
+ --without-system-libunwind \
+%else
+ --with-system-libunwind \
+%endif
%{!?with_java:--without-x} \
%{?with_fortran:--enable-cmath} \
+ --with-long-double-128 \
+%ifarch ppc ppc64
+ --enable-secureplt \
+%endif
+%if %{with cxx}
+ --with-gxx-include-dir=%{_includedir}/c++/%{version} \
+ --disable-libstdcxx-pch \
+ --enable-__cxa_atexit \
+ --enable-libstdcxx-allocator=new \
+%endif
%if %{with java}
+ --with-qt4dir=%{_libdir}/qt4 \
+ --disable-libjava-multilib \
--enable-libgcj \
--enable-libgcj-multifile \
--enable-libgcj-database \
--enable-gtk-cairo \
- --enable-java-awt=gtk,xlib \
+ --enable-java-awt=qt,gtk,xlib \
--enable-jni \
--enable-xmlj \
--enable-alsa \
cd ..
-%{__make} -C obj-%{_target_platform} \
+%{__make} -C builddir \
%{?with_bootstrap:%{?with_profiling:profiled}bootstrap} \
GCJFLAGS="%{rpmcflags}" \
BOOT_CFLAGS="%{rpmcflags}" \
mandir=%{_mandir} \
infodir=%{_infodir}
-%{?with_tests:%{__make} -k -C obj-%{_target_platform} check 2>&1 ||:}
+%{?with_tests:%{__make} -k -C builddir check 2>&1 ||:}
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{/lib,%{_aclocaldir},%{_datadir},%{_infodir}}
-cd obj-%{_target_platform}
+cd builddir
%{__make} -j1 install \
mandir=%{_mandir} \
mv $RPM_BUILD_ROOT{%{_libdir}/$libssp,%{_slibdir}}
ln -sf %{_slibdir}/$libssp $RPM_BUILD_ROOT%{_libdir}/libssp.so
%if %{with multilib}
-libssp=$($RPM_BUILD_ROOT%{_libdir32}; echo libssp.so.*.*.*`)
+libssp=$(cd $RPM_BUILD_ROOT%{_libdir32}; echo libssp.so.*.*.*)
mv $RPM_BUILD_ROOT{%{_libdir32}/$libssp,%{_slibdir32}}
ln -sf %{_slibdir32}/$libssp $RPM_BUILD_ROOT%{_libdir32}/libssp.so
%endif
do
%{SOURCE1} $RPM_BUILD_ROOT%{_libdir}/$f %{_libdir} > $RPM_BUILD_ROOT%{_libdir}/$f.fixed
mv $RPM_BUILD_ROOT%{_libdir}/$f{.fixed,}
+done
%if %{with multilib}
+for f in libmudflap.la libmudflapth.la libssp.la \
+ %{?with_cxx:libstdc++.la libsupc++.la} \
+ %{?with_fortran:libgfortran.la libgfortranbegin.la} \
+ %{?with_objc:libobjc.la};
+do
%{SOURCE1} $RPM_BUILD_ROOT%{_libdir32}/$f %{_libdir32} > $RPM_BUILD_ROOT%{_libdir32}/$f.fixed
mv $RPM_BUILD_ROOT%{_libdir32}/$f{.fixed,}
-%endif
done
+%endif
# include/ contains install-tools/include/* and headers that were fixed up
# by fixincludes, we don't want former
%{?with_java:mv $gccdir/include/{gcj,libffi/ffitarget.h,jawt.h,jawt_md.h,jni.h,jni_md.h,jvmpi.h} $gccdir/tmp}
%{?with_objc:mv $gccdir/include/objc $gccdir/tmp}
mv $gccdir/include/syslimits.h $gccdir/tmp
+mv $gccdir/include/ssp $gccdir/tmp
rm -rf $gccdir/include
mv $gccdir/tmp $gccdir/include
cp $gccdir/install-tools/include/*.h $gccdir/include
# but we don't want anything more from install-tools
rm -rf $gccdir/install-tools
-%if %{with multilib}
-ln -sf %{_slibdir32}/libgcc_s.so.1 $gccdir/32/libgcc_s.so
-%endif
-ln -sf %{_slibdir}/libgcc_s.so.1 $gccdir/libgcc_s.so
-
%find_lang gcc
%find_lang cpplib
cat cpplib.lang >> gcc.lang
-%{?with_cxx:%find_lang libstdc\+\+}
+
+%if %{with cxx}
+%find_lang libstdc\+\+
+install libstdc++-v3/include/stdc++.h $RPM_BUILD_ROOT%{_includedir}
+%endif
# cvs snap doesn't contain (release does) below files,
# so let's create dummy entries to satisfy %%files.
%dir %{_libdir}/gcc/*
%dir %{_libdir}/gcc/*/*
%dir %{_libdir}/gcc/*/*/include
+%dir %{_libdir}/gcc/*/*/include/ssp
%attr(755,root,root) %{_bindir}/*-gcc*
%attr(755,root,root) %{_bindir}/gcc
%attr(755,root,root) %{_bindir}/cc
%attr(755,root,root) %{_bindir}/cpp
-%{_includedir}/ssp
-
%{_mandir}/man1/cc.1*
%{_mandir}/man1/cpp.1*
%{_mandir}/man1/gcc.1*
%attr(755,root,root) /lib/cpp
%attr(755,root,root) %{_slibdir}/lib*.so
+%{_libdir}/libssp.a
%{_libdir}/libssp.la
-%attr(755,root,root) %{_libdir}/libssp.a
%attr(755,root,root) %{_libdir}/libssp.so
%{_libdir}/libssp_nonshared.a
%{_libdir}/libssp_nonshared.la
%if %{with multilib}
+%attr(755,root,root) %{_slibdir32}/lib*.so
%dir %{_libdir}/gcc/*/*/32
%{_libdir}/gcc/*/*/32/libgcov.a
%{_libdir}/gcc/*/*/32/libgcc.a
%{_libdir}/gcc/*/*/32/libgcc_eh.a
-%{_libdir}/gcc/*/*/32/libgcc_s.so
+%{_libdir32}/libssp.a
%{_libdir32}/libssp.la
-%attr(755,root,root) %{_libdir32}/libssp.a
%attr(755,root,root) %{_libdir32}/libssp.so
%{_libdir32}/libssp_nonshared.a
%{_libdir32}/libssp_nonshared.la
%{_libdir}/gcc/*/*/libgcov.a
%{_libdir}/gcc/*/*/libgcc.a
%{_libdir}/gcc/*/*/libgcc_eh.a
-%{_libdir}/gcc/*/*/libgcc_s.so
%{_libdir}/gcc/*/*/specs
%if %{with multilib}
%{_libdir}/gcc/*/*/32/crt*.o
%attr(755,root,root) %{_libdir}/gcc/*/*/collect2
%{_libdir}/gcc/*/*/include/*.h
+%{_libdir}/gcc/*/*/include/ssp/*.h
%files -n libgcc
%defattr(644,root,root,755)
%defattr(644,root,root,755)
%doc libstdc++-v3/docs/html
%dir %{_includedir}/c++
+%{_includedir}/stdc++.h
%{_includedir}/c++/%{version}
%if %{with java}
%exclude %{_includedir}/c++/%{version}/java
%exclude %{_includedir}/c++/%{version}/gcj
%exclude %{_includedir}/c++/%{version}/gnu
%endif
-%ifnarch sparc
-%exclude %{_includedir}/c++/%{version}/*/bits/stdc++.h.gch
-%endif
%if %{with multilib}
%{_libdir32}/libstdc++.la
%attr(755,root,root) %{_libdir32}/libstdc++.so
%attr(755,root,root) %{_bindir}/addr2name.awk
%attr(755,root,root) %{_bindir}/gij
%attr(755,root,root) %{_libdir}/libgcj.so.*.*.*
-# R: lib-gnu-java-awt-peer-gtk (see below)
+# R: lib-gnu-java-awt-peer-gtk/qt (see below)
%attr(755,root,root) %{_libdir}/libgcjawt.so.*.*.*
%attr(755,root,root) %{_libdir}/libgij.so.*.*.*
-# R: libX11
+# R: xorg libs
%attr(755,root,root) %{_libdir}/lib-gnu-awt-xlib.so.*.*.*
# R: gtk+2
%attr(755,root,root) %{_libdir}/lib-gnu-java-awt-peer-gtk.so.*.*.*
+# R: QtGui
+%attr(755,root,root) %{_libdir}/lib-gnu-java-awt-peer-qt.so.7.0.0
%dir %{_libdir}/classpath
# R: alsa-libs
%attr(755,root,root) %{_libdir}/classpath/libgjsmalsa.so*
%{_libdir}/lib-gnu-awt-xlib.la
%attr(755,root,root) %{_libdir}/lib-gnu-java-awt-peer-gtk.so
%{_libdir}/lib-gnu-java-awt-peer-gtk.la
+%attr(755,root,root) %{_libdir}/lib-gnu-java-awt-peer-qt.so
+%{_libdir}/lib-gnu-java-awt-peer-qt.la
%{_pkgconfigdir}/libgcj.pc
%files -n libgcj-static
%{_libdir}/libgij.a
%{_libdir}/lib-gnu-awt-xlib.a
%{_libdir}/lib-gnu-java-awt-peer-gtk.a
+%{_libdir}/lib-gnu-java-awt-peer-qt.a
%files -n libffi
%defattr(644,root,root,755)