Accepting request 969598 from devel:tools:compiler

- Split up Clang libraries: libclang.so is no longer so-versioned
  alongside LLVM but will stay at libclang.so.13 for now. So we
  put it into a separate package from libclang-cpp.so. Since we
  can't have multiple LLVM versions generate the same package, we
  prefix it for the non-default LLVM with a mechanism inspired by
  the GCC packaging.
- Patch exported clang/ClangTargets-relwithdebinfo.cmake to refer
  to libclang only by soname, because the installed library might
  be newer than the one originally build with the package.
- Use the same mechanism to for libc++ and package Clang scripts
  only for the default version. This means we'll no longer have to
  touch the package when a new major version comes out.
- Make sure we properly clean up the clang scripts if we're not
  packaging them.
- Let python3-clang use libclang.so.XX, which means we can always
  build it and makes it depend on libclang instead of clang-devel.
- Fix some rpmlint issues: we don't need explicit library
  dependencies that are detected automatically, and we add proper
  library dependencies to the *-devel packages.
- Merge llvm-LTO-devel into llvm-devel. That's where the header
  files already are, and they are hard to separate.
- Let llvm-polly-devel depend on llvm-devel.
- Remove libLTO and *-devel packages from baselibs, they don't
  seem to be needed. We mostly need libLLVM and maybe libclang-cpp.
- Consistently set host triple as *-suse-linux-gnu*.
- Only suggest documentation packages.
- Add llvm-rust-mangle-for-fastcall.patch for rust 1.59.
- Fix armv6hl cpu architecture typo.

OBS-URL: https://build.opensuse.org/request/show/969598
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/llvm13?expand=0&rev=9
This commit is contained in:
Dominique Leuenberger 2022-04-14 15:22:52 +00:00 committed by Git OBS Bridge
commit d197a90939
5 changed files with 251 additions and 134 deletions

View File

@ -1,12 +1,2 @@
libLLVM13 libLLVM13
libclang13 libclang-cpp13
libLTO13
llvm13-devel
provides "llvm-devel-<targettype> = <version>"
conflicts "otherproviders(llvm-devel-<targettype>)"
clang13-devel
provides "clang-devel-<targettype> = <version>"
conflicts "otherproviders(clang-devel-<targettype>)"
llvm13-LTO-devel
provides "llvm-LTO-devel-<targettype> = <version>"
conflicts "otherproviders(llvm-LTO-devel-<targettype>)"

View File

