Blame SPECS/gcc.spec

31df50
%global __python /usr/bin/python3
31df50
%{?scl:%global __strip %%{_scl_root}/usr/bin/strip}
31df50
%{?scl:%global __objdump %%{_scl_root}/usr/bin/objdump}
31df50
%{?scl:%scl_package gcc}
d6dcb6
%global DATE 20221121
d6dcb6
%global gitrev b3f5a0d53b84ed27cf00cfa2b9c3e2c78935c07d
d6dcb6
%global gcc_version 12.2.1
31df50
%global gcc_major 12
31df50
# Note, gcc_release must be integer, if you want to add suffixes to
31df50
# %%{release}, append them after %%{gcc_release} on Release: line.
d6dcb6
%global gcc_release 7
d6dcb6
%global nvptx_tools_gitrev 472b6e78b3ba918d727698f79911360b7c808247
d6dcb6
%global newlib_cygwin_gitrev a8526cb52bedabd4d6ba4b227a5185627f871aa1
31df50
%global mpc_version 1.0.3
d6dcb6
%global isl_version 0.24
31df50
%global mpfr_version 3.1.4
31df50
%global gmp_version 6.1.0
31df50
%global doxygen_version 1.8.0
31df50
%global _unpackaged_files_terminate_build 0
31df50
%if 0%{?fedora} > 27 || 0%{?rhel} > 7
31df50
# Until annobin is fixed (#1519165).
31df50
%undefine _annotated_build
31df50
%endif
31df50
# Strip will fail on nvptx-none *.a archives and the brp-* scripts will
31df50
# fail randomly depending on what is stripped last.
31df50
%if 0%{?__brp_strip_static_archive:1}
31df50
%global __brp_strip_static_archive %{__brp_strip_static_archive} || :
31df50
%endif
31df50
%if 0%{?__brp_strip_lto:1}
31df50
%global __brp_strip_lto %{__brp_strip_lto} || :
31df50
%endif
31df50
%if 0%{?fedora} < 32 && 0%{?rhel} < 8
31df50
%global multilib_64_archs sparc64 ppc64 ppc64p7 x86_64
31df50
%else
31df50
%global multilib_64_archs sparc64 ppc64 ppc64p7 x86_64
31df50
%endif
31df50
%if 0%{?rhel} > 7
31df50
%global build_ada 0
31df50
%global build_objc 0
31df50
%global build_go 0
31df50
%global build_d 0
31df50
%else
31df50
%ifarch %{ix86} x86_64 ia64 ppc %{power64} alpha s390x %{arm} aarch64 riscv64
31df50
%global build_ada 0
31df50
%else
31df50
%global build_ada 0
31df50
%endif
31df50
%global build_objc 0
31df50
%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips} riscv64
31df50
%global build_go 0
31df50
%else
31df50
%global build_go 0
31df50
%endif
d6dcb6
%ifarch %{ix86} x86_64 %{arm} aarch64 %{mips} s390 s390x riscv64
31df50
%global build_d 1
31df50
%else
31df50
%global build_d 0
31df50
%endif
31df50
%endif
31df50
# Only so that rpmbuild doesn't complain on Fedora.
31df50
%if 0%{?fedora} > 18
31df50
%global build_libquadmath 0
31df50
%endif
31df50
%if 0%{?rhel} >= 7
31df50
%ifarch %{ix86} x86_64 ia64 ppc ppc64 ppc64le
31df50
%global build_libquadmath 1
31df50
%else
31df50
%global build_libquadmath 0
31df50
%endif
31df50
%endif
31df50
%if 0%{?rhel} == 6
31df50
%ifarch %{ix86} x86_64 ia64 ppc64le
31df50
%global build_libquadmath 1
31df50
%else
31df50
%global build_libquadmath 0
31df50
%endif
31df50
%endif
31df50
%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
31df50
%global build_libasan 1
31df50
%else
31df50
%global build_libasan 0
31df50
%endif
31df50
%ifarch x86_64 ppc64 ppc64le aarch64 s390x
31df50
%global build_libtsan 1
31df50
%else
31df50
%global build_libtsan 0
31df50
%endif
31df50
%ifarch x86_64 ppc64 ppc64le aarch64 s390x
31df50
%global build_liblsan 1
31df50
%else
31df50
%global build_liblsan 0
31df50
%endif
31df50
%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64
31df50
%global build_libubsan 1
31df50
%else
31df50
%global build_libubsan 0
31df50
%endif
31df50
%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips} riscv64
31df50
%global build_libatomic 1
31df50
%else
31df50
%global build_libatomic 0
31df50
%endif
31df50
%ifarch %{ix86} x86_64 %{arm} alpha ppc ppc64 ppc64le ppc64p7 s390 s390x aarch64
31df50
%global build_libitm 1
31df50
%else
31df50
%global build_libitm 0
31df50
%endif
31df50
%if 0%{?rhel} == 6
31df50
%global build_isl 0
31df50
%else
31df50
%global build_isl 1
31df50
%endif
31df50
%global build_libstdcxx_docs 1
31df50
%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 s390 s390x %{arm} aarch64 %{mips}
31df50
%global attr_ifunc 1
31df50
%else
31df50
%global attr_ifunc 0
31df50
%endif
31df50
%ifarch x86_64 ppc64le
31df50
%if 0%{?rhel} >= 8
31df50
%global build_offload_nvptx 1
31df50
%else
31df50
%global build_offload_nvptx 0
31df50
%endif
31df50
%else
31df50
%global build_offload_nvptx 0
31df50
%endif
31df50
%if 0%{?fedora} < 32
31df50
%ifarch s390x
31df50
%global multilib_32_arch s390
31df50
%endif
31df50
%endif
31df50
%ifarch sparc64
31df50
%global multilib_32_arch sparcv9
31df50
%endif
31df50
%ifarch ppc64 ppc64p7
31df50
%global multilib_32_arch ppc
31df50
%endif
31df50
%ifarch x86_64
31df50
%global multilib_32_arch i686
31df50
%endif
d6dcb6
%if 0%{?fedora} >= 36 || 0%{?rhel} >= 8
31df50
%global build_annobin_plugin 1
31df50
%else
31df50
%global build_annobin_plugin 0
31df50
%endif
31df50
Summary: GCC version 12
31df50
Name: %{?scl_prefix}gcc
31df50
Version: %{gcc_version}
d6dcb6
Release: %{gcc_release}.4%{?dist}
31df50
# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
31df50
# GCC Runtime Exception.
31df50
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
31df50
# The source for this package was pulled from upstream's vcs.
31df50
# %%{gitrev} is some commit from the
31df50
# https://gcc.gnu.org/git/?p=gcc.git;h=refs/vendors/redhat/heads/gcc-%%{gcc_major}-branch
31df50
# branch.  Use the following commands to generate the tarball:
31df50
# git clone --depth 1 git://gcc.gnu.org/git/gcc.git gcc-dir.tmp
31df50
# git --git-dir=gcc-dir.tmp/.git fetch --depth 1 origin %%{gitrev}
31df50
# git --git-dir=gcc-dir.tmp/.git archive --prefix=%%{name}-%%{version}-%%{DATE}/ %%{gitrev} | xz -9e > %%{name}-%%{version}-%%{DATE}.tar.xz
31df50
# rm -rf gcc-dir.tmp
31df50
Source0: gcc-%{version}-%{DATE}.tar.xz
31df50
Source1: https://gcc.gnu.org/pub/gcc/infrastructure/isl-%{isl_version}.tar.bz2
31df50
Source2: http://www.multiprecision.org/mpc/download/mpc-%{mpc_version}.tar.gz
31df50
Source3: ftp://ftp.stack.nl/pub/users/dimitri/doxygen-%{doxygen_version}.src.tar.gz
31df50
# The source for nvptx-tools package was pulled from upstream's vcs.  Use the
31df50
# following commands to generate the tarball:
31df50
# git clone --depth 1 git://github.com/MentorEmbedded/nvptx-tools.git nvptx-tools-dir.tmp
31df50
# git --git-dir=nvptx-tools-dir.tmp/.git fetch --depth 1 origin %%{nvptx_tools_gitrev}
31df50
# git --git-dir=nvptx-tools-dir.tmp/.git archive --prefix=nvptx-tools-%%{nvptx_tools_gitrev}/ %%{nvptx_tools_gitrev} | xz -9e > nvptx-tools-%%{nvptx_tools_gitrev}.tar.xz
31df50
# rm -rf nvptx-tools-dir.tmp
31df50
Source4: nvptx-tools-%{nvptx_tools_gitrev}.tar.xz
31df50
# The source for nvptx-newlib package was pulled from upstream's vcs.  Use the
31df50
# following commands to generate the tarball:
31df50
# git clone git://sourceware.org/git/newlib-cygwin.git newlib-cygwin-dir.tmp
31df50
# git --git-dir=newlib-cygwin-dir.tmp/.git archive --prefix=newlib-cygwin-%%{newlib_cygwin_gitrev}/ %%{newlib_cygwin_gitrev} ":(exclude)newlib/libc/sys/linux/include/rpc/*.[hx]" | xz -9e > newlib-cygwin-%%{newlib_cygwin_gitrev}.tar.xz
31df50
# rm -rf newlib-cygwin-dir.tmp
31df50
Source5: newlib-cygwin-%{newlib_cygwin_gitrev}.tar.xz
31df50
Source6: libgomp_nonshared.c
31df50
Source7: http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-%{mpfr_version}.tar.bz2
31df50
Source8: http://gcc.gnu.org/pub/gcc/infrastructure/gmp-%{gmp_version}.tar.bz2
31df50
URL: http://gcc.gnu.org
31df50
# Need binutils with -pie support >= 2.14.90.0.4-4
31df50
# Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4
31df50
# Need binutils which handle -msecure-plt on ppc >= 2.16.91.0.2-2
31df50
# Need binutils which support .weakref >= 2.16.91.0.3-1
31df50
# Need binutils which support --hash-style=gnu >= 2.17.50.0.2-7
31df50
# Need binutils which support mffgpr and mftgpr >= 2.17.50.0.2-8
31df50
# Need binutils which support --build-id >= 2.17.50.0.17-3
31df50
# Need binutils which support %%gnu_unique_object >= 2.19.51.0.14
31df50
# Need binutils which support .cfi_sections >= 2.19.51.0.14-33
31df50
# Need binutils which support --no-add-needed >= 2.20.51.0.2-12
31df50
# Need binutils which support -plugin
31df50
# Need binutils which support .loc view >= 2.30
31df50
# Need binutils which support --generate-missing-build-notes=yes >= 2.31
31df50
%if 0%{?scl:1}
31df50
BuildRequires: %{?scl_prefix}binutils >= 2.31
31df50
BuildRequires: %{?scl_prefix}gdb >= 7.4.50
31df50
%endif
31df50
# While gcc doesn't include statically linked binaries, during testing
31df50
# -static is used several times.
31df50
BuildRequires: glibc-static
31df50
BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, sharutils
31df50
BuildRequires: texinfo, texinfo-tex, /usr/bin/pod2man
31df50
#BuildRequires: systemtap-sdt-devel >= 1.3
31df50
#BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 3.1.0, libmpc-devel >= 0.8.1
31df50
#BuildRequires: python3-devel, /usr/bin/python
31df50
BuildRequires: gcc, gcc-c++, make
31df50
%if 0%{?rhel} == 7
31df50
BuildRequires: python3
31df50
%endif
31df50
# For VTA guality testing
31df50
BuildRequires: gdb
31df50
# Make sure pthread.h doesn't contain __thread tokens
31df50
# Make sure glibc supports stack protector
31df50
# Make sure glibc supports DT_GNU_HASH
31df50
BuildRequires: glibc-devel >= 2.4.90-13
31df50
BuildRequires: elfutils-devel >= 0.147
31df50
BuildRequires: elfutils-libelf-devel >= 0.147
31df50
%if 0%{?rhel} >= 8
31df50
BuildRequires: libzstd-devel
31df50
%endif
31df50
%ifarch ppc ppc64 ppc64le ppc64p7 s390 s390x sparc sparcv9 alpha
31df50
# Make sure glibc supports TFmode long double
31df50
BuildRequires: glibc >= 2.3.90-35
31df50
%endif
31df50
%ifarch %{multilib_64_archs} sparcv9 ppc
31df50
# Ensure glibc{,-devel} is installed for both multilib arches
31df50
BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
31df50
%endif
31df50
%ifarch ia64
31df50
BuildRequires: libunwind >= 0.98
31df50
%endif
31df50
# Need .eh_frame ld optimizations
31df50
# Need proper visibility support
31df50
# Need -pie support
31df50
# Need --as-needed/--no-as-needed support
31df50
# On ppc64, need omit dot symbols support and --non-overlapping-opd
31df50
# Need binutils that owns /usr/bin/c++filt
31df50
# Need binutils that support .weakref
31df50
# Need binutils that supports --hash-style=gnu
31df50
# Need binutils that support mffgpr/mftgpr
31df50
# Need binutils that support --build-id
31df50
# Need binutils that support %%gnu_unique_object
31df50
# Need binutils that support .cfi_sections
31df50
# Need binutils that support --no-add-needed
31df50
# Need binutils that support -plugin
31df50
# Need binutils that support .loc view >= 2.30
31df50
# Need binutils which support --generate-missing-build-notes=yes >= 2.31
31df50
Requires: %{?scl_prefix}binutils >= 2.22.52.0.1
31df50
# Make sure gdb will understand DW_FORM_strp
31df50
Conflicts: gdb < 5.1-2
31df50
Requires: glibc-devel >= 2.2.90-12
31df50
%ifarch ppc ppc64 ppc64le ppc64p7 s390 s390x sparc sparcv9 alpha
31df50
# Make sure glibc supports TFmode long double
31df50
Requires: glibc >= 2.3.90-35
31df50
%endif
31df50
%if 0%{?rhel} >= 7
31df50
BuildRequires: gmp-devel >= 4.3.2
31df50
BuildRequires: mpfr-devel >= 3.1.0
31df50
BuildRequires: libmpc-devel >= 0.8.1
31df50
%endif
31df50
%if %{build_libstdcxx_docs}
31df50
BuildRequires: libxml2
31df50
BuildRequires: graphviz
31df50
%if 0%{?rhel} < 7
31df50
# doxygen BRs
31df50
BuildRequires: perl
31df50
BuildRequires: texlive-dvips, texlive-utils, texlive-latex
31df50
BuildRequires: ghostscript
31df50
%endif
31df50
%if 0%{?rhel} >= 7
31df50
BuildRequires: doxygen >= 1.7.1
31df50
BuildRequires: dblatex, texlive-collection-latex, docbook-style-xsl
31df50
%endif
31df50
%endif
31df50
31df50
# See the build section for why this is needed.
31df50
%if 0%{?rhel} == 6
31df50
BuildRequires: devtoolset-11-runtime devtoolset-11-binutils
31df50
BuildRequires: devtoolset-11-gcc devtoolset-11-gcc-c++
31df50
%endif
31df50
31df50
Requires: libgcc >= 4.1.2-43
31df50
Requires: libgomp >= 4.4.4-13
31df50
# lto-wrapper invokes make
31df50
Requires: make
31df50
%{?scl:Requires:%scl_runtime}
31df50
AutoReq: true
31df50
# Various libraries are imported.  #1859893 asks us to list them all.
31df50
Provides: bundled(libiberty)
31df50
Provides: bundled(libbacktrace)
31df50
Provides: bundled(libffi)
31df50
Provides: gcc(major) = %{gcc_major}
31df50
%ifarch sparc64 ppc64 ppc64le s390x x86_64 ia64 aarch64
31df50
Provides: liblto_plugin.so.0()(64bit)
31df50
%else
31df50
Provides: liblto_plugin.so.0
31df50
%endif
31df50
%global oformat %{nil}
31df50
%global oformat2 %{nil}
31df50
%ifarch %{ix86}
31df50
%global oformat OUTPUT_FORMAT(elf32-i386)
31df50
%endif
31df50
%ifarch x86_64
31df50
%global oformat OUTPUT_FORMAT(elf64-x86-64)
31df50
%global oformat2 OUTPUT_FORMAT(elf32-i386)
31df50
%endif
31df50
%ifarch ppc
31df50
%global oformat OUTPUT_FORMAT(elf32-powerpc)
31df50
%global oformat2 OUTPUT_FORMAT(elf64-powerpc)
31df50
%endif
31df50
%ifarch ppc64
31df50
%global oformat OUTPUT_FORMAT(elf64-powerpc)
31df50
%global oformat2 OUTPUT_FORMAT(elf32-powerpc)
31df50
%endif
31df50
%ifarch s390
31df50
%global oformat OUTPUT_FORMAT(elf32-s390)
31df50
%endif
31df50
%ifarch s390x
31df50
%global oformat OUTPUT_FORMAT(elf64-s390)
31df50
%global oformat2 OUTPUT_FORMAT(elf32-s390)
31df50
%endif
31df50
%ifarch ia64
31df50
%global oformat OUTPUT_FORMAT(elf64-ia64-little)
31df50
%endif
31df50
%ifarch ppc64le
31df50
%global oformat OUTPUT_FORMAT(elf64-powerpcle)
31df50
%endif
31df50
%ifarch aarch64
31df50
%global oformat OUTPUT_FORMAT(elf64-littleaarch64)
31df50
%endif
31df50
%if 0%{?rhel} == 6
31df50
ExclusiveArch: x86_64 %{ix86}
31df50
%endif
31df50
%if 0%{?rhel} == 7
31df50
ExcludeArch: aarch64
31df50
%endif
31df50
31df50
Patch0: gcc12-hack.patch
31df50
Patch2: gcc12-sparc-config-detection.patch
31df50
Patch3: gcc12-libgomp-omp_h-multilib.patch
31df50
Patch4: gcc12-libtool-no-rpath.patch
31df50
Patch5: gcc12-isl-dl.patch
31df50
Patch6: gcc12-isl-dl2.patch
31df50
Patch7: gcc12-libstdc++-docs.patch
31df50
Patch8: gcc12-no-add-needed.patch
31df50
Patch9: gcc12-Wno-format-security.patch
31df50
Patch10: gcc12-rh1574936.patch
31df50
Patch11: gcc12-d-shared-libphobos.patch
d6dcb6
Patch12: gcc12-pr107468.patch
d6dcb6
Patch15: gcc12-static-libquadmath.patch
d6dcb6
Patch16: gcc12-FMA-chains.patch
31df50
31df50
Patch100: gcc12-fortran-fdec-duplicates.patch
31df50
Patch101: gcc12-fortran-flogical-as-integer.patch
31df50
Patch102: gcc12-fortran-fdec-override-kind.patch
31df50
Patch103: gcc12-fortran-fdec-non-logical-if.patch
31df50
31df50
Patch1000: gcc12-libstdc++-compat.patch
31df50
Patch1001: gcc12-alt-compat-test.patch
31df50
Patch1002: gcc12-libgfortran-compat.patch
31df50
31df50
Patch2001: doxygen-1.7.1-config.patch
31df50
Patch2002: doxygen-1.7.5-timestamp.patch
31df50
Patch2003: doxygen-1.8.0-rh856725.patch
d6dcb6
Patch2004: isl-rh2155127.patch
31df50
31df50
Patch3000: 0001-basic_string-reserve-n-semantics-are-not-available-i.patch
31df50
Patch3001: 0004-operator-istream-char-N-eofbit-fixes-are-not-availab.patch
31df50
Patch3002: 0005-Disable-tests-for-PR-libstdc-79820-and-PR-libstdc-81.patch
31df50
Patch3003: 0006-Don-t-assume-has_facet-codecvt_c16-when-run-against-.patch
31df50
Patch3004: 0008-testsuite-build-plugins-with-std-c-11.patch
31df50
Patch3005: 0009-Fix-22_locale-locale-cons-unicode.cc-when-run-under-.patch
31df50
Patch3006: 0010-Don-t-verify-exception-handling-in-basic_filebuf-clo.patch
31df50
Patch3007: 0011-Add-dts.exp-and-use-it-to-fix-22_locale-messages-136.patch
31df50
Patch3008: 0012-dts.exp-use-usr-bin-gcc.patch
31df50
Patch3009: 0013-Rename-__CXXSTDLIB_SO_VERSION__-to-__LIBSTDCXX_SO_VE.patch
31df50
Patch3010: 0014-Conditionalize-tests-for-PR-libstdc-98466-on-__LIBST.patch
31df50
Patch3011: 0015-Conditionalize-test-for-PR-libstdc-87135-on-__LIBSTD.patch
31df50
Patch3012: 0016-Conditionalize-test-for-hashtable-bucket-sizes-on-__.patch
31df50
Patch3013: 0017-Conditionalize-test-for-PR-libstdc-71181-on-__LIBSTD.patch
31df50
Patch3014: gcc12-dg-ice-fixes.patch
31df50
Patch3015: 0018-Use-CXX11-ABI.patch
31df50
Patch3016: 0019-xfails.patch
31df50
Patch3017: 0020-more-fixes.patch
31df50
Patch3018: 0021-libstdc++-disable-tests.patch
31df50
Patch3019: 0022-libstdc++-revert-behavior.patch
d6dcb6
Patch3020: gcc12-testsuite-typo.patch
31df50
31df50
%if 0%{?rhel} == 9
31df50
%global nonsharedver 110
31df50
%endif
31df50
%if 0%{?rhel} == 8
31df50
%global nonsharedver 80
31df50
%endif
31df50
%if 0%{?rhel} == 7
31df50
%global nonsharedver 48
31df50
%endif
31df50
%if 0%{?rhel} == 6
31df50
%global nonsharedver 44
31df50
%endif
31df50
31df50
%if 0%{?scl:1}
31df50
%global _gnu %{nil}
31df50
%else
31df50
%global _gnu -gnueabi
31df50
%endif
31df50
%ifarch sparcv9
31df50
%global gcc_target_platform sparc64-%{_vendor}-%{_target_os}
31df50
%endif
31df50
%ifarch ppc ppc64p7
31df50
%global gcc_target_platform ppc64-%{_vendor}-%{_target_os}
31df50
%endif
31df50
%ifnarch sparcv9 ppc ppc64p7
31df50
%global gcc_target_platform %{_target_platform}
31df50
%endif
31df50
31df50
%description
31df50
The %{?scl_prefix}gcc%{!?scl:12} package contains the GNU Compiler Collection version 10.
31df50
31df50
%package -n libgcc
31df50
Summary: GCC version 12 shared support library
31df50
Autoreq: false
31df50
31df50
%description -n libgcc
31df50
This package contains GCC shared support library which is needed
31df50
e.g. for exception handling support.
31df50
31df50
%package c++
31df50
Summary: C++ support for GCC version 12
31df50
Requires: %{?scl_prefix}gcc%{!?scl:12} = %{version}-%{release}
31df50
%if 0%{?rhel} >= 7
31df50
Requires: libstdc++
31df50
%else
31df50
Requires: libstdc++ >= 4.4.4-13
31df50
%endif
31df50
Requires: %{?scl_prefix}libstdc++%{!?scl:12}-devel = %{version}-%{release}
31df50
Autoreq: true
31df50
31df50
%description c++
31df50
This package adds C++ support to the GNU Compiler Collection
31df50
version 12.  It includes support for most of the current C++ specification
31df50
and a lot of support for the upcoming C++ specification.
31df50
31df50
%package -n libstdc++
31df50
Summary: GNU Standard C++ Library
31df50
Autoreq: true
31df50
Requires: glibc >= 2.10.90-7
31df50
31df50
%description -n libstdc++
31df50
The libstdc++ package contains a rewritten standard compliant GCC Standard
31df50
C++ Library.
31df50
31df50
%package -n %{?scl_prefix}libstdc++%{!?scl:12}-devel
31df50
Summary: Header files and libraries for C++ development
31df50
%if 0%{?rhel} >= 7
31df50
Requires: libstdc++
31df50
%else
31df50
Requires: libstdc++ >= 4.4.4-13
31df50
%endif
31df50
Requires: libstdc++%{?_isa}
31df50
Autoreq: true
31df50
31df50
%description -n %{?scl_prefix}libstdc++%{!?scl:12}-devel
31df50
This is the GNU implementation of the standard C++ libraries.  This
31df50
package includes the header files and libraries needed for C++
31df50
development. This includes rewritten implementation of STL.
31df50
31df50
%package -n %{?scl_prefix}libstdc++%{!?scl:12}-docs
31df50
Summary: Documentation for the GNU standard C++ library
31df50
Autoreq: true
31df50
31df50
%description -n %{?scl_prefix}libstdc++%{!?scl:12}-docs
31df50
Manual, doxygen generated API information and Frequently Asked Questions
31df50
for the GNU standard C++ library.
31df50
31df50
%package gfortran
31df50
Summary: Fortran support for GCC 12
31df50
Requires: %{?scl_prefix}gcc%{!?scl:12} = %{version}-%{release}
31df50
%if 0%{?rhel} > 7
31df50
Requires: libgfortran >= 8.1.1
31df50
%else
31df50
Requires: libgfortran5 >= 8.1.1
31df50
%endif
31df50
Autoreq: true
31df50
31df50
%if %{build_libquadmath}
31df50
%if 0%{!?scl:1}
31df50
Requires: libquadmath
31df50
%endif
31df50
Requires: %{?scl_prefix}libquadmath-devel = %{version}-%{release}
31df50
%endif
31df50
Autoreq: true
31df50
31df50
%description gfortran
31df50
The %{?scl_prefix}gcc%{!?scl:10}-gfortran package provides support for compiling Fortran
31df50
programs with the GNU Compiler Collection.
31df50
31df50
31df50
%package gdb-plugin
31df50
Summary: GCC 12 plugin for GDB
31df50
Requires: %{?scl_prefix}gcc%{!?scl:12} = %{version}-%{release}
31df50
31df50
%description gdb-plugin
31df50
This package contains GCC 12 plugin for GDB C expression evaluation.
31df50
31df50
%package -n %{?scl_prefix}libgccjit
31df50
Summary: Library for embedding GCC inside programs and libraries
31df50
Requires: %{?scl_prefix}gcc%{!?scl:12} = %{version}-%{release}
31df50
31df50
%description -n %{?scl_prefix}libgccjit
31df50
This package contains shared library with GCC 12 JIT front-end.
31df50
31df50
%package -n %{?scl_prefix}libgccjit-devel
31df50
Summary: Support for embedding GCC inside programs and libraries
31df50
Group: Development/Libraries
31df50
Requires: %{?scl_prefix}libgccjit = %{version}-%{release}
31df50
Requires: %{?scl_prefix}libgccjit-docs = %{version}-%{release}
31df50
31df50
%description -n %{?scl_prefix}libgccjit-devel
31df50
This package contains header files for GCC 12 JIT front end.
31df50
31df50
%package -n %{?scl_prefix}libgccjit-docs
31df50
Summary: Documentation for embedding GCC inside programs and libraries
31df50
Group: Development/Libraries
31df50
%if 0%{?rhel} > 7
31df50
BuildRequires: python3-sphinx
31df50
%else
31df50
BuildRequires: python-sphinx
31df50
%endif
31df50
Requires(post): /sbin/install-info
31df50
Requires(preun): /sbin/install-info
31df50
31df50
%description -n %{?scl_prefix}libgccjit-docs
31df50
This package contains documentation for GCC 12 JIT front-end.
31df50
31df50
%package -n libquadmath
31df50
Summary: GCC 12 __float128 shared support library
31df50
Requires(post): /sbin/install-info
31df50
Requires(preun): /sbin/install-info
31df50
31df50
%description -n libquadmath
31df50
This package contains GCC shared support library which is needed
31df50
for __float128 math support and for Fortran REAL*16 support.
31df50
31df50
%package -n %{?scl_prefix}libquadmath-devel
31df50
Summary: GCC 12 __float128 support
31df50
Group: Development/Libraries
31df50
%if 0%{!?scl:1}
31df50
Requires: %{?scl_prefix}libquadmath%{_isa} = %{version}-%{release}
31df50
%else
31df50
%if 0%{?rhel} >= 7
31df50
Requires: libquadmath%{_isa}
31df50
%endif
31df50
%endif
31df50
Requires: %{?scl_prefix}gcc%{!?scl:12} = %{version}-%{release}
31df50
31df50
%description -n %{?scl_prefix}libquadmath-devel
31df50
This package contains headers for building Fortran programs using
31df50
REAL*16 and programs using __float128 math.
31df50
31df50
%package -n libitm
31df50
Summary: The GNU Transactional Memory library
31df50
Group: System Environment/Libraries
31df50
Requires(post): /sbin/install-info
31df50
Requires(preun): /sbin/install-info
31df50
31df50
%description -n libitm
31df50
This package contains the GNU Transactional Memory library
31df50
which is a GCC transactional memory support runtime library.
31df50
31df50
%package -n %{?scl_prefix}libitm-devel
31df50
Summary: The GNU Transactional Memory support
31df50
Requires: libitm%{_isa} >= 4.7.0-1
31df50
Requires: %{?scl_prefix}gcc%{!?scl:12} = %{version}-%{release}
31df50
31df50
%description -n %{?scl_prefix}libitm-devel
31df50
This package contains headers and support files for the
31df50
GNU Transactional Memory library.
31df50
31df50
%package plugin-devel
31df50
Summary: Support for compiling GCC plugins
31df50
Requires: %{?scl_prefix}gcc%{!?scl:12} = %{version}-%{release}
31df50
%if 0%{?rhel} >= 7
31df50
Requires: gmp-devel >= 4.3.2
31df50
Requires: mpfr-devel >= 3.1.0
31df50
Requires: libmpc-devel >= 0.8.1
31df50
%endif
31df50
31df50
%description plugin-devel
31df50
This package contains header files and other support files
31df50
for compiling GCC 12 plugins.  The GCC plugin ABI is currently
31df50
not stable, so plugins must be rebuilt any time GCC is updated.
31df50
31df50
%package -n libatomic
31df50
Summary: The GNU Atomic library
31df50
Group: System Environment/Libraries
31df50
Requires(post): /sbin/install-info
31df50
Requires(preun): /sbin/install-info
31df50
31df50
%description -n libatomic
31df50
This package contains the GNU Atomic library
31df50
which is a GCC support runtime library for atomic operations not supported
31df50
by hardware.
31df50
31df50
%package -n %{?scl_prefix}libatomic-devel
31df50
Summary: The GNU Atomic static library
31df50
Requires: libatomic%{_isa} >= 4.8.0
31df50
31df50
%description -n %{?scl_prefix}libatomic-devel
31df50
This package contains GNU Atomic static libraries.
31df50
31df50
%package -n libasan8
31df50
Summary: The Address Sanitizer runtime library from GCC 12
31df50
Group: System Environment/Libraries
31df50
Requires(post): /sbin/install-info
31df50
Requires(preun): /sbin/install-info
31df50
31df50
%description -n libasan8
31df50
This package contains the Address Sanitizer library from GCC 12
31df50
which is used for -fsanitize=address instrumented programs.
31df50
31df50
%package -n %{?scl_prefix}libasan-devel
31df50
Summary: The Address Sanitizer static library
31df50
Requires: libasan8%{_isa} >= 12.1.1
31df50
Obsoletes: libasan5 <= 8.3.1
31df50
31df50
%description -n %{?scl_prefix}libasan-devel
31df50
This package contains Address Sanitizer static runtime library.
31df50
31df50
%package -n libtsan2
31df50
Summary: The Thread Sanitizer runtime library
31df50
Requires(post): /sbin/install-info
31df50
Requires(preun): /sbin/install-info
31df50
31df50
%description -n libtsan2
31df50
This package contains the Thread Sanitizer library
31df50
which is used for -fsanitize=thread instrumented programs.
31df50
31df50
%package -n %{?scl_prefix}libtsan-devel
31df50
Summary: The Thread Sanitizer static library
31df50
Requires: libtsan2%{_isa} >= 12.1.1
31df50
31df50
%description -n %{?scl_prefix}libtsan-devel
31df50
This package contains Thread Sanitizer static runtime library.
31df50
31df50
%package -n libubsan1
31df50
Summary: The Undefined Behavior Sanitizer runtime library
31df50
Requires(post): /sbin/install-info
31df50
Requires(preun): /sbin/install-info
31df50
31df50
%description -n libubsan1
31df50
This package contains the Undefined Behavior Sanitizer library
31df50
which is used for -fsanitize=undefined instrumented programs.
31df50
31df50
%package -n %{?scl_prefix}libubsan-devel
31df50
Summary: The Undefined Behavior Sanitizer static library
31df50
%if 0%{?rhel} > 7
31df50
Requires: libubsan%{_isa} >= 8.3.1
31df50
Obsoletes: libubsan1 <= 8.3.1
31df50
%else
31df50
Requires: libubsan1%{_isa} >= 8.3.1
31df50
%endif
31df50
31df50
%description -n %{?scl_prefix}libubsan-devel
31df50
This package contains Undefined Behavior Sanitizer static runtime library.
31df50
31df50
%package -n liblsan
31df50
Summary: The Leak Sanitizer runtime library
31df50
Requires(post): /sbin/install-info
31df50
Requires(preun): /sbin/install-info
31df50
31df50
%description -n liblsan
31df50
This package contains the Leak Sanitizer library
31df50
which is used for -fsanitize=leak instrumented programs.
31df50
31df50
%package -n %{?scl_prefix}liblsan-devel
31df50
Summary: The Leak Sanitizer static library
31df50
Requires: liblsan%{_isa} >= 5.1.1
31df50
31df50
%description -n %{?scl_prefix}liblsan-devel
31df50
This package contains Leak Sanitizer static runtime library.
31df50
31df50
%package -n %{?scl_prefix}offload-nvptx
31df50
Summary: Offloading compiler to NVPTX
31df50
Requires: gcc >= 8.3.1
31df50
Requires: libgomp-offload-nvptx >= 8.3.1
31df50
31df50
%description -n %{?scl_prefix}offload-nvptx
31df50
The gcc-offload-nvptx package provides offloading support for
31df50
NVidia PTX.  OpenMP and OpenACC programs linked with -fopenmp will
31df50
by default add PTX code into the binaries, which can be offloaded
31df50
to NVidia PTX capable devices if available.
31df50
31df50
%if %{build_annobin_plugin}
d6dcb6
%package -n %{?scl_prefix}gcc-plugin-annobin
d6dcb6
Summary: The annobin plugin for gcc, built by the installed version of gcc
d6dcb6
Requires: %{?scl_prefix}gcc = %{version}-%{release}
d6dcb6
BuildRequires: rpm-devel, binutils-devel, xz
31df50
d6dcb6
%description -n %{?scl_prefix}gcc-plugin-annobin
31df50
This package adds a version of the annobin plugin for gcc.  This version
31df50
of the plugin is explicitly built by the same version of gcc that is installed
31df50
so that there cannot be any synchronization problems.
d6dcb6
%endif
31df50
31df50
%prep
31df50
%if 0%{?rhel} >= 7
31df50
%setup -q -n gcc-%{version}-%{DATE} -a 1 -a 4 -a 5
31df50
%else
31df50
%setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2 -a 3 -a 7 -a 8
31df50
%endif
31df50
%patch0 -p0 -b .hack~
31df50
%patch2 -p0 -b .sparc-config-detection~
31df50
%patch3 -p0 -b .libgomp-omp_h-multilib~
31df50
%patch4 -p0 -b .libtool-no-rpath~
31df50
%if %{build_isl}
31df50
%patch5 -p0 -b .isl-dl~
31df50
%patch6 -p0 -b .isl-dl2~
31df50
%endif
31df50
%if %{build_libstdcxx_docs}
31df50
%patch7 -p0 -b .libstdc++-docs~
31df50
%endif
31df50
%patch8 -p0 -b .no-add-needed~
31df50
%patch9 -p0 -b .Wno-format-security~
31df50
%if 0%{?fedora} >= 29 || 0%{?rhel} > 7
31df50
%patch10 -p0 -b .rh1574936~
31df50
%endif
31df50
%patch11 -p0 -b .d-shared-libphobos~
d6dcb6
%patch12 -p0 -b .pr107468~
d6dcb6
%patch15 -p0 -b .static-libquadmath~
d6dcb6
%patch16 -p1 -b .fma~
31df50
31df50
%if 0%{?rhel} >= 6
31df50
%patch100 -p1 -b .fortran-fdec-duplicates~
31df50
%patch101 -p1 -b .fortran-flogical-as-integer~
31df50
%patch102 -p1 -b .fortran-fdec-override-kind~
31df50
%patch103 -p1 -b .fortran-fdec-non-logical-if~
31df50
%endif
31df50
31df50
%ifarch %{arm}
31df50
rm -f gcc/testsuite/go.test/test/fixedbugs/issue19182.go
31df50
%endif
31df50
%if 0%{?rhel} <= 8
31df50
# Requires pthread_cond_clockwait, only present in glibc 2.30.
31df50
rm -f gcc/testsuite/g++.dg/tsan/pthread_cond_clockwait.C
31df50
%endif
31df50
rm -f libphobos/testsuite/libphobos.gc/forkgc2.d
31df50
#rm -rf libphobos/testsuite/libphobos.gc
31df50
31df50
%patch1000 -p0 -b .libstdc++-compat~
31df50
%ifarch %{ix86} x86_64
31df50
%if 0%{?rhel} < 7
31df50
# On i?86/x86_64 there are some incompatibilities in _Decimal* as well as
31df50
# aggregates containing larger vector passing.
31df50
%patch1001 -p0 -b .alt-compat-test~
31df50
%endif
31df50
%endif
31df50
%patch1002 -p0 -b .libgfortran-compat~
31df50
31df50
%if %{build_libstdcxx_docs}
31df50
%if 0%{?rhel} < 7
31df50
cd doxygen-%{doxygen_version}
31df50
%patch2001 -p1 -b .config~
31df50
%patch2002 -p1 -b .timestamp~
31df50
%patch2003 -p1 -b .rh856725~
31df50
cd ..
31df50
%endif
31df50
%endif
d6dcb6
%if %{build_isl}
d6dcb6
%patch2004 -p0 -b .isl-rh2155127~
d6dcb6
%endif
31df50
31df50
# Apply DTS-specific testsuite patches.
31df50
%patch3000 -p1 -b .dts-test-0~
31df50
%patch3001 -p1 -b .dts-test-1~
31df50
%patch3002 -p1 -b .dts-test-2~
31df50
%patch3003 -p1 -b .dts-test-3~
31df50
%patch3004 -p1 -b .dts-test-4~
31df50
%patch3005 -p1 -b .dts-test-5~
31df50
%patch3006 -p1 -b .dts-test-6~
31df50
%patch3007 -p1 -b .dts-test-7~
31df50
%patch3008 -p1 -b .dts-test-8~
31df50
%patch3009 -p1 -b .dts-test-9~
31df50
%patch3010 -p1 -b .dts-test-10~
31df50
%patch3011 -p1 -b .dts-test-11~
31df50
%patch3012 -p1 -b .dts-test-12~
31df50
%patch3013 -p1 -b .dts-test-13~
31df50
%patch3014 -p1 -b .dts-test-14~
31df50
%patch3015 -p1 -b .dts-test-15~
31df50
%patch3016 -p1 -b .dts-test-16~
31df50
%patch3017 -p1 -b .dts-test-17~
31df50
%patch3018 -p1 -b .dts-test-18~
31df50
%if 0%{?rhel} <= 7
31df50
%patch3019 -p1 -b .dts-test-19~
31df50
%endif
d6dcb6
%patch3020 -p1 -b .typo
31df50
31df50
find gcc/testsuite -name \*.pr96939~ | xargs rm -f
31df50
31df50
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
31df50
31df50
%if 0%{?rhel} == 6
31df50
# Default to -gdwarf-3 rather than -gdwarf-5
31df50
sed -i '/UInteger Var(dwarf_version)/s/Init(5)/Init(3)/' gcc/common.opt
31df50
sed -i 's/\(version for most targets is \)5 /\13 /' gcc/doc/invoke.texi
31df50
%endif
31df50
%if 0%{?rhel} <= 8
31df50
# Default to -gdwarf-4 rather than -gdwarf-5
31df50
sed -i '/UInteger Var(dwarf_version)/s/Init(5)/Init(4)/' gcc/common.opt
31df50
sed -i 's/\(version for most targets is \)5 /\14 /' gcc/doc/invoke.texi
31df50
%endif
31df50
31df50
cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
31df50
cp -a libstdc++-v3/config/cpu/i{4,3}86/opt
31df50
echo 'TM_H += $(srcdir)/config/rs6000/rs6000-modes.h' >> gcc/config/rs6000/t-rs6000
31df50
31df50
./contrib/gcc_update --touch
31df50
31df50
LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi
31df50
31df50
sed -i -e 's/Common Driver Var(flag_report_bug)/& Init(1)/' gcc/common.opt
31df50
sed -i -e 's/context->report_bug = false;/context->report_bug = true;/' gcc/diagnostic.cc
31df50
31df50
%ifarch ppc
31df50
if [ -d libstdc++-v3/config/abi/post/powerpc64-linux-gnu ]; then
31df50
  mkdir -p libstdc++-v3/config/abi/post/powerpc64-linux-gnu/64
