#
# Conditional build:
-# _without_ada - build without ADA support
-# _without_java - build without Java support
-# _without_objc - build without objc support
-#
+# _with_ada - build with ADA support
+# _without_java - build without Java support
+# _without_objc - build without objc support
+
%define DASHED_SNAP %{nil}
%define SNAP %(echo %{DASHED_SNAP} | sed -e "s#-##g")
-%define GCC_VERSION 3.2.3
-%define KSI_VERSION pre55
+%define GCC_VERSION 3.3
+%define KSI_VERSION 1.1.0.1567
Summary: GNU C Compiler
Summary(pl): Kompilator C GNU
Summary(pt_BR): C Compilador GNU (GCC)
Name: gcc
Version: %{GCC_VERSION}
-Release: 0.1
+Release: 1
Epoch: 5
License: GPL
Group: Development/Languages
Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{GCC_VERSION}/%{name}-%{GCC_VERSION}.tar.bz2
Source1: ftp://ftp.pld.org.pl/people/malekith/ksi/ksi-%{KSI_VERSION}.tar.gz
+# Source1-md5: 66f07491b44f06928fd95b0e65bb8cd3
Source2: %{name}-non-english-man-pages.tar.bz2
-Patch0: %{name}-slibdir.patch
+# Source2-md5: 4736f3422ddfb808423b745629acc321
+Patch0: %{name}-info.patch
Patch1: %{name}-paths.patch
-Patch2: %{name}-ada-no-addr2line.patch
-Patch3: %{name}-ada-no-prefix.o.patch
-Patch4: %{name}-nolocalefiles.patch
-Patch5: %{name}-gcc-page.c.patch
-Patch6: %{name}-info.patch
-Patch7: %{name}-ada-link-new-libgnat.patch
+Patch2: %{name}-nolocalefiles.patch
+Patch3: %{name}-ada-link-new-libgnat.patch
# -- stolen patches from RH --
Patch10: gcc32-ada-link.patch
-Patch11: gcc32-attr-visibility.patch
-Patch12: gcc32-attr-visibility2.patch
-Patch13: gcc32-attr-visibility3.patch
-Patch14: gcc32-attr-visibility4.patch
-Patch15: gcc32-attr-visibility5.patch
-Patch16: gcc32-boehm-gc-libs.patch
-Patch17: gcc32-bogus-inline.patch
-Patch18: gcc32-c++-nrv-test.patch
-Patch20: gcc32-c++-tsubst-asm.patch
-Patch21: gcc32-cfg-eh.patch
-Patch22: gcc32-debug-pr7241.patch
-
-Patch24: gcc32-duplicate-decl.patch
-Patch25: gcc32-dwarf2-pr6381.patch
-Patch26: gcc32-dwarf2-pr6436-test.patch
-Patch27: gcc32-fde-merge-compat.patch
-
-Patch29: gcc32-hard-reg-sharing.patch
-Patch30: gcc32-hard-reg-sharing2.patch
-Patch31: gcc32-i386-default-momit-leaf-frame-pointer.patch
-Patch32: gcc32-i386-memtest-test.patch
-Patch33: gcc32-i386-no-default-momit-leaf-frame-pointer.patch
-Patch34: gcc32-i386-pic-label-thunk.patch
-Patch35: gcc32-i386-profile-olfp.patch
-Patch36: gcc32-inline-label.patch
-Patch37: gcc32-java-no-rpath.patch
-Patch38: gcc32-pr6842.patch
-Patch39: gcc32-sparc-sll1.patch
-Patch40: gcc32-test-rh65771.patch
-Patch41: gcc32-test-rotate.patch
-Patch42: gcc32-tls-dwarf2.patch
-Patch43: gcc32-tls.patch
-Patch44: gcc32-tls2.patch
-Patch45: gcc32-tls3.patch
-Patch46: gcc32-tls4.patch
-Patch47: gcc32-tls5.patch
+Patch11: gcc32-boehm-gc-libs.patch
+Patch12: gcc32-bogus-inline.patch
+Patch13: gcc32-c++-nrv-test.patch
+Patch14: gcc32-c++-tsubst-asm.patch
+Patch15: gcc32-debug-pr7241.patch
+Patch16: gcc32-duplicate-decl.patch
+Patch17: gcc32-dwarf2-pr6381.patch
+Patch18: gcc32-dwarf2-pr6436-test.patch
+Patch19: gcc32-fde-merge-compat.patch
+Patch20: gcc32-i386-memtest-test.patch
+Patch21: gcc32-inline-label.patch
+Patch22: gcc32-java-no-rpath.patch
+Patch23: gcc32-test-rh65771.patch
+Patch24: gcc32-test-rotate.patch
BuildRequires: autoconf
BuildRequires: bison
BuildRequires: fileutils >= 4.0.41
BuildRequires: gcc
-%{!?_without_ada:BuildRequires: gcc-ada}
+%{?_with_ada:BuildRequires: gcc-ada}
BuildRequires: glibc-devel >= 2.2.5-20
BuildRequires: perl-devel
BuildRequires: texinfo >= 4.1
Group: Development/Libraries
Version: %{GCC_VERSION}
Requires: libstdc++ = %{GCC_VERSION}
-Requires: %{name}-c++
+Requires: %{name}-c++ = %{GCC_VERSION}
Obsoletes: libg++-devel
Obsoletes: libstdc++3-devel
%description -n libstdc++-static -l pl
Statycza biblioteka standardowa C++.
+%package -n libffi
+Summary: Foreign Function Interface library
+Summary(pl): Biblioteka zewnêtrznych wywo³añ funkcji
+Group: Libraries
+Version: %{GCC_VERSION}
+
+%description -n libffi
+The libffi library provides a portable, high level programming
+interface to various calling conventions. This allows a programmer to
+call any function specified by a call interface description at run
+time.
+
+%description -n libffi -l pl
+Biblioteka libffi dostarcza przno¶nego, wysokopoziomowego miêdzymordzia
+do ró¿nych konwencji wywo³añ funkcji. Pozwala to programi¶cie wywo³ywaæ
+dowolne funkcje podaj±c konwencjê wywo³ania w czasie wykonania.
+
+%package -n libffi-devel
+Summary: Development files for Foreign Function Interface library
+Summary(pl): Pliki nag³ówkowe dla libffi
+Group: Development/Libraries
+Version: %{GCC_VERSION}
+Requires: libffi = %{GCC_VERSION}
+
+%description -n libffi-devel
+Development files for Foreign Function Interface library.
+
+%description -n libffi-devel -l pl
+Pliki nag³ówkowe dla libffi.
+
+%package -n libffi-static
+Summary: Static Foreign Function Interface library
+Summary(pl): Statyczna biblioteka libffi
+Group: Development/Libraries
+Version: %{GCC_VERSION}
+Requires: libffi-devel = %{GCC_VERSION}
+
+%description -n libffi-static
+Static Foreign Function Interface library.
+
+%description -n libffi-static -l pl
+Statyczna biblioteka libffi.
+
%package ada
Summary: Ada support for gcc
Summary(pl): Obs³uga Ady do gcc
%patch1 -p1
%patch2 -p1
%patch3 -p1
-%patch4 -p1
-%patch5 -p1
-%patch7 -p1
%patch10 -p1
-%patch11
-%patch12
+#%patch11
+#%patch12
%patch13
%patch14
%patch15
-#%patch16
+
+%patch16
%patch17
%patch18
+%patch19
%patch20
%patch21
%patch22
-
+%patch23
%patch24
-%patch25
-%patch26
-%patch27
-%patch29
-%patch30
-%patch31
-%patch32
-%patch33
-%patch34
-%patch35
-%patch36
-%patch37
-%patch38
-%patch39
-%patch40
-%patch41
-%patch42
-%patch43
-%patch44
-%patch45
-%patch46
-%patch47
-
-%patch6 -p1
-
-perl -p -i -e 's/";/ (PLD Linux)";/' gcc/version.c
+
+# because we distribute modified version of gcc...
+perl -pi -e 's/(version.*)";/$1 (PLD Linux)";/' gcc/version.c
+perl -pi -e 's@(bug_report_url.*<URL:).*";@$1http://bugs.pld.org.pl/>";@' gcc/version.c
%build
# cd gcc && autoconf; cd ..
--enable-shared \
--enable-threads=posix \
--enable-__cxa_atexit \
- --enable-languages="c,c++,f77,gcov%{?!_without_objc:,objc},ksi%{!?_without_ada:,ada}%{!?_without_java:,java}" \
+ --enable-languages="c,c++,f77%{?!_without_objc:,objc}%{?_with_ada:,ada}%{!?_without_java:,java},ksi" \
--enable-c99 \
--enable-long-long \
--enable-multilib \
PATH=$PATH:/sbin:%{_sbindir}
# this dirty hack is relict of setting, where objdir is subdir of srcdir
-%if %{!?_without_ada:1}%{?_without_ada:0}
+%if 0%{?_with_ada:1}
sed -e 's/srcdir=\$(fsrcdir)/srcdir=\$(fsrcdir) VPATH=\$(fsrcdir)/' \
gcc/ada/Makefile > makefile.tmp
mv -f makefile.tmp gcc/ada/Makefile
mandir=%{_mandir} \
infodir=%{_infodir}
-%if %{!?_without_ada:1}%{?_without_ada:0}
+%if 0%{?_with_ada:1}
%{__make} -C obj-%{_target_platform}/gcc gnatlib gnattools gnatlib-shared \
LDFLAGS_FOR_TARGET="%{rpmldflags}" \
mandir=%{_mandir} \
infodir=%{_infodir}
-
-# make Gnat Reference Manual
-%{__make} -C obj-%{_target_platform}/gcc/ada doc
%endif
%install
PATH=$PATH:/sbin:%{_sbindir}
%{__make} install \
- prefix=$RPM_BUILD_ROOT%{_prefix} \
- mandir=$RPM_BUILD_ROOT%{_mandir} \
- infodir=$RPM_BUILD_ROOT%{_infodir} \
- slibdir=$RPM_BUILD_ROOT/lib
+ DESTDIR=$RPM_BUILD_ROOT
ln -sf gcc $RPM_BUILD_ROOT%{_bindir}/cc
echo ".so gcc.1" > $RPM_BUILD_ROOT%{_mandir}/man1/cc.1
ln -sf g77 $RPM_BUILD_ROOT%{_bindir}/f77
echo ".so g77.1" > $RPM_BUILD_ROOT%{_mandir}/man1/f77.1
-%if %{!?_without_ada:1}%{?_without_ada:0}
+%if 0%{?_with_ada:1}
# move ada shared libraries to proper place...
-mv $RPM_BUILD_ROOT%{_libdir}/gcc-lib/%{_target_cpu}*/*/adalib/*-*so.1 \
- $RPM_BUILD_ROOT%{_libdir}
-rm -f $RPM_BUILD_ROOT%{_libdir}/gcc-lib/%{_target_cpu}*/*/adalib/*.so.1
-(cd $RPM_BUILD_ROOT%{_libdir} && \
- ln -s libgnat-*so.1 libgnat.so.1 && ln -s libgnat-*so.1 libgnat.so && \
- ln -s libgnarl-*so.1 libgnarl.so.1 && ln -s libgnarl-*so.1 libgnarl.so)
+mv $RPM_BUILD_ROOT%{_libdir}/gcc-lib/%{_target_cpu}*/*/adalib/*.so.1 \
+ $RPM_BUILD_ROOT%{_libdir}/
+# check if symlink to be made is valid
+test -f $RPM_BUILD_ROOT%{_libdir}/libgnat-3.15.so.1
+ln -sf libgnat-3.15.so.1 $RPM_BUILD_ROOT%{_libdir}/libgnat-3.15.so
+ln -sf libgnarl-3.15.so.1 $RPM_BUILD_ROOT%{_libdir}/libgnarl-3.15.so
+ln -sf libgnat-3.15.so $RPM_BUILD_ROOT%{_libdir}/libgnat.so
+ln -sf libgnarl-3.15.so $RPM_BUILD_ROOT%{_libdir}/libgnarl.so
%endif
ln -sf %{_bindir}/cpp $RPM_BUILD_ROOT/lib/cpp
cd ..
-%if %{!?_without_ada:1}%{?_without_ada:0}
-install obj-%{_target_platform}/gcc/ada/gnat_rm.info* $RPM_BUILD_ROOT%{_infodir}
-install obj-%{_target_platform}/gcc/ada/gnat_ug_unx.info* $RPM_BUILD_ROOT%{_infodir}
-%endif
-
%if %{!?_without_java:1}%{?_without_java:0}
install -d java-doc
cp -f libjava/doc/cni.sgml libjava/READ* java-doc
done
# normalize libdir, to avoid propagation of unnecessary RPATHs by libtool
for f in libstdc++.la libsupc++.la libg2c.la \
- %{!?_without_java:libgcj.la} %{!?_without_objc:libobjc.la}; do
+ %{!?_without_java:libgcj.la lib-org-w3c-dom.la lib-org-xml-sax.la libffi.la} \
+ %{!?_without_objc:libobjc.la}; do
perl -pi -e "s@^libdir='.*@libdir='/usr/lib'@" $RPM_BUILD_ROOT%{_libdir}/$f
done
bzip2 -dc %{SOURCE2} | tar xf - -C $RPM_BUILD_ROOT%{_mandir}
mv -f $RPM_BUILD_ROOT%{_mandir}/ja/man1/{cccp,cpp}.1
+# include/ contains install-tools/include/* and headers that were fixed up
+# by fixincludes, we don't want former
+gccdir=$(echo $RPM_BUILD_ROOT%{_libdir}/gcc-lib/%{_target_cpu}*/*/)
+mkdir $gccdir/tmp
+# we have to save these however
+mv -f $gccdir/include/{%{?!_without_objc:objc,}g2c.h,syslimits.h%{?!_without_java:,gcj}} $gccdir/tmp
+rm -rf $gccdir/include
+mv -f $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/
+
%find_lang %{name}
%find_lang libstdc\+\+
%postun -p /sbin/ldconfig -n libgcj
%post -p /sbin/ldconfig -n libgnat
%postun -p /sbin/ldconfig -n libgnat
+%post -p /sbin/ldconfig -n libffi
+%postun -p /sbin/ldconfig -n libffi
%files -f %{name}.lang
%defattr(644,root,root,755)
%lang(ja) %{_mandir}/ja/man1/gcc.1*
%{_infodir}/gcc*
+%attr(755,root,root) %{_slibdir}/lib*.so
%{_libdir}/gcc-lib/%{_target_cpu}*/*/libgcc.a
%{_libdir}/gcc-lib/%{_target_cpu}*/*/libgcc_eh.a
%{_libdir}/gcc-lib/%{_target_cpu}*/*/specs
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/cc1
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/collect2
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/float.h
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/iso646.h
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/limits.h
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/stdarg.h
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/stdbool.h
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/stddef.h
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/syslimits.h
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/varargs.h
-%ifarch %{ix86}
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/mmintrin.h
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/xmmintrin.h
-%endif
-%ifarch ppc
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/altivec.h
-%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/ppc-asm.h
-%endif
+%{_libdir}/gcc-lib/%{_target_cpu}*/*/include/*.h
+%exclude %{_libdir}/gcc-lib/%{_target_cpu}*/*/include/g2c.h
%files -n libgcc
%defattr(644,root,root,755)
-%attr(755,root,root) %{_slibdir}/lib*.so*
+%attr(755,root,root) %{_slibdir}/lib*.so.*
%files c++
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/%{_target_cpu}*-g++
%attr(755,root,root) %{_bindir}/c++
%attr(755,root,root) %{_bindir}/%{_target_cpu}*-c++
-%attr(755,root,root) %{_bindir}/c++filt
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/cc1plus
%{_libdir}/libsupc++.la
%ifarch ppc
%endif
%{_libdir}/libsupc++.a
%{_mandir}/man1/g++.1*
-%lang(es) %{_mandir}/es/man1/c++filt.1*
%lang(ja) %{_mandir}/ja/man1/g++.1*
%files -n libstdc++ -f libstdc++.lang
%attr(755,root,root) %{_bindir}/jcf-dump
%attr(755,root,root) %{_bindir}/jv-*
%attr(755,root,root) %{_bindir}/grepjar
+%attr(755,root,root) %{_bindir}/%{_target_cpu}*-gcj
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/jc1
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/jvgenmain
%{_infodir}/gcj*
%{_mandir}/man1/jv-*
%{_mandir}/man1/gij*
%{_mandir}/man1/gcj*
+%{_mandir}/man1/grepjar*
%files java-tools
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/rmi*
%attr(755,root,root) %{_bindir}/jar
%{_mandir}/man1/rmi*
+%{_mandir}/man1/jar*
+%{_infodir}/fastjar*
%files -n libgcj
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/addr2name.awk
-%attr(755,root,root) %{_libdir}/lib*cj*.so.*
+%attr(755,root,root) %{_libdir}/lib*cj*.so.*.*.*
+%attr(755,root,root) %{_libdir}/lib-org*.so.*.*.*
%ifarch ppc
%attr(755,root,root) %{_libdir}/nof/lib*cj*.so.*
%endif
%defattr(644,root,root,755)
%{_includedir}/java
%{_includedir}/javax
-%{_includedir}/org
+#%%{_includedir}/org
%{_includedir}/gcj
%{_includedir}/j*.h
%{_includedir}/gnu/*
%{_libdir}/lib*cj.spec
%{_libdir}/lib*cj*.la
%attr(755,root,root) %{_libdir}/lib*cj*.so
+%attr(755,root,root) %{_libdir}/lib-org-*.so
+%{_libdir}/lib-org-*.la
%ifarch ppc
%{_libdir}/nof/lib*cj*.la
%attr(755,root,root) %{_libdir}/nof/lib*cj*.so
%files -n libgcj-static
%defattr(644,root,root,755)
%{_libdir}/lib*cj*.a
+%{_libdir}/lib-org-*.a
%ifarch ppc
%{_libdir}/nof/lib*cj*.a
%endif
+
+%files -n libffi
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libffi-*.so
+
+%files -n libffi-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libffi.so
+%{_libdir}/libffi.la
+%{_includedir}/ffi*
+
+%files -n libffi-static
+%defattr(644,root,root,755)
+%{_libdir}/libffi.a
%endif
-%if %{!?_without_ada:1}%{?_without_ada:0}
+%if 0%{?_with_ada:1}
%files ada
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/gnat1
%{_libdir}/gcc-lib/%{_target_cpu}*/*/adalib/Makefile.adalib
%attr(755,root,root) %{_bindir}/gnat*
%{_infodir}/gnat*
-%attr(755,root,root) %{_libdir}/libgnat.so*
-%attr(755,root,root) %{_libdir}/libgnarl.so*
+%attr(755,root,root) %{_libdir}/libgnat*.so
+%attr(755,root,root) %{_libdir}/libgnarl*.so
%files -n libgnat
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libgna*-*so.1
+%attr(755,root,root) %{_libdir}/libgna*.so.1
%files -n libgnat-static
%defattr(644,root,root,755)
%defattr(644,root,root,755)
%attr(755,root,root) %{_slibdir}/cpp
%attr(755,root,root) %{_bindir}/cpp
-%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/cpp0
-%attr(755,root,root) %{_libdir}/gcc-lib/%{_target_cpu}*/*/tradcpp0
%{_mandir}/man1/cpp.1*
%lang(ja) %{_mandir}/ja/man1/cpp.1*
%{_infodir}/cpp*