-%define fast_build 1
+#
+# spec file for package gcc48
+#
+# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
+
+# norootforbuild
+# icecream 0
+
-# Ada currently fails to build on a few platforms, enable it only
-# on those that work
-# Note that AdaCore only supports %ix86, x86_64 and ia64
-%ifarch %ix86 x86_64
-%define build_ada !0%{?building_libjava:1}%{?building_libffi:1}
-%else
%define build_ada 0
-%endif
%define quadmath_arch %ix86 x86_64 ia64
+%define tsan_arch x86_64
+%define asan_arch x86_64 %ix86 ppc ppc64
+%define itm_arch x86_64 %ix86 %arm ppc ppc64
+%define atomic_arch x86_64 %ix86 %arm ppc ppc64 s390 s390x
# We don't want to build java
-%ifarch mips
%define build_java 0
%define build_libjava 0
-%else
-%define build_java 1
-%define build_libjava 0%{?building_libjava:1}%{?building_libffi:1}%{?building_testsuite:1}
-%endif
%define build_cp 1
-%define build_fortran 1
-%define build_objc 1
+%define build_fortran !0%{?building_libjava:1}%{?building_libffi:1}
+%define build_objc !0%{?building_libjava:1}%{?building_libffi:1}
%define build_objcp !0%{?building_libjava:1}%{?building_libffi:1}
%define build_with_mudflap 0
%endif
# For optional compilers only build C, C++ and Fortran
-##%if 0%{?build_optional_compiler:1}%{?build_optional_compiler_languages:1}
-%if 0%{!?building_libffi:1}
+%if 0%{?build_optional_compiler_languages:1}
%define build_ada 0
%define build_java 0
%define build_libjava 0
-%define build_objc 1
-%define build_objcp 1
+%define build_objc 0
+%define build_objcp 0
%endif
+# Shared library SONAME versions
+%define libgcc_s 1
+%define libgcj_sover %{nil}
+%define libgcj_bc_sover %{nil}
+%define libffi_sover %{nil}
+%define libmudflap_sover %{nil}
+%define libgomp_sover %{nil}
+%define libstdcxx_sover %{nil}
+%define libobjc_sover %{nil}
+%define libgfortran_sover %{nil}
+%define libquadmath_sover %{nil}
+%define libasan_sover %{nil}
+%define libtsan_sover %{nil}
+%define libatomic_sover %{nil}
+%define libitm_sover %{nil}
+
+# Shared library package suffix
+# This is used for the "non-standard" set of libraries, the standard
+# being defined by %product_libs_gcc_ver, the GCC version that should
+# provide un-suffixed shared library packages following the shared-library
+# policy. Even suffixed variants should provide the shared-library policy
+# mandated names and ensure they conflict with each other.
+# Note that on SONAME changes of any library the %product_libs_gcc_ver
+# define needs to be either split or the newest GCC version still providing
+# the old SONAME needs to unconditionally produce an un-suffixed library
+# if %product_libs_gcc_ver is newer than it. Similar the _oldest_ GCC
+# version first providing a new SONAME needs to unconditionally produce
+# an un-suffixed library if %product_libs_gcc_ver is lower that it.
+%if %{!?product_libs_gcc_ver:@base_ver@}%{?product_libs_gcc_ver} != @base_ver@
+%define pne 1
+%endif
+%define libgcc_s_suffix %{?pne:-gcc@base_ver@}
+# libgcj SONAME changes with every GCC version
+%define libgcj_suffix %nil
+%define libgcj_bc_suffix %{?pne:-gcc@base_ver@}
+%define libffi_suffix %{?pne:-gcc@base_ver@}
+%define libmudflap_suffix %{?pne:-gcc@base_ver@}
+%define libgomp_suffix %{?pne:-gcc@base_ver@}
+%define libstdcxx_suffix %{?pne:-gcc@base_ver@}
+%define libobjc_suffix %{?pne:-gcc@base_ver@}
+%define libgfortran_suffix %{?pne:-gcc@base_ver@}
+%define libquadmath_suffix %{?pne:-gcc@base_ver@}
+%define libasan_suffix %{?pne:-gcc@base_ver@}
+%define libtsan_suffix %{?pne:-gcc@base_ver@}
+%define libatomic_suffix %{?pne:-gcc@base_ver@}
+%define libitm_suffix %{?pne:-gcc@base_ver@}
+
+
+
Name: gcc@base_ver@
+BuildRequires: gcc-c++
BuildRequires: bison
BuildRequires: flex
-BuildRequires: gettext-tools
-BuildRequires: makeinfo
BuildRequires: glibc-devel-32bit
BuildRequires: mpc-devel
BuildRequires: mpfr-devel
BuildRequires: perl
-BuildRequires: texinfo
+BuildRequires: makeinfo
BuildRequires: zlib-devel
-%ifarch %ix86 x86_64 %arm
-BuildRequires: cloog-devel
-BuildRequires: ppl-devel
+%ifarch %ix86 x86_64 ppc ppc64 s390 s390x ia64 %sparc hppa %arm
+BuildRequires: cloog-isl-devel
+BuildRequires: isl-devel
%endif
%if %{build_ada}
%define hostsuffix -4.7
%endif
%if 0%{?building_libjava:1}%{?building_testsuite:1}
BuildRequires: fastjar
-BuildRequires: unzip
%endif
%if 0%{?building_libffi:1}
BuildRequires: pkg-config
BuildRequires: gdb
%endif
-# Define version number of libgcc_s
-%ifarch hppa
-%define libgcc_s 4
-%else
-%define libgcc_s 1
-%endif
-%ifarch ppc
-# We support building the nof libraries, but don't want this in the
-# regular rpms
-%define build_nof 0
-%else
-%define build_nof 0
-%endif
-
%define separate_bi32 0
%define separate_bi64 0
-%ifarch x86_64
+%ifarch ppc sparcv9
+# Beware, this does _not_ separate libgcj, as for that one multilibing
+# is inactive for the time being
+%define separate_bi64 1
+%endif
+%ifarch x86_64 s390x ppc64 sparc64
%define separate_bi32 1
%endif
%define separate_biarch_suffix -64bit
%endif
-%ifarch x86_64
+%ifarch x86_64 ia64 s390x alpha ppc64 sparc64
# 64-bit is primary build target
%define build_primary_64bit 1
%else
%define biarch_libjava 0
# COMMON-BEGIN
-%define biarch_targets x86_64
+%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
URL: http://gcc.gnu.org/
-Version: 4.7.2
+Version: 4.8.1
Release: 1
%define gcc_version %(echo %version | sed 's/_.*//')
%define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2)
%define snapshot_date %(echo %version | sed 's/[34]\.[0-9]\.[0-6]//' | sed 's/_/-/')
-%define binsuffix -4.7
+%define binsuffix -4.8
# COMMON-END
%if !0%{?building_libjava:1}%{?building_libffi:1}%{?building_testsuite:1}
Requires: binutils glibc-devel
Requires: cpp@base_ver@ = %{version}-%{release}
-%if 0%{!?build_optional_compiler:1}
-Requires: libgcc%{libgcc_s} >= %{version}-%{release}
-Requires: libgomp1 >= %{version}-%{release}
+Requires: libgcc_s%{libgcc_s} >= %{version}-%{release}
+Requires: libgomp%{libgomp_sover} >= %{version}-%{release}
%if %{build_with_mudflap}
-Requires: libmudflap0 >= %{version}-%{release}
-Requires: libmudflapth0 >= %{version}-%{release}
+Requires: libmudflap%{libmudflap_sover} >= %{version}-%{release}
+Requires: libmudflapth%{libmudflap_sover} >= %{version}-%{release}
%endif
-%else
-Requires: libgcc@base_ver@ = %{version}-%{release}
-Requires: libgomp@base_ver@ = %{version}-%{release}
+%ifarch %asan_arch
+Requires: libasan%{libasan_sover} >= %{version}-%{release}
+%endif
+%ifarch %tsan_arch
+Requires: libtsan%{libtsan_sover} >= %{version}-%{release}
+%endif
+%ifarch %atomic_arch
+Requires: libatomic%{libatomic_sover} >= %{version}-%{release}
%endif
+%ifarch %itm_arch
+Requires: libitm%{libitm_sover} >= %{version}-%{release}
+%endif
+Suggests: gcc@base_ver@-info gcc@base_ver@-locale
%endif
# COMMON-BEGIN
BuildRoot: %{_tmppath}/%{name}-%{version}-build
-Source: gcc-%{gcc_version}%{snapshot_date}.tar.bz2
+Source: gcc-%{version}.tar.bz2
Source1: change_spec
-Source2: libgcj47-rpmlintrc
-Source3: gcc47-rpmlintrc
+Source3: gcc48-rpmlintrc
Source4: ecj.jar
Source6: baselibs.conf
-# Patches auto-generated by git-buildpackage:
-Patch0: 0001-dir-version.patch
+
# GCC-TESTSUITE-DELETE-BEGIN
-# LIBFFI-DELETE-BEGIN
# LIBJAVA-DELETE-BEGIN
Group: Development/Languages/C and C++
Summary: The GNU C Compiler and Support Files
Language frontends other than C are split to different sub-packages,
namely gcc-ada, gcc-c++, gcc-fortran, gcc-java, gcc-objc and
gcc-obj-c++.
+# LIBFFI-DELETE-BEGIN
Summary: The GNU C Compiler 32bit support
Group: Development/Languages/C and C++
Requires: gcc@base_ver@ = %{version}-%{release}
-%if 0%{!?build_optional_compiler:1}
-Requires: libgcc%{libgcc_s}-32bit >= %{version}-%{release}
-Requires: libgomp1-32bit >= %{version}-%{release}
+Requires: libgcc_s%{libgcc_s}-32bit >= %{version}-%{release}
+Requires: libgomp%{libgomp_sover}-32bit >= %{version}-%{release}
%if %{build_with_mudflap}
-Requires: libmudflap0-32bit >= %{version}-%{release}
-Requires: libmudflapth0-32bit >= %{version}-%{release}
-%endif
-%else
-Requires: libgcc@base_ver@-32bit = %{version}-%{release}
-Requires: libgomp@base_ver@-32bit = %{version}-%{release}
+Requires: libmudflap%{libmudflap_sover}-32bit >= %{version}-%{release}
+Requires: libmudflapth%{libmudflap_sover}-32bit >= %{version}-%{release}
%endif
Requires: glibc-devel-32bit
Summary: The GNU C Compiler 64bit support
Group: Development/Languages/C and C++
Requires: gcc@base_ver@ = %{version}-%{release}
-%if 0%{!?build_optional_compiler:1}
-Requires: libgcc%{libgcc_s}-64bit >= %{version}-%{release}
-Requires: libgomp1-64bit >= %{version}-%{release}
+Requires: libgcc_s%{libgcc_s}-64bit >= %{version}-%{release}
+Requires: libgomp%{libgomp_sover}-64bit >= %{version}-%{release}
%if %{build_with_mudflap}
-Requires: libmudflap0-64bit >= %{version}-%{release}
-Requires: libmudflapth0-64bit >= %{version}-%{release}
-%endif
-%else
-Requires: libgcc@base_ver@-64bit = %{version}-%{release}
-Requires: libgomp@base_ver@-64bit = %{version}-%{release}
+Requires: libmudflap%{libmudflap_sover}-64bit >= %{version}-%{release}
+Requires: libmudflapth%{libmudflap_sover}-64bit >= %{version}-%{release}
%endif
Requires: glibc-devel-64bit
Summary: Include Files and Libraries mandatory for Development
License: GPL-3.0-with-GCC-exception
Group: Development/Languages/C and C++
-%if 0%{!?build_optional_compiler:1}
-Requires: libstdc++6@variant@ >= %{version}-%{release}
-%else
-Requires: libstdc++@base_ver@@variant@ = %{version}-%{release}
-%endif
+Requires: libstdc++%{libstdcxx_sover}@variant@ >= %{version}-%{release}
Requires: glibc-devel@variant@
%ifarch ia64
Requires: libunwind-devel
# PACKAGE-BEGIN
-%package -n libgcc@base_ver@@variant@
+%package -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}@variant@
Summary: C compiler runtime library
License: GPL-3.0-with-GCC-exception
Group: System/Base
-%if 0%{!?build_optional_compiler:1}
-Provides: libgcc%{libgcc_s}@variant@ = %{version}-%{release}
-Conflicts: libgcc%{libgcc_s}@variant@ < %{version}-%{release}
-%else
-Autoprov: no
-%endif
+Provides: libgcc_s%{libgcc_s}@variant@ = %{version}-%{release}
-%description -n libgcc@base_ver@@variant@
+%description -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}@variant@
Libgcc is needed for dynamically linked C programs.
-%post -n libgcc@base_ver@@variant@
+%post -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}@variant@
/sbin/ldconfig
-%postun -n libgcc@base_ver@@variant@
+%postun -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}@variant@
/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
-%package -n libgomp@base_ver@@variant@
+%package -n libgomp%{libgomp_sover}%{libgomp_suffix}@variant@
Summary: The GNU compiler collection OpenMP runtime library
License: GPL-3.0-with-GCC-exception
Group: System/Base
-%if 0%{!?build_optional_compiler:1}
-Provides: libgomp1@variant@ = %{version}-%{release}
-Conflicts: libgomp1@variant@ < %{version}-%{release}
-%else
-Autoprov: no
-%endif
+Provides: libgomp%{libgomp_sover}@variant@ = %{version}-%{release}
-%description -n libgomp@base_ver@@variant@
+%description -n libgomp%{libgomp_sover}%{libgomp_suffix}@variant@
This is the OpenMP runtime library needed by OpenMP enabled programs
that were built with the -fopenmp compiler option and by programs that
were auto-parallelized via the -ftree-parallelize-loops compiler
option.
-%post -n libgomp@base_ver@@variant@
+%post -n libgomp%{libgomp_sover}%{libgomp_suffix}@variant@
/sbin/ldconfig
-%postun -n libgomp@base_ver@@variant@
+%postun -n libgomp%{libgomp_sover}%{libgomp_suffix}@variant@
/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
-%package -n libstdc++@base_ver@@variant@
+%package -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}@variant@
Summary: The standard C++ shared library
License: GPL-3.0-with-GCC-exception
Group: System/Libraries
-%if 0%{!?build_optional_compiler:1}
-Provides: libstdc++6@variant@ = %{version}-%{release}
-Conflicts: libstdc++6@variant@ < %{version}-%{release}
-%else
-Autoprov: no
-%endif
+Suggests: libstdc++%{libstdcxx_sover}-locale
+Provides: libstdc++%{libstdcxx_sover}@variant@ = %{version}-%{release}
-%description -n libstdc++@base_ver@@variant@
+%description -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}@variant@
The standard C++ library, needed for dynamically linked C++ programs.
-%post -n libstdc++@base_ver@@variant@
+%post -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}@variant@
/sbin/ldconfig
-%postun -n libstdc++@base_ver@@variant@
+%postun -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}@variant@
/sbin/ldconfig
# PACKAGE-END
+%package -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}-locale
+Summary: Locale Data for the standard C++ shared library
+License: GPL-3.0-with-GCC-exception
+Group: System/Libraries
+Provides: libstdc++%{libstdcxx_sover}-locale = %{version}-%{release}
+
+%description -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}-locale
+The standard C++ library locale data.
+
%package info
Summary: Documentation for the GNU compiler collection
License: GPL-3.0+
Group: Development/Languages/Other
Requires: gcc@base_ver@ = %{version}-%{release}
-Requires: libobjc2@variant@ >= %{version}-%{release}
+Requires: libobjc%{libobjc_sover}@variant@ >= %{version}-%{release}
%description objc@variant@
This package contains the GNU Objective C compiler. Objective C is an
# PACKAGE-END
# PACKAGE-BEGIN
-%package -n libobjc@base_ver@@variant@
+%package -n libobjc%{libobjc_sover}%{libobjc_suffix}@variant@
Summary: Library for the GNU Objective C Compiler
License: GPL-3.0-with-GCC-exception
Group: Development/Libraries/Other
-Provides: libobjc2@variant@ = %{version}-%{release}
-Conflicts: libobjc2@variant@ < %{version}-%{release}
+Provides: libobjc%{libobjc_sover}@variant@ = %{version}-%{release}
-%description -n libobjc@base_ver@@variant@
+%description -n libobjc%{libobjc_sover}%{libobjc_suffix}@variant@
The library for the GNU Objective C compiler.
-%post -n libobjc@base_ver@@variant@
+%post -n libobjc%{libobjc_sover}%{libobjc_suffix}@variant@
/sbin/ldconfig
-%postun -n libobjc@base_ver@@variant@
+%postun -n libobjc%{libobjc_sover}%{libobjc_suffix}@variant@
/sbin/ldconfig
# PACKAGE-END
Summary: GNU Ada Runtime Libraries
License: GPL-3.0-with-GCC-exception
Group: System/Libraries
-Provides: libgnarl-4_7@variant@ = %{version}-%{release}
-Conflicts: libgnarl-4_7@variant@ < %{version}-%{release}
-Provides: libgnat-4_7@variant@ = %{version}-%{release}
-Conflicts: libgnat-4_7@variant@ < %{version}-%{release}
-
%description -n libada@base_ver@@variant@
This package contains the shared libraries required to run programs
compiled with the GNU Ada compiler (GNAT) if they are compiled to use
License: GPL-3.0+
Group: Development/Languages/Fortran
Requires: gcc@base_ver@ = %{version}-%{release}
-%if 0%{!?build_optional_compiler:1}
-Requires: libgfortran3@variant@ >= %{version}-%{release}
-%ifarch %quadmath_arch
-Requires: libquadmath0@variant@ >= %{version}-%{release}
-%endif
-%else
-Requires: libgfortran@base_ver@@variant@ = %{version}-%{release}
+Requires: libgfortran%{libgfortran_sover}@variant@ >= %{version}-%{release}
%ifarch %quadmath_arch
-Requires: libquadmath@base_ver@@variant@ = %{version}-%{release}
-%endif
+Requires: libquadmath%{libquadmath_sover}@variant@ >= %{version}-%{release}
%endif
%description fortran@variant@
# PACKAGE-END
# PACKAGE-BEGIN
-%package -n libgfortran@base_ver@@variant@
+%package -n libgfortran%{libgfortran_sover}%{libgfortran_suffix}@variant@
Summary: The GNU Fortran Compiler Runtime Library
License: GPL-3.0-with-GCC-exception
Group: Development/Languages/Fortran
-%if 0%{!?build_optional_compiler:1}
-Provides: libgfortran3@variant@ = %{version}-%{release}
-Conflicts: libgfortran3@variant@ < %{version}-%{release}
%ifarch %quadmath_arch
-Requires: libquadmath0@variant@ >= %{version}-%{release}
-%endif
-%else
-%ifarch %quadmath_arch
-Requires: libquadmath@base_ver@@variant@ = %{version}-%{release}
-%endif
-Autoprov: no
+Requires: libquadmath%{libquadmath_sover}@variant@ >= %{version}-%{release}
%endif
+Provides: libgfortran%{libgfortran_sover}@variant@ = %{version}-%{release}
-%description -n libgfortran@base_ver@@variant@
+%description -n libgfortran%{libgfortran_sover}%{libgfortran_suffix}@variant@
The runtime library needed to run programs compiled with the Fortran compiler
of the GNU Compiler Collection (GCC).
-%post -n libgfortran@base_ver@@variant@
+%post -n libgfortran%{libgfortran_sover}%{libgfortran_suffix}@variant@
/sbin/ldconfig
-%postun -n libgfortran@base_ver@@variant@
+%postun -n libgfortran%{libgfortran_sover}%{libgfortran_suffix}@variant@
/sbin/ldconfig
# PACKAGE-END
# PACKAGE-BEGIN
-%package -n libquadmath@base_ver@@variant@
+%package -n libquadmath%{libquadmath_sover}%{libquadmath_suffix}@variant@
Summary: The GNU Fortran Compiler Quadmath Runtime Library
License: LGPL-2.1
Group: Development/Languages/Fortran
-%if 0%{!?build_optional_compiler:1}
-Provides: libquadmath0@variant@ = %{version}-%{release}
-Conflicts: libquadmath0@variant@ < %{version}-%{release}
-%else
-Autoprov: no
-%endif
+Provides: libquadmath%{libquadmath_sover}@variant@ = %{version}-%{release}
-%description -n libquadmath@base_ver@@variant@
+%description -n libquadmath%{libquadmath_sover}%{libquadmath_suffix}@variant@
The runtime library needed to run programs compiled with the Fortran compiler
of the GNU Compiler Collection (GCC) and quadruple precision floating point
operations.
-%post -n libquadmath@base_ver@@variant@
+%post -n libquadmath%{libquadmath_sover}%{libquadmath_suffix}@variant@
/sbin/ldconfig
-%postun -n libquadmath@base_ver@@variant@
+%postun -n libquadmath%{libquadmath_sover}%{libquadmath_suffix}@variant@
/sbin/ldconfig
# PACKAGE-END
Summary: The Mudflap Extension Runtime Library
License: GPL-3.0-with-GCC-exception
Group: Development/Languages/C and C++
-Provides: libmudflap0@variant@ = %{version}-%{release}
-Conflicts: libmudflap0@variant@ < %{version}-%{release}
-Provides: libmudflapth0@variant@ = %{version}-%{release}
-Conflicts: libmudflapth0@variant@ < %{version}-%{release}
%description -n libmudflap@base_ver@@variant@
This is the Mudflap Extension Runtime Library.
/sbin/ldconfig
# PACKAGE-END
+# PACKAGE-BEGIN
+%package -n libitm%{libitm_sover}%{libitm_suffix}@variant@
+Summary: The GNU Compiler Transactional Memory Runtime Library
+License: MIT
+Group: Development/Languages/C and C++
+
+%description -n libitm%{libitm_sover}%{libitm_suffix}@variant@
+The runtime library needed to run programs compiled with the
+-fgnu-tm option of the GNU Compiler Collection (GCC).
+
+%post -n libitm%{libitm_sover}%{libitm_suffix}@variant@
+/sbin/ldconfig
+
+%postun -n libitm%{libitm_sover}%{libitm_suffix}@variant@
+/sbin/ldconfig
+# PACKAGE-END
+
+# PACKAGE-BEGIN
+%package -n libasan%{libasan_sover}%{libasan_suffix}@variant@
+Summary: The GNU Compiler Address Sanitizer Runtime Library
+License: MIT
+Group: Development/Languages/C and C++
+
+%description -n libasan%{libasan_sover}%{libasan_suffix}@variant@
+The runtime library needed to run programs compiled with the
+-fsanitize=address option of the GNU Compiler Collection (GCC).
+
+%post -n libasan%{libasan_sover}%{libasan_suffix}@variant@
+/sbin/ldconfig
+
+%postun -n libasan%{libasan_sover}%{libasan_suffix}@variant@
+/sbin/ldconfig
+# PACKAGE-END
+
+# PACKAGE-BEGIN
+%package -n libtsan%{libtsan_sover}%{libtsan_suffix}@variant@
+Summary: The GNU Compiler Thread Sanitizer Runtime Library
+License: MIT
+Group: Development/Languages/C and C++
+
+%description -n libtsan%{libtsan_sover}%{libtsan_suffix}@variant@
+The runtime library needed to run programs compiled with the
+-fsanitize=thread option of the GNU Compiler Collection (GCC).
+
+%post -n libtsan%{libtsan_sover}%{libtsan_suffix}@variant@
+/sbin/ldconfig
+
+%postun -n libtsan%{libtsan_sover}%{libtsan_suffix}@variant@
+/sbin/ldconfig
+# PACKAGE-END
+
+# PACKAGE-BEGIN
+%package -n libatomic%{libatomic_sover}%{libatomic_suffix}@variant@
+Summary: The GNU Compiler Atomic Operations Runtime Library
+License: GPL-3.0-with-GCC-exception
+Group: Development/Languages/C and C++
+
+%description -n libatomic%{libatomic_sover}%{libatomic_suffix}@variant@
+The runtime library for atomic operations of the GNU Compiler Collection (GCC).
+
+%post -n libatomic%{libatomic_sover}%{libatomic_suffix}@variant@
+/sbin/ldconfig
+
+%postun -n libatomic%{libatomic_sover}%{libatomic_suffix}@variant@
+/sbin/ldconfig
+# PACKAGE-END
+
%package -n libgcj@base_ver@
# LIBJAVA-DELETE-END
Summary: Java Runtime Library for gcc
License: GPL-2.0-with-classpath-exception
Group: System/Libraries
-%define gcj_sover 13
-Provides: libgcj%{gcj_sover} = %{version}-%{release}
-Conflicts: libgcj%{gcj_sover} < %{version}-%{release}
-Provides: libgij%{gcj_sover} = %{version}-%{release}
-Conflicts: libgij%{gcj_sover} < %{version}-%{release}
-Provides: libgcj-tools%{gcj_sover} = %{version}-%{release}
-Conflicts: libgcj-tools%{gcj_sover} < %{version}-%{release}
%description -n libgcj@base_ver@
This library is needed if you want to use the GNU Java compiler, gcj.
The Java compiler from the GCC-tools-suite.
-%package -n libgcj_bc@base_ver@
+%package -n libgcj_bc%{libgcj_bc_sover}%{libgcj_bc_suffix}
Summary: Fake library for BC-ABI compatibility.
License: GPL-2.0-with-classpath-exception
Group: Development/Libraries/Java
-Provides: libgcj_bc1 = %{version}-%{release}
-Conflicts: libgcj_bc1 < %{version}-%{release}
# libgcj_bc is special in that it just contains a symlink to
# a proper libgcj version. So require that library and add
# provides for the shlib version as created at link time
-Requires: libgcj%{gcj_sover}
-%ifarch x86_64
-Provides: libgcj_bc.so.1()(64bit)
+Requires: libgcj%{libgcj_sover} >= %{version}-%{release}
+%ifarch x86_64 ia64 ppc64 s390x sparc64 aarch64
+Provides: libgcj_bc.so.%{libgcj_bc_sover}()(64bit)
%else
-Provides: libgcj_bc.so.1
+Provides: libgcj_bc.so.%{libgcj_bc_sover}
%endif
-
-%description -n libgcj_bc@base_ver@
+%description -n libgcj_bc%{libgcj_bc_sover}%{libgcj_bc_suffix}
A fake library that is used at link time only. It ensures that
binaries built with the BC-ABI link against a constant SONAME.
This way, BC-ABI binaries continue to work if the SONAME underlying
License: GPL-2.0-with-classpath-exception
Group: Development/Libraries/Java
Requires: libstdc++@base_ver@-devel = %{version}
-Requires: libgcj%{gcj_sover} >= %{version}-%{release}
-Requires: libgcj_bc1 >= %{version}-%{release}
+Requires: libgcj%{libgcj_sover} >= %{version}-%{release}
+Requires: libgcj_bc%{libgcj_bc_sover} >= %{version}-%{release}
Requires: libgcj@base_ver@-jar = %{version}-%{release}
Requires: gtk2-devel
Requires: libart_lgpl-devel
Summary: Java Bytecode Interpreter for gcc
License: GPL-2.0-with-classpath-exception
Group: Development/Libraries/Java
-Requires: libgcj%{gcj_sover} >= %{version}-%{release}
+Requires: libgcj%{libgcj_sover} >= %{version}-%{release}
%description -n gcc@base_ver@-gij
This package contains the java bytecode interpreter gij and related tools.
# LIBFFI-DELETE-END
# PACKAGE-BEGIN
-%package -n libffi@base_ver@@variant@
+%package -n libffi%{libffi_sover}%{libffi_suffix}@variant@
Summary: Foreign Function Interface library
License: BSD-3-Clause
Group: Development/Languages/C and C++
-Provides: g-wrap:/usr/lib/libffi.so.4
-Provides: libffi4@variant@ = %{version}-%{release}
-Conflicts: libffi4@variant@ < %{version}-%{release}
-%description -n libffi@base_ver@@variant@
+%description -n libffi%{libffi_sover}%{libffi_suffix}@variant@
A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
-%post -n libffi@base_ver@@variant@
+%post -n libffi%{libffi_sover}%{libffi_suffix}@variant@
/sbin/ldconfig
-%postun -n libffi@base_ver@@variant@
+%postun -n libffi%{libffi_sover}%{libffi_suffix}@variant@
/sbin/ldconfig
# PACKAGE-END
Summary: Foreign Function Interface library development files
License: BSD 3-Clause
Group: Development/Languages/C and C++
-Requires: libffi4@variant@ >= %{version}-%{release}
-Provides: libffi-devel@variant@ = %{version}-%{release}
-Conflicts: libffi-devel@variant@ < %{version}-%{release}
+Requires: libffi%{libffi_sover}@variant@ >= %{version}-%{release}
%description -n libffi@base_ver@-devel@variant@
A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
%if 0%{?gcc_target_arch:1}
%define CONFIGURE_TARGET %{gcc_target_arch}
%define TARGET_ARCH %(echo %{gcc_target_arch} | cut -d - -f 1 | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;")
+%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "powerpc"
+%define CONFIGURE_TARGET powerpc64-tizen-linux
+%endif
+%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "powerpc64"
+%define CONFIGURE_TARGET powerpc64-tizen-linux
+%endif
%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "i586"
%define CONFIGURE_TARGET i586-tizen-linux
%endif
%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "armv7hl"
%define CONFIGURE_TARGET armv7hl-tizen-linux-gnueabi
%endif
-%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "armv7el"
-%define CONFIGURE_TARGET armv7el-tizen-linux-gnueabi
-%endif
-%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "armv5el"
-%define CONFIGURE_TARGET armv5el-tizen-linux-gnueabi
+%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "armv5tel"
+%define CONFIGURE_TARGET armv5tel-tizen-linux-gnueabi
%endif
%else
%define TARGET_ARCH %(echo %{_target_cpu} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;")
%define biarch %(case " %{biarch_targets} " in (*" %{TARGET_ARCH} "*) echo 1;; (*) echo 0;; esac)
+%ifarch ppc
+%define GCCDIST powerpc64-tizen-linux
+%else
+%ifarch %sparc
+%define GCCDIST sparc64-tizen-linux
+%else
%ifarch %arm
%define GCCDIST %{HOST_ARCH}-tizen-linux-gnueabi
%else
%define GCCDIST %{HOST_ARCH}-tizen-linux
%endif
+%endif
+%endif
%define libsubdir %{_libdir}/gcc/%{GCCDIST}/%{gcc_dir_version}
%define gxxinclude %{_prefix}/include/c++/%{gcc_dir_version}
%define versmainlibdir %{libsubdir}
%define versmainlibdirbi32 %{libsubdir}/32
%define versmainlibdirbi64 %{libsubdir}/64
+%ifarch ppc
+%define versmainlibdirbi32 %{libsubdir}
+%define versmainlibdirbi64 %{libsubdir}/64
+%endif
%if %{build_primary_64bit}
%define versmainlibdirbi %{versmainlibdirbi32}
%else
%define versmainlibdirbi %{versmainlibdirbi64}
%endif
-%if 0%{?build_optional_compiler:1}
-%define mainlibdir %{versmainlibdir}
-%define mainlibdirbi32 %{versmainlibdirbi32}
-%define mainlibdirbi64 %{versmainlibdirbi64}
-%define noflibdir %{versnoflibdir}
-%define mainlibdirbi %{versmainlibdirbi}
-%else
%define mainlibdir %{_libdir}
%define mainlibdirbi32 %{_prefix}/lib
%define mainlibdirbi64 %{_prefix}/lib64
-%define noflibdir %{_prefix}/lib/nof
%if %{build_primary_64bit}
%define mainlibdirbi %{mainlibdirbi32}
%else
%define mainlibdirbi %{mainlibdirbi64}
%endif
-%endif
# Now define a few macros that make it easy to package libs and
# exact path the files are in.
# %mainlib package X from all dirs that belong to the main package
# %biarchlib package X from all dirs that belong to the -32/64bit package
-# by default, nof libs go where the 32bit libs go.
-%if %{build_nof}
-%define mainlib() %{mainlibdir}/%1\
-%{noflibdir}/%1\
-%{nil}
-%else
%define mainlib() %{mainlibdir}/%1\
%{nil}
-%endif
%define biarchlib() %{nil}
%if %{biarch}
%if !%{separate_biarch}
-%if %{build_nof}
-%define mainlib() %{mainlibdir}/%1\
-%{mainlibdirbi}/%1\
-%{noflibdir}/%1\
-%{nil}
-%else
%define mainlib() %{mainlibdir}/%1\
%{mainlibdirbi}/%1\
%{nil}
-%endif
%else
-%if %{build_nof}
%define biarchlib() %{mainlibdirbi}/%1\
-%{noflibdir}/%1\
-%{nil}
-%define mainlib() %{mainlibdir}/%1\
%{nil}
-%else
-%define biarchlib() %{mainlibdirbi}/%1\
-%{nil}
-%endif
%endif
%endif
-%if %{build_nof}
%define versmainlib() %{versmainlibdir}/%1\
-%{versnoflibdir}/%1\
%{nil}
-%else
-%define versmainlib() %{versmainlibdir}/%1\
-%{nil}
-%endif
%define versbiarchlib() %{nil}
%if %{biarch}
%if !%{separate_biarch}
-%if %{build_nof}
%define versmainlib() %{versmainlibdir}/%1\
%{versmainlibdirbi}/%1\
-%{versnoflibdir}/%1\
%{nil}
%else
-%define versmainlib() %{versmainlibdir}/%1\
-%{versmainlibdirbi}/%1\
-%{nil}
-%endif
-%else
-%if %{build_nof}
%define versbiarchlib() %{versmainlibdirbi}/%1\
-%{versnoflibdir}/%1\
-%{nil}
-%define versmainlib() %{versmainlibdir}/%1\
%{nil}
-%else
-%define versbiarchlib() %{versmainlibdirbi}/%1\
-%{nil}
-%endif
%endif
%endif
# COMMON-BEGIN
%prep
-%setup -q -n gcc-%{gcc_version}%{snapshot_date}
-# 0001-dir-version.patch
-%patch0 -p1
+%setup -q -n gcc-%{version}
+
+
+# We are configuring ppc as ppc64 but with switched multilibs. Adjust
+# the libstdc++ abi testsuite baseline files accordingly
+%ifarch ppc
+if [ -d libstdc++-v3/config/abi/post/powerpc64-linux-gnu ]; then
+ mkdir -p libstdc++-v3/config/abi/post/powerpc64-linux-gnu/64
+ mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt \
+ libstdc++-v3/config/abi/post/powerpc64-linux-gnu/64/
+ mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt \
+ libstdc++-v3/config/abi/post/powerpc64-linux-gnu/
+fi
+%endif
%build
# Avoid rebuilding of generated files
# default compiler settings now.
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-mcpu=i.86//g' -e 's/-march=i.86//g' -e 's/-mtune=i.86//g'`
%endif
+%ifarch s390 s390x
+RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-fsigned-char//g'`
+RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-O1/-O2/g'`
+%endif
%if 0%{?gcc_target_arch:1} && 0%{!?gcc_icecream:1}
# Kill all -march/tune/cpu because that screws building the target libs
RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-m\(arch\|tune\|cpu\)=[^ ]*//g'`
# if glibc supports SSP. When cross compiling we would need
# to install a cross glibc, which we don't, or make the whole
# thing point to the native glibc, which is in /, hence the
-# --with-sysroot=/
+# --with-build-sysroot=/
%if %{build_ada}
# Using the host gnatmake like
# --enable-threads=posix \
#%endif
# --enable-shared \
+%if "%{TARGET_ARCH}" == "armv7l" || "%{TARGET_ARCH}" == "armv7hl"
+# temporary workaround for a miscompilation of hash functions in java code
+GCJ_EXTRA_FLAGS="-marm"
+%endif
CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \
-TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
+TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS $GCJ_EXTRA_FLAGS" \
../configure \
--prefix=%{_prefix} \
--infodir=%{_infodir} \
--mandir=%{_mandir} \
--libdir=%{_libdir} \
--libexecdir=%{_libdir} \
+ --disable-bootstrap \
--enable-languages=$languages \
$ENABLE_CHECKING \
--with-gxx-include-dir=%{_prefix}/include/c++/%{gcc_dir_version} \
--enable-ssp \
--disable-libssp \
- --disable-libitm \
-%if 0%{?fast_build}
- --disable-bootstrap \
-%endif
--disable-plugin \
--with-bugurl="http://bugs.tizen.org/" \
- --with-pkgversion="Tizen Linux" \
+ --with-pkgversion="Tizen" \
%if !%{build_libjava}
--disable-libgcj \
%else
%if 0%{?canonical_target:1}
--with-build-time-tools=/usr/%{canonical_target}-tizen-linux%{?canonical_target_abi:%canonical_target_abi}/bin \
%endif
+%if 0%{?sysroot:1}
+ --with-sysroot=%sysroot \
+%endif
%if 0%{?build_static:1}
--disable-shared \
%endif
%if "%{TARGET_ARCH}" == "spu"
- --with-sysroot=/usr/spu \
- --with-gxx-include-dir=%{_prefix}/spu/include/c++/%{gcc_dir_version} \
+ --with-gxx-include-dir=%sysroot/include/c++/%{gcc_dir_version} \
--with-newlib \
%endif
--disable-nls \
--with-abi=aapcs-linux \
--disable-sjlj-exceptions \
%endif
-%if "%{TARGET_ARCH}" == "armv7el"
+%if "%{TARGET_ARCH}" == "armv7l"
--with-arch=armv7-a \
--with-tune=cortex-a9 \
- --with-float=soft \
- --with-abi=softfp \
- --with-fpu=vfpv3 \
+ --with-float=soft \
+ --with-fpu=vfpv3-d16 \
--disable-sjlj-exceptions \
%endif
-%if "%{TARGET_ARCH}" == "armv7l" || "%{TARGET_ARCH}" == "armv7hl"
+%if "%{TARGET_ARCH}" == "armv7hl"
--with-arch=armv7-a \
--with-tune=cortex-a9 \
--with-float=hard \
--with-fpu=vfpv3-d16 \
--disable-sjlj-exceptions \
%endif
+%if "%{TARGET_ARCH}" == "powerpc" || "%{TARGET_ARCH}" == "powerpc64"
+%if "%{TARGET_ARCH}" == "powerpc"
+ --with-cpu=default32 \
+%endif
+ --with-cpu-64=power4 \
+ --enable-secureplt \
+ --with-long-double-128 \
+%endif
+%if "%{TARGET_ARCH}" == "sparc64"
+ --with-cpu=ultrasparc \
+ --with-long-double-128 \
+%endif
+%if "%{TARGET_ARCH}" == "sparc"
+ --with-cpu=v8 \
+ --with-long-double-128 \
+%endif
%if "%{TARGET_ARCH}" == "i586"
--with-arch-32=i586 \
--with-tune=generic \
--with-arch-32=i586 \
--with-tune=generic \
%endif
+%if "%{TARGET_ARCH}" == "s390"
+ --with-tune=z196 --with-arch=z10 \
+ --with-long-double-128 \
+ --enable-decimal-float \
+%endif
+%if "%{TARGET_ARCH}" == "s390x"
+ --with-tune=z196 --with-arch=z10 \
+ --with-long-double-128 \
+ --enable-decimal-float \
+%endif
--build=%{GCCDIST}
# COMMON-END
make stage1-bubble $PARALLEL
make all-target-libffi $PARALLEL
%else
+STAGE1_FLAGS="-g"
# Only run profiled bootstrap on archs where it works
#%ifarch %ix86 x86_64 ppc ppc64 ia64
-#make profiledbootstrap-lean STAGE1_CFLAGS="-O -g" BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
+#make profiledbootstrap-lean STAGE1_CFLAGS="$STAGE1_FLAGS" BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
#%else
-%ifarch %arm
-STAGE1_FLAGS="-O0"
-%else
-STAGE1_FLAGS="-O -g"
-%endif
#make bootstrap-lean STAGE1_CFLAGS="$STAGE1_FLAGS" BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
make STAGE1_CFLAGS="$STAGE1_FLAGS" BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
#%endif
(make -C %{GCCDIST}/libstdc++-v3 check-abi || true)
mv %{GCCDIST}/libstdc++-v3/testsuite/libstdc++.log %{GCCDIST}/libstdc++-v3/testsuite/libstdc++-abi.log
mv %{GCCDIST}/libstdc++-v3/testsuite/libstdc++.sum %{GCCDIST}/libstdc++-v3/testsuite/libstdc++-abi.sum
+# asan needs a whole shadow address space
+ulimit -v unlimited || true
make -k check $PARALLEL || true
mkdir ../testresults
../contrib/test_summary | tee ../testresults/test_summary.txt
rm -f $RPM_BUILD_ROOT%{_mandir}/man3/ffi%{binsuffix}.3*
rm -f $RPM_BUILD_ROOT%{_mandir}/man3/ffi_call%{binsuffix}.3*
rm -f $RPM_BUILD_ROOT%{_mandir}/man3/ffi_prep_cif%{binsuffix}.3*
+rm -f $RPM_BUILD_ROOT%{_mandir}/man3/ffi_prep_cif_var%{binsuffix}.3*
%endif
# Remove some useless .la files
for lib in libobjc libgfortran libgfortranbegin libquadmath libcaf_single \
- libmudflap libmudflapth libgomp libstdc++ libsupc++ libgcj-tools libgij; do
+ libmudflap libmudflapth libgomp libstdc++ libsupc++ libgcj-tools libgij \
+ libasan libatomic libitm libtsan; do
rm -f $RPM_BUILD_ROOT%{versmainlibdir}/$lib.la
%if %{biarch}
rm -f $RPM_BUILD_ROOT%{versmainlibdirbi}/$lib.la
%endif
# LIBJAVA-DELETE-END
-%if 0%{!?build_optional_compiler:1}
# move shared libs from versionspecific dir to main libdir
for libname in \
%if 0%{?building_libjava:1}
libstdc++ \
%endif
libgomp \
+%ifarch %atomic_arch
+ libatomic \
+%endif
+%ifarch %itm_arch
+ libitm \
+%endif
+%ifarch %asan_arch
+ libasan \
+%endif
+%ifarch %tsan_arch
+ libtsan \
+%endif
%if %{build_with_mudflap}
libmudflap libmudflapth \
%endif
fi
%endif
done
+# FIXME, tsan is not multilib
+%ifarch %tsan_arch
+%if %{biarch}
+rm -f $RPM_BUILD_ROOT%{versmainlibdirbi}/libtsan.so
+%endif
+%endif
%if %{build_cp}
%if !0%{?building_libjava:1}
# And we want to move the shlib gdb pretty printers to a more sane
for lib in `find $RPM_BUILD_ROOT%{versmainlibdir} -maxdepth 1 -name libgcj_bc.so.*`; do
rm $lib
done
-ln -s libgcj.so.%{gcj_sover} $RPM_BUILD_ROOT%{mainlibdir}/libgcj_bc.so.1
+ln -s libgcj.so.%{libgcj_sover} $RPM_BUILD_ROOT%{mainlibdir}/libgcj_bc.so.%{libgcj_bc_sover}
%if %{biarch_libjava}
for lib in `find $RPM_BUILD_ROOT%{versmainlibdirbi} -maxdepth 1 -name libgcj_bc.so.*`; do
rm $lib
done
-ln -s libgcj.so.%{gcj_sover} $RPM_BUILD_ROOT%{mainlibdirbi}/libgcj_bc.so.1
-%endif
+ln -s libgcj.so.%{libgcj_sover} $RPM_BUILD_ROOT%{mainlibdirbi}/libgcj_bc.so.%{libgcj_bc_sover}
%endif
%endif
# LIBJAVA-DELETE-BEGIN
-%if 0%{!?build_optional_compiler:1}
# Move libgcc_s around
if test -L $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so; then
rm -f $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so
chmod a+x $RPM_BUILD_ROOT/lib64/libgcc_s.so.%{libgcc_s}
%endif
%endif
-%else
-# Move libgcc_s around
-mv $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so.%{libgcc_s} $RPM_BUILD_ROOT%{versmainlibdir}/
-if test -L $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so; then
- rm -f $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so
- ln -sf %{versmainlibdir}/libgcc_s.so.%{libgcc_s} $RPM_BUILD_ROOT%{versmainlibdir}/libgcc_s.so
-else
- mv $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so $RPM_BUILD_ROOT%{versmainlibdir}/
-fi
-chmod a+x $RPM_BUILD_ROOT%{versmainlibdir}/libgcc_s.so.%{libgcc_s}
-%if %{biarch}
-%if %{build_primary_64bit}
-mv $RPM_BUILD_ROOT/lib/libgcc_s.so.%{libgcc_s} $RPM_BUILD_ROOT%{versmainlibdirbi32}/
-if test -L $RPM_BUILD_ROOT/lib/libgcc_s.so; then
- rm -f $RPM_BUILD_ROOT/lib/libgcc_s.so
- ln -sf %{versmainlibdirbi32}/libgcc_s.so.%{libgcc_s} $RPM_BUILD_ROOT%{versmainlibdirbi32}/libgcc_s.so
-else
- mv $RPM_BUILD_ROOT/lib/libgcc_s.so $RPM_BUILD_ROOT%{versmainlibdirbi32}/
-fi
-ln -sf %{versmainlibdirbi32}/libgcc_s.so $RPM_BUILD_ROOT%{versmainlibdirbi32}/libgcc_s_32.so
-chmod a+x $RPM_BUILD_ROOT%{versmainlibdirbi32}/libgcc_s.so.%{libgcc_s}
-%else
-# 32-bit biarch systems
-mv $RPM_BUILD_ROOT/lib64/libgcc_s.so.%{libgcc_s} $RPM_BUILD_ROOT%{versmainlibdirbi64}/
-if test -L $RPM_BUILD_ROOT/lib64/libgcc_s.so; then
- rm -f $RPM_BUILD_ROOT/lib64/libgcc_s.so
- ln -sf %{versmainlibdirbi64}/libgcc_s.so.%{libgcc_s} $RPM_BUILD_ROOT%{versmainlibdirbi64}/libgcc_s.so
-else
- mv $RPM_BUILD_ROOT/lib64/libgcc_s.so $RPM_BUILD_ROOT%{versmainlibdirbi64}/
-fi
-ln -sf %{versmainlibdirbi64}/libgcc_s.so $RPM_BUILD_ROOT%{versmainlibdirbi64}/libgcc_s_64.so
-chmod a+x $RPM_BUILD_ROOT%{versmainlibdirbi64}/libgcc_s.so.%{libgcc_s}
-%endif
-%endif
-%endif
-# Provide a defaults.spec file which adds a proper rpath
-%if 0%{?build_optional_compiler:1}
-cat > $RPM_BUILD_ROOT%{libsubdir}/defaults.spec << EOF
-*link:
-+ %%{!m32:%%{!m64:-rpath=%{libsubdir}}} %%{m32:-rpath=%{libsubdir}/32} %%{m64:-rpath=%{libsubdir}/64}
-EOF
-%endif
# LIBJAVA-DELETE-END
# LIBFFI-DELETE-END
rm -f $RPM_BUILD_ROOT%{_mandir}/man7/gfdl.7
rm -f $RPM_BUILD_ROOT%{_mandir}/man7/gpl.7
rm -f $RPM_BUILD_ROOT%{_libdir}/libiberty.a
-%if %{build_nof}
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib/nof/libiberty.a
-%endif
%if %{biarch}
%if %{build_primary_64bit}
rm -f $RPM_BUILD_ROOT%{_prefix}/lib/libiberty.a
# For regular build, some info files do not get renamed properly.
# Do so here.
mv $RPM_BUILD_ROOT%{_infodir}/libgomp.info $RPM_BUILD_ROOT%{_infodir}/libgomp%{binsuffix}.info
+%ifarch %itm_arch
+mv $RPM_BUILD_ROOT%{_infodir}/libitm.info $RPM_BUILD_ROOT%{_infodir}/libitm%{binsuffix}.info
+%endif
%if %{build_fortran}
%ifarch %quadmath_arch
mv $RPM_BUILD_ROOT%{_infodir}/libquadmath.info $RPM_BUILD_ROOT%{_infodir}/libquadmath%{binsuffix}.info
# LIBJAVA-DELETE-BEGIN
cd ..
-%find_lang gcc@base_ver@-locale --all-name
+%find_lang cpplib%{binsuffix}
+%find_lang gcc%{binsuffix}
+cat cpplib%{binsuffix}.lang gcc%{binsuffix}.lang > gcc@base_ver@-locale.lang
+
%post info
%install_info --info-dir=%{_infodir} %{_infodir}/cpp%{binsuffix}.info.gz
%if %{build_ada}
%install_info --info-dir=%{_infodir} %{_infodir}/gnat-style%{binsuffix}.info.gz
%install_info --info-dir=%{_infodir} %{_infodir}/gnat_rm%{binsuffix}.info.gz
-%install_info --info-dir=%{_infodir} --section="GNU Ada tools" --entry="* GNAT User's Guide: (gnat_ugn). GNAT User's Guide for Unix Platforms" %{_infodir}/gnat_ugn%{binsuffix}.info.gz
+%install_info --info-dir=%{_infodir} %{_infodir}/gnat_ugn%{binsuffix}.info.gz
%endif
%postun info
%install_info_delete --info-dir=%{_infodir} %{_infodir}/gnat_ugn%{binsuffix}.info.gz
%endif
-
%files
%defattr(-,root,root)
%dir %{_libdir}/gcc
%dir %{libsubdir}/64
%endif
%endif
-%if %{build_nof}
-%dir %{libsubdir}/nof
-%endif
%{_prefix}/bin/gcc%{binsuffix}
%{_prefix}/bin/gcov%{binsuffix}
%{_prefix}/bin/gcc-ar%{binsuffix}
%{libsubdir}/include/stdbool.h
%{libsubdir}/include/stdfix.h
%{libsubdir}/include/stddef.h
-%{libsubdir}/include/uchar.h
%{libsubdir}/include/unwind.h
%{libsubdir}/include/varargs.h
%{libsubdir}/include/stdint.h
%{libsubdir}/include/stdint-gcc.h
%{libsubdir}/include/stdnoreturn.h
%{libsubdir}/include/stdalign.h
+%ifarch %sparc
+%{libsubdir}/include/visintrin.h
+%endif
+%ifarch ppc ppc64
+%{libsubdir}/include/altivec.h
+%{libsubdir}/include/ppc-asm.h
+%{libsubdir}/include/paired.h
+%{libsubdir}/include/ppu_intrinsics.h
+%{libsubdir}/include/si2vmx.h
+%{libsubdir}/include/spe.h
+%{libsubdir}/include/spu2vmx.h
+%{libsubdir}/include/vec_types.h
+%endif
+%ifarch ia64
+%{libsubdir}/include/ia64intrin.h
+%endif
+%ifarch aarch64
+%{libsubdir}/include/arm_neon.h
+%endif
%ifarch %arm
%{libsubdir}/include/mmintrin.h
%{libsubdir}/include/arm_neon.h
%{libsubdir}/include/fmaintrin.h
%{libsubdir}/include/lzcntintrin.h
%{libsubdir}/include/f16cintrin.h
+%{libsubdir}/include/adxintrin.h
+%{libsubdir}/include/fxsrintrin.h
+%{libsubdir}/include/prfchwintrin.h
+%{libsubdir}/include/rdseedintrin.h
+%{libsubdir}/include/rtmintrin.h
+%{libsubdir}/include/xsaveintrin.h
+%{libsubdir}/include/xsaveoptintrin.h
+%{libsubdir}/include/xtestintrin.h
%endif
%if %{build_with_mudflap}
%{libsubdir}/include/mf-runtime.h
%versmainlib libgomp.so
%versmainlib libgomp.a
%versmainlib libgomp.spec
+%ifarch %itm_arch
+%versmainlib libitm.so
+%versmainlib libitm.a
+%versmainlib libitm.spec
+%endif
+%ifarch %atomic_arch
+%versmainlib libatomic.so
+%versmainlib libatomic.a
+%endif
+%ifarch %asan_arch
+%versmainlib libasan.so
+%versmainlib libasan.a
+%versmainlib libasan_preinit.o
+%endif
+%ifarch %tsan_arch
+%versmainlib libtsan.so
+%versmainlib libtsan.a
+%endif
%doc %{_mandir}/man1/gcc%{binsuffix}.1.gz
%doc %{_mandir}/man1/gcov%{binsuffix}.1.gz
-%if 0%{?build_optional_compiler:1}
-%{libsubdir}/defaults.spec
-%endif
%if %{separate_biarch}
%files -n gcc@base_ver@%{separate_biarch_suffix}
%versbiarchlib libgomp.so
%versbiarchlib libgomp.a
%versbiarchlib libgomp.spec
+%ifarch %itm_arch
+%versbiarchlib libitm.so
+%versbiarchlib libitm.a
+%versbiarchlib libitm.spec
+%endif
+%ifarch %atomic_arch
+%versbiarchlib libatomic.a
+%versbiarchlib libatomic.so
+%endif
+%ifarch %asan_arch
+%versbiarchlib libasan.a
+%versbiarchlib libasan.so
+%versbiarchlib libasan_preinit.o
+%endif
+%if 0
+%ifarch %tsan_arch
+%versbiarchlib libtsan.a
+%versbiarchlib libtsan.so
+%endif
+%endif
%endif
%files locale -f gcc@base_ver@-locale.lang
+%files -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}-locale
+
%if %{build_cp}
%files c++
%defattr(-,root,root)
%doc %{_mandir}/man1/g++%{binsuffix}.1.gz
%{libsubdir}/cc1plus
-%files -n libstdc++@base_ver@
+%files -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}
%defattr(-,root,root)
-%if %{build_nof}
-%dir %{noflibdir}
-%endif
-%mainlib libstdc++.so.*
+%mainlib libstdc++.so.%{libstdcxx_sover}*
%if %{separate_biarch}
-%files -n libstdc++@base_ver@%{separate_biarch_suffix}
+%files -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}%{separate_biarch_suffix}
%defattr(-,root,root)
-%biarchlib libstdc++.so.*
+%biarchlib libstdc++.so.%{libstdcxx_sover}*
%endif
%files -n libstdc++@base_ver@-devel -f c++-headers
%doc libstdc++-v3/doc/html
%endif
-%files -n libgcc@base_ver@
+%files -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}
%defattr(-,root,root)
-%if 0%{!?build_optional_compiler:1}
/%{_lib}/libgcc_s.so.%{libgcc_s}
-%if %{build_nof}
-%dir /lib/nof
-/lib/nof/libgcc_s.so.%{libgcc_s}
-%endif
%if %{biarch}
%if %{build_primary_64bit}
%if !%{separate_bi32}
%endif
%endif
%endif
-%else
-%versmainlib libgcc_s.so.%{libgcc_s}
-%endif
%if %{separate_bi64}
-%files -n libgcc@base_ver@-64bit
+%files -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}-64bit
%defattr(-,root,root)
-%if 0%{!?build_optional_compiler:1}
/lib64/libgcc_s.so.%{libgcc_s}
-%else
-%versbiarchlib libgcc_s.so.%{libgcc_s}
-%endif
%endif
%if %{separate_bi32}
-%files -n libgcc@base_ver@-32bit
+%files -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}-32bit
%defattr(-,root,root)
-%if 0%{!?build_optional_compiler:1}
/lib/libgcc_s.so.%{libgcc_s}
-%else
-%versbiarchlib libgcc_s.so.%{libgcc_s}
%endif
+
+
+%files -n libgomp%{libgomp_sover}%{libgomp_suffix}
+%defattr(-,root,root)
+%mainlib libgomp.so.%{libgomp_sover}*
+
+%if %{separate_biarch}
+%files -n libgomp%{libgomp_sover}%{libgomp_suffix}%{separate_biarch_suffix}
+%defattr(-,root,root)
+%biarchlib libgomp.so.%{libgomp_sover}*
%endif
-%files -n libgomp@base_ver@
+%ifarch %asan_arch
+%files -n libasan%{libasan_sover}%{libasan_suffix}
%defattr(-,root,root)
-%mainlib libgomp.so.1*
+%mainlib libasan.so.%{libasan_sover}*
%if %{separate_biarch}
-%files -n libgomp@base_ver@%{separate_biarch_suffix}
+%files -n libasan%{libasan_sover}%{libasan_suffix}%{separate_biarch_suffix}
%defattr(-,root,root)
-%biarchlib libgomp.so.1*
+%biarchlib libasan.so.%{libasan_sover}*
%endif
+%endif
+
+
+%ifarch %tsan_arch
+%files -n libtsan%{libtsan_sover}%{libtsan_suffix}
+%defattr(-,root,root)
+%mainlib libtsan.so.%{libtsan_sover}*
+
+%if 0
+%if %{separate_biarch}
+%files -n libtsan%{libtsan_sover}%{libtsan_suffix}%{separate_biarch_suffix}
+%defattr(-,root,root)
+%biarchlib libtsan.so.%{libtsan_sover}*
+%endif
+%endif
+%endif
+
+
+%ifarch %atomic_arch
+%files -n libatomic%{libatomic_sover}%{libatomic_suffix}
+%defattr(-,root,root)
+%mainlib libatomic.so.%{libatomic_sover}*
+
+%if %{separate_biarch}
+%files -n libatomic%{libatomic_sover}%{libatomic_suffix}%{separate_biarch_suffix}
+%defattr(-,root,root)
+%biarchlib libatomic.so.%{libatomic_sover}*
+%endif
+%endif
+
+
+%ifarch %itm_arch
+%files -n libitm%{libitm_sover}%{libitm_suffix}
+%defattr(-,root,root)
+%mainlib libitm.so.%{libitm_sover}*
+
+%if %{separate_biarch}
+%files -n libitm%{libitm_sover}%{libitm_suffix}%{separate_biarch_suffix}
+%defattr(-,root,root)
+%biarchlib libitm.so.%{libitm_sover}*
+%endif
+%endif
+
%if %{build_fortran}
%endif
%endif
-%files -n libgfortran@base_ver@
+%files -n libgfortran%{libgfortran_sover}%{libgfortran_suffix}
%defattr(-,root,root)
-%mainlib libgfortran.so.*
+%mainlib libgfortran.so.%{libgfortran_sover}*
%if %{separate_biarch}
-%files -n libgfortran@base_ver@%{separate_biarch_suffix}
+%files -n libgfortran%{libgfortran_sover}%{libgfortran_suffix}%{separate_biarch_suffix}
%defattr(-,root,root)
-%biarchlib libgfortran.so.*
+%biarchlib libgfortran.so.%{libgfortran_sover}*
%endif
%ifarch %quadmath_arch
-%files -n libquadmath@base_ver@
+%files -n libquadmath%{libquadmath_sover}%{libquadmath_suffix}
%defattr(-,root,root)
-%mainlib libquadmath.so.*
+%mainlib libquadmath.so.%{libquadmath_sover}*
%if %{separate_biarch}
-%files -n libquadmath@base_ver@%{separate_biarch_suffix}
+%files -n libquadmath%{libquadmath_sover}%{libquadmath_suffix}%{separate_biarch_suffix}
%defattr(-,root,root)
-%biarchlib libquadmath.so.*
+%biarchlib libquadmath.so.%{libquadmath_sover}*
%endif
%endif
%endif
%if %{build_with_mudflap}
%files -n libmudflap@base_ver@
%defattr(-,root,root)
-%mainlib libmudflap.so.0*
-%mainlib libmudflapth.so.0*
+%mainlib libmudflap.so.%{libmudflap_sover}*
+%mainlib libmudflapth.so.%{libmudflap_sover}*
%if %{separate_biarch}
%files -n libmudflap@base_ver@%{separate_biarch_suffix}
%defattr(-,root,root)
-%biarchlib libmudflap.so.0*
-%biarchlib libmudflapth.so.0*
+%biarchlib libmudflap.so.%{libmudflap_sover}*
+%biarchlib libmudflapth.so.%{libmudflap_sover}*
%endif
%endif
%files info
%defattr(-,root,root)
-%doc %{_infodir}/cpp%{binsuffix}.info*.gz
-%doc %{_infodir}/cppinternals%{binsuffix}.info*.gz
-%doc %{_infodir}/gcc%{binsuffix}.info*.gz
-%doc %{_infodir}/gccint%{binsuffix}.info*.gz
-%doc %{_infodir}/gccinstall%{binsuffix}.info*.gz
-%doc %{_infodir}/libgomp%{binsuffix}.info*.gz
-%if %{build_fortran}
-%doc %{_infodir}/gfortran%{binsuffix}.info*.gz
-%ifarch %quadmath_arch
-%doc %{_infodir}/libquadmath%{binsuffix}.info*.gz
-%endif
-%endif
-%if %{build_java}
-%doc %{_infodir}/gcj%{binsuffix}.info*.gz
-%endif
-%if %{build_ada}
-%doc %{_infodir}/gnat-style%{binsuffix}.info*gz
-%doc %{_infodir}/gnat_rm%{binsuffix}.info*gz
-%doc %{_infodir}/gnat_ugn%{binsuffix}.info*gz
-%endif
+%doc %{_infodir}/*.gz
%files -n cpp@base_ver@
%defattr(-,root,root)
%versbiarchlib libobjc.so
%endif
-%files -n libobjc@base_ver@
+%files -n libobjc%{libobjc_sover}%{libobjc_suffix}
%defattr(-,root,root)
-%mainlib libobjc.so.*
+%mainlib libobjc.so.%{libobjc_sover}*
%if %{separate_biarch}
-%files -n libobjc@base_ver@%{separate_biarch_suffix}
+%files -n libobjc%{libobjc_sover}%{libobjc_suffix}%{separate_biarch_suffix}
%defattr(-,root,root)
-%biarchlib libobjc.so.*
+%biarchlib libobjc.so.%{libobjc_sover}*
%endif
%endif
%if %{build_libjava}
%files -n libgcj@base_ver@
%defattr(-,root,root)
-%dir %{_libdir}/gcj-%{gcc_dir_version}-%{gcj_sover}
+%dir %{_libdir}/gcj-%{gcc_dir_version}-%{libgcj_sover}
%dir %{_libdir}/gcc
%dir %{_libdir}/gcc/%{GCCDIST}
%dir %{libsubdir}
-%{_libdir}/gcj-%{gcc_dir_version}-%{gcj_sover}/classmap.db
+%{_libdir}/gcj-%{gcc_dir_version}-%{libgcj_sover}/classmap.db
# We usually do not multilib libjava
%if %{biarch_libjava}
%versbiarchlib libgcj.la
%mainlib libgij.so.*
%mainlib libgcj-tools.so.*
%endif
-%{_libdir}/gcj-%{gcc_dir_version}-%{gcj_sover}/libjvm.la
-%{_libdir}/gcj-%{gcc_dir_version}-%{gcj_sover}/libjvm.so
-%{_libdir}/gcj-%{gcc_dir_version}-%{gcj_sover}/libjavamath.la
-%{_libdir}/gcj-%{gcc_dir_version}-%{gcj_sover}/libjavamath.so
+%{_libdir}/gcj-%{gcc_dir_version}-%{libgcj_sover}/libjvm.la
+%{_libdir}/gcj-%{gcc_dir_version}-%{libgcj_sover}/libjvm.so
+%{_libdir}/gcj-%{gcc_dir_version}-%{libgcj_sover}/libjavamath.la
+%{_libdir}/gcj-%{gcc_dir_version}-%{libgcj_sover}/libjavamath.so
-%files -n libgcj_bc@base_ver@
+%files -n libgcj_bc%{libgcj_bc_sover}%{libgcj_bc_suffix}
%defattr(-,root,root)
%if %{biarch_libjava}
-%biarchlib libgcj_bc.so.*
+%biarchlib libgcj_bc.so.%{libgcj_bc_sover}*
%else
-%mainlib libgcj_bc.so.*
+%mainlib libgcj_bc.so.%{libgcj_bc_sover}*
%endif
%files -n libgcj@base_ver@-jar
%if %{build_java}
%if 0%{?building_libffi:1}
-%files -n libffi@base_ver@
+%files -n libffi%{libffi_sover}%{libffi_suffix}
%defattr(-,root,root)
-%mainlib libffi.so.*
+%mainlib libffi.so.%{libffi_sover}*
%if %{separate_biarch}
-%files -n libffi@base_ver@%{separate_biarch_suffix}
+%files -n libffi%{libffi_sover}%{libffi_suffix}%{separate_biarch_suffix}
%defattr(-,root,root)
-%biarchlib libffi.so.*
+%biarchlib libffi.so.%{libffi_sover}*
%endif
+%post -n libffi@base_ver@-devel
+%install_info --info-dir=%{_infodir} %{_infodir}/libffi%{binsuffix}.info.gz
+%postun -n libffi@base_ver@-devel
+%install_info_delete --info-dir=%{_infodir} %{_infodir}/libffi%{binsuffix}.info.gz
+
%files -n libffi@base_ver@-devel
%defattr(-,root,root)
%{_prefix}/include/ffi.h
%mainlib libffi.so
%mainlib libffi.a
%{_libdir}/pkgconfig/libffi.pc
+%doc %{_infodir}/libffi%{binsuffix}.info.gz
%doc %{_mandir}/man3/ffi%{binsuffix}.3.gz
%doc %{_mandir}/man3/ffi_call%{binsuffix}.3.gz
%doc %{_mandir}/man3/ffi_prep_cif%{binsuffix}.3.gz
+%doc %{_mandir}/man3/ffi_prep_cif_var%{binsuffix}.3.gz
%if %{separate_biarch}
%files -n libffi@base_ver@-devel%{separate_biarch_suffix}