31df50
  mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/{,64/}baseline_symbols.txt
31df50
  mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/{32/,}baseline_symbols.txt
31df50
  rm -rf libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32
31df50
fi
31df50
%endif
31df50
%ifarch sparc
31df50
if [ -d libstdc++-v3/config/abi/post/sparc64-linux-gnu ]; then
31df50
  mkdir -p libstdc++-v3/config/abi/post/sparc64-linux-gnu/64
31df50
  mv libstdc++-v3/config/abi/post/sparc64-linux-gnu/{,64/}baseline_symbols.txt
31df50
  mv libstdc++-v3/config/abi/post/sparc64-linux-gnu/{32/,}baseline_symbols.txt
31df50
  rm -rf libstdc++-v3/config/abi/post/sparc64-linux-gnu/32
31df50
fi
31df50
%endif
31df50
31df50
# This test causes fork failures, because it spawns way too many threads
31df50
rm -f gcc/testsuite/go.test/test/chan/goroutines.go
31df50
31df50
# These tests get stuck and don't timeout.
31df50
%ifarch ppc ppc64 ppc64le
31df50
rm -f libgomp/testsuite/libgomp.c/target-*.c
31df50
rm -rf libgomp/testsuite/libgomp.oacc*
31df50
rm -rf libgomp/testsuite/libgomp.graphite*
31df50
# This uses a removed file (#2093997).
31df50
rm -rf libgomp/testsuite/libgomp.fortran/pr90030.f90
31df50
%endif
31df50
# This test gets stuck.
31df50
%ifarch %{ix86} ppc64 s390x
31df50
rm -f libstdc++-v3/testsuite/30_threads/future/members/poll.cc
31df50
%endif
31df50
31df50
%build
31df50
31df50
# Undo the broken autoconf change in recent Fedora versions
31df50
export CONFIG_SITE=NONE
31df50
31df50
# GCC 11 needs C++11 support to bootstrap, but system RHEL 6 gcc is too old.
31df50
# Use devtoolset-11 to build it.
31df50
%if 0%{?rhel} == 6
31df50
export PATH=/opt/rh/devtoolset-11/root/usr/bin:${PATH:+:${PATH}}
31df50
%endif
31df50
31df50
CC=gcc
31df50
CXX=g++
31df50
OPT_FLAGS=`echo %{optflags}|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'`
31df50
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-flto=auto//g;s/-flto//g;s/-ffat-lto-objects//g'`
31df50
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'`
31df50
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mfpmath=sse/-mfpmath=sse -msse2/g'`
31df50
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/ -pipe / /g'`
31df50
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-Werror=format-security/-Wformat-security/g'`
31df50
%ifarch sparc
31df50
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcpu=v[78]//g'`
31df50
%endif
31df50
%ifarch %{ix86}
31df50
OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-march=i.86//g'`
31df50
%endif
31df50
OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e 's/[[:blank:]]\+/ /g'`
31df50
case "$OPT_FLAGS" in
31df50
  *-fasynchronous-unwind-tables*)
31df50
    sed -i -e 's/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables /' \
31df50
      libgcc/Makefile.in
31df50
    ;;
31df50
esac
31df50
31df50
%if %{build_offload_nvptx}
31df50
mkdir obji
31df50
IROOT=`pwd`/obji
31df50
cd nvptx-tools-%{nvptx_tools_gitrev}
31df50
rm -rf obj-%{gcc_target_platform}
31df50
mkdir obj-%{gcc_target_platform}
31df50
cd obj-%{gcc_target_platform}
31df50
CC="$CC" CXX="$CXX" CFLAGS="%{optflags}" CXXFLAGS="%{optflags}" \
31df50
../configure --prefix=%{_prefix}
31df50
make %{?_smp_mflags}
31df50
make install prefix=${IROOT}%{_prefix}
31df50
cd ../..
31df50
31df50
ln -sf newlib-cygwin-%{newlib_cygwin_gitrev}/newlib newlib
31df50
rm -rf obj-offload-nvptx-none
31df50
mkdir obj-offload-nvptx-none
31df50
31df50
cd obj-offload-nvptx-none
31df50
CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
31df50
	CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \
31df50
		  | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \
31df50
	XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
31df50
	../configure --disable-bootstrap --disable-sjlj-exceptions \
31df50
	--enable-newlib-io-long-long --with-build-time-tools=${IROOT}%{_prefix}/nvptx-none/bin \
31df50
	--target nvptx-none --enable-as-accelerator-for=%{gcc_target_platform} \
31df50
	--enable-languages=c,c++,fortran,lto \
31df50
	--prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
31df50
	--with-bugurl=http://bugzilla.redhat.com/bugzilla \
31df50
	--enable-checking=release --with-system-zlib \
31df50
	--with-gcc-major-version-only --without-isl
31df50
make %{?_smp_mflags}
31df50
cd ..
31df50
rm -f newlib
31df50
%endif
31df50
31df50
rm -rf obj-%{gcc_target_platform}
31df50
mkdir obj-%{gcc_target_platform}
31df50
cd obj-%{gcc_target_platform}
31df50
31df50
%if %{build_libstdcxx_docs}
31df50
31df50
%if 0%{?rhel} < 7
31df50
mkdir doxygen-install
31df50
pushd ../doxygen-%{doxygen_version}
31df50
./configure --prefix `cd ..; pwd`/obj-%{gcc_target_platform}/doxygen-install \
31df50
  --shared --release --english-only
31df50
31df50
make %{?_smp_mflags} all
31df50
make install
31df50
popd
31df50
export PATH=`pwd`/doxygen-install/bin/${PATH:+:${PATH}}
31df50
%endif
31df50
%endif
31df50
31df50
%if 0%{?rhel} < 7
31df50
# Build GMP for RHEL 6.  Build it first because MPC and MPFR need it.
31df50
mkdir gmp gmp-install
31df50
cd gmp
31df50
../../gmp-%{gmp_version}/configure --disable-shared --disable-assembly \
31df50
  CFLAGS="${CFLAGS:-%optflags} -fPIC" CXXFLAGS="${CXXFLAGS:-%optflags} -fPIC" \
31df50
  --prefix=`cd ..; pwd`/gmp-install
31df50
make %{?_smp_mflags}
31df50
make install
31df50
cd ..
31df50
31df50
# It also needs MPFR.
31df50
mkdir mpfr mpfr-install
31df50
cd mpfr
31df50
../../mpfr-%{mpfr_version}/configure --disable-shared \
31df50
  --with-gmp=`cd ..; pwd`/gmp-install \
31df50
  CFLAGS="${CFLAGS:-%optflags} -fPIC" CXXFLAGS="${CXXFLAGS:-%optflags} -fPIC" \
31df50
  --prefix=`cd ..; pwd`/mpfr-install
31df50
make %{?_smp_mflags}
31df50
make install
31df50
cd ..
31df50
31df50
mkdir mpc mpc-install
31df50
cd mpc
31df50
../../mpc-%{mpc_version}/configure --disable-shared \
31df50
  --with-mpfr=`cd ..; pwd`/mpfr-install \
31df50
  --with-gmp=`cd ..; pwd`/gmp-install \
31df50
  CFLAGS="${CFLAGS:-%optflags} -fPIC" CXXFLAGS="${CXXFLAGS:-%optflags} -fPIC" \
31df50
  --prefix=`cd ..; pwd`/mpc-install
31df50
make %{?_smp_mflags}
31df50
make install
31df50
cd ..
31df50
%endif
31df50
31df50
%if %{build_isl}
31df50
mkdir isl-build isl-install
31df50
%ifarch s390 s390x
31df50
ISL_FLAG_PIC=-fPIC
31df50
%else
31df50
ISL_FLAG_PIC=-fpic
31df50
%endif
31df50
cd isl-build
d6dcb6
sed -i 's|libisl\([^-]\)|libgcc12privateisl\1|g' \
31df50
  ../../isl-%{isl_version}/Makefile.{am,in}
d6dcb6
# Prevent regenerating aclocal.m4 and other configure files, because we don't
d6dcb6
# want to require aclocal-1.16 and similar.  isl-rh2155127.patch modifies
d6dcb6
# 'configure' so the Makefile would attempt to regenerate various files.
d6dcb6
# See <https://bugzilla.redhat.com/show_bug.cgi?id=2155127#c11>.
d6dcb6
touch ../../isl-%{isl_version}/{m4/*,aclocal.m4,Makefile.in,configure,isl_config.h.in}
31df50
../../isl-%{isl_version}/configure \
31df50
  CC=/usr/bin/gcc CXX=/usr/bin/g++ \
31df50
  CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" --prefix=`cd ..; pwd`/isl-install
d6dcb6
# Make sure we build with -g (#2155127).
d6dcb6
sed -i -e 's/CFLAGS =.*/& -g/' Makefile
31df50
make %{?_smp_mflags}
31df50
make install
31df50
cd ../isl-install/lib
d6dcb6
rm libgcc12privateisl.so{,.23}
d6dcb6
mv libgcc12privateisl.so.23.1.0 libisl.so.23
d6dcb6
ln -sf libisl.so.23 libisl.so
31df50
cd ../..
31df50
%endif
31df50
31df50
# Disabled on Intel because of:
31df50
# https://bugzilla.redhat.com/show_bug.cgi?id=2091571#c1
31df50
%if 0%{?rhel} == 8
31df50
%ifnarch %{ix86} x86_64
31df50
%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
31df50
%endif
31df50
%else
31df50
%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
31df50
%endif
31df50
31df50
# We're going to use the old long double format (double double) until RHEL10.
31df50
# Only -static-lib{stdc++,gfortran}/libgcc would work with IEEE double.
31df50
# Upstream also uses the old long double format, but Fedora uses the new
31df50
# format.  To make things clearer, --with-long-double-format=ibm is used
31df50
# explicitly.
31df50
CONFIGURE_OPTS="\
31df50
	--prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
31df50
	--with-bugurl=http://bugzilla.redhat.com/bugzilla \
31df50
	--enable-shared --enable-threads=posix --enable-checking=release \
31df50
%ifarch ppc64le
31df50
	--enable-targets=powerpcle-linux \
31df50
%endif
31df50
%ifarch ppc64le %{mips} s390x
31df50
	--disable-multilib \
31df50
%else
31df50
	--enable-multilib \
31df50
%endif
31df50
	--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
31df50
	--enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only \
31df50
	--enable-libstdcxx-backtrace \
31df50
%ifnarch %{mips}
31df50
	--with-linker-hash-style=gnu \
31df50
%endif
31df50
%if 0%{?rhel} <= 7
31df50
	--with-default-libstdcxx-abi=gcc4-compatible \
31df50
%endif
31df50
	--enable-plugin --enable-initfini-array \
31df50
%if %{build_isl}
31df50
	--with-isl=`pwd`/isl-install \
31df50
%else
31df50
	--without-isl \
31df50
%endif
31df50
%if %{build_offload_nvptx}
31df50
	--enable-offload-targets=nvptx-none \
31df50
	--without-cuda-driver --enable-offload-defaulted \
31df50
%endif
31df50
%if 0%{?rhel} < 7
31df50
	--with-mpc=`pwd`/mpc-install \
31df50
	--with-mpfr=`pwd`/mpfr-install \
31df50
	--with-gmp=`pwd`/gmp-install \
31df50
%endif
31df50
%if 0%{?fedora} >= 21 || 0%{?rhel} >= 7
31df50
%if %{attr_ifunc}
31df50
	--enable-gnu-indirect-function \
31df50
%endif
31df50
%endif
31df50
%ifarch %{arm}
31df50
	--disable-sjlj-exceptions \
31df50
%endif
31df50
%ifarch ppc ppc64 ppc64le ppc64p7
31df50
	--enable-secureplt \
31df50
%endif
31df50
%ifarch sparc sparcv9 sparc64 ppc ppc64 ppc64le ppc64p7 s390 s390x alpha
31df50
	--with-long-double-128 \
31df50
%endif
31df50
%ifarch ppc64le
31df50
	--with-long-double-format=ibm \
31df50
%endif
31df50
%ifarch sparc
31df50
	--disable-linux-futex \
31df50
%endif
31df50
%ifarch sparc64
31df50
	--with-cpu=ultrasparc \
31df50
%endif
31df50
%ifarch sparc sparcv9
31df50
	--host=%{gcc_target_platform} --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=v7
31df50
%endif
31df50
%ifarch ppc ppc64 ppc64p7
31df50
%if 0%{?rhel} >= 7
31df50
	--with-cpu-32=power7 --with-tune-32=power7 --with-cpu-64=power7 --with-tune-64=power7 \
31df50
%endif
31df50
%if 0%{?rhel} == 6
31df50
	--with-cpu-32=power4 --with-tune-32=power6 --with-cpu-64=power4 --with-tune-64=power6 \
31df50
%endif
31df50
%endif
31df50
%ifarch ppc64le
31df50
%if 0%{?rhel} == 9
31df50
	--with-cpu-32=power9 --with-tune-32=power9 --with-cpu-64=power9 --with-tune-64=power9 \
31df50
%else
31df50
	--with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 \
31df50
%endif
31df50
%endif
31df50
%ifarch ppc
31df50
	--build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
31df50
%endif
31df50
%ifarch %{ix86} x86_64
31df50
%if 0%{?rhel} >= 8
31df50
	--enable-cet \
31df50
%endif
31df50
	--with-tune=generic \
31df50
%endif
31df50
%if 0%{?rhel} >= 7
31df50
%ifarch %{ix86}
31df50
	--with-arch=x86-64 \
31df50
%endif
31df50
%ifarch x86_64
31df50
%if 0%{?rhel} > 8
31df50
	--with-arch_64=x86-64-v2 \
31df50
%endif
31df50
	--with-arch_32=x86-64 \
31df50
%endif
31df50
%else
31df50
%ifarch %{ix86}
31df50
	--with-arch=i686 \
31df50
%endif
31df50
%ifarch x86_64
31df50
	--with-arch_32=i686 \
31df50
%endif
31df50
%endif
31df50
%ifarch s390 s390x
31df50
%if 0%{?rhel} >= 7
31df50
%if 0%{?rhel} > 7
31df50
%if 0%{?rhel} > 8
31df50
%if 0%{?rhel} == 9
31df50
	--with-arch=z14 --with-tune=z15 \
31df50
%else
31df50
	--with-arch=z13 --with-tune=arch13 \
31df50
%endif
31df50
%else
31df50
	--with-arch=z13 --with-tune=z14 \
31df50
%endif
31df50
%else
31df50
	--with-arch=z196 --with-tune=zEC12 \
31df50
%endif
31df50
%else
31df50
%if 0%{?fedora} >= 26
31df50
	--with-arch=zEC12 --with-tune=z13 \
31df50
%else
31df50
	--with-arch=z9-109 --with-tune=z10 \
31df50
%endif
31df50
%endif
31df50
	--enable-decimal-float \
31df50
%endif
31df50
%ifarch armv7hl
31df50
	--with-tune=generic-armv7-a --with-arch=armv7-a \
31df50
	--with-float=hard --with-fpu=vfpv3-d16 --with-abi=aapcs-linux \
31df50
%endif
31df50
%ifarch mips mipsel
31df50
	--with-arch=mips32r2 --with-fp-32=xx \
31df50
%endif
31df50
%ifarch mips64 mips64el
31df50
	--with-arch=mips64r2 --with-abi=64 \
31df50
%endif
31df50
%ifarch riscv64
31df50
	--with-arch=rv64gc --with-abi=lp64d --with-multilib-list=lp64d \
31df50
%endif
31df50
%ifnarch sparc sparcv9 ppc
31df50
	--build=%{gcc_target_platform} \
31df50
%endif
31df50
%if 0%{?fedora} >= 35 || 0%{?rhel} >= 9
31df50
%ifnarch %{arm}
31df50
	--with-build-config=bootstrap-lto --enable-link-serialization=1 \
31df50
%endif
31df50
%endif
31df50
	"
31df50
31df50
CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
31df50
	CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \
31df50
		  | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \
31df50
	XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
31df50
	../configure --enable-bootstrap \
31df50
	--enable-languages=c,c++,fortran,lto \
31df50
	$CONFIGURE_OPTS
31df50
31df50
%ifarch sparc sparcv9 sparc64
31df50
make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" LDFLAGS_FOR_TARGET=-Wl,-z,relro,-z,now bootstrap
31df50
%else
31df50
make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" LDFLAGS_FOR_TARGET=-Wl,-z,relro,-z,now profiledbootstrap
31df50
%endif
31df50
31df50
echo '/* GNU ld script
31df50
   Use the shared library, but some functions are only in
31df50
   the static library, so try that secondarily.  */
31df50
%{oformat}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 -lstdc++_nonshared%{nonsharedver} )' \
31df50
  > %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_system.so
31df50
31df50
# Relink libcc1 against -lstdc++_nonshared:
31df50
sed -i -e '/^postdeps/s/-lstdc++/-lstdc++_system/' libcc1/libtool
31df50
rm -f libcc1/libcc1.la
31df50
make -C libcc1 libcc1.la
31df50
31df50
CC="`%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-cc`"
31df50
CXX="`%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-cxx` `%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags --build-includes`"
31df50
31df50
# Build libgccjit separately, so that normal compiler binaries aren't -fpic
31df50
# unnecessarily.
31df50
mkdir objlibgccjit
31df50
cd objlibgccjit
31df50
CC="$CC" CXX="$CXX" CFLAGS="$OPT_FLAGS" \
31df50
	CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g' \
31df50
		  | sed 's/ -Wformat-security / -Wformat -Wformat-security /'`" \
31df50
	XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
