Blame SPECS/gcc.spec

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