@ -0,0 +1,41 @@
From 54b909de682bfa4e3389b680b0916ab18c99952a Mon Sep 17 00:00:00 2001
From: Amanieu d'Antras <amanieu@gmail.com>
Date: Fri, 25 Feb 2022 22:06:47 +0000
Subject: [PATCH] [Mangler] Mangle aliases to fastcall/vectorcall functions
correctly
These aliases are produced by MergeFunctions and need to be mangled according to the calling convention of the function they are pointing to instead of defaulting to the C calling convention.
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D120382
---
llvm/lib/IR/Mangler.cpp | 2 +-
llvm/test/CodeGen/X86/fastcall-correct-mangling.ll | 4 ++++
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/llvm/lib/IR/Mangler.cpp b/llvm/lib/IR/Mangler.cpp
index 2399ea27ee9d4..b8e3e40e4c1d5 100644
--- a/llvm/lib/IR/Mangler.cpp
+++ b/llvm/lib/IR/Mangler.cpp
@@ -144,7 +144,7 @@ void Mangler::getNameWithPrefix(raw_ostream &OS, const GlobalValue *GV,
// Mangle functions with Microsoft calling conventions specially. Only do
// this mangling for x86_64 vectorcall and 32-bit x86.
- const Function *MSFunc = dyn_cast<Function>(GV);
+ const Function *MSFunc = dyn_cast_or_null<Function>(GV->getBaseObject());
// Don't add byte count suffixes when '\01' or '?' are in the first
// character.
diff --git a/llvm/test/CodeGen/X86/fastcall-correct-mangling.ll b/llvm/test/CodeGen/X86/fastcall-correct-mangling.ll
index 00dc44e75e8f5..dd8ce0f0ef505 100644
--- a/llvm/test/CodeGen/X86/fastcall-correct-mangling.ll
+++ b/llvm/test/CodeGen/X86/fastcall-correct-mangling.ll
@@ -31,3 +31,7 @@ define private x86_fastcallcc void @dontCrash() {
; CHECK64-LABEL: {{^}}.LdontCrash:
ret void
}
+
+@alias = alias void(i64, i8, i8, i16), void(i64, i8, i8, i16)* @func
+; CHECK32-LABEL: {{^}}.set @alias@20, @func@20
+; CHECK64-LABEL: {{^}}.set alias, func

View File

@ -10,3 +10,7 @@ addFilter("devel-file-in-non-devel-package .*/lib.*/*.so")
# We're deliberately conflicting with SLE. (https://code.opensuse.org/leap/features/issue/55) # We're deliberately conflicting with SLE. (https://code.opensuse.org/leap/features/issue/55)
addFilter("SUSE_Backports_policy-SLE_conflict") addFilter("SUSE_Backports_policy-SLE_conflict")
# Different versions of LLVM can produce the same SONAME, so we'll have to use
# non-standard names sometimes. (Leap's rpmlint complains, Tumbleweed's doesn't.)
addFilter("shlib-policy-name-error")

View File

@ -1,3 +1,43 @@
-------------------------------------------------------------------
Sun Apr 3 13:42:27 UTC 2022 - Aaron Puchert <aaronpuchert@alice-dsl.net>
- Split up Clang libraries: libclang.so is no longer so-versioned
alongside LLVM but will stay at libclang.so.13 for now. So we
put it into a separate package from libclang-cpp.so. Since we
can't have multiple LLVM versions generate the same package, we
prefix it for the non-default LLVM with a mechanism inspired by
the GCC packaging.
- Patch exported clang/ClangTargets-relwithdebinfo.cmake to refer
to libclang only by soname, because the installed library might
be newer than the one originally build with the package.
- Use the same mechanism to for libc++ and package Clang scripts
only for the default version. This means we'll no longer have to
touch the package when a new major version comes out.
- Make sure we properly clean up the clang scripts if we're not
packaging them.
- Let python3-clang use libclang.so.XX, which means we can always
build it and makes it depend on libclang instead of clang-devel.
- Fix some rpmlint issues: we don't need explicit library
dependencies that are detected automatically, and we add proper
library dependencies to the *-devel packages.
- Merge llvm-LTO-devel into llvm-devel. That's where the header
files already are, and they are hard to separate.
- Let llvm-polly-devel depend on llvm-devel.
- Remove libLTO and *-devel packages from baselibs, they don't
seem to be needed. We mostly need libLLVM and maybe libclang-cpp.
- Consistently set host triple as *-suse-linux-gnu*.
- Only suggest documentation packages.
-------------------------------------------------------------------
Wed Mar 9 17:53:48 UTC 2022 - Dirk Müller <dmueller@suse.com>
- Add llvm-rust-mangle-for-fastcall.patch for rust 1.59.
-------------------------------------------------------------------
Sun Mar 6 21:24:55 UTC 2022 - Dirk Müller <dmueller@suse.com>
- Fix armv6hl cpu architecture typo.
------------------------------------------------------------------- -------------------------------------------------------------------
Sat Feb 19 15:23:13 UTC 2022 - Aaron Puchert <aaronpuchert@alice-dsl.net> Sat Feb 19 15:23:13 UTC 2022 - Aaron Puchert <aaronpuchert@alice-dsl.net>

View File

@ -21,8 +21,10 @@
%define _tagver %_relver%{?_rc:-rc%_rc} %define _tagver %_relver%{?_rc:-rc%_rc}
%define _minor 13.0 %define _minor 13.0
%define _sonum 13 %define _sonum 13
%define _itsme13 1
# Integer version used by update-alternatives # Integer version used by update-alternatives
%define _uaver 1301 %define _uaver 1301
%define _soclang 13
%define _socxx 1 %define _socxx 1
%ifarch x86_64 aarch64 %arm %ifarch x86_64 aarch64 %arm
@ -62,10 +64,29 @@
%bcond_with ffi %bcond_with ffi
%bcond_with oprofile %bcond_with oprofile
%bcond_with valgrind %bcond_with valgrind
%bcond_without clang_scripts
%bcond_without polly %bcond_without polly
%bcond_without lld %bcond_without lld
# Figure out the host triple.
%ifarch armv6hl
# See https://build.opensuse.org/request/show/968066.
%define host_cpu armv6kz
%else
%define host_cpu %{_host_cpu}
%endif
%ifarch %{arm}
%define host_runtime gnueabihf
%else
%define host_runtime gnu
%endif
%define host_triple %{host_cpu}-%{_host_vendor}-%{_host_os}-%{host_runtime}
%define _plv %{!?product_libs_llvm_ver:%{_sonum}}%{?product_libs_llvm_ver}
# Expands to -n if we're providing the distribution default for the given package.
%define multisource() %{expand:%%{?_itsme%{expand:%%{!?product_libs_llvm_ver_%{1}:%%{_plv}}%%{?product_libs_llvm_ver_%{1}}}:-n}}
# set_jobs type memory # set_jobs type memory
# Set max_<type>_jobs so that every job of the given type has at least the # Set max_<type>_jobs so that every job of the given type has at least the
# given amount of memory. # given amount of memory.
@ -113,6 +134,9 @@ Source100: %{name}-rpmlintrc
Source101: baselibs.conf Source101: baselibs.conf
# PATCH-FIX-OPENSUSE lto-disable-cache.patch -- Disable ThinLTO cache # PATCH-FIX-OPENSUSE lto-disable-cache.patch -- Disable ThinLTO cache
Patch0: lto-disable-cache.patch Patch0: lto-disable-cache.patch
# PATCH-FIX-UPSTREAM https://github.com/llvm/llvm-project/commit/54b909de682bfa4e3389b680b0916ab18c99952a,
# rebased past https://github.com/llvm/llvm-project/commit/40ec1c0f16cb23f8b83fb3d28b195e83991defd9.
Patch1: llvm-rust-mangle-for-fastcall.patch
# PATCH-FIX-OPENSUSE assume-opensuse.patch idoenmez@suse.de -- Always enable openSUSE/SUSE features # PATCH-FIX-OPENSUSE assume-opensuse.patch idoenmez@suse.de -- Always enable openSUSE/SUSE features
Patch2: assume-opensuse.patch Patch2: assume-opensuse.patch
# PATCH-FIX-OPENSUSE default-to-i586.patch -- Use i586 as default target for 32bit # PATCH-FIX-OPENSUSE default-to-i586.patch -- Use i586 as default target for 32bit
@ -150,11 +174,8 @@ BuildRequires: python-rpm-macros
BuildRequires: python3-base BuildRequires: python3-base
BuildRequires: pkgconfig(libedit) BuildRequires: pkgconfig(libedit)
BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(zlib)
# Avoid multiple provider errors
Requires: libLLVM%{_sonum}
Requires(post): update-alternatives Requires(post): update-alternatives
Requires(postun):update-alternatives Requires(postun):update-alternatives
Recommends: %{name}-doc
# llvm does not work on s390 # llvm does not work on s390
ExcludeArch: s390 ExcludeArch: s390
%if %{with gold} %if %{with gold}
@ -169,6 +190,7 @@ BuildRequires: pkgconfig(valgrind)
%if %{with oprofile} %if %{with oprofile}
BuildRequires: oprofile-devel BuildRequires: oprofile-devel
%endif %endif
Suggests: %{name}-doc
%description %description
LLVM is a compiler infrastructure designed for compile-time, LLVM is a compiler infrastructure designed for compile-time,
@ -190,13 +212,16 @@ Summary: Header Files for LLVM
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
Requires: %{name} = %{version} Requires: %{name} = %{version}
%if %{with openmp} %if %{with openmp}
# Referenced by LLVMExports.cmake
Requires: libomp%{_sonum}-devel Requires: libomp%{_sonum}-devel
%endif %endif
Requires: libLLVM%{_sonum} = %{version}
Requires: libLTO%{_sonum} = %{version}
Requires: libstdc++-devel Requires: libstdc++-devel
Requires: libtool Requires: libtool
Requires: llvm%{_sonum}-LTO-devel
Requires: llvm%{_sonum}-gold Requires: llvm%{_sonum}-gold
%if %{with polly} %if %{with polly}
# Referenced by LLVMExports.cmake
Requires: llvm%{_sonum}-polly-devel Requires: llvm%{_sonum}-polly-devel
%endif %endif
Requires: pkgconfig Requires: pkgconfig
@ -207,6 +232,11 @@ Conflicts: llvm5
Conflicts: llvm7 Conflicts: llvm7
%endif %endif
Conflicts: cmake(LLVM) Conflicts: cmake(LLVM)
# libLTO.so used to be a separate package.
Conflicts: libLTO.so < %{version}
Provides: libLTO.so = %{version}
Obsoletes: llvm%{_sonum}-LTO-devel <= %{version}
Provides: llvm%{_sonum}-LTO-devel = %{version}
Provides: llvm-devel-provider = %{version} Provides: llvm-devel-provider = %{version}
%if %{with ffi} %if %{with ffi}
Requires: pkgconfig(libffi) Requires: pkgconfig(libffi)
@ -239,16 +269,13 @@ This package contains documentation for the LLVM infrastructure.
Summary: CLANG frontend for LLVM Summary: CLANG frontend for LLVM
Group: Development/Languages/C and C++ Group: Development/Languages/C and C++
URL: https://clang.llvm.org/ URL: https://clang.llvm.org/
# Avoid multiple provider errors
Requires: libLTO%{_sonum}
Requires: libclang%{_sonum}
Requires(post): update-alternatives Requires(post): update-alternatives
Requires(postun):update-alternatives Requires(postun):update-alternatives
Recommends: clang%{_sonum}-doc
Recommends: clang-tools Recommends: clang-tools
Recommends: gcc Recommends: gcc
Recommends: glibc-devel Recommends: glibc-devel
Recommends: libstdc++-devel Recommends: libstdc++-devel
Suggests: clang%{_sonum}-doc
Suggests: libc++-devel Suggests: libc++-devel
%description -n clang%{_sonum} %description -n clang%{_sonum}
@ -289,14 +316,28 @@ This package contains tools and scripts for using Clang, including:
* scripts for using the Clang static analyzer: scan-build and scan-view, * scripts for using the Clang static analyzer: scan-build and scan-view,
* a script for using find-all-symbols: run-find-all-symbols. * a script for using find-all-symbols: run-find-all-symbols.
%package -n libclang%{_sonum} %package %{multisource libclang%{_soclang}} libclang%{_soclang}
Summary: Library files needed for clang Summary: Clang stable C API for indexing and code completion
# Avoid multiple provider errors
Group: System/Libraries Group: System/Libraries
Requires: libLLVM%{_sonum} Provides: libclang%{_soclang} = %{version}
Conflicts: libclang%{_soclang} < %{version}
%description -n libclang%{_sonum} %description %{multisource libclang%{_soclang}} libclang%{_soclang}
This package contains the shared libraries needed for clang. This library exposes a limited C API for indexing and code completion for
code written in languages of the C family.
It is designed to be stable across major versions of LLVM.
It corresponds to the header files in %{_includedir}/clang-c.
%package -n libclang-cpp%{_sonum}
Summary: Clang full C++ API
Group: System/Libraries
%description -n libclang-cpp%{_sonum}
This library exposes the full C++ API to Clang that is used to implement
all Clang tools. It is not stable across major LLVM versions.
It corresponds to the header files in %{_includedir}/clang.
%package -n clang%{_sonum}-devel %package -n clang%{_sonum}-devel
Summary: CLANG frontend for LLVM (devel package) Summary: CLANG frontend for LLVM (devel package)
@ -304,6 +345,8 @@ Group: Development/Libraries/C and C++
Requires: %{name}-devel = %{version} Requires: %{name}-devel = %{version}
Requires: clang%{_sonum} = %{version} Requires: clang%{_sonum} = %{version}
Requires: clang-tools >= %{version} Requires: clang-tools >= %{version}
Requires: libclang%{_soclang} >= %{version}
Requires: libclang-cpp%{_sonum} = %{version}
Conflicts: cmake(Clang) Conflicts: cmake(Clang)
%description -n clang%{_sonum}-devel %description -n clang%{_sonum}-devel
@ -327,31 +370,14 @@ This package contains documentation for the Clang compiler.
%package -n libLTO%{_sonum} %package -n libLTO%{_sonum}
Summary: Link-time optimizer for LLVM Summary: Link-time optimizer for LLVM
# Avoid multiple provider errors
Group: System/Libraries Group: System/Libraries
Requires: libLLVM%{_sonum}
%description -n libLTO%{_sonum} %description -n libLTO%{_sonum}
This package contains the link-time optimizer for LLVM. This package contains the link-time optimizer for LLVM.
%package LTO-devel
Summary: Link-time optimizer for LLVM (devel package)
# Avoid multiple provider errors
Group: Development/Libraries/C and C++
Requires: %{name}-devel = %{version}
Requires: libLTO%{_sonum}
Conflicts: libLTO.so < %{version}
Provides: libLTO.so = %{version}
%description LTO-devel
This package contains the link-time optimizer for LLVM.
(development files)
%package gold %package gold
Summary: Gold linker plugin for LLVM Summary: Gold linker plugin for LLVM
# Avoid multiple provider errors
Group: Development/Tools/Building Group: Development/Tools/Building
Requires: libLLVM%{_sonum}
Conflicts: llvm-gold-provider < %{version} Conflicts: llvm-gold-provider < %{version}
Provides: llvm-gold-provider = %{version} Provides: llvm-gold-provider = %{version}
Supplements: packageand(clang%{_sonum}:binutils-gold) Supplements: packageand(clang%{_sonum}:binutils-gold)
@ -361,61 +387,59 @@ This package contains the Gold linker plugin for LLVM.
%package -n libomp%{_sonum}-devel %package -n libomp%{_sonum}-devel
Summary: MPI plugin for LLVM Summary: MPI plugin for LLVM
# Avoid multiple provider errors
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
Requires: libLLVM%{_sonum}
Conflicts: libomp-devel < %{version} Conflicts: libomp-devel < %{version}
Provides: libomp-devel = %{version} Provides: libomp-devel = %{version}
%description -n libomp%{_sonum}-devel %description -n libomp%{_sonum}-devel
This package contains the OpenMP MPI plugin for LLVM. This package contains the OpenMP MPI plugin for LLVM.
%if %{with libcxx} %package %{multisource libcxx%{_socxx}} libc++%{_socxx}
%package -n libc++%{_socxx}
Summary: C++ standard library implementation Summary: C++ standard library implementation
Group: System/Libraries Group: System/Libraries
URL: https://libcxx.llvm.org/ URL: https://libcxx.llvm.org/
Requires: libc++abi%{_socxx} = %{version} Requires: libc++abi%{_socxx} = %{version}
Conflicts: libc++%{_socxx} < %{version}
Provides: libc++%{_socxx} = %{version}
%description -n libc++%{_socxx} %description %{multisource libcxx%{_socxx}} libc++%{_socxx}
This package contains libc++, a new implementation of the C++ This package contains libc++, a new implementation of the C++
standard library, targeting C++11. standard library, targeting C++11.
%package -n libc++-devel %package %{multisource libcxx_devel} libc++-devel
Summary: C++ standard library implementation (devel package) Summary: C++ standard library implementation (devel package)
# Avoid multiple provider errors
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
Requires: libc++%{_socxx} = %{version} Requires: libc++%{_socxx} >= %{version}
Requires: libc++abi-devel = %{version} Requires: libc++abi.so >= %{version}
Conflicts: libc++.so < %{version} Conflicts: libc++.so < %{version}
Provides: libc++.so = %{version} Provides: libc++.so = %{version}
%description -n libc++-devel %description %{multisource libcxx_devel} libc++-devel
This package contains libc++, a new implementation of the C++ This package contains libc++, a new implementation of the C++
standard library, targeting C++11. (development files) standard library, targeting C++11. (development files)
%package -n libc++abi%{_socxx} %package %{multisource libcxxabi%{_socxx}} libc++abi%{_socxx}
Summary: C++ standard library ABI Summary: C++ standard library ABI
Group: System/Libraries Group: System/Libraries
URL: https://libcxxabi.llvm.org/ URL: https://libcxxabi.llvm.org/
Conflicts: libc++abi%{_socxx} < %{version}
Provides: libc++abi%{_socxx} = %{version}
%description -n libc++abi%{_socxx} %description %{multisource libcxxabi%{_socxx}} libc++abi%{_socxx}
This package contains the ABI for libc++, a new implementation This package contains the ABI for libc++, a new implementation
of the C++ standard library, targeting C++11. of the C++ standard library, targeting C++11.
%package -n libc++abi-devel %package %{multisource libcxx_devel} libc++abi-devel
Summary: C++ standard library ABI (devel package) Summary: C++ standard library ABI (devel package)
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
Requires: libc++-devel Requires: libc++abi%{_socxx} >= %{version}
Requires: libc++abi%{_socxx} = %{version}
Conflicts: libc++abi.so < %{version} Conflicts: libc++abi.so < %{version}
Provides: libc++abi.so = %{version} Provides: libc++abi.so = %{version}
%description -n libc++abi-devel %description %{multisource libcxx_devel} libc++abi-devel
This package contains the ABI for libc++, a new implementation This package contains the ABI for libc++, a new implementation
of the C++ standard library, targeting C++11. of the C++ standard library, targeting C++11.
(development files) (development files)
%endif
%package vim-plugins %package vim-plugins
Summary: Vim plugins for LLVM Summary: Vim plugins for LLVM
@ -428,16 +452,16 @@ BuildArch: noarch
%description vim-plugins %description vim-plugins
This package contains vim plugins for LLVM like syntax highlighting. This package contains vim plugins for LLVM like syntax highlighting.
%package -n python3-clang %package -n python3-clang%{_sonum}
Summary: Python bindings for libclang Summary: Python bindings for libclang
Group: Development/Libraries/Python Group: Development/Libraries/Python
Requires: clang%{_sonum}-devel = %{version} Requires: libclang%{_soclang} >= %{version}
Requires: python3-base Requires: python3-base
Conflicts: %{python3_sitearch}/clang/ Conflicts: %{python3_sitearch}/clang/
Provides: %{python3_sitearch}/clang/ Provides: %{python3_sitearch}/clang/
BuildArch: noarch BuildArch: noarch
%description -n python3-clang %description -n python3-clang%{_sonum}
This package contains the Python bindings to clang (C language) This package contains the Python bindings to clang (C language)
frontend for LLVM. frontend for LLVM.
@ -477,8 +501,6 @@ BuildRequires: pkgconfig(ncurses)
BuildRequires: pkgconfig(panel) BuildRequires: pkgconfig(panel)
BuildRequires: pkgconfig(python3) BuildRequires: pkgconfig(python3)
BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(zlib)
# Avoid multiple provider errors
Requires: liblldb%{_sonum} = %{version}
Requires(post): update-alternatives Requires(post): update-alternatives
Requires(postun):update-alternatives Requires(postun):update-alternatives
Recommends: python3-lldb%{_sonum} Recommends: python3-lldb%{_sonum}
@ -492,17 +514,13 @@ disassembler.
%package -n liblldb%{_sonum} %package -n liblldb%{_sonum}
Summary: LLDB software debugger runtime library Summary: LLDB software debugger runtime library
# Avoid multiple provider errors
Group: System/Libraries Group: System/Libraries
Requires: libLLVM%{_sonum}
Requires: libclang%{_sonum}
%description -n liblldb%{_sonum} %description -n liblldb%{_sonum}
This subpackage contains the main LLDB component. This subpackage contains the main LLDB component.
%package -n lldb%{_sonum}-devel %package -n lldb%{_sonum}-devel
Summary: Development files for LLDB Summary: Development files for LLDB
# Avoid multiple provider errors
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
Requires: clang%{_sonum}-devel = %{version} Requires: clang%{_sonum}-devel = %{version}
Requires: liblldb%{_sonum} = %{version} Requires: liblldb%{_sonum} = %{version}
@ -520,7 +538,6 @@ This package contains the development files for LLDB.
Summary: Python bindings for liblldb Summary: Python bindings for liblldb
Group: Development/Libraries/Python Group: Development/Libraries/Python
BuildRequires: swig >= 3.0.11 BuildRequires: swig >= 3.0.11
# Avoid multiple provider errors
Requires: liblldb%{_sonum} = %{version} Requires: liblldb%{_sonum} = %{version}
Requires: python3-base Requires: python3-base
Requires: python3-six Requires: python3-six
@ -553,6 +570,7 @@ level parallelism and expose SIMDization opportunities.
%package polly-devel %package polly-devel
Summary: Development files for Polly Summary: Development files for Polly
Group: Development/Libraries/C and C++ Group: Development/Libraries/C and C++
Requires: llvm%{_sonum}-devel = %{version}
Requires: llvm%{_sonum}-polly = %{version} Requires: llvm%{_sonum}-polly = %{version}
Conflicts: llvm-polly-devel-provider < %{version} Conflicts: llvm-polly-devel-provider < %{version}
Provides: llvm-polly-devel-provider = %{version} Provides: llvm-polly-devel-provider = %{version}
@ -563,8 +581,8 @@ This package contains the development files for Polly.
%prep %prep
%setup -q -a 1 -a 2 -a 3 -a 4 -a 5 -a 6 -a 7 -a 8 -a 9 -b 50 -b 51 -n llvm-%{_version}.src %setup -q -a 1 -a 2 -a 3 -a 4 -a 5 -a 6 -a 7 -a 8 -a 9 -b 50 -b 51 -n llvm-%{_version}.src
%patch0 -p2 %patch0 -p2
%patch1 -p2
%patch5 -p1 %patch5 -p1
%patch13 -p1 %patch13 -p1
%patch14 -p1 %patch14 -p1
@ -654,10 +672,10 @@ mv libcxxabi-%{_version}.src projects/libcxxabi
flags=$(echo %{optflags} | sed 's/-D_FORTIFY_SOURCE=./-D_FORTIFY_SOURCE=0/;s/\B-g\b//g') flags=$(echo %{optflags} | sed 's/-D_FORTIFY_SOURCE=./-D_FORTIFY_SOURCE=0/;s/\B-g\b//g')
%ifarch armv6hl %ifarch armv6hl
flags+=" -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp" flags+=" -mfloat-abi=hard -mcpu=arm1176jzf-s -mfpu=vfpv2"
%endif %endif
%ifarch armv7hl %ifarch armv7hl
flags+=" -mfloat-abi=hard -march=armv7-a -mtune=cortex-a15 -mfpu=vfpv3-d16" flags+=" -mfloat-abi=hard -march=armv7-a -mtune=cortex-a17 -mfpu=vfpv3-d16"
%endif %endif
CFLAGS=$flags CFLAGS=$flags
@ -713,6 +731,7 @@ avail_mem=$(awk '/MemAvailable/ { print $2 }' /proc/meminfo)
%cmake \ %cmake \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS:BOOL=OFF \ -DBUILD_SHARED_LIBS:BOOL=OFF \
-DLLVM_HOST_TRIPLE=%{host_triple} \
-DLLVM_BUILD_LLVM_DYLIB:BOOL=OFF \ -DLLVM_BUILD_LLVM_DYLIB:BOOL=OFF \
-DLLVM_LINK_LLVM_DYLIB:BOOL=OFF \ -DLLVM_LINK_LLVM_DYLIB:BOOL=OFF \
-DLLVM_PARALLEL_COMPILE_JOBS="$max_compile_jobs" \ -DLLVM_PARALLEL_COMPILE_JOBS="$max_compile_jobs" \
@ -793,6 +812,7 @@ export LD_LIBRARY_PATH=${PWD}/build/%{_lib}
# -z,now is breaking now, it needs to be fixed # -z,now is breaking now, it needs to be fixed
%cmake \ %cmake \
-DBUILD_SHARED_LIBS:BOOL=OFF \ -DBUILD_SHARED_LIBS:BOOL=OFF \
-DLLVM_HOST_TRIPLE=%{host_triple} \
-DLLVM_BUILD_LLVM_DYLIB:BOOL=ON \ -DLLVM_BUILD_LLVM_DYLIB:BOOL=ON \
-DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \
-DCLANG_LINK_CLANG_DYLIB:BOOL=ON \ -DCLANG_LINK_CLANG_DYLIB:BOOL=ON \
@ -919,17 +939,58 @@ rm -r %{buildroot}%{_docdir}/llvm-clang/_sources
popd popd
# install python bindings # install python bindings
# The python bindings use the unversioned libclang.so,
# so it doesn't make sense to have multiple versions of it
%if %{with clang_scripts}
install -d %{buildroot}%{python3_sitelib}/clang install -d %{buildroot}%{python3_sitelib}/clang
pushd tools/clang/bindings/python pushd tools/clang/bindings/python
cp clang/*.py %{buildroot}%{python3_sitelib}/clang cp clang/*.py %{buildroot}%{python3_sitelib}/clang
# Make the bindings use the current so number, so that we don't need an unversioned libclang.so.
sed -i "s/file = 'libclang\.so'/file = 'libclang.so.%{_soclang}'/" %{buildroot}%{python3_sitelib}/clang/cindex.py
install -d %{buildroot}%{_docdir}/python-clang/examples/cindex install -d %{buildroot}%{_docdir}/python-clang/examples/cindex
cp -r examples %{buildroot}%{_docdir}/python-clang cp -r examples %{buildroot}%{_docdir}/python-clang
install -d %{buildroot}%{_docdir}/python-clang/tests/cindex/INPUTS install -d %{buildroot}%{_docdir}/python-clang/tests/cindex/INPUTS
cp -r tests %{buildroot}%{_docdir}/python-clang cp -r tests %{buildroot}%{_docdir}/python-clang
popd popd
# Scripts for clang use unversioned executables, so it doesn't make sense to
# have multiple versions of them. We package them only for the default version.
%if %{_plv} == %{_sonum}
%if "%{_libexecdir}" != "%{_prefix}/libexec"
mv %{buildroot}%{_prefix}/libexec/{c++,ccc}-analyzer %{buildroot}%{_bindir}
mv %{buildroot}%{_prefix}/libexec/{analyze,intercept}-{cc,c++} %{buildroot}%{_bindir}
%endif
mv %{buildroot}%{_datadir}/clang/clang-format-diff.py %{buildroot}%{_bindir}/clang-format-diff
mv %{buildroot}%{_datadir}/clang/clang-tidy-diff.py %{buildroot}%{_bindir}/clang-tidy-diff
mv %{buildroot}%{_datadir}/clang/run-find-all-symbols.py %{buildroot}%{_bindir}/run-find-all-symbols
# Fix paths to internal binaries.
sed -i "s|COMPILER_WRAPPER_\([A-Z]*\) = 'intercept-\([^']*\)'|COMPILER_WRAPPER_\1 = '%{_libexecdir_fallback}/intercept-\2'|" \
%{buildroot}%{_prefix}/lib/libscanbuild/intercept.py
%if "%{_libexecdir}" != "%{_prefix}/libexec"
LIBEXEC=%{_libexecdir_fallback}
RELATIVE_LIBEXEC=${LIBEXEC#%{_prefix}/}
RELATIVE_LIBEXEC_COMMA=${RELATIVE_LIBEXEC//\//\', \'}
sed -i "s|os.path.join(scanbuild_dir, '..', 'libexec', 'analyze-\([^']*\)')|os.path.join(scanbuild_dir, '..', '$RELATIVE_LIBEXEC_COMMA', 'analyze-\1')|" \
%{buildroot}%{_prefix}/lib/libscanbuild/analyze.py
%endif
mkdir -p %{buildroot}%{_datadir}/bash-completion/completions
mv %{buildroot}%{_datadir}/clang/bash-autocomplete.sh %{buildroot}%{_datadir}/bash-completion/completions/clang
# We don't care about applescript or sublime text
rm %{buildroot}%{_datadir}/clang/*.applescript
rm %{buildroot}%{_datadir}/clang/clang-format-sublime.py
%else
rm %{buildroot}%{_bindir}/{analyze,intercept}-build
rm %{buildroot}%{_bindir}/clang-doc
rm %{buildroot}%{_bindir}/git-clang-format
rm %{buildroot}%{_bindir}/hmaptool
rm %{buildroot}%{_bindir}/run-clang-tidy
rm %{buildroot}%{_bindir}/scan-{build,build-py,view}
rm -r %{buildroot}%{_prefix}/lib/lib{ear,scanbuild}
rm %{buildroot}%{_prefix}/libexec/{c++,ccc}-analyzer
rm %{buildroot}%{_prefix}/libexec/{analyze,intercept}-{cc,c++}
rm -r %{buildroot}%{_datadir}/{clang,scan-build,scan-view}/
rm %{buildroot}%{_mandir}/man1/scan-build.1
%endif %endif
# Note that bfd-plugins is in /usr/lib/bfd-plugins before binutils 2.33.1 # Note that bfd-plugins is in /usr/lib/bfd-plugins before binutils 2.33.1
@ -942,14 +1003,6 @@ for i in ftdetect ftplugin indent syntax; do
done done
mv utils/vim/README utils/vim/README.vim mv utils/vim/README utils/vim/README.vim
%if "%{_libexecdir}" != "%{_prefix}/libexec"
mv %{buildroot}%{_prefix}/libexec/{c++,ccc}-analyzer %{buildroot}%{_bindir}
mv %{buildroot}%{_prefix}/libexec/{analyze,intercept}-{cc,c++} %{buildroot}%{_bindir}
%endif
mv %{buildroot}%{_datadir}/clang/clang-format-diff.py %{buildroot}%{_bindir}/clang-format-diff
mv %{buildroot}%{_datadir}/clang/clang-tidy-diff.py %{buildroot}%{_bindir}/clang-tidy-diff
mv %{buildroot}%{_datadir}/clang/run-find-all-symbols.py %{buildroot}%{_bindir}/run-find-all-symbols
install -d %{buildroot}%{python3_sitelib} install -d %{buildroot}%{python3_sitelib}
mv %{buildroot}%{_datadir}/opt-viewer/opt-diff.py %{buildroot}%{_bindir}/opt-diff mv %{buildroot}%{_datadir}/opt-viewer/opt-diff.py %{buildroot}%{_bindir}/opt-diff
mv %{buildroot}%{_datadir}/opt-viewer/opt-stats.py %{buildroot}%{_bindir}/opt-stats mv %{buildroot}%{_datadir}/opt-viewer/opt-stats.py %{buildroot}%{_bindir}/opt-stats
@ -957,12 +1010,8 @@ mv %{buildroot}%{_datadir}/opt-viewer/opt-viewer.py %{buildroot}%{_bindir}/opt-v
mv %{buildroot}%{_datadir}/opt-viewer/optpmap.py %{buildroot}%{python3_sitelib}/optpmap.py mv %{buildroot}%{_datadir}/opt-viewer/optpmap.py %{buildroot}%{python3_sitelib}/optpmap.py
mv %{buildroot}%{_datadir}/opt-viewer/optrecord.py %{buildroot}%{python3_sitelib}/optrecord.py mv %{buildroot}%{_datadir}/opt-viewer/optrecord.py %{buildroot}%{python3_sitelib}/optrecord.py
mkdir -p %{buildroot}%{_datadir}/bash-completion/completions
mv %{buildroot}%{_datadir}/clang/bash-autocomplete.sh %{buildroot}%{_datadir}/bash-completion/completions/clang
rm %{buildroot}%{_mandir}/man1/{,clang-,lldb-,mlir-}tblgen.1 rm %{buildroot}%{_mandir}/man1/{,clang-,lldb-,mlir-}tblgen.1
rm %{buildroot}%{_mandir}/man1/llvm-locstats.1 rm %{buildroot}%{_mandir}/man1/llvm-locstats.1
chmod -x %{buildroot}%{_mandir}/man1/scan-build.1
%if %{with lldb_python} %if %{with lldb_python}
# Python: fix binary libraries location. # Python: fix binary libraries location.
@ -988,10 +1037,6 @@ rm %{buildroot}%{_libdir}/libiomp*.so
rm %{buildroot}%{_libdir}/libarcher_static.a rm %{buildroot}%{_libdir}/libarcher_static.a
%endif %endif
# We don't care about applescript or sublime text
rm %{buildroot}%{_datadir}/clang/*.applescript
rm %{buildroot}%{_datadir}/clang/clang-format-sublime.py
# Prepare for update-alternatives usage # Prepare for update-alternatives usage
mkdir -p %{buildroot}%{_sysconfdir}/alternatives mkdir -p %{buildroot}%{_sysconfdir}/alternatives
binfiles=( bugpoint dsymutil llc lli \ binfiles=( bugpoint dsymutil llc lli \
@ -1058,6 +1103,11 @@ sed -i "$(
done done
)" %{buildroot}%{_libdir}/cmake/{llvm/LLVMExports,clang/ClangTargets}-relwithdebinfo.cmake )" %{buildroot}%{_libdir}/cmake/{llvm/LLVMExports,clang/ClangTargets}-relwithdebinfo.cmake
# For libclang, have the CMake export list refer to the library via soname.
# The original library might not be available. (We might have a newer version.)
sed -i "s|\"\${_IMPORT_PREFIX}/%{_lib}/libclang.so.%{_relver}\"|\"\${_IMPORT_PREFIX}/%{_lib}/libclang.so.%{_soclang}\"|g" \
%{buildroot}%{_libdir}/cmake/clang/ClangTargets-relwithdebinfo.cmake
# rpm macro for version checking # rpm macro for version checking
mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d/ mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d/
cat > %{buildroot}%{_rpmconfigdir}/macros.d/macros.llvm <<EOF cat > %{buildroot}%{_rpmconfigdir}/macros.d/macros.llvm <<EOF
@ -1078,14 +1128,15 @@ cat > %{buildroot}%{_rpmconfigdir}/macros.d/macros.llvm <<EOF
%_llvm_with_ffi %{with ffi} %_llvm_with_ffi %{with ffi}
%_llvm_with_oprofile %{with oprofile} %_llvm_with_oprofile %{with oprofile}
%_llvm_with_valgrind %{with valgrind} %_llvm_with_valgrind %{with valgrind}
%_llvm_with_clang_scripts %{with clang_scripts}
%_llvm_with_lldb %{with lldb} %_llvm_with_lldb %{with lldb}
EOF EOF
# Don't use env in shebangs, and prefer python3. (https://www.python.org/dev/peps/pep-0394/#for-python-runtime-distributors) # Don't use env in shebangs, and prefer python3. (https://www.python.org/dev/peps/pep-0394/#for-python-runtime-distributors)
for script in %{buildroot}%{_bindir}/{{analyze,intercept}-build,clang-{format,tidy}-diff,git-clang-format,\ for script in %{buildroot}%{_bindir}/opt-{diff,stats,viewer} \
hmaptool,run-{clang-tidy,find-all-symbols},scan-{build,build-py,view},opt-{diff,stats,viewer}} \ %if %{_plv} == %{_sonum}
%{buildroot}%{_bindir}/{{analyze,intercept}-build,clang-{format,tidy}-diff,git-clang-format,hmaptool,run-{clang-tidy,find-all-symbols},scan-{build,build-py,view}} \
%{buildroot}%{_libexecdir_fallback}/{{analyze,intercept}-{c++,cc},{c++,ccc}-analyzer} \ %{buildroot}%{_libexecdir_fallback}/{{analyze,intercept}-{c++,cc},{c++,ccc}-analyzer} \
%endif
%ifarch aarch64 x86_64 %ifarch aarch64 x86_64
%{buildroot}%{_libdir}/clang/%{_relver}/bin/hwasan_symbolize \ %{buildroot}%{_libdir}/clang/%{_relver}/bin/hwasan_symbolize \
%endif %endif
@ -1096,21 +1147,12 @@ done
# Remove executable bit where not needed. # Remove executable bit where not needed.
chmod -x \ chmod -x \
%{buildroot}%{python3_sitelib}/optpmap.py \ %{buildroot}%{python3_sitelib}/optpmap.py \
%{buildroot}%{_datadir}/opt-viewer/style.css \
%if %{_plv} == %{_sonum}
%{buildroot}%{_datadir}/bash-completion/completions/clang \ %{buildroot}%{_datadir}/bash-completion/completions/clang \
%{buildroot}%{_datadir}/clang/clang-{format,include-fixer,rename}.{el,py} \ %{buildroot}%{_datadir}/clang/clang-{format,include-fixer,rename}.{el,py} \
%{buildroot}%{_datadir}/opt-viewer/style.css \ %{buildroot}%{_mandir}/man1/scan-build.1
%{buildroot}%{_prefix}/lib/libear/ear.c find %{buildroot}%{_prefix}/lib/{libear,libscanbuild} -type f -executable -exec chmod -x {} +
%if !%{with clang_scripts}
rm %{buildroot}%{_bindir}/{c++,ccc}-analyzer
rm %{buildroot}%{_bindir}/clang-{doc,format-diff,tidy-diff}
rm %{buildroot}%{_bindir}/git-clang-format
rm %{buildroot}%{_bindir}/hmaptool
rm %{buildroot}%{_bindir}/run-{clang-tidy,find-all-symbols}
rm %{buildroot}%{_bindir}/scan-{build,view}
rm %{buildroot}%{_datadir}/bash-completion/completions/clang
rm -r %{buildroot}%{_datadir}/{clang,scan-build,scan-view}/
rm %{buildroot}%{_mandir}/man1/scan-build.1
%endif %endif
%fdupes -s %{buildroot}%{_docdir}/llvm %fdupes -s %{buildroot}%{_docdir}/llvm
@ -1187,8 +1229,10 @@ rm -rf ./stage1 ./build
%post -n libLLVM%{_sonum} -p /sbin/ldconfig %post -n libLLVM%{_sonum} -p /sbin/ldconfig
%postun -n libLLVM%{_sonum} -p /sbin/ldconfig %postun -n libLLVM%{_sonum} -p /sbin/ldconfig
%post -n libclang%{_sonum} -p /sbin/ldconfig %post %{multisource libclang%{_soclang}} libclang%{_soclang} -p /sbin/ldconfig
%postun -n libclang%{_sonum} -p /sbin/ldconfig %postun %{multisource libclang%{_soclang}} libclang%{_soclang} -p /sbin/ldconfig
%post -n libclang-cpp%{_sonum} -p /sbin/ldconfig
%postun -n libclang-cpp%{_sonum} -p /sbin/ldconfig
%post -n libLTO%{_sonum} -p /sbin/ldconfig %post -n libLTO%{_sonum} -p /sbin/ldconfig
%postun -n libLTO%{_sonum} -p /sbin/ldconfig %postun -n libLTO%{_sonum} -p /sbin/ldconfig
%post -n clang%{_sonum}-devel -p /sbin/ldconfig %post -n clang%{_sonum}-devel -p /sbin/ldconfig
@ -1203,8 +1247,6 @@ rm -rf ./stage1 ./build
%postun gold -p /sbin/ldconfig %postun gold -p /sbin/ldconfig
%post devel -p /sbin/ldconfig %post devel -p /sbin/ldconfig
%postun devel -p /sbin/ldconfig %postun devel -p /sbin/ldconfig
%post LTO-devel -p /sbin/ldconfig
%postun LTO-devel -p /sbin/ldconfig
%if %{with openmp} %if %{with openmp}
%post -n libomp%{_sonum}-devel -p /sbin/ldconfig %post -n libomp%{_sonum}-devel -p /sbin/ldconfig
@ -1212,14 +1254,14 @@ rm -rf ./stage1 ./build
%endif %endif
%if %{with libcxx} %if %{with libcxx}
%post -n libc++%{_socxx} -p /sbin/ldconfig %post %{multisource libcxx%{_socxx}} libc++%{_socxx} -p /sbin/ldconfig
%postun -n libc++%{_socxx} -p /sbin/ldconfig %postun %{multisource libcxx%{_socxx}} libc++%{_socxx} -p /sbin/ldconfig
%post -n libc++abi%{_socxx} -p /sbin/ldconfig %post %{multisource libcxxabi%{_socxx}} libc++abi%{_socxx} -p /sbin/ldconfig
%postun -n libc++abi%{_socxx} -p /sbin/ldconfig %postun %{multisource libcxxabi%{_socxx}} libc++abi%{_socxx} -p /sbin/ldconfig
%post -n libc++-devel -p /sbin/ldconfig %post %{multisource libcxx_devel} libc++-devel -p /sbin/ldconfig
%postun -n libc++-devel -p /sbin/ldconfig %postun %{multisource libcxx_devel} libc++-devel -p /sbin/ldconfig
%post -n libc++abi-devel -p /sbin/ldconfig %post %{multisource libcxx_devel} libc++abi-devel -p /sbin/ldconfig
%postun -n libc++abi-devel -p /sbin/ldconfig %postun %{multisource libcxx_devel} libc++abi-devel -p /sbin/ldconfig
%endif %endif
%if %{with polly} %if %{with polly}
@ -1850,7 +1892,7 @@ fi
%{_libdir}/clang/%{_relver}/share %{_libdir}/clang/%{_relver}/share
%endif %endif
%if %{with clang_scripts} %if %{_plv} == %{_sonum}
%files -n clang-tools %files -n clang-tools
%license CREDITS.TXT LICENSE.TXT %license CREDITS.TXT LICENSE.TXT
%{_bindir}/analyze-build %{_bindir}/analyze-build
@ -1894,9 +1936,14 @@ fi
%{_libdir}/libLLVM*.so.* %{_libdir}/libLLVM*.so.*
%{_libdir}/libRemarks.so.* %{_libdir}/libRemarks.so.*
%files -n libclang%{_sonum} %files %{multisource libclang%{_soclang}} libclang%{_soclang}
%license CREDITS.TXT LICENSE.TXT %license CREDITS.TXT LICENSE.TXT
%{_libdir}/libclang*.so.* %{_libdir}/libclang.so.%{_soclang}
%{_libdir}/libclang.so.%{_relver}
%files -n libclang-cpp%{_sonum}
%license CREDITS.TXT LICENSE.TXT
%{_libdir}/libclang-cpp.so.%{_sonum}
%dir %{_libdir}/clang/ %dir %{_libdir}/clang/
%dir %{_libdir}/clang/%{_relver}/ %dir %{_libdir}/clang/%{_relver}/
%{_libdir}/clang/%{_relver}/include %{_libdir}/clang/%{_relver}/include
@ -1928,21 +1975,21 @@ fi
%endif %endif
%if %{with libcxx} %if %{with libcxx}
%files -n libc++%{_socxx} %files %{multisource libcxx%{_socxx}} libc++%{_socxx}
%license CREDITS.TXT LICENSE.TXT %license CREDITS.TXT LICENSE.TXT
%{_libdir}/libc++.so.* %{_libdir}/libc++.so.*
%files -n libc++abi%{_socxx} %files %{multisource libcxxabi%{_socxx}} libc++abi%{_socxx}
%license CREDITS.TXT LICENSE.TXT %license CREDITS.TXT LICENSE.TXT
%{_libdir}/libc++abi.so.* %{_libdir}/libc++abi.so.*
%files -n libc++-devel %files %{multisource libcxx_devel} libc++-devel
%license CREDITS.TXT LICENSE.TXT %license CREDITS.TXT LICENSE.TXT
%{_libdir}/libc++.so %{_libdir}/libc++.so
%dir %{_includedir}/c++/ %dir %{_includedir}/c++/
%{_includedir}/c++/v%{_socxx} %{_includedir}/c++/v%{_socxx}
%files -n libc++abi-devel %files %{multisource libcxx_devel} libc++abi-devel
%license CREDITS.TXT LICENSE.TXT %license CREDITS.TXT LICENSE.TXT
%{_libdir}/libc++abi.so %{_libdir}/libc++abi.so
%endif %endif
@ -1953,6 +2000,7 @@ fi
%{_bindir}/llvm-config %{_bindir}/llvm-config
%{_libdir}/libLLVM.so %{_libdir}/libLLVM.so
%{_libdir}/libLLVMTableGen.so %{_libdir}/libLLVMTableGen.so
%{_libdir}/libLTO.so
%{_libdir}/libRemarks.so %{_libdir}/libRemarks.so
%{_includedir}/llvm/ %{_includedir}/llvm/
%{_includedir}/llvm-c/ %{_includedir}/llvm-c/
@ -1974,21 +2022,15 @@ fi
%files -n clang%{_sonum}-doc %files -n clang%{_sonum}-doc
%{_docdir}/llvm-clang/ %{_docdir}/llvm-clang/
%files LTO-devel
%license CREDITS.TXT LICENSE.TXT
%{_libdir}/libLTO.so
%files vim-plugins %files vim-plugins
%license CREDITS.TXT LICENSE.TXT %license CREDITS.TXT LICENSE.TXT
%doc utils/vim/README.vim %doc utils/vim/README.vim
%{_datadir}/vim/ %{_datadir}/vim/
%if %{with clang_scripts} %files -n python3-clang%{_sonum}
%files -n python3-clang
%license CREDITS.TXT LICENSE.TXT %license CREDITS.TXT LICENSE.TXT
%{python3_sitelib}/clang/ %{python3_sitelib}/clang/
%{_docdir}/python-clang/ %{_docdir}/python-clang/
%endif
%if %{with lld} %if %{with lld}
%files -n lld%{_sonum} %files -n lld%{_sonum}