31df50
	../../configure --disable-bootstrap --enable-host-shared \
31df50
	--enable-languages=jit $CONFIGURE_OPTS
31df50
make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" all-gcc
31df50
cp -a gcc/libgccjit.so* ../gcc/
31df50
cd ../gcc/
31df50
ln -sf xgcc %{gcc_target_platform}-gcc-%{gcc_major}
31df50
cp -a Makefile{,.orig}
31df50
sed -i -e '/^CHECK_TARGETS/s/$/ check-jit/' Makefile
31df50
touch -r Makefile.orig Makefile
31df50
rm Makefile.orig
31df50
make jit.sphinx.html
31df50
make jit.sphinx.install-html jit_htmldir=`pwd`/../../rpm.doc/libgccjit-devel/html
31df50
cd ..
31df50
31df50
%if %{build_isl}
d6dcb6
cp -a isl-install/lib/libisl.so.23 gcc/
31df50
%endif
31df50
31df50
# Make generated man pages even if Pod::Man is not new enough
31df50
perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl
31df50
for i in ../gcc/doc/*.texi; do
31df50
  cp -a $i $i.orig; sed 's/ftable/table/' $i.orig > $i
31df50
done
31df50
make -C gcc generated-manpages
31df50
for i in ../gcc/doc/*.texi; do mv -f $i.orig $i; done
31df50
31df50
# Make generated doxygen pages.
31df50
%if %{build_libstdcxx_docs}
31df50
cd %{gcc_target_platform}/libstdc++-v3
31df50
make doc-html-doxygen
31df50
make doc-man-doxygen
31df50
cd ../..
31df50
%endif
31df50
31df50
# Copy various doc files here and there
31df50
cd ..
31df50
mkdir -p rpm.doc/gfortran rpm.doc/libquadmath rpm.doc/libitm
31df50
mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/jit,libstdc++-v3,libgomp,libcc1,libatomic,libsanitizer}
31df50
31df50
for i in {gcc,gcc/cp,gcc/jit,libstdc++-v3,libgomp,libcc1,libatomic,libsanitizer}/ChangeLog*; do
31df50
	cp -p $i rpm.doc/changelogs/$i
31df50
done
31df50
31df50
(cd gcc/fortran; for i in ChangeLog*; do
31df50
	cp -p $i ../../rpm.doc/gfortran/$i
31df50
done)
31df50
(cd libgfortran; for i in ChangeLog*; do
31df50
	cp -p $i ../rpm.doc/gfortran/$i.libgfortran
31df50
done)
31df50
%if %{build_libquadmath}
31df50
(cd libquadmath; for i in ChangeLog* COPYING.LIB; do
31df50
	cp -p $i ../rpm.doc/libquadmath/$i.libquadmath
31df50
done)
31df50
%endif
31df50
%if %{build_libitm}
31df50
(cd libitm; for i in ChangeLog*; do
31df50
	cp -p $i ../rpm.doc/libitm/$i.libitm
31df50
done)
31df50
%endif
31df50
31df50
rm -f rpm.doc/changelogs/gcc/ChangeLog.[1-9]
31df50
find rpm.doc -name \*ChangeLog\* | xargs bzip2 -9
31df50
31df50
%if %{build_annobin_plugin}
31df50
mkdir annobin-plugin
31df50
cd annobin-plugin
31df50
tar xf %{_usrsrc}/annobin/latest-annobin.tar.xz
31df50
cd annobin*
31df50
touch aclocal.m4 configure Makefile.in */configure */config.h.in */Makefile.in
31df50
ANNOBIN_FLAGS=../../obj-%{gcc_target_platform}/%{gcc_target_platform}/libstdc++-v3/scripts/testsuite_flags
31df50
ANNOBIN_CFLAGS1="%build_cflags -I %{_builddir}/gcc-%{version}-%{DATE}/gcc"
31df50
ANNOBIN_CFLAGS1="$ANNOBIN_CFLAGS1 -I %{_builddir}/gcc-%{version}-%{DATE}/obj-%{gcc_target_platform}/gcc"
31df50
ANNOBIN_CFLAGS2="-I %{_builddir}/gcc-%{version}-%{DATE}/include -I %{_builddir}/gcc-%{version}-%{DATE}/libcpp/include"
31df50
ANNOBIN_LDFLAGS="%build_ldflags -L%{_builddir}/gcc-%{version}-%{DATE}/obj-%{gcc_target_platform}/%{gcc_target_platform}/libstdc++-v3/src/.libs"
31df50
CC="`$ANNOBIN_FLAGS --build-cc`" CXX="`$ANNOBIN_FLAGS --build-cxx`" \
31df50
  CFLAGS="$ANNOBIN_CFLAGS1 $ANNOBIN_CFLAGS2 $ANNOBIN_LDFLAGS" \
