+#
+# Conditional build:
+%bcond_without ada # build without ADA support
+%bcond_without fortran # build without Fortran support
+%bcond_without java # build without Java support
+%bcond_without objc # build without ObjC support
+
+%bcond_with bootstrap
+
+%if %{with bootstrap}
+%undefine with_fortran
+%undefine with_java
+%undefine with_objc
+%endif
+
#
# TODO:
-# - http://gcc.gnu.org/PR11203
+# - http://gcc.gnu.org/PR11203 (inline-asm)
+# - http://gcc.gnu.org/PR18648 (missed tree-optimization)
# - disable internal zlib usage
-# - bconds
# - translations from gcc.spec:HEAD
#
-%define _snap 20041205
+%define _snap 20050213
#
Summary: GNU Compiler Collection: the C compiler and shared files
Summary(pl): Kolekcja kompilatorów GNU: kompilator C i pliki wspó³dzielone
Name: gcc
Epoch: 5
Version: 4.0.0
-Release: 0.%{_snap}.0.1
+Release: 0.%{_snap}.1
License: GPL
Group: Development/Languages
#Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{version}/gcc-%{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/4.0-%{_snap}/%{name}-4.0-%{_snap}.tar.bz2
-# Source0-md5: 18a3dfafa963ba3b8111a86c7ddeba05
+# Source0-md5: 56c68edf4047dc42aeda22186cedb40b
Patch0: %{name}-info.patch
Patch1: %{name}-nolocalefiles.patch
Patch2: %{name}-nodebug.patch
BuildRequires: bison
BuildRequires: fileutils >= 4.0.41
BuildRequires: flex
+%if %{with ada}
BuildRequires: gcc(ada)
BuildRequires: gcc-ada
+%endif
BuildRequires: gettext-devel
BuildRequires: glibc-devel >= 2.2.5-20
BuildRequires: gmp-devel
Requires: binutils >= 2:2.15.94.0.1
Requires: libgcc = %{epoch}:%{version}-%{release}
Provides: cpp = %{epoch}:%{version}-%{release}
-Provides: gcc(ada)
+%{?with_ada:Provides: gcc(ada)}
Obsoletes: cpp
Obsoletes: egcs-cpp
Obsoletes: gcc-cpp
Summary(pl): Pliki nag³ówkowe i dokumentacja do biblioteki standardowej C++
Group: Development/Libraries
Requires: %{name}-c++ = %{epoch}:%{version}-%{release}
+Requires: glibc-devel
Requires: libstdc++ = %{epoch}:%{version}-%{release}
Obsoletes: libg++-devel
Obsoletes: libstdc++3-devel
Summary: Development files for Java Class Libraries
Summary(pl): Pliki nag³ówkowe dla Bibliotek Klas Javy
Group: Development/Libraries
-Requires: %{name}-java = %{epoch}:%{version}-%{release}
Requires: libgcj = %{epoch}:%{version}-%{release}
Obsoletes: libgcj3-devel
--enable-shared \
--enable-threads=posix \
--enable-__cxa_atexit \
- --enable-languages="c,c++,f95,objc,ada,java" \
+ --enable-languages="c,c++%{?with_fortran:,f95}%{?with_objc:,objc}%{?with_ada:,ada}%{?with_java:,java}" \
--enable-c99 \
--enable-long-long \
%ifarch amd64
--enable-nls \
--with-gnu-as \
--with-gnu-ld \
+ --with-demangler-in-ld \
--with-system-zlib \
--with-slibdir=%{_slibdir} \
--without-x \
cd ..
%{__make} -C obj-%{_target_platform} \
- profiledbootstrap \
+ %{!?with_bootstrap:profiledbootstrap} \
GCJFLAGS="%{rpmcflags}" \
BOOT_CFLAGS="%{rpmcflags}" \
- STAGE1_CFLAGS="%{rpmcflags}" \
+ STAGE1_CFLAGS="%{rpmcflags} -O0" \
LDFLAGS_FOR_TARGET="%{rpmldflags}" \
mandir=%{_mandir} \
infodir=%{_infodir}
infodir=%{_infodir} \
DESTDIR=$RPM_BUILD_ROOT
+install gcc/specs $RPM_BUILD_ROOT%{_libdir}/gcc/%{_target_platform}/%{version}
+
%ifarch sparc64
ln -sf $RPM_BUILD_ROOT%{_bindir}/sparc64-pld-linux-gcc \
$RPM_BUILD_ROOT%{_bindir}/sparc-pld-linux-gcc
%endif
+ln -sf %{_bindir}/cpp $RPM_BUILD_ROOT/lib/cpp
ln -sf gcc $RPM_BUILD_ROOT%{_bindir}/cc
echo ".so gcc.1" > $RPM_BUILD_ROOT%{_mandir}/man1/cc.1
+%if %{with fortran}
ln -sf gfortran $RPM_BUILD_ROOT%{_bindir}/g95
echo ".so gfortran.1" > $RPM_BUILD_ROOT%{_mandir}/man1/g95.1
+%endif
+%if %{with ada}
# move ada shared libraries to proper place...
mv -f $RPM_BUILD_ROOT%{_libdir}/gcc/*/*/adalib/*.so.1 \
$RPM_BUILD_ROOT%{_libdir}
ln -sf libgnarl-4.0.so.1 $RPM_BUILD_ROOT%{_libdir}/libgnarl-4.0.so
ln -sf libgnat-4.0.so $RPM_BUILD_ROOT%{_libdir}/libgnat.so
ln -sf libgnarl-4.0.so $RPM_BUILD_ROOT%{_libdir}/libgnarl.so
-ln -sf %{_bindir}/cpp $RPM_BUILD_ROOT/lib/cpp
+%endif
cd ..
+%if %{with java}
install -d java-doc
cp -f libjava/READ* java-doc
cp -f fastjar/README java-doc/README.fastjar
cp -f libffi/README java-doc/README.libffi
cp -f libffi/LICENSE java-doc/LICENSE.libffi
+%endif
+%if %{with objc}
cp -f libobjc/README gcc/objc/README.libobjc
+%endif
# avoid -L poisoning in *.la - there should be only -L%{_libdir}/gcc/*/%{version}
-for f in libstdc++.la libsupc++.la libgcj.la;
+for f in libstdc++.la libsupc++.la %{?with_java:libgcj.la};
do
perl -pi -e 's@-L[^ ]*[acs.] @@g' $RPM_BUILD_ROOT%{_libdir}/$f
done
# normalize libdir, to avoid propagation of unnecessary RPATHs by libtool
-for f in libstdc++.la libsupc++.la libgfortran.la libgfortranbegin.la \
- libgcj.la lib-org-w3c-dom.la lib-org-xml-sax.la libffi.la libobjc.la;
+for f in libstdc++.la libsupc++.la \
+ %{?with_fortran:libgfortran.la libgfortranbegin.la} \
+ %{?with_java:libgcj.la lib-org-w3c-dom.la lib-org-xml-sax.la libffi.la} \
+ %{?with_objc:libobjc.la};
do
perl -pi -e "s@^libdir='.*@libdir='/usr/%{_lib}'@" $RPM_BUILD_ROOT%{_libdir}/$f
done
gccdir=$(echo $RPM_BUILD_ROOT%{_libdir}/gcc/*/*/)
mkdir $gccdir/tmp
# we have to save these however
-mv -f $gccdir/include/{gcj,libffi/ffitarget.h,objc,syslimits.h} \
- $gccdir/tmp
+%{?with_java:mv -f $gccdir/include/{gcj,libffi/ffitarget.h} $gccdir/tmp}
+%{?with_objc:mv -f $gccdir/include/objc $gccdir/tmp}
+mv -f $gccdir/include/syslimits.h $gccdir/tmp
rm -rf $gccdir/include
-mv -f $gccdir/tmp \
- $gccdir/include
-cp -f $gccdir/install-tools/include/*.h \
- $gccdir/include
+mv -f $gccdir/tmp $gccdir/include
+cp -f $gccdir/install-tools/include/*.h $gccdir/include
# but we don't want anything more from install-tools
rm -rf $gccdir/install-tools
%defattr(644,root,root,755)
%{_libdir}/libmudflap*.a
+%if %{with ada}
%files ada
%defattr(644,root,root,755)
%doc gcc/ada/ChangeLog
%defattr(644,root,root,755)
%{_libdir}/gcc/*/*/adalib/libgnarl.a
%{_libdir}/gcc/*/*/adalib/libgnat.a
+%endif
%files c++
%defattr(644,root,root,755)
%doc libstdc++-v3/docs/html
%dir %{_includedir}/c++
%{_includedir}/c++/%{version}
+%if %{with java}
%exclude %{_includedir}/c++/%{version}/java
%exclude %{_includedir}/c++/%{version}/javax
%exclude %{_includedir}/c++/%{version}/gcj
%exclude %{_includedir}/c++/%{version}/gnu
+%endif
%exclude %{_includedir}/c++/%{version}/*/bits/stdc++.h.gch
%{_libdir}/libstdc++.la
%attr(755,root,root) %{_libdir}/libstdc++.so
%defattr(644,root,root,755)
%{_libdir}/libstdc++.a
+%if %{with fortran}
%files fortran
%defattr(644,root,root,755)
%doc gcc/fortran/ChangeLog
%files -n libgfortran-static
%defattr(644,root,root,755)
%{_libdir}/libgfortran.a
+%endif
+%if %{with java}
%files java
%defattr(644,root,root,755)
%doc gcc/java/ChangeLog java-doc/*
%attr(755,root,root) %{_bindir}/gcj*
-#attr(755,root,root) %{_bindir}/gij see PR18909
+%attr(755,root,root) %{_bindir}/gij
+%attr(755,root,root) %{_bindir}/grepjar
%attr(755,root,root) %{_bindir}/jcf-dump
%attr(755,root,root) %{_bindir}/jv-*
-%attr(755,root,root) %{_bindir}/grepjar
%attr(755,root,root) %{_bindir}/*-gcj*
%attr(755,root,root) %{_libdir}/gcc/*/*/jc1
%attr(755,root,root) %{_libdir}/gcc/*/*/jvgenmain
%{_infodir}/gcj*
-%{_mandir}/man1/jcf-*
-%{_mandir}/man1/jv-*
-#{_mandir}/man1/gij*
%{_mandir}/man1/gcj*
+%{_mandir}/man1/gij*
%{_mandir}/man1/grepjar*
+%{_mandir}/man1/jcf-*
+%{_mandir}/man1/jv-*
%files java-tools
%defattr(644,root,root,755)
%doc libjava/{ChangeLog,LIBGCJ_LICENSE,NEWS,README,THANKS}
%attr(755,root,root) %{_bindir}/addr2name.awk
%attr(755,root,root) %{_libdir}/lib*cj*.so.*.*.*
+%attr(755,root,root) %{_libdir}/libgij.so.*.*.*
%attr(755,root,root) %{_libdir}/lib-org*.so.*.*.*
%{_libdir}/logging.properties
%{_libdir}/gcc/*/*/include/gcj
%dir %{_libdir}/security
%{_libdir}/security/*
-%dir %{_datadir}/java
-%{_datadir}/java/libgcj*.jar
+%{_javadir}/libgcj*.jar
%{_libdir}/lib*cj.spec
%{_libdir}/lib*cj*.la
%attr(755,root,root) %{_libdir}/lib*cj*.so
+%{_libdir}/libgij.la
+%attr(755,root,root) %{_libdir}/libgij.so
%attr(755,root,root) %{_libdir}/lib-org-*.so
%{_libdir}/lib-org-*.la
%{_pkgconfigdir}/libgcj.pc
%files -n libgcj-static
%defattr(644,root,root,755)
%{_libdir}/lib*cj*.a
+%{_libdir}/libgij.a
%{_libdir}/lib-org-*.a
%files -n libffi
%files -n libffi-static
%defattr(644,root,root,755)
%{_libdir}/libffi.a
+%endif
+%if %{with objc}
%files objc
%defattr(644,root,root,755)
%doc gcc/objc/README
%files -n libobjc-static
%defattr(644,root,root,755)
%{_libdir}/libobjc.a
+%endif