diff --git a/0001-PATCH-clang-Reorganize-gtest-integration.patch b/0001-PATCH-clang-Reorganize-gtest-integration.patch new file mode 100644 index 0000000000000000000000000000000000000000..673215ac80e2a2f4cb56bbfb74fbc9859b757016 --- /dev/null +++ b/0001-PATCH-clang-Reorganize-gtest-integration.patch @@ -0,0 +1,42 @@ +From c6b921c8d833546946b70a8c2640032fd7c62461 Mon Sep 17 00:00:00 2001 +From: serge-sans-paille +Date: Thu, 25 Feb 2021 14:04:52 +0100 +Subject: [PATCH 1/6] [PATCH][clang] Reorganize gtest integration + +--- + CMakeLists.txt | 12 +++++------- + 1 file changed, 5 insertions(+), 7 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9e74014..0185276 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -153,12 +153,6 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR ) + set(LLVM_UTILS_PROVIDED ON) + set(CLANG_TEST_DEPS FileCheck count not) + endif() +- set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest) +- if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h +- AND NOT EXISTS ${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX} +- AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt) +- add_subdirectory(${UNITTEST_DIR} utils/unittest) +- endif() + else() + # Seek installed Lit. + find_program(LLVM_LIT +@@ -537,7 +531,11 @@ endif() + + + if( CLANG_INCLUDE_TESTS ) +- if(EXISTS ${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest/include/gtest/gtest.h) ++ set(UNITTEST_DIR ${LLVM_MAIN_SRC_DIR}/utils/unittest) ++ if(EXISTS ${UNITTEST_DIR}/googletest/include/gtest/gtest.h ++ AND NOT EXISTS ${LLVM_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX} ++ AND EXISTS ${UNITTEST_DIR}/CMakeLists.txt) ++ add_subdirectory(${UNITTEST_DIR} utils/unittest) + add_subdirectory(unittests) + list(APPEND CLANG_TEST_DEPS ClangUnitTests) + list(APPEND CLANG_TEST_PARAMS +-- +1.8.3.1 + diff --git a/0003-PATCH-clang-Don-t-install-static-libraries.patch b/0001-clang-Don-t-install-static-libraries.patch similarity index 68% rename from 0003-PATCH-clang-Don-t-install-static-libraries.patch rename to 0001-clang-Don-t-install-static-libraries.patch index bc8fa51fbe7f00ff102443a4098f0b12c1c6c1db..f5059b5e6ea5c2e539eca121ed1b5662571854f6 100644 --- a/0003-PATCH-clang-Don-t-install-static-libraries.patch +++ b/0001-clang-Don-t-install-static-libraries.patch @@ -1,16 +1,16 @@ -From 88704fc2eabb9dd19a9c3eb81a9b3dc37d95651c Mon Sep 17 00:00:00 2001 +From 8097a9d4295dbc39cbd541ccace7bc5884852366 Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Fri, 31 Jan 2020 11:04:57 -0800 -Subject: [PATCH][clang] Don't install static libraries +Subject: [PATCH] clang: Don't install static libraries --- clang/cmake/modules/AddClang.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/clang/cmake/modules/AddClang.cmake b/clang/cmake/modules/AddClang.cmake -index 5752f4277444..0f52822d91f0 100644 ---- a/clang/cmake/modules/AddClang.cmake -+++ b/clang/cmake/modules/AddClang.cmake +diff --git clang-a/cmake/modules/AddClang.cmake clang-b/cmake/modules/AddClang.cmake +index 704278a0e93..1737b24a2bc 100644 +--- clang-a/cmake/modules/AddClang.cmake ++++ clang-b/cmake/modules/AddClang.cmake @@ -113,7 +113,7 @@ macro(add_clang_library name) if(TARGET ${lib}) target_link_libraries(${lib} INTERFACE ${LLVM_COMMON_LIBS}) @@ -21,5 +21,5 @@ index 5752f4277444..0f52822d91f0 100644 install(TARGETS ${lib} COMPONENT ${lib} -- -2.30.2 +2.18.1 diff --git a/0002-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch b/0002-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch new file mode 100644 index 0000000000000000000000000000000000000000..14f6d4822e1a91526b28622802b9e2e493847027 --- /dev/null +++ b/0002-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch @@ -0,0 +1,40 @@ +From 07b062e1f7c3359550aa8c0a7b86f6054971439d Mon Sep 17 00:00:00 2001 +From: serge-sans-paille +Date: Thu, 25 Feb 2021 14:09:29 +0100 +Subject: [PATCH 2/6] [PATCH][clang] Make -funwind-tables the default on all + archs + +--- + lib/Driver/ToolChain.cpp | 2 +- + lib/Driver/ToolChains/Gnu.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/Driver/ToolChain.cpp b/lib/Driver/ToolChain.cpp +index b2ddef1..715b323 100644 +--- a/lib/Driver/ToolChain.cpp ++++ b/lib/Driver/ToolChain.cpp +@@ -257,7 +257,7 @@ std::string ToolChain::getInputFilename(const InputInfo &Input) const { + } + + bool ToolChain::IsUnwindTablesDefault(const ArgList &Args) const { +- return false; ++ return true; + } + + Tool *ToolChain::getClang() const { +diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp +index 1d8a3cd..5deeb10 100644 +--- a/lib/Driver/ToolChains/Gnu.cpp ++++ b/lib/Driver/ToolChains/Gnu.cpp +@@ -2713,7 +2713,7 @@ bool Generic_GCC::IsUnwindTablesDefault(const ArgList &Args) const { + case llvm::Triple::x86_64: + return true; + default: +- return false; ++ return true; + } + } + +-- +1.8.3.1 + diff --git a/0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch b/0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch deleted file mode 100644 index 113f2a7b8dc6f87615da6b7312c431197a23eeae..0000000000000000000000000000000000000000 --- a/0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 49f827b09db549de62dcaf8b90b3fcb3e08c0ee5 Mon Sep 17 00:00:00 2001 -From: Serge Guelton -Date: Mon, 6 Mar 2023 12:37:48 +0100 -Subject: [PATCH] Make -funwind-tables the default on all archs - ---- - clang/lib/Driver/ToolChains/Gnu.cpp | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp -index 24fbdcffc07b..8fed46b49515 100644 ---- a/clang/lib/Driver/ToolChains/Gnu.cpp -+++ b/clang/lib/Driver/ToolChains/Gnu.cpp -@@ -2904,6 +2904,10 @@ Generic_GCC::getDefaultUnwindTableLevel(const ArgList &Args) const { - case llvm::Triple::riscv64: - case llvm::Triple::x86: - case llvm::Triple::x86_64: -+ // Enable -funwind-tables on all architectures supported by Fedora: -+ // rhbz#1655546 -+ case llvm::Triple::systemz: -+ case llvm::Triple::arm: - return UnwindTableLevel::Asynchronous; - default: - return UnwindTableLevel::None; --- -2.39.1 - diff --git a/download b/download index e05d2e8f9d8d27f13535218c2f1d2e60dfbd57e0..4a990e21fdb8024bb9adaf1f06b7ba80aae24370 100644 --- a/download +++ b/download @@ -1,3 +1,3 @@ -52ff9f49e064860445474aa21e4a7e40 clang-17.0.6.src.tar.xz -4fa291f1b78738808af4f804bb134259 cmake-17.0.6.src.tar.xz -fd7fc891907e14f8e0ff7e3f87cc89a4 llvm-17.0.6.src.tar.xz +a6d0141e50b48f5e60c682277dac83b4 clang-15.0.7.src.tar.xz +5be9535f0b93cb6232d0171a8abb3137 cmake-15.0.7.src.tar.xz +c77db4c71e1eb267358204dffe2c6e10 llvm-15.0.7.src.tar.xz diff --git a/llvm-compat.spec b/llvm-compat.spec index 860553ca50d0caa7ec58e96622249c606a5c7eee..dce47e1d25032f893d9f1ac52deb62bd0c796ade 100644 --- a/llvm-compat.spec +++ b/llvm-compat.spec @@ -1,7 +1,7 @@ -%global maj_ver 17 +%global maj_ver 15 %global min_ver 0 -%global patch_ver 6 -%global baserelease 3 +%global patch_ver 7 +%global baserelease 1 # Limit build jobs on ppc64 systems to avoid running out of memory. %global _smp_mflags -j8 @@ -9,6 +9,12 @@ %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-compat Version: %{maj_ver}.%{min_ver}.%{patch_ver} Release: %{baserelease}%{?dist} @@ -23,10 +29,11 @@ Source2: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{versio # LLVM Patches: # Clang Patches: -Patch102: 0003-PATCH-Make-funwind-tables-the-default-on-all-archs.patch +Patch101: 0001-PATCH-clang-Reorganize-gtest-integration.patch +Patch102: 0002-PATCH-clang-Make-funwind-tables-the-default-on-all-a.patch # Not Upstream -Patch115: 0003-PATCH-clang-Don-t-install-static-libraries.patch +Patch115: 0001-clang-Don-t-install-static-libraries.patch BuildRequires: gcc @@ -55,30 +62,19 @@ tools as well as libraries with equivalent functionality. %package libs Summary: LLVM shared libraries -#Obsoletes: clang-libs = %{version} +Obsoletes: clang-libs = %{version} Obsoletes: llvm-libs = %{version} %description libs Shared libraries for the LLVM compiler infrastructure. -%package devel -Summary: Libraries and header files for LLVM - -Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: %{name}-libs%{?_isa} = %{version}-%{release} - -%description devel -This package contains library and header files needed to develop new native -programs that use the LLVM 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 +%autopatch -m100 -p1 cd .. mv clang-%{version}.src clang @@ -101,7 +97,6 @@ pushd llvm-build # force off shared libs as cmake macros turns it on. %cmake ../llvm-%{version}.src -G Ninja \ -DBUILD_SHARED_LIBS:BOOL=OFF \ - -DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON \ %ifarch ppc64le -DCMAKE_BUILD_TYPE=Release \ %else @@ -113,7 +108,6 @@ pushd llvm-build %endif \ -DLLVM_TARGETS_TO_BUILD="X86;AMDGPU;PowerPC;NVPTX;SystemZ;AArch64;ARM;Mips;BPF;WebAssembly" \ - -DLLVM_DISTRIBUTION_COMPONENTS="LLVM;libclang;llvm-config;llvm-headers;libclang-headers;cmake-exports;clang-cmake-exports;clang-headers;clang-cpp;clang-resource-headers" \ -DLLVM_ENABLE_LIBCXX:BOOL=OFF \ -DLLVM_ENABLE_ZLIB:BOOL=ON \ -DLLVM_ENABLE_FFI:BOOL=ON \ @@ -127,14 +121,20 @@ pushd llvm-build -DCMAKE_INSTALL_PREFIX=%{install_prefix} -DESTDIR=%{buildroot} %__ninja %__ninja_common_opts distribution +DESTDIR=%{buildroot} %__ninja %__ninja_common_opts popd +# Remove all static archives to avoid running out of disk space on aarch64. +find . -iname '*.a' -delete + %install cd .. -DESTDIR=%{buildroot} %__ninja %__ninja_common_opts -l 8 -C llvm-build install-distribution +DESTDIR=%{buildroot} %__ninja %__ninja_common_opts -l 8 install-LLVM -C llvm-build + +mkdir -p %{buildroot}%{pkg_libdir} +install llvm-build/lib/*.so.* %{buildroot}%{pkg_libdir} # Create ld.so.conf.d entry mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d @@ -142,6 +142,10 @@ cat >> %{buildroot}%{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf << EOF %{pkg_libdir} EOF +for f in libLTO.so libRemarks.so; do + rm -Rf %{buildroot}%{pkg_libdir}/$f.%{maj_ver} +done + %check %post libs -p /sbin/ldconfig @@ -152,42 +156,12 @@ EOF %files libs %config(noreplace) %{_sysconfdir}/ld.so.conf.d/%{name}-%{_arch}.conf %{pkg_libdir}/libLLVM-%{maj_ver}.so -%{pkg_libdir}/libLLVM-%{version}.so %{pkg_libdir}/libclang*.so.* -%{pkg_libdir}/clang/%{maj_ver}/ - -%files devel -%dir %{install_prefix}/bin/ -%{install_prefix}/include/ -%{install_prefix}/bin/llvm-config -%{pkg_libdir}/cmake/llvm/ -%{pkg_libdir}/cmake/clang/ -%{pkg_libdir}/libLLVM.so -%{pkg_libdir}/libclang-cpp.so -%{pkg_libdir}/libclang.so +%ifnarch %ix86 +%{pkg_libdir}/libclang-cpp*.so.%{maj_ver} +%endif %changelog -* Fri Aug 16 2024 Tom Stellard - 17.0.6-3 -- Re-enable debuginfo on ppc64le - -* Tue Jul 30 2024 Tom Stellard - 17.0.6-2 -- Add devel package - -* Fri Apr 19 2024 Tom Stellard - 17.0.6-1 -- 17.0.6 Release - -* Tue Oct 17 2023 Nikita Popov - 16.0.6-4 -- Use install targets for clang as well - -* Mon Oct 16 2023 Nikita Popov - 16.0.6-3 -- Only skip install rpath - -* Fri Oct 13 2023 Nikita Popov - 16.0.6-2 -- Disable rpath - -* Wed Oct 04 2023 Nikita Popov - 16.0.6-1 -- 16.0.6 Release - * Fri Apr 28 2023 Tom Stellard - 15.0.7-1 - 15.0.7 Release