-# NOTE: despite lower soname, libffi is newer than standalone 3.0.9
+# NOTE: despite lower soname, libffi is newer than standalone 3.0.10
#
# TODO:
# - gconf peer? (but libgcj needs split anyway)
%bcond_without gomp # build without OpenMP support
%bcond_without mudflap # build without Mudflap pointer debugging support
%bcond_without multilib # build without multilib support (it needs glibc[32&64]-devel)
-%bcond_with profiling # build with profiling
+%bcond_without profiling # build without profiling
%bcond_without python # build without libstdc++ printers for gdb and aot-compile for java
+%bcond_without asan # build without Address Sanitizer library
+%bcond_without tsan # build without Thread Sanitizer library
+%bcond_without atomic # build without library for atomic operations not supported by hardware
+%bcond_without gcc_libffi # packaging gcc libffi for system usage
+ # note: libgcj and libgo always have convenience gcc libffi linked in
# - libgcj options:
%bcond_without alsa # don't build libgcj ALSA MIDI interface
%bcond_without dssi # don't build libgcj DSSI MIDI interface
# - other:
%bcond_without bootstrap # omit 3-stage bootstrap
%bcond_with tests # torture gcc
+%bcond_with symvers # enable versioned symbols in libstdc++ (WARNING: changes soname from .so.6 to so.7)
+%if %{with symvers}
+%define cxx_sover 7
+%else
+%define cxx_sover 6
+%endif
+
+# go, java and objcxx require C++
%if %{without cxx}
%undefine with_go
%undefine with_java
%undefine with_objcxx
%endif
-
+# objcxx requires objc
%if %{without objc}
%undefine with_objcxx
%endif
%undefine with_multilib
%endif
-%ifarch i386 i486 i586
-# __i686.get_pc_thunk.bx undefined in libgo (TODO: recheck on gcc updates)
-%undefine with_go
+%ifnarch %{ix86} %{x8664}
+%undefine with_atomic
+%endif
+
+%ifnarch %{ix86} %{x8664}
+%undefine with_asan
+%endif
+
+%ifnarch %{x8664}
+%undefine with_tsan
%endif
-%define major_ver 4.6
+%define major_ver 4.8
%define minor_ver 3
%define major_ecj_ver 4.5
# class data version seen with file(1) that this jvm is able to load
%define _classdataversion 50.0
-%define gcj_soname_ver 12
+%define gcj_soname_ver 14
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(pt_BR.UTF-8): Coleção dos compiladores GNU: o compilador C e arquivos compartilhados
Name: gcc
Version: %{major_ver}.%{minor_ver}
-Release: 5
+Release: 1
Epoch: 6
License: GPL v3+
Group: Development/Languages
Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{version}/%{name}-%{version}.tar.bz2
-# Source0-md5: 773092fe5194353b02bb0110052a972e
+# Source0-md5: 7c60f24fab389f77af203d2516ee110f
Source1: %{name}-optimize-la.pl
Source2: ftp://sourceware.org/pub/java/ecj-%{major_ecj_ver}.jar
# Source2-md5: d7cd6a27c8801e66cbaa964a039ecfdb
# check libffi version with libffi/configure.ac
Source3: libffi.pc.in
-# svn diff -x --ignore-eol-style svn://gcc.gnu.org/svn/gcc/tags/gcc_4_6_3_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch > gcc-branch.diff
-Patch100: %{name}-branch.diff
+# For creating branch.diff please run:
+# svn diff -x --ignore-eol-style --force svn://gcc.gnu.org/svn/gcc/tags/gcc_4_8_3_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_8-branch > gcc-branch.diff
Patch0: %{name}-info.patch
+Patch1: %{name}-cloog.patch
Patch2: %{name}-nodebug.patch
Patch3: %{name}-ada-link.patch
-Patch7: %{name}-libjava-multilib.patch
-Patch8: %{name}-enable-java-awt-qt.patch
-# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41757
-Patch12: %{name}-plugin-decl-hook.patch
-Patch13: issue4664051.patch
-Patch14: %{name}-extern-template-sed.patch
+Patch4: %{name}-libjava-multilib.patch
+Patch5: %{name}-enable-java-awt-qt.patch
+Patch6: %{name}-install-libffi.patch
URL: http://gcc.gnu.org/
BuildRequires: autoconf >= 2.64
%{?with_tests:BuildRequires: autogen}
BuildRequires: binutils >= 3:2.17.50.0.9-1
BuildRequires: bison
BuildRequires: chrpath >= 0.13-2
-BuildRequires: cloog-ppl-devel
+BuildRequires: cloog-isl-devel >= 0.17.0
+BuildRequires: cloog-isl-devel < 0.19
%{?with_tests:BuildRequires: dejagnu}
BuildRequires: elfutils-devel >= 0.145-1
BuildRequires: fileutils >= 4.0.41
%if %{with multilib}
BuildRequires: gcc(multilib)
%ifarch %{x8664}
-BuildRequires: glibc-devel(i686)
+BuildRequires: glibc-devel(ix86)
%endif
%endif
+BuildRequires: gmp-c++-devel >= 4.1
BuildRequires: gmp-devel >= 4.1
+BuildRequires: isl-devel >= 0.10
+BuildRequires: isl-devel < 0.13
BuildRequires: libmpc-devel
BuildRequires: mpfr-devel >= 2.3.0
-BuildRequires: ppl-devel
+BuildRequires: ppl-devel >= 0.11
%if %{with python}
BuildRequires: python-devel
BuildRequires: rpm-pythonprov
%{?with_mozilla:BuildRequires: xulrunner-devel >= 1.8.1.3-1.20070321.5}
%endif
BuildConflicts: pdksh < 5.2.14-50
-Requires: binutils >= 3:2.20.51.0.2
+Requires: binutils >= 3:2.23
Requires: libgcc = %{epoch}:%{version}-%{release}
Provides: cpp = %{epoch}:%{version}-%{release}
%{?with_ada:Provides: gcc(ada)}
%define filterout -fwrapv -fno-strict-aliasing -fsigned-char
%define filterout_ld -Wl,--as-needed
-%define skip_post_check_so '.*(libmudflap|libmudflapth|libxmlj|lib-gnu-awt-xlib)\.so.*'
+# functions with printf format attribute but with special parser and also
+# receiving non constant format strings
+%define Werror_cflags %{nil}
+
+%define skip_post_check_so '.*(libgo|libmudflap|libmudflapth|libxmlj|lib-gnu-awt-xlib)\.so.*'
%description
A compiler aimed at integrating all the optimizations and features
%{?with_multilib:Provides: gcc(multilib)}
Obsoletes: libgcc32
%ifarch %{x8664}
-Requires: glibc-devel(i686)
+Requires: glibc-devel(ix86)
%endif
%description multilib
Summary: C++ standard library API documentation
Summary(pl.UTF-8): Dokumentacja API biblioteki standardowej C++
Group: Documentation
+%if "%{_rpmversion}" >= "5"
+BuildArch: noarch
+%endif
%description -n libstdc++-apidocs
API and internal documentation for C++ standard library.
%package fortran-multilib
Summary: Fortran 95 32-bit support for gcc
-Summary(pl.UTF-8): Obsługa binariów 32-bitowych Fortrana 95 dla gcc
+Summary(pl.UTF-8): Obsługa binariów 32-bitowych Fortranu 95 dla gcc
Group: Development/Languages/Fortran
Requires: %{name}-fortran = %{epoch}:%{version}-%{release}
Requires: libgfortran-multilib = %{epoch}:%{version}-%{release}
%package -n libgfortran
Summary: Fortran 95 Library
Summary(es.UTF-8): Biblioteca de Fortran 95
-Summary(pl.UTF-8): Biblioteka Fortrana 95
+Summary(pl.UTF-8): Biblioteka Fortranu 95
License: GPL v2+ with unlimited link permission
Group: Libraries
Requires: libquadmath = %{epoch}:%{version}-%{release}
Biblioteca de Fortran 95.
%description -n libgfortran -l pl.UTF-8
-Biblioteka Fortrana 95.
+Biblioteka Fortranu 95.
%package -n libgfortran-multilib
Summary: Fortran 95 Library - 32-bit version
-Summary(pl.UTF-8): Biblioteka Fortrana 95 - wersja 32-bitowa
+Summary(pl.UTF-8): Biblioteka Fortranu 95 - wersja 32-bitowa
License: GPL v2+ with unlimited link permission
Group: Libraries
Requires: libquadmath-multilib = %{epoch}:%{version}-%{release}
Fortran 95 Library - 32-bit version.
%description -n libgfortran-multilib -l pl.UTF-8
-Biblioteka Fortrana 95 - wersja 32-bitowa.
+Biblioteka Fortranu 95 - wersja 32-bitowa.
%package -n libgfortran-static
Summary: Static Fortran 95 Library
Summary(es.UTF-8): Bibliotecas estáticas de Fortran 95
-Summary(pl.UTF-8): Statyczna Biblioteka Fortrana 95
+Summary(pl.UTF-8): Statyczna Biblioteka Fortranu 95
License: GPL v2+ with unlimited link permission
Group: Development/Libraries
Requires: libgfortran = %{epoch}:%{version}-%{release}
Bibliotecas estáticas de Fortran 95.
%description -n libgfortran-static -l pl.UTF-8
-Statyczna biblioteka Fortrana 95.
+Statyczna biblioteka Fortranu 95.
%package -n libgfortran-multilib-static
Summary: Static Fortran 95 Library - 32-bit version
-Summary(pl.UTF-8): Statyczna Biblioteka Fortrana 95 - wersja 32-bitowa
+Summary(pl.UTF-8): Statyczna Biblioteka Fortranu 95 - wersja 32-bitowa
License: GPL v2+ with unlimited link permission
Group: Development/Libraries
Requires: libgfortran-multilib = %{epoch}:%{version}-%{release}
Static Fortran 95 Library - 32-bit version.
%description -n libgfortran-multilib-static -l pl.UTF-8
-Statyczna biblioteka Fortrana 95 - wersja 32-bitowa.
+Statyczna biblioteka Fortranu 95 - wersja 32-bitowa.
%package -n libquadmath
Summary: GCC __float128 shared support library
%description -n libgo-multilib-static -l pl.UTF-8
Statyczna biblioteka języka Go - wersja 32-bitowa.
+%package -n libasan
+Summary: The Address Sanitizer library
+Summary(pl.UTF-8): Biblioteka Address Sanitizer do kontroli adresów
+Group: Libraries
+
+%description -n libasan
+This package contains the Address Sanitizer library which is used for
+-fsanitize=address instrumented programs.
+
+%description -n libasan -l pl.UTF-8
+Ten pakiet zawiera bibliotekę Address Sanitizer, służącą do
+kontroli adresów w programach kompilowanych z opcją
+-fsanitize=address.
+
+%package -n libasan-multilib
+Summary: The Address Sanitizer library - 32-bit version
+Summary(pl.UTF-8): Biblioteka Address Sanitizer do kontroli adresów - wersja 32-bitowa
+Group: Libraries
+
+%description -n libasan-multilib
+This package contains 32-bit version of the Address Sanitizer library
+which is used for -fsanitize=address instrumented programs.
+
+%description -n libasan-multilib -l pl.UTF-8
+Ten pakiet zawiera 32-bitową wersję biblioteki Address Sanitizer,
+służącej do kontroli adresów w programach kompilowanych z opcją
+-fsanitize=address.
+
+%package -n libasan-devel
+Summary: Development files for the Address Sanitizer library
+Summary(pl.UTF-8): Pliki programistyczne biblioteki Address Sanitizer
+Group: Development/Libraries
+Requires: libasan = %{epoch}:%{version}-%{release}
+
+%description -n libasan-devel
+This package contains development files for the Address Sanitizer
+library.
+
+%description -n libasan-devel -l pl.UTF-8
+Ten pakiet zawiera pliki programistyczne biblioteki Address Sanitizer.
+
+%package -n libasan-multilib-devel
+Summary: Development files for the Address Sanitizer library - 32-bit version
+Summary(pl.UTF-8): Pliki programistyczne biblioteki Address Sanitizer - wersja 32-bitowa
+Group: Development/Libraries
+Requires: libasan-multilib = %{epoch}:%{version}-%{release}
+
+%description -n libasan-multilib-devel
+This package contains the development files for 32-bit version of the
+Address Sanitizer library.
+
+%description -n libasan-multilib-devel -l pl.UTF-8
+Ten pakiet zawiera pliki programistyczne 32-bitowej wersji biblioteki
+Address Sanitizer.
+
+%package -n libasan-static
+Summary: The Address Sanitizer static library
+Summary(pl.UTF-8): Statyczna biblioteka Address Sanitizer
+Group: Development/Libraries
+Requires: libasan-devel = %{epoch}:%{version}-%{release}
+
+%description -n libasan-static
+This package contains Address Sanitizer static library.
+
+%description -n libasan-static -l pl.UTF-8
+Ten pakiet zawiera statyczną bibliotekę Address Sanitizer.
+
+%package -n libasan-multilib-static
+Summary: The Address Sanitizer static library - 32-bit version
+Summary(pl.UTF-8): Statyczna biblioteka Address Sanitizer - wersja 32-bitowa
+Group: Development/Libraries
+Requires: libasan-multilib-devel = %{epoch}:%{version}-%{release}
+
+%description -n libasan-multilib-static
+This package contains 32-bit version of the Address Sanitizer static
+library.
+
+%description -n libasan-multilib-static -l pl.UTF-8
+Ten pakiet zawiera 32-bitową wersję statycznej biblioteki Address
+Sanitizer.
+
+%package -n libtsan
+Summary: The Thread Sanitizer library
+Summary(pl.UTF-8): Biblioteka Thread Sanitizer do kontroli wielowątkowości
+Group: Libraries
+
+%description -n libtsan
+This package contains the Thread Sanitizer library which is used for
+-fsanitize=thread instrumented programs.
+
+%description -n libtsan -l pl.UTF-8
+Ten pakiet zawiera bibliotekę Thread Sanitizer, służącą do kontroli
+wielowątkowości w programach kompilowanych z opcją -fsanitize=thread.
+
+%package -n libtsan-devel
+Summary: Development files for the Thread Sanitizer library
+Summary(pl.UTF-8): Pliki programistyczne biblioteki Thread Sanitizer
+Group: Development/Libraries
+Requires: libtsan = %{epoch}:%{version}-%{release}
+
+%description -n libtsan-devel
+This package contains development files for Thread Sanitizer library.
+
+%description -n libtsan-devel -l pl.UTF-8
+Ten pakiet zawiera pliki programistyczne biblioteki Address Sanitizer.
+
+%package -n libtsan-static
+Summary: The Thread Sanitizer static library
+Summary(pl.UTF-8): Statyczna biblioteka Thread Sanitizer
+Group: Development/Libraries
+Requires: libtsan-devel = %{epoch}:%{version}-%{release}
+
+%description -n libtsan-static
+This package contains Thread Sanitizer static library.
+
+%description -n libtsan-static -l pl.UTF-8
+Ten pakiet zawiera statyczną bibliotekę Thread Sanitizer.
+
+%package -n libatomic
+Summary: The GNU Atomic library
+Summary(pl.UTF-8): Biblioteka GNU Atomic
+Group: Libraries
+
+%description -n libatomic
+This package contains the GNU Atomic library which is a GCC support
+library for atomic operations not supported by hardware.
+
+%description -n libatomic -l pl.UTF-8
+Ten pakiet zawiera bibliotekę GNU Atomic, będącą biblioteką GCC
+wspierającą operacje atomowe na sprzęcie ich nie obsługującym.
+
+%package -n libatomic-multilib
+Summary: The GNU Atomic library - 32-bit version
+Summary(pl.UTF-8): Biblioteka GNU Atomic - wersja 32-bitowa
+Group: Libraries
+
+%description -n libatomic-multilib
+This package contains 32-bit version of the GNU Atomic library which
+is a GCC support library for atomic operations not supported by
+hardware.
+
+%description -n libatomic-multilib -l pl.UTF-8
+Ten pakiet zawiera 32-bitową wersję biblioteki GNU Atomic, będącej
+biblioteką GCC wspierającą operacje atomowe na sprzęcie ich nie
+obsługującym.
+
+%package -n libatomic-devel
+Summary: Development files for the GNU Atomic library
+Summary(pl.UTF-8): Pliki programistyczne biblioteki GNU Atomic
+Group: Development/Libraries
+Requires: libatomic = %{epoch}:%{version}-%{release}
+
+%description -n libatomic-devel
+This package contains development files for the GNU Atomic library.
+
+%description -n libatomic-devel -l pl.UTF-8
+Ten pakiet zawiera pliki programistyczne biblioteki GNU Atomic.
+
+%package -n libatomic-multilib-devel
+Summary: Development files for the GNU Atomic static library - 32-bit version
+Summary(pl.UTF-8): Pliki programistyczne biblioteki GNU Atomic - wersja 32-bitowa
+Group: Development/Libraries
+Requires: libatomic-multilib = %{epoch}:%{version}-%{release}
+
+%description -n libatomic-multilib-devel
+This package contains the development files for 32-bit version of the
+GNU Atomic library.
+
+%description -n libatomic-multilib-devel -l pl.UTF-8
+Ten pakiet zawiera pliki programistyczne 32-bitowej wersji biblioteki
+GNU Atomic.
+
+%package -n libatomic-static
+Summary: The GNU Atomic static library
+Summary(pl.UTF-8): Statyczna biblioteka GNU Atomic
+Group: Development/Libraries
+Requires: libatomic-devel = %{epoch}:%{version}-%{release}
+
+%description -n libatomic-static
+This package contains GNU Atomic static library.
+
+%description -n libatomic-static
+Ten pakiet zawiera statyczną bibliotekę GNU Atomic.
+
+%package -n libatomic-multilib-static
+Summary: The GNU Atomic static library - 32-bit version
+Summary(pl.UTF-8): Statyczna biblioteka GNU Atomic - wersja 32-bitowa
+Group: Development/Libraries
+Requires: libatomic-multilib-devel = %{epoch}:%{version}-%{release}
+
+%description -n libatomic-multilib-static
+This package contains 32-bit version of the GNU Atomic static
+library.
+
+%description -n libatomic-multilib-static -l pl.UTF-8
+Ten pakiet zawiera 32-bitową wersję statycznej biblioteki GNU Atomic.
+
%prep
%setup -q
-%patch100 -p0
%patch0 -p1
+%patch1 -p1
%patch2 -p1
%patch3 -p1
-
-%patch7 -p0
+%patch4 -p0
%if %{with qt}
-%patch8 -p1
+%patch5 -p1
+%endif
+%if %{with gcc_libffi}
+%patch6 -p0
%endif
-%patch12 -p1
-%patch13 -p0
-%patch14 -p1
mv ChangeLog ChangeLog.general
--infodir=%{_infodir} \
--mandir=%{_mandir} \
--x-libraries=%{_libdir} \
+ --%{?with_bootstrap:en}%{!?with_bootstrap:dis}able-bootstrap \
+ --disable-build-with-cxx \
+ --disable-build-poststage1-with-cxx \
+ --enable-c99 \
--enable-checking=release \
+%ifarch %{ix86} %{x8664}
+ --disable-cld \
+%endif
+ %{?with_fortran:--enable-cmath} \
+ --enable-decimal-float \
--enable-gnu-unique-object \
- --with-linker-hash-style=gnu \
- --enable-shared \
- --enable-threads=posix \
- --enable-linker-build-id \
- --enable-linux-futex \
+ --enable-initfini-array \
--enable-languages="c%{?with_cxx:,c++}%{?with_fortran:,fortran}%{?with_objc:,objc}%{?with_objcxx:,obj-c++}%{?with_ada:,ada}%{?with_java:,java}%{?with_go:,go}" \
--%{?with_gomp:en}%{!?with_gomp:dis}able-libgomp \
+ --enable-libitm \
--%{?with_mudflap:en}%{!?with_mudflap:dis}able-libmudflap \
- --enable-c99 \
+ --enable-linker-build-id \
+ --enable-linux-futex \
--enable-long-long \
- --enable-decimal-float=yes \
%{!?with_multilib:--disable-multilib} \
--enable-nls \
- --disable-werror \
--enable-lto \
--enable-plugin \
-%ifarch %{ix86} %{x8664}
- --disable-cld \
-%endif
+ --enable-shared \
+ --enable-threads=posix \
+ --disable-werror \
+ --with-cloog \
+ --with-demangler-in-ld \
--with-gnu-as \
--with-gnu-ld \
- --with-demangler-in-ld \
- --with-system-zlib \
+ --with-linker-hash-style=gnu \
+ --with-long-double-128 \
+ --with-ppl \
+ --disable-ppl-version-check \
--with-slibdir=%{_slibdir} \
%ifnarch ia64
--without-system-libunwind \
%else
--with-system-libunwind \
%endif
+ --with-system-zlib \
%{!?with_java:--without-x} \
- %{?with_fortran:--enable-cmath} \
- --with-long-double-128 \
- --with-ppl \
- --with-cloog-ppl \
%if %{with cxx}
- --with-gxx-include-dir=%{_includedir}/c++/%{version} \
- --disable-libstdcxx-pch \
--enable-__cxa_atexit \
--enable-libstdcxx-allocator=new \
+ --disable-libstdcxx-pch \
+ --enable-libstdcxx-threads \
+ --enable-libstdcxx-time=rt \
+ --enable-libstdcxx-visibility \
+ --enable-symvers=gnu%{?with_symvers:-versioned-namespace} \
+ --with-gxx-include-dir=%{_includedir}/c++/%{version} \
%endif
%if %{with java}
- --enable-libjava-multilib=no \
%{!?with_alsa:--disable-alsa} \
%{!?with_dssi:--disable-dssi} \
--disable-gconf-peer \
+ %{?with_gtk:--enable-gtk-cairo} \
%if %{with x}
--enable-java-awt="xlib%{?with_gtk:,gtk}%{?with_qt:,qt}" \
%endif
- %{?with_mozilla:--enable-plugin} \
+ --enable-jni \
--enable-libgcj \
--enable-libgcj-multifile \
--enable-libgcj-database \
- %{?with_gtk:--enable-gtk-cairo} \
- --enable-jni \
+ --disable-libjava-multilib \
+ %{?with_mozilla:--enable-plugin} \
+ --enable-static-libjava \
--enable-xmlj \
%endif
- --%{?with_bootstrap:en}%{!?with_bootstrap:dis}able-bootstrap \
--with-pkgversion="TLD-Linux" \
--with-bugurl="http://www.tld-linux.org" \
%{_target_platform}
%{?with_bootstrap:%{?with_profiling:profiledbootstrap}} \
GCJFLAGS="%{rpmcflags}" \
BOOT_CFLAGS="%{rpmcflags}" \
- STAGE1_CFLAGS="%{rpmcflags} -O0" \
+ STAGE1_CFLAGS="%{rpmcflags} -O1 -g0" \
GNATLIBCFLAGS="%{rpmcflags}" \
LDFLAGS_FOR_TARGET="%{rpmldflags}" \
mandir=%{_mandir} \
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
+echo ".so man1/gcc.1" > $RPM_BUILD_ROOT%{_mandir}/man1/cc.1
libssp=$(cd $RPM_BUILD_ROOT%{_libdir}; echo libssp.so.*.*.*)
mv $RPM_BUILD_ROOT%{_libdir}/libssp.so.* $RPM_BUILD_ROOT%{_slibdir}
ln -sf %{_slibdir}/$libssp $RPM_BUILD_ROOT%{_libdir}/libssp.so
+
+libitm=$(cd $RPM_BUILD_ROOT%{_libdir}; echo libitm.so.*.*.*)
+mv $RPM_BUILD_ROOT%{_libdir}/libitm.so.* $RPM_BUILD_ROOT%{_slibdir}
+ln -sf %{_slibdir}/$libitm $RPM_BUILD_ROOT%{_libdir}/libitm.so
+
+libgomp=$(cd $RPM_BUILD_ROOT%{_libdir}; echo libgomp.so.*.*.*)
+mv $RPM_BUILD_ROOT%{_libdir}/libgomp.so.* $RPM_BUILD_ROOT%{_slibdir}
+ln -sf %{_slibdir}/$libgomp $RPM_BUILD_ROOT%{_libdir}/libgomp.so
+
%if %{with multilib}
libssp=$(cd $RPM_BUILD_ROOT%{_libdir32}; echo libssp.so.*.*.*)
mv $RPM_BUILD_ROOT%{_libdir32}/libssp.so.* $RPM_BUILD_ROOT%{_slibdir32}
ln -sf %{_slibdir32}/$libssp $RPM_BUILD_ROOT%{_libdir32}/libssp.so
+
+libitm=$(cd $RPM_BUILD_ROOT%{_libdir32}; echo libitm.so.*.*.*)
+mv $RPM_BUILD_ROOT%{_libdir32}/libitm.so.* $RPM_BUILD_ROOT%{_slibdir32}
+ln -sf %{_slibdir32}/$libitm $RPM_BUILD_ROOT%{_libdir32}/libitm.so
+
+libgomp=$(cd $RPM_BUILD_ROOT%{_libdir32}; echo libgomp.so.*.*.*)
+mv $RPM_BUILD_ROOT%{_libdir32}/libgomp.so.* $RPM_BUILD_ROOT%{_slibdir32}
+ln -sf %{_slibdir32}/$libgomp $RPM_BUILD_ROOT%{_libdir32}/libgomp.so
%endif
%if %{with fortran}
ln -sf gfortran $RPM_BUILD_ROOT%{_bindir}/g95
-echo ".so gfortran.1" > $RPM_BUILD_ROOT%{_mandir}/man1/g95.1
+echo ".so man1/gfortran.1" > $RPM_BUILD_ROOT%{_mandir}/man1/g95.1
%endif
%if %{with ada}
install -d java-doc
cp -f libjava/READ* java-doc
ln -sf libgcj-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/libgcj.jar
+%endif
+%if %{with gcc_libffi}
# still not installed by gcc?
[ ! -f $RPM_BUILD_ROOT%{_pkgconfigdir}/libffi.pc ] || exit 1
+install -d $RPM_BUILD_ROOT%{_pkgconfigdir}
sed -e 's,@prefix@,%{_prefix},
s,@exec_prefix@,%{_exec_prefix},
s,@libdir@,%{_libdir},
# avoid -L poisoning in *.la - there should be only -L%{_libdir}/gcc/%{_target_platform}/%{version}
# normalize libdir, to avoid propagation of unnecessary RPATHs by libtool
-for f in libssp.la libssp_nonshared.la \
+for f in libitm.la libssp.la libssp_nonshared.la \
%{?with_cxx:libstdc++.la libsupc++.la} \
%{?with_fortran:libgfortran.la libquadmath.la} \
%{?with_gomp:libgomp.la} \
+ %{?with_asan:libasan.la} \
+ %{?with_tsan:libtsan.la} \
+ %{?with_atomic:libatomic.la} \
%{?with_mudflap:libmudflap.la libmudflapth.la} \
%if %{with java}
- libffi.la libgcj.la libgcj-tools.la libgij.la \
+ %{?with_gcc_libffi:libffi.la} \
+ libgcj.la libgcj-tools.la libgij.la \
%{gcjdbexecdir}/libjvm.la \
%{gcjdbexecdir}/libxmlj.la \
%{?with_x:lib-gnu-awt-xlib.la} \
mv $RPM_BUILD_ROOT%{_libdir}/$f{.fixed,}
done
%if %{with multilib}
-for f in libssp.la libssp_nonshared.la \
+for f in libitm.la libssp.la libssp_nonshared.la \
%{?with_cxx:libstdc++.la libsupc++.la} \
%{?with_fortran:libgfortran.la libquadmath.la} \
%{?with_gomp:libgomp.la} \
+ %{?with_asan:libasan.la} \
+ %{?with_atomic:libatomic.la} \
%{?with_mudflap:libmudflap.la libmudflapth.la} \
- %{?with_java:libffi.la} \
+ %{?with_java:%{?with_gcc_libffi:libffi.la}} \
%{?with_objc:libobjc.la};
do
%{__perl} %{SOURCE1} $RPM_BUILD_ROOT%{_libdir32}/$f %{_libdir32} > $RPM_BUILD_ROOT%{_libdir32}/$f.fixed
%{__rm} -r $RPM_BUILD_ROOT%{gcclibdir}/install-tools
%{__rm} -r $RPM_BUILD_ROOT%{gcclibdir}/include-fixed
+# plugin, .la not needed
+%{__rm} $RPM_BUILD_ROOT%{gcclibdir}/liblto_plugin.la
+# already packaged in binutils-devel
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/libiberty.a
+
%if %{with python}
for LIB in lib lib64; do
LIBPATH="$RPM_BUILD_ROOT%{_datadir}/gdb/auto-load%{_prefix}/$LIB"
mv $RPM_BUILD_ROOT%{_datadir}/gcc-%{version}/python/libstdcxx $RPM_BUILD_ROOT%{py_sitescriptdir}
%if %{with java}
mv $RPM_BUILD_ROOT%{_datadir}/gcc-%{version}/python/libjava $RPM_BUILD_ROOT%{py_sitescriptdir}
-%endif
%{__sed} -i -e '1s,#!/usr/bin/env python,#!/usr/bin/python,' $RPM_BUILD_ROOT%{_bindir}/aot-compile
+%endif
%py_ocomp $RPM_BUILD_ROOT%{py_sitescriptdir}
%py_comp $RPM_BUILD_ROOT%{py_sitescriptdir}
%py_postclean
%postun go -p /sbin/postshell
-/usr/sbin/fix-info-dir -c %{_infodir}
+%post -n libquadmath-devel -p /sbin/postshell
+-/usr/sbin/fix-info-dir -c %{_infodir}
+
+%postun -n libquadmath-devel -p /sbin/postshell
+-/usr/sbin/fix-info-dir -c %{_infodir}
+
+%post -n libffi-devel -p /sbin/postshell
+-/usr/sbin/fix-info-dir -c %{_infodir}
+
+%postun -n libffi-devel -p /sbin/postshell
+-/usr/sbin/fix-info-dir -c %{_infodir}
+
%post -p /sbin/ldconfig -n libgcc
%postun -p /sbin/ldconfig -n libgcc
%post -p /sbin/ldconfig -n libgcc-multilib
%postun -p /sbin/ldconfig -n libobjc
%post -p /sbin/ldconfig -n libobjc-multilib
%postun -p /sbin/ldconfig -n libobjc-multilib
-%post -n libquadmath
-/sbin/ldconfig
-[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
-%postun -n libquadmath
-/sbin/ldconfig
-[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+%post -p /sbin/ldconfig -n libquadmath
+%postun -p /sbin/ldconfig -n libquadmath
%post -p /sbin/ldconfig -n libquadmath-multilib
%postun -p /sbin/ldconfig -n libquadmath-multilib
%post -p /sbin/ldconfig -n libgo
%postun -p /sbin/ldconfig -n libgo
%post -p /sbin/ldconfig -n libgo-multilib
%postun -p /sbin/ldconfig -n libgo-multilib
+%post -p /sbin/ldconfig -n libasan
+%postun -p /sbin/ldconfig -n libasan
+%post -p /sbin/ldconfig -n libasan-multilib
+%postun -p /sbin/ldconfig -n libasan-multilib
+%post -p /sbin/ldconfig -n libtsan
+%postun -p /sbin/ldconfig -n libtsan
+%post -p /sbin/ldconfig -n libatomic
+%postun -p /sbin/ldconfig -n libatomic
+%post -p /sbin/ldconfig -n libatomic-multilib
+%postun -p /sbin/ldconfig -n libatomic-multilib
%files -f gcc.lang
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/cc
%attr(755,root,root) %{_bindir}/cpp
%attr(755,root,root) %{_bindir}/gcc
+%attr(755,root,root) %{_bindir}/gcc-ar
+%attr(755,root,root) %{_bindir}/gcc-nm
+%attr(755,root,root) %{_bindir}/gcc-ranlib
#%attr(755,root,root) %{_bindir}/gccbug
%attr(755,root,root) %{_bindir}/gcov
%{_mandir}/man1/cc.1*
%{_infodir}/gcc.info*
%{_infodir}/gccinstall.info*
%{_infodir}/gccint.info*
+%{_infodir}/libitm.info*
%attr(755,root,root) /lib/cpp
%attr(755,root,root) %{_slibdir}/libgcc_s.so
+%attr(755,root,root) %{_libdir}/libitm.so
%attr(755,root,root) %{_libdir}/libssp.so
+%{_libdir}/libitm.la
+%{_libdir}/libitm.a
+%{_libdir}/libitm.spec
%{_libdir}/libssp.la
%{_libdir}/libssp.a
%{_libdir}/libssp_nonshared.la
%{gcclibdir}/include/float.h
%{gcclibdir}/include/iso646.h
%{gcclibdir}/include/limits.h
+%{gcclibdir}/include/stdalign.h
%{gcclibdir}/include/stdarg.h
%{gcclibdir}/include/stdbool.h
%{gcclibdir}/include/stddef.h
%{gcclibdir}/include/stdfix.h
%{gcclibdir}/include/stdint.h
%{gcclibdir}/include/stdint-gcc.h
+%{gcclibdir}/include/stdnoreturn.h
%{gcclibdir}/include/syslimits.h
%{gcclibdir}/include/unwind.h
%{gcclibdir}/include/varargs.h
%ifarch %{ix86} %{x8664}
-%{gcclibdir}/include/abmintrin.h
%{gcclibdir}/include/ammintrin.h
%{gcclibdir}/include/avxintrin.h
+%{gcclibdir}/include/avx2intrin.h
%{gcclibdir}/include/bmiintrin.h
+%{gcclibdir}/include/bmi2intrin.h
%{gcclibdir}/include/bmmintrin.h
%{gcclibdir}/include/cpuid.h
%{gcclibdir}/include/cross-stdarg.h
%{gcclibdir}/include/emmintrin.h
+%{gcclibdir}/include/f16cintrin.h
+%{gcclibdir}/include/fmaintrin.h
%{gcclibdir}/include/fma4intrin.h
%{gcclibdir}/include/ia32intrin.h
%{gcclibdir}/include/immintrin.h
%{gcclibdir}/include/lwpintrin.h
+%{gcclibdir}/include/lzcntintrin.h
%{gcclibdir}/include/mm3dnow.h
%{gcclibdir}/include/mm_malloc.h
%{gcclibdir}/include/mmintrin.h
%{gcclibdir}/include/x86intrin.h
%{gcclibdir}/include/xmmintrin.h
%{gcclibdir}/include/xopintrin.h
+%{gcclibdir}/include/adxintrin.h
+%{gcclibdir}/include/fxsrintrin.h
+%{gcclibdir}/include/prfchwintrin.h
+%{gcclibdir}/include/rdseedintrin.h
+%{gcclibdir}/include/rtmintrin.h
+%{gcclibdir}/include/xsaveintrin.h
+%{gcclibdir}/include/xsaveoptintrin.h
+%{gcclibdir}/include/xtestintrin.h
%endif
%ifarch arm
%{gcclibdir}/include/arm_neon.h
%{gcclibdir}/32/libgcc.a
%{gcclibdir}/32/libgcc_eh.a
%{gcclibdir}/32/libgcov.a
+%attr(755,root,root) %{_libdir32}/libitm.so
%attr(755,root,root) %{_libdir32}/libssp.so
+%{_libdir32}/libitm.la
+%{_libdir32}/libitm.a
%{_libdir32}/libssp.la
%{_libdir32}/libssp.a
%{_libdir32}/libssp_nonshared.la
%files -n libgcc
%defattr(644,root,root,755)
%attr(755,root,root) %{_slibdir}/libgcc_s.so.1
+%attr(755,root,root) %{_slibdir}/libitm.so.*.*.*
%attr(755,root,root) %{_slibdir}/libssp.so.*.*.*
+%attr(755,root,root) %ghost %{_slibdir}/libitm.so.1
%attr(755,root,root) %ghost %{_slibdir}/libssp.so.0
%if %{with multilib}
%files -n libgcc-multilib
%defattr(644,root,root,755)
%attr(755,root,root) %{_slibdir32}/libgcc_s.so.1
+%attr(755,root,root) %{_slibdir32}/libitm.so.*.*.*
%attr(755,root,root) %{_slibdir32}/libssp.so.*.*.*
%attr(755,root,root) %ghost %{_slibdir32}/libssp.so.0
+%attr(755,root,root) %ghost %{_slibdir32}/libitm.so.1
%endif
%if %{with gomp}
%files -n libgomp
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libgomp.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libgomp.so.1
+%attr(755,root,root) %{_slibdir}/libgomp.so.*.*.*
+%attr(755,root,root) %ghost %{_slibdir}/libgomp.so.1
%if %{with multilib}
%files -n libgomp-multilib
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir32}/libgomp.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir32}/libgomp.so.1
+%attr(755,root,root) %{_slibdir32}/libgomp.so.*.*.*
+%attr(755,root,root) %ghost %{_slibdir32}/libgomp.so.1
%endif
%files -n libgomp-devel
%{gcclibdir}/adainclude
%dir %{gcclibdir}/adalib
%{gcclibdir}/adalib/*.ali
-%{gcclibdir}/adalib/g-trasym.o
%ifarch %{ix86} %{x8664}
%{gcclibdir}/adalib/libgmem.a
%endif
%{gcclibdir}/32/adainclude
%dir %{gcclibdir}/32/adalib
%{gcclibdir}/32/adalib/*.ali
-%{gcclibdir}/32/adalib/g-trasym.o
%ifarch %{ix86} %{x8664}
%{gcclibdir}/32/adalib/libgmem.a
%endif
%files -n libgnat-static
%defattr(644,root,root,755)
-%{gcclibdir}/adalib/libgnala.a
%{gcclibdir}/adalib/libgnarl.a
%{gcclibdir}/adalib/libgnat.a
%if %{with multilib}
%files -n libgnat-multilib-static
%defattr(644,root,root,755)
-%{gcclibdir}/32/adalib/libgnala.a
%{gcclibdir}/32/adalib/libgnarl.a
%{gcclibdir}/32/adalib/libgnat.a
%endif
%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
+%attr(755,root,root) %ghost %{_libdir}/libstdc++.so.%{cxx_sover}
%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
+%attr(755,root,root) %ghost %{_libdir32}/libstdc++.so.%{cxx_sover}
%endif
%if %{with python}
%{py_sitescriptdir}/libstdcxx/*.py[co]
%dir %{py_sitescriptdir}/libstdcxx/v6
%{py_sitescriptdir}/libstdcxx/v6/*.py[co]
-%{_datadir}/gdb/auto-load/usr/lib*/libstdc++.so.6.0.16-gdb.py
+%{_datadir}/gdb/auto-load/usr/%{_lib}/libstdc++.so.%{cxx_sover}.*.*-gdb.py
+%if %{with multilib}
+%{_datadir}/gdb/auto-load/usr/lib/libstdc++.so.%{cxx_sover}.*.*-gdb.py
+%endif
%endif
%files -n libstdc++-devel
%attr(755,root,root) %{_libdir}/libgfortran.so
%{_libdir}/libgfortran.spec
%{_libdir}/libgfortran.la
+%{gcclibdir}/libcaf_single.a
+%{gcclibdir}/libcaf_single.la
%{gcclibdir}/libgfortranbegin.la
%{gcclibdir}/libgfortranbegin.a
%{_infodir}/gfortran.info*
%attr(755,root,root) %{_libdir32}/libgfortran.so
%{_libdir32}/libgfortran.spec
%{_libdir32}/libgfortran.la
+%{gcclibdir}/32/libcaf_single.a
+%{gcclibdir}/32/libcaf_single.la
%{gcclibdir}/32/libgfortranbegin.la
%{gcclibdir}/32/libgfortranbegin.a
%endif
%{_libdir}/libgij.a
%{?with_x:%{_libdir}/lib-gnu-awt-xlib.a}
%{_libdir}/%{gcjdbexecdir}/libjvm.a
+%endif
+%if %{with gcc_libffi}
%files -n libffi
%defattr(644,root,root,755)
%doc libffi/{ChangeLog,ChangeLog.libgcj,LICENSE,README}
%{gcclibdir}/include/ffitarget.h
%{_pkgconfigdir}/libffi.pc
%{_mandir}/man3/ffi*.3*
+%{_infodir}/libffi.info*
%if %{with multilib}
%files -n libffi-multilib-devel
%defattr(644,root,root,755)
%doc libobjc/{ChangeLog,README*}
%attr(755,root,root) %{_libdir}/libobjc.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libobjc.so.3
+%attr(755,root,root) %ghost %{_libdir}/libobjc.so.4
%if %{with multilib}
%files -n libobjc-multilib
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir32}/libobjc.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir32}/libobjc.so.3
+%attr(755,root,root) %ghost %{_libdir32}/libobjc.so.4
%endif
%files -n libobjc-static
%defattr(644,root,root,755)
%doc libgo/{LICENSE,PATENTS,README}
%attr(755,root,root) %{_libdir}/libgo.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libgo.so.0
+%attr(755,root,root) %ghost %{_libdir}/libgo.so.4
%if %{with multilib}
%files -n libgo-multilib
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir32}/libgo.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir32}/libgo.so.0
+%attr(755,root,root) %ghost %{_libdir32}/libgo.so.4
%endif
%files -n libgo-devel
%{_libdir32}/libgo.a
%endif
%endif
+
+%if %{with asan}
+%files -n libasan
+%defattr(644,root,root,755)
+%doc libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
+%attr(755,root,root) %{_libdir}/libasan.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libasan.so.0
+
+%if %{with multilib}
+%files -n libasan-multilib
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir32}/libasan.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir32}/libasan.so.0
+%endif
+
+%files -n libasan-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libasan.so
+%{_libdir}/libasan_preinit.o
+%{_libdir}/libasan.la
+
+%if %{with multilib}
+%files -n libasan-multilib-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir32}/libasan.so
+%{_libdir32}/libasan_preinit.o
+%{_libdir32}/libasan.la
+%endif
+
+%files -n libasan-static
+%defattr(644,root,root,755)
+%{_libdir}/libasan.a
+
+%if %{with multilib}
+%files -n libasan-multilib-static
+%defattr(644,root,root,755)
+%{_libdir32}/libasan.a
+%endif
+%endif
+
+%if %{with tsan}
+%files -n libtsan
+%defattr(644,root,root,755)
+%doc libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
+%attr(755,root,root) %{_libdir}/libtsan.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libtsan.so.0
+
+%files -n libtsan-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libtsan.so
+%{_libdir}/libtsan.la
+
+%files -n libtsan-static
+%defattr(644,root,root,755)
+%{_libdir}/libtsan.a
+%endif
+
+%if %{with atomic}
+%files -n libatomic
+%defattr(644,root,root,755)
+%doc libatomic/ChangeLog*
+%attr(755,root,root) %{_libdir}/libatomic.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libatomic.so.1
+
+%if %{with multilib}
+%files -n libatomic-multilib
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir32}/libatomic.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir32}/libatomic.so.1
+%endif
+
+%files -n libatomic-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libatomic.so
+%{_libdir}/libatomic.la
+
+%if %{with multilib}
+%files -n libatomic-multilib-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir32}/libatomic.so
+%{_libdir32}/libatomic.la
+%endif
+
+%files -n libatomic-static
+%defattr(644,root,root,755)
+%{_libdir}/libatomic.a
+
+%if %{with multilib}
+%files -n libatomic-multilib-static
+%defattr(644,root,root,755)
+%{_libdir32}/libatomic.a
+%endif
+%endif