From 1eaded1b56e6da80c39023ab48c8091f16b0e807 Mon Sep 17 00:00:00 2001 From: Raven Date: Thu, 23 May 2024 12:00:27 +0600 Subject: [PATCH] llvm-compat17: initial build as compat package --- .../0101-Deactivate-markdown-doc.patch | 26 +++ modular/llvm-compat17/llvm-compat.spec | 157 ++++++++++++++++++ 2 files changed, 183 insertions(+) create mode 100644 modular/llvm-compat17/0101-Deactivate-markdown-doc.patch create mode 100644 modular/llvm-compat17/llvm-compat.spec diff --git a/modular/llvm-compat17/0101-Deactivate-markdown-doc.patch b/modular/llvm-compat17/0101-Deactivate-markdown-doc.patch new file mode 100644 index 0000000..603cb39 --- /dev/null +++ b/modular/llvm-compat17/0101-Deactivate-markdown-doc.patch @@ -0,0 +1,26 @@ +diff -Naur a/llvm/docs/conf.py b/llvm/docs/conf.py +--- a/llvm/docs/conf.py 2020-09-15 09:12:24.318287611 +0000 ++++ b/llvm/docs/conf.py 2020-09-15 15:01:00.025893199 +0000 +@@ -36,21 +36,7 @@ + ".rst": "restructuredtext", + } + +-try: +- import recommonmark +-except ImportError: +- # manpages do not use any .md sources +- if not tags.has("builder-man"): +- raise +-else: +- import sphinx +- +- if sphinx.version_info >= (3, 0): +- # This requires 0.5 or later. +- extensions.append("recommonmark") +- else: +- source_parsers = {".md": "recommonmark.parser.CommonMarkParser"} +- source_suffix[".md"] = "markdown" ++import sphinx + + # The encoding of source files. + # source_encoding = 'utf-8-sig' diff --git a/modular/llvm-compat17/llvm-compat.spec b/modular/llvm-compat17/llvm-compat.spec new file mode 100644 index 0000000..9cf8409 --- /dev/null +++ b/modular/llvm-compat17/llvm-compat.spec @@ -0,0 +1,157 @@ +%global maj_ver 17 +%global min_ver 0 +%global patch_ver 6 +%global baserelease 10 + +# Limit build jobs on ppc64 systems to avoid running out of memory. +%global _smp_mflags -j8 + +%global install_prefix %{_libdir}/llvm%{maj_ver} +%global pkg_libdir %{install_prefix}/lib/ + +# Disable debuginfo on ppc64le to reduce disk space usage. +%ifarch ppc64le +%global _find_debuginfo_dwz_opts %{nil} +%global debug_package %{nil} +%endif + +Name: llvm-compat17 +Version: %{maj_ver}.%{min_ver}.%{patch_ver} +Release: %{baserelease}%{?dist} +Summary: The Low Level Virtual Machine + +License: NCSA +URL: http://llvm.org +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/llvm-%{version}.src.tar.xz +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/clang-%{version}.src.tar.xz +Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/cmake-%{version}.src.tar.xz + + +# RHEL-specific patch to avoid unwanted recommonmark dep +Patch101: 0101-Deactivate-markdown-doc.patch + + +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: cmake +BuildRequires: zlib-devel +BuildRequires: libffi-devel +BuildRequires: ncurses-devel +BuildRequires: multilib-rpm-config +BuildRequires: ninja-build +# This pulls in /usr/bin/python3 +BuildRequires: python3-devel + +%ifarch %{valgrind_arches} +# Enable extra functionality when run the LLVM JIT under valgrind. +BuildRequires: valgrind-devel +%endif + +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description +LLVM is a compiler infrastructure designed for compile-time, link-time, +runtime, and idle-time optimization of programs from arbitrary programming +languages. The compiler infrastructure includes mirror sets of programming +tools as well as libraries with equivalent functionality. + +%package libs +Summary: LLVM shared libraries +Obsoletes: clang-libs = %{maj_ver}.%{min_ver} +Provides: clang-libs = %{version}-%{release} +Provides: clang-libs%{?_isa} = %{version}-%{release} + +Obsoletes: llvm-libs = %{maj_ver}.%{min_ver} +Provides: llvm-libs = %{version}-%{release} +Provides: llvm-libs%{?_isa} = %{version}-%{release} + +%description libs +Shared libraries for the LLVM compiler infrastructure. + +%prep +%setup -T -q -b 2 -n cmake-%{version}.src +cd .. +mv cmake-%{version}.src cmake + +%setup -T -q -b 1 -n clang-%{version}.src +%autopatch -m100 -p2 +cd .. +mv clang-%{version}.src clang + +%setup -q -n llvm-%{version}.src +%autopatch -M100 -p2 + + +%build + +%ifarch s390 %ix86 +# Decrease debuginfo verbosity to reduce memory consumption during final library linking +%global optflags %(echo %{optflags} | sed 's/-g /-g1 /') +%endif + +cd .. + +mkdir llvm-build +pushd llvm-build + +# force off shared libs as cmake macros turns it on. +%cmake ../llvm-%{version}.src -G Ninja \ + -B . \ + -DBUILD_SHARED_LIBS:BOOL=OFF \ + -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON \ +%ifarch ppc64le + -DCMAKE_BUILD_TYPE=Release \ +%else + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ +%endif +%ifarch s390 %ix86 + -DCMAKE_C_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \ + -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="%{optflags} -DNDEBUG" \ +%endif + \ + -DLLVM_TARGETS_TO_BUILD="X86;AMDGPU;PowerPC;NVPTX;SystemZ;AArch64;ARM;Mips;BPF;WebAssembly" \ + -DLLVM_ENABLE_LIBCXX:BOOL=OFF \ + -DLLVM_ENABLE_ZLIB:BOOL=ON \ + -DLLVM_ENABLE_FFI:BOOL=ON \ + -DLLVM_ENABLE_RTTI:BOOL=ON \ + -DLLVM_BUILD_LLVM_DYLIB:BOOL=ON \ + -DLLVM_DYLIB_EXPORT_ALL:BOOL=ON \ + -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ + -DLLVM_INCLUDE_TESTS=OFF \ + -DLLVM_INCLUDE_BENCHMARKS=OFF \ + -DLLVM_ENABLE_PROJECTS="clang" \ + -DCMAKE_INSTALL_PREFIX=%{install_prefix} + + +DESTDIR=%{buildroot} %__ninja %__ninja_common_opts + +popd + +%install +cd .. + +DESTDIR=%{buildroot} %__ninja %__ninja_common_opts -l 8 -C llvm-build \ + install-LLVM install-libclang install-clang-cpp + +# Create ld.so.conf.d entry +mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d +cat >> %{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf << EOF +%{pkg_libdir} +EOF + +# Remove unversioned symlinks +rm -Rf %{buildroot}%{pkg_libdir}/libclang.so +rm -Rf %{buildroot}%{pkg_libdir}/libclang-cpp.so + +%check + +%post libs -p /sbin/ldconfig +%postun libs -p /sbin/ldconfig + +%files + +%files libs +%config(noreplace) %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf +%{pkg_libdir}/libLLVM-%{maj_ver}.so +%{pkg_libdir}/libclang*.so.* +