31df50
  CXXFLAGS="$ANNOBIN_CFLAGS1 `$ANNOBIN_FLAGS --build-includes` $ANNOBIN_CFLAGS2 $ANNOBIN_LDFLAGS" \
31df50
  ./configure --with-gcc-plugin-dir=%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin \
31df50
	      --without-annocheck --without-tests --without-docs --disable-rpath --without-debuginfod
31df50
make
31df50
cd ../..
31df50
%endif
31df50
31df50
# Test the nonshared bits.
31df50
mkdir libstdc++_compat_test
31df50
cd libstdc++_compat_test
31df50
readelf -Ws %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 | sed -n '/\.symtab/,$d;/ UND /d;/@GLIBC_PRIVATE/d;/\(GLOBAL\|WEAK\|UNIQUE\)/p' | awk '{ if ($4 == "OBJECT") { printf "%s %s %s %s %s\n", $8, $4, $5, $6, $3 } else { printf "%s %s %s %s\n", $8, $4, $5, $6 }}' | sed 's/ UNIQUE / GLOBAL /;s/ WEAK / GLOBAL /;s/@@GLIBCXX_\(LDBL_\)\?[0-9.]*//;s/@@CXXABI_TM_[0-9.]*//;s/@@CXXABI_FLOAT128//;s/@@CXXABI_\(LDBL_\)\?[0-9.]*//' | LC_ALL=C sort -u > system.abilist
31df50
readelf -Ws ../obj-%{gcc_target_platform}/%{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so.6 | sed -n '/\.symtab/,$d;/ UND /d;/@GLIBC_PRIVATE/d;/\(GLOBAL\|WEAK\|UNIQUE\)/p' | awk '{ if ($4 == "OBJECT") { printf "%s %s %s %s %s\n", $8, $4, $5, $6, $3 } else { printf "%s %s %s %s\n", $8, $4, $5, $6 }}' | sed 's/ UNIQUE / GLOBAL /;s/ WEAK / GLOBAL /;s/@@GLIBCXX_\(LDBL_\)\?[0-9.]*//;s/@@CXXABI_TM_[0-9.]*//;s/@@CXXABI_FLOAT128//;s/@@CXXABI_\(LDBL_\)\?[0-9.]*//' | LC_ALL=C sort -u > vanilla.abilist
31df50
diff -up system.abilist vanilla.abilist | awk '/^\+\+\+/{next}/^\+/{print gensub(/^+(.*)$/,"\\1","1",$0)}' > system2vanilla.abilist.diff
31df50
../obj-%{gcc_target_platform}/gcc/xgcc -B ../obj-%{gcc_target_platform}/gcc/ -shared -o libstdc++_nonshared.so -Wl,--whole-archive ../obj-%{gcc_target_platform}/%{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared%{nonsharedver}.a -Wl,--no-whole-archive %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6
31df50
readelf -Ws libstdc++_nonshared.so | sed -n '/\.symtab/,$d;/ UND /d;/@GLIBC_PRIVATE/d;/\(GLOBAL\|WEAK\|UNIQUE\)/p' | awk '{ if ($4 == "OBJECT") { printf "%s %s %s %s %s\n", $8, $4, $5, $6, $3 } else { printf "%s %s %s %s\n", $8, $4, $5, $6 }}' | sed 's/ UNIQUE / GLOBAL /;s/ WEAK / GLOBAL /;s/@@GLIBCXX_\(LDBL_\)\?[0-9.]*//;s/@@CXXABI_TM_[0-9.]*//;s/@@CXXABI_FLOAT128//;s/@@CXXABI_\(LDBL_\)\?[0-9.]*//' | LC_ALL=C sort -u > nonshared.abilist
31df50
echo ====================NONSHARED=========================
31df50
ldd -d -r ./libstdc++_nonshared.so || :
31df50
ldd -u ./libstdc++_nonshared.so || :
31df50
diff -up system2vanilla.abilist.diff nonshared.abilist || :
31df50
readelf -Ws ../obj-%{gcc_target_platform}/%{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared%{nonsharedver}.a | grep HIDDEN.*UND | grep -v __dso_handle || :
31df50
echo ====================NONSHARED END=====================
31df50
rm -f libstdc++_nonshared.so
31df50
cd ..
31df50
31df50
%install
31df50
rm -rf %{buildroot}
31df50
mkdir -p %{buildroot}
31df50
31df50
# RISC-V ABI wants to install everything in /lib64/lp64d or /usr/lib64/lp64d.
31df50
# Make these be symlinks to /lib64 or /usr/lib64 respectively. See:
31df50
# https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/DRHT5YTPK4WWVGL3GIN5BF2IKX2ODHZ3/
31df50
%ifarch riscv64
31df50
for d in %{buildroot}%{_libdir} %{buildroot}/%{_lib} \
31df50
	  %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib} \
31df50
	  %{buildroot}%{_prefix}/include/c++/%{gcc_major}/%{gcc_target_platform}/%{_lib}; do
31df50
  mkdir -p $d
31df50
  (cd $d && ln -sf . lp64d)
31df50
done
31df50
%endif
31df50
31df50
%if %{build_offload_nvptx}
31df50
cd nvptx-tools-%{nvptx_tools_gitrev}
31df50
cd obj-%{gcc_target_platform}
31df50
make install prefix=%{buildroot}%{_prefix}
31df50
cd ../..
31df50
31df50
ln -sf newlib-cygwin-%{newlib_cygwin_gitrev}/newlib newlib
31df50
cd obj-offload-nvptx-none
31df50
make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \
31df50
  infodir=%{buildroot}%{_infodir} install
31df50
rm -rf %{buildroot}%{_prefix}/libexec/gcc/nvptx-none/%{gcc_major}/install-tools
31df50
rm -rf %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/{install-tools,plugin,cc1,cc1plus,f951}
31df50
rm -rf %{buildroot}%{_infodir} %{buildroot}%{_mandir}/man7 %{buildroot}%{_prefix}/share/locale
31df50
rm -rf %{buildroot}%{_prefix}/lib/gcc/nvptx-none/%{gcc_major}/{install-tools,plugin}
31df50
rm -rf %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/{install-tools,plugin,include-fixed}
31df50
rm -rf %{buildroot}%{_prefix}/%{_lib}/libc[cp]1*
31df50
mv -f %{buildroot}%{_prefix}/nvptx-none/lib/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/
31df50
mv -f %{buildroot}%{_prefix}/nvptx-none/lib/mgomp/*.{a,spec} %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/mgomp/
31df50
mv -f %{buildroot}%{_prefix}/lib/gcc/nvptx-none/%{gcc_major}/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/
31df50
mv -f %{buildroot}%{_prefix}/lib/gcc/nvptx-none/%{gcc_major}/mgomp/*.a %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none/mgomp/
31df50
find %{buildroot}%{_prefix}/lib/gcc/nvptx-none %{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none \
31df50
     %{buildroot}%{_prefix}/nvptx-none/lib -name \*.la | xargs rm
31df50
cd ..
31df50
rm -f newlib
31df50
%endif
31df50
31df50
%if %{build_libstdcxx_docs}
31df50
%if 0%{?rhel} < 7
31df50
export PATH=`pwd`/obj-%{gcc_target_platform}/doxygen-install/bin/${PATH:+:${PATH}}
31df50
%endif
31df50
%endif
31df50
31df50
%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
31df50
# Also set LD_LIBRARY_PATH so that DTS eu-strip (called from find-debuginfo.sh)
31df50
# can find the libraries it needs.
31df50
%{?scl:export LD_LIBRARY_PATH=%{_libdir}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}}
31df50
31df50
perl -pi -e \
31df50
  's~href="l(ibstdc|atest)~href="http://gcc.gnu.org/onlinedocs/libstdc++/l\1~' \
31df50
  libstdc++-v3/doc/html/api.html
31df50
31df50
cd obj-%{gcc_target_platform}
31df50
31df50
TARGET_PLATFORM=%{gcc_target_platform}
31df50
31df50
# There are some MP bugs in libstdc++ Makefiles
31df50
make -C %{gcc_target_platform}/libstdc++-v3
31df50
31df50
%if 0%{?scl:1}
31df50
rm -f gcc/libgcc_s.so
31df50
echo '/* GNU ld script
31df50
   Use the shared library, but some functions are only in
31df50
   the static library, so try that secondarily.  */
31df50
%{oformat}
31df50
GROUP ( /%{_lib}/libgcc_s.so.1 libgcc.a )' > gcc/libgcc_s.so
31df50
%endif
31df50
31df50
make prefix=%{buildroot}%{_prefix} mandir=%{buildroot}%{_mandir} \
31df50
  infodir=%{buildroot}%{_infodir} install
31df50
31df50
%if 0%{?scl:1}
31df50
rm -f gcc/libgcc_s.so
31df50
ln -sf libgcc_s.so.1 gcc/libgcc_s.so
31df50
%endif
31df50
31df50
FULLPATH=%{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
FULLEPATH=%{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
31df50
%if 0%{?scl:1}
31df50
ln -sf ../../../../bin/ar $FULLEPATH/ar
31df50
ln -sf ../../../../bin/as $FULLEPATH/as
31df50
ln -sf ../../../../bin/ld $FULLEPATH/ld
31df50
ln -sf ../../../../bin/ld.bfd $FULLEPATH/ld.bfd
31df50
ln -sf ../../../../bin/ld.gold $FULLEPATH/ld.gold
31df50
ln -sf ../../../../bin/nm $FULLEPATH/nm
31df50
ln -sf ../../../../bin/objcopy $FULLEPATH/objcopy
31df50
ln -sf ../../../../bin/ranlib $FULLEPATH/ranlib
31df50
ln -sf ../../../../bin/strip $FULLEPATH/strip
31df50
%endif
31df50
31df50
%if %{build_isl}
d6dcb6
cp -a isl-install/lib/libisl.so.23 $FULLPATH/
31df50
%endif
31df50
31df50
# fix some things
31df50
ln -sf gcc %{buildroot}%{_prefix}/bin/cc
31df50
mkdir -p %{buildroot}/lib
31df50
ln -sf ..%{_prefix}/bin/cpp %{buildroot}/lib/cpp
31df50
ln -sf gfortran %{buildroot}%{_prefix}/bin/f95
31df50
rm -f %{buildroot}%{_infodir}/dir
31df50
gzip -9 %{buildroot}%{_infodir}/*.info*
31df50
ln -sf gcc %{buildroot}%{_prefix}/bin/gnatgcc
31df50
mkdir -p %{buildroot}%{_fmoddir}
31df50
31df50
cxxconfig="`find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h`"
31df50
for i in `find %{gcc_target_platform}/[36]*/libstdc++-v3/include -name c++config.h 2>/dev/null`; do
31df50
  if ! diff -up $cxxconfig $i; then
31df50
    cat > %{buildroot}%{_prefix}/include/c++/%{gcc_major}/%{gcc_target_platform}/bits/c++config.h <
31df50
#ifndef _CPP_CPPCONFIG_WRAPPER
31df50
#define _CPP_CPPCONFIG_WRAPPER 1
31df50
#include <bits/wordsize.h>
31df50
#if __WORDSIZE == 32
31df50
%ifarch %{multilib_64_archs}
31df50
`cat $(find %{gcc_target_platform}/32/libstdc++-v3/include -name c++config.h)`
31df50
%else
31df50
`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
31df50
%endif
31df50
#else
31df50
%ifarch %{multilib_64_archs}
31df50
`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
31df50
%else
31df50
`cat $(find %{gcc_target_platform}/64/libstdc++-v3/include -name c++config.h)`
31df50
%endif
31df50
#endif
31df50
#endif
31df50
EOF
31df50
    break
31df50
  fi
31df50
done
31df50
31df50
for f in `find %{buildroot}%{_prefix}/include/c++/%{gcc_major}/%{gcc_target_platform}/ -name c++config.h`; do
31df50
  for i in 1 2 4 8; do
31df50
    sed -i -e 's/#define _GLIBCXX_ATOMIC_BUILTINS_'$i' 1/#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_'$i'\
31df50
&\
31df50
#endif/' $f
31df50
  done
31df50
%if 0%{?rhel} <= 7
31df50
  # Force the old ABI unconditionally, the new one does not work in the
31df50
  # libstdc++_nonshared.a model against RHEL 6/7 libstdc++.so.6.
31df50
  sed -i -e 's/\(define[[:blank:]]*_GLIBCXX_USE_DUAL_ABI[[:blank:]]*\)1/\10/' $f
31df50
%endif
31df50
done
31df50
31df50
# Nuke bits/*.h.gch dirs
31df50
# 1) there is no bits/*.h header installed, so when gch file can't be
31df50
#    used, compilation fails
31df50
# 2) sometimes it is hard to match the exact options used for building
31df50
#    libstdc++-v3 or they aren't desirable
31df50
# 3) there are multilib issues, conflicts etc. with this
31df50
# 4) it is huge
31df50
# People can always precompile on their own whatever they want, but
31df50
# shipping this for everybody is unnecessary.
31df50
rm -rf %{buildroot}%{_prefix}/include/c++/%{gcc_major}/%{gcc_target_platform}/bits/*.h.gch
31df50
31df50
%if %{build_libstdcxx_docs}
31df50
libstdcxx_doc_builddir=%{gcc_target_platform}/libstdc++-v3/doc/doxygen
31df50
mkdir -p ../rpm.doc/libstdc++-v3
31df50
cp -r -p ../libstdc++-v3/doc/html ../rpm.doc/libstdc++-v3/html
31df50
cp -r -p $libstdcxx_doc_builddir/html ../rpm.doc/libstdc++-v3/html/api
31df50
mkdir -p %{buildroot}%{_mandir}/man3
31df50
cp -r -p $libstdcxx_doc_builddir/man/man3/* %{buildroot}%{_mandir}/man3/
31df50
find ../rpm.doc/libstdc++-v3 -name \*~ | xargs rm
31df50
%endif
31df50
31df50
%ifarch sparcv9 sparc64
31df50
ln -f %{buildroot}%{_prefix}/bin/%{gcc_target_platform}-gcc \
31df50
  %{buildroot}%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
31df50
%endif
31df50
%ifarch ppc ppc64 ppc64p7
31df50
ln -f %{buildroot}%{_prefix}/bin/%{gcc_target_platform}-gcc \
31df50
  %{buildroot}%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
31df50
%endif
31df50
31df50
%ifarch sparcv9 ppc
31df50
FULLLPATH=$FULLPATH/lib32
31df50
%endif
31df50
%ifarch sparc64 ppc64 ppc64p7
31df50
FULLLPATH=$FULLPATH/lib64
31df50
%endif
31df50
if [ -n "$FULLLPATH" ]; then
31df50
  mkdir -p $FULLLPATH
31df50
else
31df50
  FULLLPATH=$FULLPATH
31df50
fi
31df50
31df50
find %{buildroot} -name \*.la | xargs rm -f
31df50
31df50
mv %{buildroot}%{_prefix}/%{_lib}/libgfortran.spec $FULLPATH/
31df50
%if %{build_libitm}
31df50
mv %{buildroot}%{_prefix}/%{_lib}/libitm.spec $FULLPATH/
31df50
%endif
31df50
%if %{build_libasan}
31df50
mv %{buildroot}%{_prefix}/%{_lib}/libsanitizer.spec $FULLPATH/
31df50
%endif
31df50
31df50
mkdir -p %{buildroot}/%{_lib}
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libgcc_s.so.1 %{buildroot}/%{_lib}/libgcc_s-%{gcc_major}-%{DATE}.so.1
31df50
chmod 755 %{buildroot}/%{_lib}/libgcc_s-%{gcc_major}-%{DATE}.so.1
31df50
ln -sf libgcc_s-%{gcc_major}-%{DATE}.so.1 %{buildroot}/%{_lib}/libgcc_s.so.1
31df50
ln -sf /%{_lib}/libgcc_s.so.1 $FULLPATH/libgcc_s.so
31df50
%ifarch sparcv9 ppc
31df50
ln -sf /lib64/libgcc_s.so.1 $FULLPATH/64/libgcc_s.so
31df50
%endif
31df50
%ifarch %{multilib_64_archs}
31df50
ln -sf /lib/libgcc_s.so.1 $FULLPATH/32/libgcc_s.so
31df50
%endif
31df50
31df50
rm -f $FULLPATH/libgcc_s.so
31df50
echo '/* GNU ld script
31df50
   Use the shared library, but some functions are only in
31df50
   the static library, so try that secondarily.  */
31df50
%{oformat}
31df50
GROUP ( /%{_lib}/libgcc_s.so.1 libgcc.a )' > $FULLPATH/libgcc_s.so
31df50
%ifarch sparcv9 ppc
31df50
rm -f $FULLPATH/64/libgcc_s.so
31df50
echo '/* GNU ld script
31df50
   Use the shared library, but some functions are only in
31df50
   the static library, so try that secondarily.  */
31df50
%{oformat2}
31df50
GROUP ( /lib64/libgcc_s.so.1 libgcc.a )' > $FULLPATH/64/libgcc_s.so
31df50
%endif
31df50
%ifarch %{multilib_64_archs}
31df50
rm -f $FULLPATH/32/libgcc_s.so
31df50
echo '/* GNU ld script
31df50
   Use the shared library, but some functions are only in
31df50
   the static library, so try that secondarily.  */
31df50
%{oformat2}
31df50
GROUP ( /lib/libgcc_s.so.1 libgcc.a )' > $FULLPATH/32/libgcc_s.so
31df50
%endif
31df50
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/
31df50
cp -a %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared%{nonsharedver}.a \
31df50
  $FULLLPATH/libstdc++_nonshared.a
31df50
cp -a %{gcc_target_platform}/libgfortran/.libs/libgfortran_nonshared80.a \
31df50
  $FULLLPATH/libgfortran_nonshared.a
31df50
31df50
%if 0%{?rhel} <= 7
31df50
# Build libgomp_nonshared.a with the system compiler.  Use -O2 to
31df50
# get tailcalls.
31df50
gcc %{SOURCE6} -O2 -c
31df50
ar rcs libgomp_nonshared.a libgomp_nonshared.o
31df50
cp -a libgomp_nonshared.a $FULLLPATH
31df50
%ifarch x86_64
31df50
# Only need this for -m32 on x86_64.  devtoolset-N-gcc isn't multilib,
31df50
# and we don't have a devtoolset-N-libgomp-devel subpackage.
31df50
gcc %{SOURCE6} -O2 -c -m32 -o libgomp_nonshared32.o
31df50
ar rcs libgomp_nonshared32.a libgomp_nonshared32.o
31df50
cp -a libgomp_nonshared32.a $FULLLPATH/32/libgomp_nonshared.a
31df50
%endif
31df50
%endif
31df50
31df50
mkdir -p %{buildroot}%{_prefix}/libexec/getconf
31df50
if gcc/xgcc -B gcc/ -E -P -dD -xc /dev/null | grep '__LONG_MAX__.*\(2147483647\|0x7fffffff\($\|[LU]\)\)'; then
31df50
  ln -sf POSIX_V6_ILP32_OFF32 %{buildroot}%{_prefix}/libexec/getconf/default
31df50
else
31df50
  ln -sf POSIX_V6_LP64_OFF64 %{buildroot}%{_prefix}/libexec/getconf/default
31df50
fi
31df50
31df50
%if 0%{?rhel} >= 7
31df50
mkdir -p %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++*gdb.py* \
31df50
      %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}/
31df50
pushd ../libstdc++-v3/python
31df50
for i in `find . -name \*.py`; do
31df50
  touch -r $i %{buildroot}%{_prefix}/share/gcc-%{gcc_major}/python/$i
31df50
done
31df50
touch -r hook.in %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}/libstdc++*gdb.py
31df50
popd
31df50
for f in `find %{buildroot}%{_prefix}/share/gcc-%{gcc_major}/python/ \
31df50
	       %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}/ -name \*.py`; do
31df50
  r=${f/$RPM_BUILD_ROOT/}
31df50
%if 0%{?rhel} <= 7
31df50
  %{__python} -c 'import py_compile; py_compile.compile("'$f'", dfile="'$r'")'
31df50
  %{__python} -O -c 'import py_compile; py_compile.compile("'$f'", dfile="'$r'")'
31df50
%else
31df50
  %{__python3} -c 'import py_compile; py_compile.compile("'$f'", dfile="'$r'")'
31df50
  %{__python3} -O -c 'import py_compile; py_compile.compile("'$f'", dfile="'$r'")'
31df50
%endif
31df50
done
31df50
%endif
31df50
31df50
rm -f $FULLEPATH/libgccjit.so
31df50
mkdir -p %{buildroot}%{_prefix}/%{_lib}/
31df50
cp -a objlibgccjit/gcc/libgccjit.so.* %{buildroot}%{_prefix}/%{_lib}/
31df50
rm -f $FULLPATH/libgccjit.so
31df50
echo '/* GNU ld script */
31df50
%{oformat}
31df50
INPUT ( %{_prefix}/%{_lib}/libgccjit.so.0 )' > $FULLPATH/libgccjit.so
31df50
cp -a ../gcc/jit/libgccjit*.h $FULLPATH/include/
31df50
/usr/bin/install -c -m 644 objlibgccjit/gcc/doc/libgccjit.info %{buildroot}/%{_infodir}/
31df50
gzip -9 %{buildroot}/%{_infodir}/libgccjit.info
31df50
31df50
pushd $FULLPATH
31df50
%if 0%{?rhel} <= 7
31df50
echo '/* GNU ld script
31df50
   Use the shared library, but some functions are only in
31df50
   the static library, so try that secondarily.  */
31df50
%{oformat}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libgomp.so.1 -lgomp_nonshared )' > libgomp.so
31df50
%else
31df50
echo '/* GNU ld script */
31df50
%{oformat}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libgomp.so.1 )' > libgomp.so
31df50
%endif
31df50
31df50
echo '/* GNU ld script
31df50
   Use the shared library, but some functions are only in
31df50
   the static library, so try that secondarily.  */
31df50
%{oformat}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 -lstdc++_nonshared )' > libstdc++.so
31df50
rm -f libgfortran.so
31df50
echo '/* GNU ld script
31df50
   Use the shared library, but some functions are only in
31df50
   the static library, so try that secondarily.  */
31df50
%{oformat}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libgfortran.so.5 -lgfortran_nonshared )' > libgfortran.so
31df50
%if %{build_libquadmath}
31df50
rm -f libquadmath.so
31df50
echo '/* GNU ld script */
31df50
%{oformat}
31df50
%if 0%{!?scl:1}
31df50
INPUT ( %{_prefix}/%{_lib}/libquadmath.so.0 )' > libquadmath.so
31df50
%else
31df50
%if 0%{?rhel} >= 7
31df50
INPUT ( %{_root_prefix}/%{_lib}/libquadmath.so.0 )' > libquadmath.so
31df50
%else
31df50
INPUT ( libquadmath.a )' > libquadmath.so
31df50
%endif
31df50
%endif
31df50
%endif
31df50
%if %{build_libitm}
31df50
rm -f libitm.so
31df50
echo '/* GNU ld script */
31df50
%{oformat}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libitm.so.1 )' > libitm.so
31df50
%endif
31df50
%if %{build_libatomic}
31df50
rm -f libatomic.so
31df50
echo '/* GNU ld script */
31df50
%{oformat}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libatomic.so.1 )' > libatomic.so
31df50
%endif
31df50
%if %{build_libasan}
31df50
rm -f libasan.so
31df50
echo '/* GNU ld script */
31df50
%{oformat}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libasan.so.8 )' > libasan.so
31df50
%endif
31df50
%if %{build_libtsan}
31df50
rm -f libtsan.so
31df50
echo '/* GNU ld script */
31df50
%{oformat}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libtsan.so.2 )' > libtsan.so
31df50
%endif
31df50
%if %{build_libubsan}
31df50
rm -f libubsan.so
31df50
echo '/* GNU ld script */
31df50
%{oformat}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libubsan.so.1 )' > libubsan.so
31df50
%endif
31df50
%if %{build_liblsan}
31df50
rm -f liblsan.so
31df50
echo '/* GNU ld script */
31df50
%{oformat}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/liblsan.so.0 )' > liblsan.so
31df50
%endif
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libstdc++fs.*a $FULLLPATH/
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libsupc++.*a .
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libgfortran.*a .
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libgomp.*a .
31df50
%if %{build_libquadmath}
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libquadmath.*a $FULLLPATH/
31df50
%endif
31df50
%if %{build_libitm}
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libitm.*a $FULLLPATH/
31df50
%endif
31df50
%if %{build_libatomic}
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libatomic.*a $FULLLPATH/
31df50
%endif
31df50
%if %{build_libasan}
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libasan.*a $FULLLPATH/
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libasan_preinit.o $FULLLPATH/
31df50
%endif
31df50
%if %{build_libtsan}
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libtsan.*a $FULLPATH/
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libtsan_preinit.o $FULLPATH/
31df50
%endif
31df50
%if %{build_libubsan}
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/libubsan.*a $FULLLPATH/
31df50
%endif
31df50
%if %{build_liblsan}
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/liblsan.*a $FULLPATH/
31df50
mv -f %{buildroot}%{_prefix}/%{_lib}/liblsan_preinit.o $FULLPATH/
31df50
%endif
31df50
31df50
%ifarch sparcv9 ppc
31df50
echo '/* GNU ld script
31df50
   Use the shared library, but some functions are only in
31df50
   the static library, so try that secondarily.  */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libstdc++.so.6 -lstdc++_nonshared )' > 64/libstdc++.so
31df50
rm -f 64/libgfortran.so
31df50
echo '/* GNU ld script
31df50
   Use the shared library, but some functions are only in
31df50
   the static library, so try that secondarily.  */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libgfortran.so.5 -lgfortran_nonshared )' > 64/libgfortran.so
31df50
echo '/* GNU ld script */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libgomp.so.1 )' > 64/libgomp.so
31df50
echo '/* GNU ld script */
31df50
%{oformat2}
31df50
INPUT ( %{_prefix}/lib64/libgccjit.so.0 )' > 64/libgccjit.so
31df50
%if %{build_libquadmath}
31df50
rm -f 64/libquadmath.so
31df50
echo '/* GNU ld script */
31df50
%{oformat2}
31df50
%if 0%{!?scl:1}
31df50
INPUT ( %{_prefix}/lib64/libquadmath.so.0 )' > 64/libquadmath.so
31df50
%else
31df50
%if 0%{?rhel} >= 7
31df50
INPUT ( %{_root_prefix}/lib64/libquadmath.so.0 )' > 64/libquadmath.so
31df50
%else
31df50
INPUT ( libquadmath.a )' > 64/libquadmath.so
31df50
%endif
31df50
%endif
31df50
%endif
31df50
%if %{build_libitm}
31df50
rm -f 64/libitm.so
31df50
echo '/* GNU ld script */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libitm.so.1 )' > 64/libitm.so
31df50
%endif
31df50
%if %{build_libatomic}
31df50
rm -f 64/libatomic.so
31df50
echo '/* GNU ld script */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libatomic.so.1 )' > 64/libatomic.so
31df50
%endif
31df50
%if %{build_libasan}
31df50
rm -f 64/libasan.so
31df50
echo '/* GNU ld script */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libasan.so.8 )' > 64/libasan.so
31df50
%endif
31df50
%if %{build_libubsan}
31df50
rm -f 64/libubsan.so
31df50
echo '/* GNU ld script */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib64/libubsan.so.1 )' > 64/libubsan.so
31df50
%endif
31df50
mv -f %{buildroot}%{_prefix}/lib64/libsupc++.*a 64/
31df50
mv -f %{buildroot}%{_prefix}/lib64/libgfortran.*a 64/
31df50
mv -f %{buildroot}%{_prefix}/lib64/libgomp.*a 64/
31df50
%if %{build_libquadmath}
31df50
mv -f %{buildroot}%{_prefix}/lib64/libquadmath.*a 64/
31df50
%endif
31df50
ln -sf lib32/libstdc++.a libstdc++.a
31df50
ln -sf ../lib64/libstdc++.a 64/libstdc++.a
31df50
ln -sf lib32/libstdc++fs.a libstdc++fs.a
31df50
ln -sf ../lib64/libstdc++fs.a 64/libstdc++fs.a
31df50
ln -sf lib32/libstdc++_nonshared.a libstdc++_nonshared.a
31df50
ln -sf ../lib64/libstdc++_nonshared.a 64/libstdc++_nonshared.a
31df50
%if %{build_libquadmath}
31df50
ln -sf lib32/libquadmath.a libquadmath.a
31df50
ln -sf ../lib64/libquadmath.a 64/libquadmath.a
31df50
%endif
31df50
%if %{build_libitm}
31df50
ln -sf lib32/libitm.a libitm.a
31df50
ln -sf ../lib64/libitm.a 64/libitm.a
31df50
%endif
31df50
%if %{build_libatomic}
31df50
ln -sf lib32/libatomic.a libatomic.a
31df50
ln -sf ../lib64/libatomic.a 64/libatomic.a
31df50
%endif
31df50
%if %{build_libasan}
31df50
ln -sf lib32/libasan.a libasan.a
31df50
ln -sf ../lib64/libasan.a 64/libasan.a
31df50
ln -sf lib32/libasan_preinit.o libasan_preinit.o
31df50
ln -sf ../lib64/libasan_preinit.o 64/libasan_preinit.o
31df50
%endif
31df50
%if %{build_libubsan}
31df50
ln -sf lib32/libubsan.a libubsan.a
31df50
ln -sf ../lib64/libubsan.a 64/libubsan.a
31df50
%endif
31df50
%endif
31df50
%ifarch %{multilib_64_archs}
31df50
mkdir -p 32
31df50
echo '/* GNU ld script
31df50
   Use the shared library, but some functions are only in
31df50
   the static library, so try that secondarily.  */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libstdc++.so.6 -lstdc++_nonshared )' > 32/libstdc++.so
31df50
rm -f 32/libgfortran.so
31df50
echo '/* GNU ld script
31df50
   Use the shared library, but some functions are only in
31df50
   the static library, so try that secondarily.  */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libgfortran.so.5 -lgfortran_nonshared )' > 32/libgfortran.so
31df50
31df50
%if 0%{?rhel} <= 7
31df50
echo '/* GNU ld script
31df50
   Use the shared library, but some functions are only in
31df50
   the static library, so try that secondarily.  */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libgomp.so.1 -lgomp_nonshared )' > 32/libgomp.so
31df50
%else
31df50
echo '/* GNU ld script */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libgomp.so.1 )' > 32/libgomp.so
31df50
%endif
31df50
31df50
echo '/* GNU ld script */
31df50
%{oformat2}
31df50
INPUT ( %{_prefix}/lib/libgccjit.so.0 )' > 32/libgccjit.so
31df50
%if %{build_libquadmath}
31df50
rm -f 32/libquadmath.so
31df50
echo '/* GNU ld script */
31df50
%{oformat2}
31df50
%if 0%{!?scl:1}
31df50
INPUT ( %{_prefix}/lib/libquadmath.so.0 )' > 32/libquadmath.so
31df50
%else
31df50
%if 0%{?rhel} >= 7
31df50
INPUT ( %{_root_prefix}/lib/libquadmath.so.0 )' > 32/libquadmath.so
31df50
%else
31df50
INPUT ( libquadmath.a )' > 32/libquadmath.so
31df50
%endif
31df50
%endif
31df50
%endif
31df50
%if %{build_libitm}
31df50
rm -f 32/libitm.so
31df50
echo '/* GNU ld script */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libitm.so.1 )' > 32/libitm.so
31df50
%endif
31df50
%if %{build_libatomic}
31df50
rm -f 32/libatomic.so
31df50
echo '/* GNU ld script */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libatomic.so.1 )' > 32/libatomic.so
31df50
%endif
31df50
%if %{build_libasan}
31df50
rm -f 32/libasan.so
31df50
echo '/* GNU ld script */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libasan.so.8 )' > 32/libasan.so
31df50
%endif
31df50
%if %{build_libubsan}
31df50
rm -f 32/libubsan.so
31df50
echo '/* GNU ld script */
31df50
%{oformat2}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/libubsan.so.1 )' > 32/libubsan.so
31df50
%endif
31df50
mv -f %{buildroot}%{_prefix}/lib/libsupc++.*a 32/
31df50
mv -f %{buildroot}%{_prefix}/lib/libgfortran.*a 32/
31df50
mv -f %{buildroot}%{_prefix}/lib/libgomp.*a 32/
31df50
%if %{build_libquadmath}
31df50
mv -f %{buildroot}%{_prefix}/lib/libquadmath.*a 32/
31df50
%endif
31df50
%endif
31df50
%ifarch sparc64 ppc64
31df50
ln -sf ../lib32/libstdc++.a 32/libstdc++.a
31df50
ln -sf lib64/libstdc++.a libstdc++.a
31df50
ln -sf ../lib32/libstdc++fs.a 32/libstdc++fs.a
31df50
ln -sf lib64/libstdc++fs.a libstdc++fs.a
31df50
ln -sf ../lib32/libstdc++_nonshared.a 32/libstdc++_nonshared.a
31df50
ln -sf lib64/libstdc++_nonshared.a libstdc++_nonshared.a
31df50
ln -sf ../lib32/libgfortran_nonshared.a 32/libgfortran_nonshared.a
31df50
ln -sf lib64/libgfortran_nonshared.a libgfortran_nonshared.a
31df50
ln -sf lib64/libgomp_nonshared.a libgomp_nonshared.a
31df50
%if %{build_libquadmath}
31df50
ln -sf ../lib32/libquadmath.a 32/libquadmath.a
31df50
ln -sf lib64/libquadmath.a libquadmath.a
31df50
%endif
31df50
%if %{build_libitm}
31df50
ln -sf ../lib32/libitm.a 32/libitm.a
31df50
ln -sf lib64/libitm.a libitm.a
31df50
%endif
31df50
%if %{build_libatomic}
31df50
ln -sf ../lib32/libatomic.a 32/libatomic.a
31df50
ln -sf lib64/libatomic.a libatomic.a
31df50
%endif
31df50
%if %{build_libasan}
31df50
ln -sf ../lib32/libasan.a 32/libasan.a
31df50
ln -sf lib64/libasan.a libasan.a
31df50
ln -sf ../lib32/libasan_preinit.o 32/libasan_preinit.o
31df50
ln -sf lib64/libasan_preinit.o libasan_preinit.o
31df50
%endif
31df50
%if %{build_libubsan}
31df50
ln -sf ../lib32/libubsan.a 32/libubsan.a
31df50
# BZ #2027391
31df50
mv -f lib64/libubsan.a libubsan.a
31df50
%endif
31df50
%else
31df50
%ifarch %{multilib_64_archs}
31df50
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libstdc++.a 32/libstdc++.a
31df50
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libstdc++fs.a 32/libstdc++fs.a
31df50
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libstdc++_nonshared.a 32/libstdc++_nonshared.a
31df50
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libgfortran_nonshared.a 32/libgfortran_nonshared.a
31df50
%if %{build_libquadmath}
31df50
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libquadmath.a 32/libquadmath.a
31df50
%endif
31df50
%if %{build_libitm}
31df50
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libitm.a 32/libitm.a
31df50
%endif
31df50
%if %{build_libatomic}
31df50
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libatomic.a 32/libatomic.a
31df50
%endif
31df50
%if %{build_libasan}
31df50
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libasan.a 32/libasan.a
31df50
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libasan_preinit.o 32/libasan_preinit.o
31df50
%endif
31df50
%if %{build_libubsan}
31df50
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}/%{gcc_major}/libubsan.a 32/libubsan.a
31df50
%endif
31df50
%endif
31df50
%endif
31df50
31df50
# If we are building a debug package then copy all of the static archives
31df50
# into the debug directory to keep them as unstripped copies.
31df50
%if 0%{?_enable_debug_packages}
31df50
mkdir -p $RPM_BUILD_ROOT%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/debug%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
adirs="$FULLPATH"
31df50
if [ $FULLLPATH -ne $FULLPATH ]; then
31df50
  adirs="$adirs $FULLLPATH"
31df50
fi
31df50
for f in `find $adirs -maxdepth 1 -a \
31df50
		 \( -name libgfortran.a -o -name libgomp.a \
31df50
		    -o -name libgcc.a -o -name libgcc_eh.a -o -name libgcov.a \
31df50
		    -o -name libquadmath.a -o -name libitm.a \
31df50
		    -o -name libatomic.a -o -name libasan.a \
31df50
		    -o -name libtsan.a -o -name libubsan.a \
31df50
		    -o -name liblsan.a \
31df50
		    -o -name libcc1.a \
31df50
		    -o -name libstdc++_nonshared.a \
31df50
		    -o -name libgomp_nonshared.a \
31df50
		    -o -name libgfortran_nonshared.a \
31df50
		    -o -name libsupc++.a \
31df50
		    -o -name libstdc++.a -o -name libcaf_single.a \
31df50
		    -o -name libstdc++fs.a \) -a -type f`; do
31df50
  cp -a $f $RPM_BUILD_ROOT%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/lib/debug%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/
31df50
done
31df50
%endif
31df50
31df50
# Strip debug info from Fortran/ObjC/Java static libraries
31df50
strip -g `find . \( -name libgfortran.a  -o -name libgomp.a \
31df50
		    -o -name libgcc.a -o -name libgcov.a \
31df50
		    -o -name libquadmath.a -o -name libitm.a \
31df50
		    -o -name libatomic.a -o -name libasan.a \
31df50
		    -o -name libtsan.a -o -name libubsan.a \
31df50
		    -o -name liblsan.a \
31df50
		    -o -name libcc1.a \) -a -type f`
31df50
popd
31df50
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgfortran.so.5.*
31df50
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgomp.so.1.*
31df50
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libcc1.so.0.*
31df50
%if %{build_libquadmath}
31df50
%if 0%{!?scl:1}
31df50
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libquadmath.so.0.*
31df50
%endif
31df50
%endif
31df50
%if %{build_libitm}
31df50
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libitm.so.1.*
31df50
%if 0%{?scl:1}
31df50
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
31df50
mv %{buildroot}%{_prefix}/%{_lib}/libitm.so.1* %{buildroot}%{_root_prefix}/%{_lib}/
31df50
mkdir -p %{buildroot}%{_root_infodir}
31df50
%if 0%{?rhel} <= 7
31df50
mv %{buildroot}%{_infodir}/libitm.info* %{buildroot}%{_root_infodir}/
31df50
%endif
31df50
%endif
31df50
%endif
31df50
%if %{build_libatomic}
31df50
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libatomic.so.1.*
31df50
%if 0%{?scl:1}
31df50
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
31df50
mv %{buildroot}%{_prefix}/%{_lib}/libatomic.so.1* %{buildroot}%{_root_prefix}/%{_lib}/
31df50
mkdir -p %{buildroot}%{_root_infodir}
31df50
%endif
31df50
%endif
31df50
%if %{build_libasan}
31df50
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libasan.so.8.*
31df50
%if 0%{?scl:1}
31df50
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
31df50
mv %{buildroot}%{_prefix}/%{_lib}/libasan.so.8* %{buildroot}%{_root_prefix}/%{_lib}/
31df50
mkdir -p %{buildroot}%{_root_infodir}
31df50
%endif
31df50
%endif
31df50
%if %{build_libtsan}
31df50
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libtsan.so.2.*
31df50
%if 0%{?scl:1}
31df50
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
31df50
mv %{buildroot}%{_prefix}/%{_lib}/libtsan.so.2* %{buildroot}%{_root_prefix}/%{_lib}/
31df50
mkdir -p %{buildroot}%{_root_infodir}
31df50
%endif
31df50
%endif
31df50
%if %{build_libubsan}
31df50
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libubsan.so.1.*
31df50
%if 0%{?scl:1}
31df50
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
31df50
mv %{buildroot}%{_prefix}/%{_lib}/libubsan.so.1* %{buildroot}%{_root_prefix}/%{_lib}/
31df50
mkdir -p %{buildroot}%{_root_infodir}
31df50
%endif
31df50
%endif
31df50
%if %{build_liblsan}
31df50
chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.*
31df50
%if 0%{?scl:1}
31df50
mkdir -p %{buildroot}%{_root_prefix}/%{_lib}/
31df50
mv %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0* %{buildroot}%{_root_prefix}/%{_lib}/
31df50
mkdir -p %{buildroot}%{_root_infodir}
31df50
%endif
31df50
%endif
31df50
31df50
mv $FULLPATH/include-fixed/syslimits.h $FULLPATH/include/syslimits.h
31df50
mv $FULLPATH/include-fixed/limits.h $FULLPATH/include/limits.h
31df50
for h in `find $FULLPATH/include -name \*.h`; do
31df50
  if grep -q 'It has been auto-edited by fixincludes from' $h; then
31df50
    rh=`grep -A2 'It has been auto-edited by fixincludes from' $h | tail -1 | sed 's|^.*"\(.*\)".*$|\1|'`
31df50
    diff -up $rh $h || :
31df50
    rm -f $h
31df50
  fi
31df50
done
31df50
31df50
31df50
cd ..
31df50
31df50
%if 0%{!?scl:1}
31df50
for i in %{buildroot}%{_prefix}/bin/{*gcc,*++,gcov,gfortran,gcc-ar,gcc-nm,gcc-ranlib}; do
31df50
  mv -f $i ${i}5
31df50
done
31df50
%endif
31df50
31df50
# Remove binaries we will not be including, so that they don't end up in
31df50
# gcc-debuginfo
31df50
rm -f %{buildroot}%{_prefix}/%{_lib}/{libffi*,libiberty.a,libstdc++*,libgfortran*} || :
31df50
%if 0%{?scl:1}
31df50
rm -f %{buildroot}%{_prefix}/%{_lib}/{libquadmath*,libitm*,libatomic*,libasan*,libtsan*,libubsan*,liblsan*}
31df50
%else
31df50
%if 0%{?rhel} >= 7
31df50
rm -f %{buildroot}%{_prefix}/%{_lib}/{libitm*,libatomic*}
31df50
%endif
31df50
%endif
31df50
rm -f %{buildroot}%{_prefix}/%{_lib}/libgomp*
31df50
rm -f %{buildroot}/%{_lib}/libgcc_s*
31df50
rm -f $FULLEPATH/install-tools/{mkheaders,fixincl}
31df50
rm -f %{buildroot}%{_prefix}/lib/{32,64}/libiberty.a
31df50
rm -f %{buildroot}%{_prefix}/%{_lib}/libssp*
31df50
rm -f %{buildroot}%{_prefix}/%{_lib}/libvtv* || :
31df50
rm -f %{buildroot}/lib/cpp
31df50
rm -f %{buildroot}/%{_lib}/libgcc_s*
31df50
rm -f %{buildroot}%{_prefix}/bin/{f95,gccbug,gnatgcc*}
31df50
rm -f %{buildroot}%{_prefix}/bin/%{gcc_target_platform}-gfortran
31df50
%if 0%{!?scl:1}
31df50
rm -f %{buildroot}%{_prefix}/bin/{*c++*,cc,cpp}
31df50
%endif
31df50
rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gfortran || :
31df50
31df50
%ifarch %{multilib_64_archs}
31df50
# Remove libraries for the other arch on multilib arches
31df50
rm -f %{buildroot}%{_prefix}/lib/lib*.so*
31df50
rm -f %{buildroot}%{_prefix}/lib/lib*.a
31df50
rm -f %{buildroot}/lib/libgcc_s*.so*
31df50
%else
31df50
%ifarch sparcv9 ppc
31df50
rm -f %{buildroot}%{_prefix}/lib64/lib*.so*
31df50
rm -f %{buildroot}%{_prefix}/lib64/lib*.a
31df50
rm -f %{buildroot}/lib64/libgcc_s*.so*
31df50
%endif
31df50
%endif
31df50
31df50
%ifnarch sparc64 ppc64
31df50
%ifarch %{multilib_64_archs}
31df50
cat <<\EOF > %{buildroot}%{_prefix}/bin/%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}-gcc-%{gcc_major}
31df50
#!/bin/sh
31df50
%ifarch s390x
31df50
exec %{gcc_target_platform}-gcc-%{gcc_major} -m31 "$@"
31df50
%else
31df50
exec %{gcc_target_platform}-gcc-%{gcc_major} -m32 "$@"
31df50
%endif
31df50
EOF
31df50
chmod 755 %{buildroot}%{_prefix}/bin/%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}-gcc-%{gcc_major}
31df50
%endif
31df50
%endif
31df50
31df50
# Help plugins find out nvra.
31df50
echo gcc-%{version}-%{release}.%{arch} > $FULLPATH/rpmver
31df50
31df50
# Add symlink to lto plugin in the binutils plugin directory.
31df50
%{__mkdir_p} %{buildroot}%{_libdir}/bfd-plugins/
31df50
ln -s ../../libexec/gcc/%{gcc_target_platform}/%{gcc_major}/liblto_plugin.so \
31df50
  %{buildroot}%{_libdir}/bfd-plugins/
31df50
d6dcb6
%if %{build_annobin_plugin}
d6dcb6
mkdir -p $FULLPATH/plugin
d6dcb6
rm -f $FULLPATH/plugin/gts-gcc-annobin*
d6dcb6
cp -a %{_builddir}/gcc-%{version}-%{DATE}/annobin-plugin/annobin*/gcc-plugin/.libs/annobin.so.0.0.0 \
d6dcb6
  $FULLPATH/plugin/gts-gcc-annobin.so.0.0.0
d6dcb6
pushd $FULLPATH/plugin/
d6dcb6
ln -sf gts-gcc-annobin.so.0.0.0 gts-gcc-annobin.so.0
d6dcb6
ln -sf gts-gcc-annobin.so.0.0.0 gts-gcc-annobin.so
d6dcb6
popd
d6dcb6
%endif
d6dcb6
31df50
%check
d6dcb6
31df50
cd obj-%{gcc_target_platform}
31df50
31df50
%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
31df50
# Test against the system libstdc++.so.6 + libstdc++_nonshared.a combo
31df50
mv %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so.6{,.not_here}
31df50
mv %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so{,.not_here}
31df50
ln -sf %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 \
31df50
  %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so.6
31df50
echo '/* GNU ld script
31df50
   Use the shared library, but some functions are only in
31df50
   the static library, so try that secondarily.  */
31df50
%{oformat}
31df50
INPUT ( %{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libstdc++.so.6 -lstdc++_nonshared )' \
31df50
  > %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++.so
31df50
cp -a %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared%{nonsharedver}.a \
31df50
  %{gcc_target_platform}/libstdc++-v3/src/.libs/libstdc++_nonshared.a
31df50
31df50
# run the tests.
31df50
LC_ALL=C make %{?_smp_mflags} -k check ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ \
31df50
%if 0%{?fedora} >= 20 || 0%{?rhel} > 7
31df50
     RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector-strong}'" || :
31df50
%else
31df50
%ifnarch ppc ppc64 ppc64le s390x
31df50
     RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector}'" || :
31df50
%else
31df50
    || :
31df50
%endif
31df50
%endif
31df50
( LC_ALL=C ../contrib/test_summary -t || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}' > testresults
31df50
rm -rf gcc/testsuite.prev
31df50
mv gcc/testsuite{,.prev}
31df50
rm -f gcc/site.exp
31df50
LC_ALL=C make %{?_smp_mflags} -C gcc -k check-gcc check-g++ ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector}' compat.exp struct-layout-1.exp" || :
31df50
mv gcc/testsuite/gcc/gcc.sum{,.sent}
31df50
mv gcc/testsuite/g++/g++.sum{,.sent}
31df50
( LC_ALL=C ../contrib/test_summary -o -t || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}' > testresults2
31df50
rm -rf gcc/testsuite.compat
31df50
mv gcc/testsuite{,.compat}
31df50
mv gcc/testsuite{.prev,}
31df50
echo ====================TESTING=========================
31df50
cat testresults
31df50
echo ===`gcc --version | head -1` compatibility tests====
31df50
cat testresults2
31df50
echo ====================TESTING END=====================
31df50
mkdir testlogs-%{_target_platform}-%{version}-%{release}
31df50
for i in `find . -name \*.log | grep -F testsuite/ | grep -v 'config.log\|acats.*/tests/'`; do
31df50
  ln $i testlogs-%{_target_platform}-%{version}-%{release}/ || :
31df50
done
31df50
for i in `find gcc/testsuite.compat -name \*.log | grep -v 'config.log\|acats.*/tests/'`; do
31df50
  ln $i testlogs-%{_target_platform}-%{version}-%{release}/`basename $i`.compat || :
31df50
done
31df50
tar cf - testlogs-%{_target_platform}-%{version}-%{release} | bzip2 -9c \
31df50
  | uuencode testlogs-%{_target_platform}.tar.bz2 || :
31df50
rm -rf testlogs-%{_target_platform}-%{version}-%{release}
31df50
31df50
31df50
%if 0%{?scl:1}
31df50
%post gfortran
31df50
if [ -f %{_infodir}/gfortran.info.gz ]; then
31df50
  /sbin/install-info \
31df50
    --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
31df50
fi
31df50
31df50
%preun gfortran
31df50
if [ $1 = 0 -a -f %{_infodir}/gfortran.info.gz ]; then
31df50
  /sbin/install-info --delete \
31df50
    --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
31df50
fi
31df50
%endif
31df50
31df50
%post gdb-plugin -p /sbin/ldconfig
31df50
31df50
%postun gdb-plugin -p /sbin/ldconfig
31df50
31df50
%post -n %{?scl_prefix}libgccjit -p /sbin/ldconfig
31df50
31df50
%postun -n %{?scl_prefix}libgccjit -p /sbin/ldconfig
31df50
31df50
%post -n %{?scl_prefix}libgccjit-docs
31df50
if [ -f %{_infodir}/libgccjit.info.gz ]; then
31df50
  /sbin/install-info \
31df50
    --info-dir=%{_infodir} %{_infodir}/libgccjit.info.gz || :
31df50
fi
31df50
31df50
%preun -n %{?scl_prefix}libgccjit-docs
31df50
if [ $1 = 0 -a -f %{_infodir}/libgccjit.info.gz ]; then
31df50
  /sbin/install-info --delete \
31df50
    --info-dir=%{_infodir} %{_infodir}/libgccjit.info.gz || :
31df50
fi
31df50
31df50
%post -n libquadmath
31df50
/sbin/ldconfig
31df50
if [ -f %{_infodir}/libquadmath.info.gz ]; then
31df50
  /sbin/install-info \
31df50
    --info-dir=%{_infodir} %{_infodir}/libquadmath.info.gz || :
31df50
fi
31df50
31df50
%preun -n libquadmath
31df50
if [ $1 = 0 -a -f %{_infodir}/libquadmath.info.gz ]; then
31df50
  /sbin/install-info --delete \
31df50
    --info-dir=%{_infodir} %{_infodir}/libquadmath.info.gz || :
31df50
fi
31df50
31df50
%postun -n libquadmath -p /sbin/ldconfig
31df50
31df50
%post -n libitm
31df50
/sbin/ldconfig
31df50
if [ -f %{_infodir}/libitm.info.gz ]; then
31df50
  /sbin/install-info \
31df50
    --info-dir=%{_infodir} %{_infodir}/libitm.info.gz || :
31df50
fi
31df50
31df50
%preun -n libitm
31df50
if [ $1 = 0 -a -f %{_infodir}/libitm.info.gz ]; then
31df50
  /sbin/install-info --delete \
31df50
    --info-dir=%{_infodir} %{_infodir}/libitm.info.gz || :
31df50
fi
31df50
31df50
%postun -n libitm -p /sbin/ldconfig
31df50
31df50
%post -n libatomic -p /sbin/ldconfig
31df50
31df50
%postun -n libatomic -p /sbin/ldconfig
31df50
31df50
%post -n libasan8 -p /sbin/ldconfig
31df50
31df50
%postun -n libasan8 -p /sbin/ldconfig
31df50
31df50
%post -n libtsan2 -p /sbin/ldconfig
31df50
31df50
%postun -n libtsan2 -p /sbin/ldconfig
31df50
31df50
%post -n libubsan1 -p /sbin/ldconfig
31df50
31df50
%postun -n libubsan1 -p /sbin/ldconfig
31df50
31df50
%post -n liblsan -p /sbin/ldconfig
31df50
31df50
%postun -n liblsan -p /sbin/ldconfig
31df50
31df50
%files
31df50
%{_prefix}/bin/gcc%{!?scl:12}
31df50
%{_prefix}/bin/gcov%{!?scl:12}
31df50
%{_prefix}/bin/gcov-tool%{!?scl:12}
31df50
%{_prefix}/bin/gcov-dump%{!?scl:12}
31df50
%{_prefix}/bin/gcc-ar%{!?scl:12}
31df50
%{_prefix}/bin/gcc-nm%{!?scl:12}
31df50
%{_prefix}/bin/gcc-ranlib%{!?scl:12}
31df50
%{_prefix}/bin/lto-dump%{!?scl:12}
31df50
%ifarch ppc
31df50
%{_prefix}/bin/%{_target_platform}-gcc%{!?scl:12}
31df50
%endif
31df50
%ifarch sparc64 sparcv9
31df50
%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}%{?_gnu}-gcc%{!?scl:12}
31df50
%endif
31df50
%ifarch ppc64 ppc64p7
31df50
%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}%{?_gnu}-gcc%{!?scl:12}
31df50
%endif
31df50
%{_prefix}/bin/%{gcc_target_platform}-gcc%{!?scl:12}
31df50
%{_prefix}/bin/%{gcc_target_platform}-gcc-%{gcc_major}
31df50
%ifnarch sparc64 ppc64
31df50
%ifarch %{multilib_64_archs}
31df50
%{_prefix}/bin/%{multilib_32_arch}-%{_vendor}-%{_target_os}%{?_gnu}-gcc-%{gcc_major}
31df50
%endif
31df50
%endif
31df50
%if 0%{?scl:1}
31df50
%{_prefix}/bin/cc
31df50
%{_prefix}/bin/cpp
31df50
%{_mandir}/man1/gcc.1*
31df50
%{_mandir}/man1/cpp.1*
31df50
%{_mandir}/man1/gcov.1*
31df50
%{_mandir}/man1/gcov-tool.1*
31df50
%{_mandir}/man1/gcov-dump.1*
31df50
%{_mandir}/man1/lto-dump.1*
31df50
%{_infodir}/gcc*
31df50
%{_infodir}/cpp*
31df50
%endif
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%dir %{_prefix}/libexec/gcc
31df50
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/lto1
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/lto-wrapper
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/liblto_plugin.so*
31df50
%{_libdir}/bfd-plugins/liblto_plugin.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/rpmver
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stddef.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdarg.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdfix.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/varargs.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/float.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/limits.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdbool.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/iso646.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/syslimits.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/unwind.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/omp.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/openacc.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/acc_prof.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdint.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdint-gcc.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdalign.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdnoreturn.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/stdatomic.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/gcov.h
31df50
%ifarch %{ix86} x86_64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xmmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/emmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/pmmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/tmmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ammintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/smmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/nmmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/bmmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/wmmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/immintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avxintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/x86intrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/fma4intrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xopintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/lwpintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/popcntintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/bmiintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/tbmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia32intrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx2intrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/bmi2intrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/f16cintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/fmaintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/lzcntintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/rtmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xtestintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/adxintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/prfchwintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/rdseedintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/fxsrintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsaveintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsaveoptintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512cdintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512erintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512fintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512pfintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/shaintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mm_malloc.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mm3dnow.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cpuid.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cross-stdarg.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512bwintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512dqintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512ifmaintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512ifmavlintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vbmiintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vbmivlintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vlbwintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vldqintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vlintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/clflushoptintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/clwbintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mwaitxintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsavecintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xsavesintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/clzerointrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/pkuintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx5124fmapsintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx5124vnniwintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vpopcntdqintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sgxintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/gfniintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cetintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cet.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vbmi2intrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vbmi2vlintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vnniintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vnnivlintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vaesintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vpclmulqdqintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vpopcntdqvlintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512bitalgintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/pconfigintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/wbnoinvdintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/movdirintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/waitpkgintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/cldemoteintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512bf16vlintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512bf16intrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/enqcmdintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vp2intersectintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512vp2intersectvlintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/serializeintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/tsxldtrkintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxtileintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxint8intrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amxbf16intrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/x86gprintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/uintrintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/hresetintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/keylockerintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avxvnniintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mwaitintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512fp16intrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/avx512fp16vlintrin.h
31df50
%endif
31df50
%ifarch ia64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ia64intrin.h
31df50
%endif
31df50
%ifarch ppc ppc64 ppc64le ppc64p7
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ppc-asm.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/altivec.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ppu_intrinsics.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/si2vmx.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/spu2vmx.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vec_types.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmxlintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/bmi2intrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/bmiintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/xmmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mm_malloc.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/emmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/x86intrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/pmmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/tmmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/smmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/amo.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/nmmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/immintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/x86gprintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/rs6000-vecdefines.h
31df50
%endif
31df50
%ifarch %{arm}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/unwind-arm-common.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/mmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_neon.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_acle.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_cmse.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_fp16.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_bf16.h
31df50
%endif
31df50
%ifarch aarch64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_neon.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_acle.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_fp16.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_bf16.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/arm_sve.h
31df50
%endif
31df50
%ifarch sparc sparcv9 sparc64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/visintrin.h
31df50
%endif
31df50
%ifarch s390 s390x
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/s390intrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/htmxlintrin.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/vecintrin.h
31df50
%endif
31df50
%if %{build_libasan}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/sanitizer
31df50
%endif
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cc1
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/collect2
31df50
%if 0%{?scl:1}
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ar
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/as
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ld
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ld.bfd
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ld.gold
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/nm
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/objcopy
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/ranlib
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/strip
31df50
%endif
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/crt*.o
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcov.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc_eh.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgcc_s.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.spec
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp.so
31df50
%if 0%{?rhel} <= 7
31df50
%ifnarch ppc
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgomp_nonshared.a
31df50
%endif
31df50
%endif
31df50
%if %{build_libitm}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.spec
31df50
%endif
31df50
%if %{build_libasan}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libsanitizer.spec
31df50
%endif
31df50
%ifarch sparcv9 sparc64 ppc ppc64
31df50
%if %{build_libquadmath}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.so
31df50
%endif
31df50
%endif
31df50
%if %{build_isl}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libisl.so.*
31df50
%endif
31df50
%ifarch sparcv9 ppc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/crt*.o
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcov.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc_eh.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgcc_s.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgomp.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgomp.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgccjit.so
31df50
%if %{build_libquadmath}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libquadmath.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libquadmath.so
31df50
%endif
31df50
%if %{build_libitm}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libitm.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libitm.so
31df50
%endif
31df50
%if %{build_libatomic}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libatomic.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libatomic.so
31df50
%endif
31df50
%if %{build_libasan}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libasan.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libasan.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libasan_preinit.o
31df50
%endif
31df50
%if %{build_libubsan}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libubsan.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libubsan.so
31df50
%endif
31df50
%endif
31df50
%ifarch %{multilib_64_archs}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/crt*.o
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcov.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc_eh.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgcc_s.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgomp.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgomp.so
31df50
31df50
# Add libgomp_nonshared.a
31df50
%if 0%{?rhel} <= 7
31df50
%ifarch x86_64
31df50
# Need it for -m32.
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgomp_nonshared.a
31df50
%endif
31df50
%ifarch ppc64
31df50
# We've created a symlink to lib64/libgomp_nonshared.a, so add it.
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libgomp_nonshared.a
31df50
%endif
31df50
%endif
31df50
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgccjit.so
31df50
%if %{build_libquadmath}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libquadmath.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libquadmath.so
31df50
%endif
31df50
%if %{build_libitm}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libitm.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libitm.so
31df50
%endif
31df50
%if %{build_libatomic}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libatomic.so
31df50
%endif
31df50
%if %{build_libasan}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libasan_preinit.o
31df50
%endif
31df50
%if %{build_libubsan}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libubsan.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libubsan.so
31df50
%endif
31df50
%endif
31df50
%ifarch sparcv9 sparc64 ppc ppc64 ppc64p7
31df50
%if %{build_libquadmath}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.so
31df50
%endif
31df50
%if %{build_libitm}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.so
31df50
%endif
31df50
%if %{build_libatomic}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.so
31df50
%endif
31df50
%if %{build_libasan}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan_preinit.o
31df50
%endif
31df50
%if %{build_libubsan}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.so
31df50
%endif
31df50
%if %{build_libtsan}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.so
31df50
%endif
31df50
%if %{build_liblsan}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.so
31df50
%endif
31df50
%endif
31df50
%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING* COPYING.RUNTIME
31df50
d6dcb6
%if %{build_annobin_plugin}
d6dcb6
%files -n %{?scl_prefix}gcc-plugin-annobin
d6dcb6
%dir %{_prefix}/lib/gcc
d6dcb6
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
d6dcb6
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
d6dcb6
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin
d6dcb6
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/gts-gcc-annobin.so
d6dcb6
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/gts-gcc-annobin.so.0
d6dcb6
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/gts-gcc-annobin.so.0.0.0
d6dcb6
%endif
d6dcb6
31df50
%files c++
31df50
%{_prefix}/bin/%{gcc_target_platform}-g++%{!?scl:12}
31df50
%{_prefix}/bin/g++%{!?scl:12}
31df50
%if 0%{?scl:1}
31df50
%{_prefix}/bin/%{gcc_target_platform}-c++
31df50
%{_prefix}/bin/c++
31df50
%{_mandir}/man1/g++.1*
31df50
%endif
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%dir %{_prefix}/libexec/gcc
31df50
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cc1plus
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/g++-mapper-server
31df50
%ifarch sparcv9 ppc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++fs.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libstdc++_nonshared.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libsupc++.a
31df50
%endif
31df50
%ifarch %{multilib_64_archs}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++fs.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libstdc++_nonshared.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libsupc++.a
31df50
%endif
31df50
%ifarch sparcv9 ppc %{multilib_64_archs}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libsupc++.a
31df50
%endif
31df50
%ifarch sparcv9 sparc64 ppc ppc64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++fs.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++_nonshared.a
31df50
%endif
31df50
%doc rpm.doc/changelogs/gcc/cp/ChangeLog*
31df50
31df50
%files -n %{?scl_prefix}libstdc++%{!?scl:12}-devel
31df50
%defattr(-,root,root,-)
31df50
%dir %{_prefix}/include/c++
31df50
%{_prefix}/include/c++/%{gcc_major}
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%ifarch sparcv9 ppc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++fs.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libstdc++_nonshared.a
31df50
%endif
31df50
%ifarch sparc64 ppc64
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++fs.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libstdc++_nonshared.a
31df50
%endif
31df50
%ifnarch sparcv9 sparc64 ppc ppc64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++fs.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++_nonshared.a
31df50
%endif
31df50
%ifnarch sparcv9 ppc %{multilib_64_archs}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libstdc++.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libsupc++.a
31df50
%endif
31df50
%doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README*
31df50
31df50
31df50
%if %{build_libstdcxx_docs}
31df50
%files -n %{?scl_prefix}libstdc++%{!?scl:12}-docs
31df50
%{_mandir}/man3/*
31df50
%doc rpm.doc/libstdc++-v3/html
31df50
%endif
31df50
31df50
%files gfortran
31df50
%{_prefix}/bin/gfortran%{!?scl:12}
31df50
%if 0%{?scl:1}
31df50
%{_mandir}/man1/gfortran.1*
31df50
%{_infodir}/gfortran*
31df50
%endif
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%dir %{_prefix}/libexec/gcc
31df50
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/ISO_Fortran_binding.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib.f90
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib.mod
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/omp_lib_kinds.mod
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/openacc.f90
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/openacc.mod
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/openacc_kinds.mod
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/openacc_lib.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/ieee_arithmetic.mod
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/ieee_exceptions.mod
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/finclude/ieee_features.mod
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/f951
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgfortran.spec
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libcaf_single.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgfortran.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgfortran.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgfortran_nonshared.a
31df50
%ifarch sparcv9 ppc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libcaf_single.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgfortran.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/libgfortran.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/64/finclude
31df50
%endif
31df50
%ifarch %{multilib_64_archs}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libcaf_single.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgfortran.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgfortran.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/libgfortran_nonshared.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/32/finclude
31df50
%endif
31df50
%ifarch ppc64
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libgfortran_nonshared.a
31df50
%endif
31df50
%doc rpm.doc/gfortran/*
31df50
31df50
%if %{build_libquadmath}
31df50
%files -n %{?scl_prefix}libquadmath-devel
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/quadmath.h
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/quadmath_weak.h
31df50
%ifarch sparcv9 ppc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libquadmath.a
31df50
%endif
31df50
%ifarch sparc64 ppc64 ppc64p7
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libquadmath.a
31df50
%endif
31df50
%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libquadmath.so
31df50
%endif
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%ifarch %{ix86}
31df50
# Need it for -m32.
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgfortran_nonshared.a
31df50
%endif
31df50
%doc rpm.doc/libquadmath/ChangeLog*
31df50
%endif
31df50
31df50
%if %{build_libitm}
31df50
%files -n %{?scl_prefix}libitm-devel
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%ifarch sparcv9 ppc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libitm.a
31df50
%endif
31df50
%ifarch sparc64 ppc64 ppc64p7
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libitm.a
31df50
%endif
31df50
%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libitm.a
31df50
%endif
31df50
%doc rpm.doc/libitm/ChangeLog*
31df50
%endif
31df50
31df50
%if %{build_libatomic}
31df50
%files -n %{?scl_prefix}libatomic-devel
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%ifarch sparcv9 ppc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libatomic.a
31df50
%endif
31df50
%ifarch sparc64 ppc64 ppc64p7
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libatomic.a
31df50
%endif
31df50
%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libatomic.a
31df50
%endif
31df50
%doc rpm.doc/changelogs/libatomic/ChangeLog*
31df50
%endif
31df50
31df50
%if %{build_libasan}
31df50
%files -n libasan8
31df50
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libasan.so.8*
31df50
31df50
%files -n %{?scl_prefix}libasan-devel
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%ifarch sparcv9 ppc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libasan.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib32/libasan_preinit.o
31df50
%endif
31df50
%ifarch sparc64 ppc64 ppc64p7
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libasan.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/lib64/libasan_preinit.o
31df50
%endif
31df50
%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan.a
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libasan_preinit.o
31df50
%endif
31df50
%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
31df50
%endif
31df50
31df50
%if %{build_libtsan}
31df50
%files -n libtsan2
31df50
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libtsan.so.2*
31df50
31df50
%files -n %{?scl_prefix}libtsan-devel
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan_preinit.o
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libtsan.a
31df50
%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
31df50
%endif
31df50
31df50
%if %{build_libubsan}
31df50
# GTS 12 libubsan1 would clash with the system RHEL 8 libubsan.
31df50
%if 0%{?rhel} < 8
31df50
%files -n libubsan1
31df50
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/libubsan.so.1*
31df50
%endif
31df50
31df50
%files -n %{?scl_prefix}libubsan-devel
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libubsan.a
31df50
%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
31df50
%endif
31df50
31df50
%if %{build_liblsan}
31df50
# Use the system liblsan.
31df50
%if 0%{?rhel} < 8
31df50
%files -n liblsan
31df50
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/liblsan.so.0*
31df50
%else
31df50
%ifarch s390x
31df50
# Except that on s390x we don't have the system liblsan, because we
31df50
# only enabled LSan in GCC 12.  ??? Ugly duplication.
31df50
%files -n liblsan
31df50
%{?scl:%{_root_prefix}}%{!?scl:%{_prefix}}/%{_lib}/liblsan.so.0*
31df50
%endif
31df50
%endif
31df50
31df50
%files -n %{?scl_prefix}liblsan-devel
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan_preinit.o
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/liblsan.a
31df50
%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
31df50
%endif
31df50
31df50
%files -n %{?scl_prefix}libgccjit
31df50
%{_prefix}/%{_lib}/libgccjit.so*
31df50
%doc rpm.doc/changelogs/gcc/jit/ChangeLog*
31df50
31df50
%files -n %{?scl_prefix}libgccjit-devel
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/libgccjit.so
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/include/libgccjit*.h
31df50
31df50
%files -n %{?scl_prefix}libgccjit-docs
31df50
%{_infodir}/libgccjit.info*
31df50
%doc rpm.doc/libgccjit-devel/*
31df50
%doc gcc/jit/docs/examples
31df50
31df50
%files plugin-devel
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/gtype.state
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/include
31df50
%dir %{_prefix}/libexec/gcc
31df50
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/plugin
31df50
31df50
%if 0
31df50
%files gdb-plugin
31df50
%{_prefix}/%{_lib}/libcc1.so*
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/libcc1plugin.so*
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/plugin/libcp1plugin.so*
31df50
%doc rpm.doc/changelogs/libcc1/ChangeLog*
31df50
%endif
31df50
31df50
%if %{build_offload_nvptx}
31df50
%files -n %{?scl_prefix}offload-nvptx
31df50
%{_prefix}/bin/nvptx-none-*
31df50
%{_prefix}/bin/%{gcc_target_platform}-accel-nvptx-none-gcc
31df50
%{_prefix}/bin/%{gcc_target_platform}-accel-nvptx-none-lto-dump
31df50
%dir %{_prefix}/lib/gcc
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel
31df50
%dir %{_prefix}/libexec/gcc
31df50
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
31df50
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
31df50
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel
31df50
%{_prefix}/lib/gcc/nvptx-none
31df50
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none
31df50
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/accel/nvptx-none
31df50
%dir %{_prefix}/nvptx-none
31df50
%{_prefix}/nvptx-none/bin
31df50
%{_prefix}/nvptx-none/include
31df50
%endif
31df50
31df50
%changelog
d6dcb6
* Fri Feb 10 2023 Marek Polacek <polacek@redhat.com> 12.2.1-7.4
d6dcb6
- avoid fma_chain for -march=alderlake and sapphirerapids (#2168919)
d6dcb6
d6dcb6
* Wed Jan 25 2023 Marek Polacek <polacek@redhat.com> 12.2.1-7.3
d6dcb6
- provide libexec/ symlinks on all RHELs (#2164262)
d6dcb6
d6dcb6
* Wed Jan 11 2023 Marek Polacek <polacek@redhat.com> 12.2.1-7.2
d6dcb6
- build libisl.so with -g (#2154936)
d6dcb6
d6dcb6
* Tue Dec 20 2022 Marek Polacek <polacek@redhat.com> 12.2.1-6.1
d6dcb6
- apply an ISL patch (#2154936)
d6dcb6
d6dcb6
* Wed Dec 14 2022 Nick Clifton <nickc@redhat.com> 12.2.1-6
d6dcb6
- Fixed run-time requirement for annobin plugin.  (#2151927)
d6dcb6
d6dcb6
* Tue Dec 13 2022 Nick Clifton <nickc@redhat.com> 12.2.1-5
d6dcb6
- Build the annobin plugin.  Call it gts-gcc-annobin.so.  (#2151927)
d6dcb6
d6dcb6
* Wed Nov 30 2022 Marek Polacek <polacek@redhat.com> 12.2.1-4
d6dcb6
- update from releases/gcc-12 branch (#2110583)
d6dcb6
- fix up std::from_chars behavior in rounding modes other than FE_TONEAREST
d6dcb6
  (PR libstdc++/107468)
d6dcb6
d6dcb6
* Wed Nov 30 2022 Marek Polacek <polacek@redhat.com> 12.1.1-3.4
d6dcb6
- fix pr86731-fwrapv-longlong.c (#2134379)
d6dcb6
d6dcb6
* Wed Nov 30 2022 Marek Polacek <polacek@redhat.com> 12.1.1-3.3
d6dcb6
- add -static-libquadmath (#2131082)
d6dcb6
31df50
* Fri Jul  8 2022 Marek Polacek <polacek@redhat.com> 12.1.1-3.2
31df50
- recognize PLUS and XOR forms of rldimi (PR target/105991, #2095789)
31df50
31df50
* Fri Jul  8 2022 Marek Polacek <polacek@redhat.com> 12.1.1-3.1
31df50
- always ship liblsan on s390x (#2104824)
31df50
31df50
* Wed Jul  6 2022 Marek Polacek <polacek@redhat.com> 12.1.1-3
31df50
- update from releases/gcc-12 branch
31df50
  - PRs c++/49387, c++/102307, c++/102651, c++/104470, c++/105491, c++/105589,
31df50
	c++/105623, c++/105652, c++/105655, c++/105725, c++/105734,
31df50
	c++/105756, c++/105761, c++/105779, c++/105795, c++/105852,
31df50
	c++/105871, c++/105885, c++/105908, c++/105925, c++/105931,
31df50
	c++/105964, c++/106001, c/105635, d/105544, fortran/105230,
31df50
	gcov-profile/105535, ipa/100413, ipa/105600, ipa/105639, ipa/105739,
31df50
	libgomp/105745, libgomp/106045, libstdc++/104731, libstdc++/105284,
31df50
	libstdc++/105671, libstdc++/105681, middle-end/105537,
31df50
	middle-end/105604, middle-end/105711, middle-end/105951,
31df50
	middle-end/105998, middle-end/106030, other/105527,
31df50
	preprocessor/105732, rtl-optimization/105455, rtl-optimization/105559,
31df50
	rtl-optimization/105577, sanitizer/105714, sanitizer/105729,
31df50
	target/101891, target/104871, target/105162, target/105209,
31df50
	target/105292, target/105472, target/105556, target/105599,
31df50
	target/105854, target/105879, target/105953, target/105960,
31df50
	target/105970, target/105981, target/106096, tree-optimization/103116,
31df50
	tree-optimization/105431, tree-optimization/105458,
31df50
	tree-optimization/105528, tree-optimization/105562,
31df50
	tree-optimization/105618, tree-optimization/105726,
31df50
	tree-optimization/105736, tree-optimization/105786,
31df50
	tree-optimization/105940
31df50
- enable tsan and lsan on s390x (#2101610)
31df50
- fix up libtsan on s390x
31df50
- fix nvptx build (PRs bootstrap/105551, target/105938)
31df50
31df50
* Tue Jun 28 2022 Marek Polacek <polacek@redhat.com> 12.1.1-1.6
31df50
- ship lto-dump (#2101835)
31df50
31df50
* Fri Jun 24 2022 Marek Polacek <polacek@redhat.com> 12.1.1-1.5
31df50
- use gcc-toolset-12-binutils
31df50
31df50
* Wed Jun 22 2022 Marek Polacek <polacek@redhat.com> 12.1.1-1.4
31df50
- don't provide g++/fortran (CS-1145)
31df50
31df50
* Fri Jun 17 2022 Marek Polacek <polacek@redhat.com> 12.1.1-1.3
31df50
- require system binutils
31df50
31df50
* Wed Jun  1 2022 Marek Polacek <polacek@redhat.com> 12.1.1-1.2
31df50
- don't skip testing on s390x
31df50
31df50
* Tue May 31 2022 Marek Polacek <polacek@redhat.com> 12.1.1-1.1
31df50
- use GTS 12 binutils
31df50
- add missing headers (#2091572)
31df50
31df50
* Mon May 16 2022 Marek Polacek <polacek@redhat.com> 12.1.1-1
31df50
- update to GCC 12 (#2077276)
31df50
31df50
* Wed Feb  2 2022 Marek Polacek <polacek@redhat.com> 11.2.1-9.1
31df50
- avoid overly-greedy match in dejagnu regexp (#2049712)
31df50
31df50
* Fri Jan 28 2022 Marek Polacek <polacek@redhat.com> 11.2.1-9
31df50
- update from releases/gcc-11-branch (#2047286)
31df50
  - PRs fortran/104127, fortran/104212, fortran/104227, target/101529
31df50
- fix up va-opt-6.c testcase
31df50
31df50
* Fri Jan 28 2022 Marek Polacek <polacek@redhat.com> 11.2.1-8
31df50
- update from releases/gcc-11-branch (#2047286)
31df50
  - PRs ada/103538, analyzer/101962, bootstrap/103688, c++/85846, c++/95009,
31df50
	c++/98394, c++/99911, c++/100493, c++/101715, c++/102229, c++/102933,
31df50
	c++/103012, c++/103198, c++/103480, c++/103703, c++/103714,
31df50
	c++/103758, c++/103783, c++/103831, c++/103912, c++/104055, c/97548,
31df50
	c/101289, c/101537, c/103587, c/103881, d/103604, debug/103838,
31df50
	debug/103874, fortran/67804, fortran/83079, fortran/101329,
31df50
	fortran/101762, fortran/102332, fortran/102717, fortran/102787,
31df50
	fortran/103411, fortran/103412, fortran/103418, fortran/103473,
31df50
	fortran/103505, fortran/103588, fortran/103591, fortran/103606,
31df50
	fortran/103607, fortran/103609, fortran/103610, fortran/103692,
31df50
	fortran/103717, fortran/103718, fortran/103719, fortran/103776,
31df50
	fortran/103777, fortran/103778, fortran/103782, fortran/103789,
31df50
	ipa/101354, jit/103562, libfortran/103634, libstdc++/100017,
31df50
	libstdc++/102994, libstdc++/103453, libstdc++/103501,
31df50
	libstdc++/103549, libstdc++/103877, libstdc++/103919,
31df50
	middle-end/101751, middle-end/102860, middle-end/103813, objc/103639,
31df50
	preprocessor/89971, preprocessor/102432, rtl-optimization/102478,
31df50
	rtl-optimization/103837, rtl-optimization/103860,
31df50
	rtl-optimization/103908, sanitizer/102911, target/102347,
31df50
	target/103465, target/103661, target/104172, target/104188,
31df50
	tree-optimization/101615, tree-optimization/103523,
31df50
	tree-optimization/103603, tree-optimization/103995
31df50
31df50
* Wed Jan  5 2022 Marek Polacek <polacek@redhat.com> 11.2.1-7.2
31df50
- fix dg-ice tests (#2037072)
31df50
31df50
* Fri Dec 10 2021 Marek Polacek <polacek@redhat.com> 11.2.1-7.1
31df50
- update Intel Tremont tuning patches (#2014276)
31df50
- backport Intel Alderlake tuning (#2023553)
31df50
31df50
* Tue Dec  7 2021 Marek Polacek <polacek@redhat.com> 11.2.1-7
31df50
- update from releases/gcc-11-branch (#1996862)
31df50
  - PRs ada/100486, c++/70796, c++/92746, c++/93286, c++/94490, c++/102642,
31df50
	c++/102786, debug/101378, debug/103046, debug/103315, fortran/87711,
31df50
	fortran/87851, fortran/97896, fortran/99061, fortran/99348,
31df50
	fortran/102521, fortran/102685, fortran/102715, fortran/102745,
31df50
	fortran/102816, fortran/102817, fortran/102917, fortran/103137,
31df50
	fortran/103138, fortran/103392, gcov-profile/100520, ipa/102714,
31df50
	ipa/102762, ipa/103052, ipa/103246, ipa/103267, libstdc++/96416,
31df50
	libstdc++/98421, libstdc++/100117, libstdc++/100153, libstdc++/100748,
31df50
	libstdc++/101571, libstdc++/101608, libstdc++/102894,
31df50
	libstdc++/103022, libstdc++/103086, libstdc++/103133,
31df50
	libstdc++/103240, libstdc++/103381, middle-end/64888,
31df50
	middle-end/101480, middle-end/102431, middle-end/102518,
31df50
	middle-end/103059, middle-end/103181, middle-end/103248,
31df50
	middle-end/103384, preprocessor/103130, rtl-optimization/102356,
31df50
	rtl-optimization/102842, target/101985, target/102976, target/102991,
31df50
	target/103205, target/103274, target/103275, testsuite/102690,
31df50
	tree-optimization/100393, tree-optimization/102139,
31df50
	tree-optimization/102505, tree-optimization/102572,
31df50
	tree-optimization/102788, tree-optimization/102789,
31df50
	tree-optimization/102798, tree-optimization/102970,
31df50
	tree-optimization/103192, tree-optimization/103204,
31df50
	tree-optimization/103237, tree-optimization/103255,
31df50
	tree-optimization/103435
31df50
- fix up #__VA_OPT__ handling (PR preprocessor/103415)
31df50
31df50
* Wed Nov 17 2021 Marek Polacek <polacek@redhat.com> 11.2.1-6.3
31df50
- backport Intel Tremont tuning (#2014276)
31df50
31df50
* Wed Nov 17 2021 Marek Polacek <polacek@redhat.com> 11.2.1-6.2
31df50
- drop -Wbidirectional patch, use newer -Wbidi-chars (#2017820)
31df50
31df50
* Fri Oct 29 2021 Marek Polacek <polacek@redhat.com> 11.2.1-6.1
31df50
- add -Wbidirectional patch (#2017820)
31df50
31df50
* Tue Oct 26 2021 Marek Polacek <polacek@redhat.com> 11.2.1-6
31df50
- update from releases/gcc-11-branch (#1996862)
31df50
  - PRs target/100208, target/100316, target/102761
31df50
- build target shared libraries with -Wl,-z,relro,-z,now
31df50
- add mwaitintrin.h on x86 (#2013860)
31df50
- improve generated code with extern thread_local constinit vars
31df50
  with trivial dtors
31df50
- add support for C++20 #__VA_OPT__
31df50
- apply DTS-specific testsuite patches (#1996085)
31df50
31df50
* Tue Aug 17 2021 Marek Polacek <polacek@redhat.com> 11.2.1-1.1
31df50
- add .hidden for _ZNSt10filesystem9_Dir_base7advanceEbRSt10error_code
31df50
31df50
* Wed Jul 28 2021 Marek Polacek <polacek@redhat.com> 11.2.1-1
31df50
- update from releases/gcc-11-branch (#1986838)
31df50
  - GCC 11.2 release
31df50
  - PRs middle-end/101586, rtl-optimization/101562
31df50
31df50
* Thu Jul  1 2021 Marek Polacek <polacek@redhat.com> 11.1.1-6.1
31df50
- require gcc-toolset-11-binutils at runtime (#1978081)
31df50
31df50
* Wed Jun 23 2021 Marek Polacek <polacek@redhat.com> 11.1.1-6
31df50
- update from Fedora gcc 11.1.1-6 (#1946782)
31df50
  - PRs c++/100876, c++/100879, c++/101106, c/100619, c/100783, fortran/95501,
31df50
   fortran/95502, fortran/100283, fortran/101123, inline-asm/100785,
31df50
   libstdc++/91488, libstdc++/95833, libstdc++/100806, libstdc++/100940,
31df50
   middle-end/100250, middle-end/100307, middle-end/100574,
31df50
   middle-end/100684, middle-end/100732, middle-end/100876,
31df50
   middle-end/101062, middle-end/101167, target/99842, target/99939,
31df50
   target/100310, target/100777, target/100856, target/100871,
31df50
   target/101016
31df50
31df50
* Mon Jun 21 2021 Marek Polacek <polacek@redhat.com> 11.1.1-5
31df50
- update from Fedora gcc 11.1.1-5 (#1946782)
31df50
- default to -gdwarf-4 (#1974402)
31df50
31df50
* Wed Jun  2 2021 Marek Polacek <polacek@redhat.com> 11.1.1-3
31df50
- update from Fedora gcc 11.1.1-3 (#1946782)
31df50
31df50
* Tue May 25 2021 Marek Polacek <polacek@redhat.com> 11.1.1-2.1
31df50
- use gcc-toolset-11-binutils
31df50
31df50
* Tue May 25 2021 Marek Polacek <polacek@redhat.com> 11.1.1-2
31df50
- update from Fedora gcc 11.1.1-2
31df50
- fix up mausezahn miscompilation (PR tree-optimization/100566)
31df50
- fix build with removed linux/cyclades.h header (PR sanitizer/100379)
31df50
- add a few Provides: bundled (#1859893)
31df50
31df50
* Tue May 11 2021 Marek Polacek <polacek@redhat.com> 11.1.1-1
31df50
- update to GCC 11 (#1946782)
31df50
31df50
* Mon Apr 26 2021 Marek Polacek <polacek@redhat.com> 10.3.1-1
31df50
- update from Fedora gcc 10.3.1-1 (#1929382)
31df50
- drop gcc10-pr97060.patch
31df50
- use --enable-cet
31df50
- ship gcc-accel-nvptx-none-lto-dump
31df50
- backport PR96939 fixes
31df50
31df50
* Tue Mar 16 2021 Marek Polacek <polacek@redhat.com> 10.2.1-8.2
31df50
- actually use libgfortran_nonshared.a (#1929375)
31df50
- have libasan-devel require libasan6 (#1939638)
31df50
31df50
* Mon Nov 16 2020 Marek Polacek <polacek@redhat.com> 10.2.1-8.1
31df50
- apply fix for -flto=auto with missing make (#1896093, PR lto/97524)
31df50
31df50
* Thu Nov 12 2020 Marek Polacek <polacek@redhat.com> 10.2.1-8
31df50
- update from Fedora gcc 10.2.1-8 (#1878887)
31df50
- emit DW_AT_declaration on declaration-only DIEs (#1897272, PR debug/97060)
31df50
- add BuildRequires: make and Requires: make, the latter for -flto reasons
31df50
31df50
* Tue Nov 03 2020 Marek Polacek <polacek@redhat.com> 10.2.1-7.1
31df50
- adjust some libstdc++_nonshared.a symbol
31df50
31df50
* Tue Nov 03 2020 Marek Polacek <polacek@redhat.com> 10.2.1-7
31df50
- update from Fedora gcc 10.2.1-7 (#1878887)
31df50
31df50
* Mon Aug 17 2020 Marek Polacek <polacek@redhat.com> 10.2.1-2.1
31df50
- re-apply Fortran patches
31df50
31df50
* Tue Aug  4 2020 Marek Polacek <polacek@redhat.com> 10.2.1-2
31df50
- update from Fedora gcc 10.2.1-2
31df50
- emit debug info for C/C++ external function declarations used in the TU
31df50
  (PR debug/96383)
31df50
- discard SHN_UNDEF global symbols from LTO debuginfo (PR lto/96385)
31df50
- strip also -flto=auto from optflags
31df50
31df50
* Sun Aug  2 2020 Marek Polacek <polacek@redhat.com> 10.2.1-1.2
31df50
- avoid stack overflow in std::vector (PR libstdc++/94540, #1859670)
31df50
- adjust some libstdc++_nonshared.a symbols
31df50
- apply gcc10-libgfortran-compat-2.patch
31df50
31df50
* Fri Jul 31 2020 Marek Polacek <polacek@redhat.com> 10.2.1-1.1
31df50
- hide various symbols in libstdc++_nonshared.a
31df50
31df50
* Mon Jul 27 2020 Marek Polacek <polacek@redhat.com> 10.2.1-1
31df50
- GCC 10.2 release
31df50
- add symlink to liblto_plugin.so in /usr/lib/bfd-plugins
31df50
- disable -flto in %%{optflags}, lto bootstrap will be enabled the GCC way
31df50
  later
31df50
- require MPFR Library version 3.1.0 (or later)
31df50
31df50
* Mon Jun 15 2020 Marek Polacek <polacek@redhat.com> 10.1.1-1.1
31df50
- correct instructions for creation of newlib tarball, filter out sun-rpc
31df50
  licensed code that is never used during the package build
31df50
31df50
* Wed May 20 2020 Marek Polacek <polacek@redhat.com> 10.1.1-1
31df50
- update to GCC 10.1.0 release
31df50
31df50
* Wed May 20 2020 Marek Polacek <polacek@redhat.com> 9.2.1-2.2
31df50
- new package