diff --git a/0001-lldb-Change-LLVM_COMMON_CMAKE_UTILS-usage.patch b/0001-lldb-Change-LLVM_COMMON_CMAKE_UTILS-usage.patch deleted file mode 100644 index bebc548..0000000 --- a/0001-lldb-Change-LLVM_COMMON_CMAKE_UTILS-usage.patch +++ /dev/null @@ -1,30 +0,0 @@ -From fb389f0cd6b4e8996157fa7d7bc347fde7b43656 Mon Sep 17 00:00:00 2001 -From: Tulio Magno Quites Machado Filho -Date: Thu, 23 Mar 2023 16:06:10 -0300 -Subject: [PATCH] [lldb] Change LLVM_COMMON_CMAKE_UTILS usage - -Let LLVM_COMMON_CMAKE_UTILS store the directory where cmake modules are -available and stop assuming its directory structure. ---- - lldb/CMakeLists.txt | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/lldb/CMakeLists.txt b/lldb/CMakeLists.txt -index 20d584c48bad..7bad2a9928cd 100644 ---- a/lldb/CMakeLists.txt -+++ b/lldb/CMakeLists.txt -@@ -1,9 +1,9 @@ - cmake_minimum_required(VERSION 3.13.4) - - if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS) -- set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake) -+ set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/Modules) - endif() --include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake -+include(${LLVM_COMMON_CMAKE_UTILS}/CMakePolicy.cmake - NO_POLICY_SCOPE) - - # Add path for custom modules. --- -2.39.2 - diff --git a/0001-lldb-Fix-building-LLDB-standlone-without-framework.patch b/0001-lldb-Fix-building-LLDB-standlone-without-framework.patch new file mode 100644 index 0000000..5f257d6 --- /dev/null +++ b/0001-lldb-Fix-building-LLDB-standlone-without-framework.patch @@ -0,0 +1,40 @@ +From 6888de118707e6392b46073fc35738804f9f1d80 Mon Sep 17 00:00:00 2001 +From: Alex Langford +Date: Mon, 31 Jul 2023 16:30:17 -0700 +Subject: [PATCH] [lldb] Fix building LLDB standlone without framework + +In a809720102fae8d1b5a7073f99f9dae9395c5f41 I refactored some logic to +deal with the clang resource directory in standalone LLDB builds. +However, this logic escaped me because it only runs when you do not +build LLDB.framework. + +Differential Revision: https://reviews.llvm.org/D156763 +--- + lldb/source/API/CMakeLists.txt | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +diff --git a/lldb/source/API/CMakeLists.txt b/lldb/source/API/CMakeLists.txt +index a55754726c58..39ac451c471c 100644 +--- a/lldb/source/API/CMakeLists.txt ++++ b/lldb/source/API/CMakeLists.txt +@@ -204,13 +204,11 @@ else() + # When building the LLDB framework, this isn't necessary as there we copy everything we need into + # the framework (including the Clang resourece directory). + if(NOT LLDB_BUILD_FRAMEWORK) +- set(LLDB_CLANG_RESOURCE_DIR_PARENT "$/clang") +- file(MAKE_DIRECTORY "${LLDB_CLANG_RESOURCE_DIR_PARENT}") ++ set(LLDB_CLANG_RESOURCE_DIR "$/clang") + add_custom_command(TARGET liblldb POST_BUILD +- COMMENT "Linking Clang resource dir into LLDB build directory: ${LLDB_CLANG_RESOURCE_DIR_PARENT}" +- COMMAND ${CMAKE_COMMAND} -E make_directory "${LLDB_CLANG_RESOURCE_DIR_PARENT}" +- COMMAND ${CMAKE_COMMAND} -E create_symlink "${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}" +- "${LLDB_CLANG_RESOURCE_DIR_PARENT}/${LLDB_CLANG_RESOURCE_DIR_NAME}" ++ COMMENT "Linking Clang resource dir into LLDB build directory: ${LLDB_CLANG_RESOURCE_DIR}" ++ COMMAND ${CMAKE_COMMAND} -E create_symlink ++ "${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}" "${LLDB_CLANG_RESOURCE_DIR}" + ) + endif() + endif() +-- +2.41.0 + diff --git a/0001-lldb-NFCI-Change-logic-to-find-clang-resource-dir-in.patch b/0001-lldb-NFCI-Change-logic-to-find-clang-resource-dir-in.patch new file mode 100644 index 0000000..f636645 --- /dev/null +++ b/0001-lldb-NFCI-Change-logic-to-find-clang-resource-dir-in.patch @@ -0,0 +1,80 @@ +From a809720102fae8d1b5a7073f99f9dae9395c5f41 Mon Sep 17 00:00:00 2001 +From: Alex Langford +Date: Tue, 25 Jul 2023 15:38:04 -0700 +Subject: [PATCH] [lldb][NFCI] Change logic to find clang resource dir in + standalone builds + +As of 0beffb854209a41f31beb18f9631258349a99299 there is a CMake +function to actually calculate the relative path to the clang resource +directory. Currently we have some bespoke logic that looks in a few +places, but with this new function we should be able to eliminate some +complexity here. + +Also, I moved the functionality from LLDBConfig to LLDBStandalone since +it is only used in standalone builds. + +Differential Revision: https://reviews.llvm.org/D156270 +--- + lldb/cmake/modules/LLDBConfig.cmake | 24 ------------------------ + lldb/cmake/modules/LLDBStandalone.cmake | 13 +++++++++++++ + 2 files changed, 13 insertions(+), 24 deletions(-) + +diff --git a/lldb/cmake/modules/LLDBConfig.cmake b/lldb/cmake/modules/LLDBConfig.cmake +index 1393342dd5cb..ce90ecabc6a5 100644 +--- a/lldb/cmake/modules/LLDBConfig.cmake ++++ b/lldb/cmake/modules/LLDBConfig.cmake +@@ -282,30 +282,6 @@ if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) + endif() + endif() + +- +-# If LLDB is building against a prebuilt Clang, then the Clang resource +-# directory that LLDB is using for its embedded Clang instance needs to point +-# to the resource directory of the used Clang installation. +-if (NOT TARGET clang-resource-headers) +- set(LLDB_CLANG_RESOURCE_DIR_NAME "${LLVM_VERSION_MAJOR}") +- # Iterate over the possible places where the external resource directory +- # could be and pick the first that exists. +- foreach(CANDIDATE "${Clang_DIR}/../.." "${LLVM_DIR}" "${LLVM_LIBRARY_DIRS}" +- "${LLVM_BUILD_LIBRARY_DIR}" +- "${LLVM_LIBRARY_DIR}") +- # Build the resource directory path by appending 'clang/'. +- set(CANDIDATE_RESOURCE_DIR "${CANDIDATE}/clang/${LLDB_CLANG_RESOURCE_DIR_NAME}") +- if (IS_DIRECTORY "${CANDIDATE_RESOURCE_DIR}") +- set(LLDB_EXTERNAL_CLANG_RESOURCE_DIR "${CANDIDATE_RESOURCE_DIR}") +- break() +- endif() +- endforeach() +- +- if (NOT LLDB_EXTERNAL_CLANG_RESOURCE_DIR) +- message(FATAL_ERROR "Expected directory for clang-resource headers not found: ${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}") +- endif() +-endif() +- + # Find Apple-specific libraries or frameworks that may be needed. + if (APPLE) + if(NOT APPLE_EMBEDDED) +diff --git a/lldb/cmake/modules/LLDBStandalone.cmake b/lldb/cmake/modules/LLDBStandalone.cmake +index e9bcabcb63de..fd16716d7141 100644 +--- a/lldb/cmake/modules/LLDBStandalone.cmake ++++ b/lldb/cmake/modules/LLDBStandalone.cmake +@@ -128,3 +128,16 @@ endif() + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib${LLVM_LIBDIR_SUFFIX}) ++ ++# If LLDB is building against a prebuilt Clang, then the Clang resource ++# directory that LLDB is using for its embedded Clang instance needs to point to ++# the resource directory of the used Clang installation. ++if (NOT TARGET clang-resource-headers) ++ include(GetClangResourceDir) ++ get_clang_resource_dir(LLDB_EXTERNAL_CLANG_RESOURCE_DIR ++ PREFIX "${Clang_DIR}/../../../") ++ ++ if (NOT EXISTS ${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}) ++ message(FATAL_ERROR "Expected directory for clang-resource-headers not found: ${LLDB_EXTERNAL_CLANG_RESOURCE_DIR}") ++ endif() ++endif() +-- +2.41.0 + diff --git a/lldb.spec b/lldb.spec index 59f8b76..c44b6dd 100644 --- a/lldb.spec +++ b/lldb.spec @@ -1,27 +1,31 @@ %global toolchain clang -%global lldb_version 16.0.6 -%global lldb_srcdir %{name}-%{lldb_version}.src %global gts_version 13 +%global lldb_version 17.0.1 +#global rc_ver 4 +%global lldb_srcdir %{name}-%{lldb_version}%{?rc_ver:rc%{rc_ver}}.src Name: lldb -Version: %{lldb_version} +Version: %{lldb_version}%{?rc_ver:~rc%{rc_ver}} Release: 1%{?dist} Summary: Next generation high-performance debugger License: Apache-2.0 WITH LLVM-exception OR NCSA URL: http://lldb.llvm.org/ -Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{lldb_version}/%{lldb_srcdir}.tar.xz -Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{lldb_version}/%{lldb_srcdir}.tar.xz.sig +Source0: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{lldb_version}%{?rc_ver:-rc%{rc_ver}}/%{lldb_srcdir}.tar.xz +Source1: https://github.com/llvm/llvm-project/releases/download/llvmorg-%{lldb_version}%{?rc_ver:-rc%{rc_ver}}/%{lldb_srcdir}.tar.xz.sig Source2: release-keys.asc -Patch0: 0001-lldb-Change-LLVM_COMMON_CMAKE_UTILS-usage.patch +# Backports from LLVM 18. +Patch: 0001-lldb-NFCI-Change-logic-to-find-clang-resource-dir-in.patch +Patch: 0001-lldb-Fix-building-LLDB-standlone-without-framework.patch BuildRequires: clang BuildRequires: cmake BuildRequires: ninja-build BuildRequires: llvm-devel = %{version} BuildRequires: llvm-test = %{version} +BuildRequires: llvm-cmake-utils = %{version} BuildRequires: clang-devel = %{version} BuildRequires: ncurses-devel BuildRequires: swig @@ -68,6 +72,7 @@ The package contains the LLDB Python module. %autosetup -n %{lldb_srcdir} -p2 %build +%global _lto_cflags -flto=thin %ifarch %ix86 # Linking liblldb.so goes out of memory even with ThinLTO and a single link job. @@ -79,8 +84,7 @@ The package contains the LLDB Python module. -DCMAKE_SKIP_RPATH:BOOL=ON \ -DLLVM_LINK_LLVM_DYLIB:BOOL=ON \ -DLLVM_CONFIG:FILEPATH=/usr/bin/llvm-config-%{__isa_bits} \ - -DLLVM_COMMON_CMAKE_UTILS=%{_libdir}/cmake/llvm \ - \ + -DLLVM_COMMON_CMAKE_UTILS=%{_datadir}/llvm/cmake \ -DLLDB_DISABLE_CURSES:BOOL=OFF \ -DLLDB_DISABLE_LIBEDIT:BOOL=OFF \ -DLLDB_DISABLE_PYTHON:BOOL=OFF \ @@ -95,6 +99,7 @@ The package contains the LLDB Python module. -DPYTHON_VERSION_MINOR:STRING=$(%{__python3} -c "import sys; print(sys.version_info.minor)") \ -DLLVM_EXTERNAL_LIT=%{_bindir}/lit \ -DCLANG_LINK_CLANG_DYLIB=ON \ + -DCLANG_RESOURCE_DIR=$(realpath --relative-to=/usr/bin %{clang_resource_dir}) \ -DLLVM_LIT_ARGS="-sv \ --path %{_libdir}/llvm" \ @@ -140,6 +145,9 @@ rm -f %{buildroot}%{python3_sitearch}/six.* %{python3_sitearch}/lldb %changelog +* Wed Oct 04 2023 Timm Bäder - 17.0.1-1 +- Update to 17.0.1 + * Wed Jul 05 2023 Nikita Popov - 16.0.6-1 - Update to LLVM 16.0.6 diff --git a/sources b/sources index 1a37194..f504bdc 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (lldb-16.0.6.src.tar.xz) = 85c611c362d96b302df9b981bb9c8bd754938d0b55c5e24220f333300b48ac9bd3b7eb708be1f3ba9dcfbebe621e6562841b38d8458110452e5cc06c714e8d10 -SHA512 (lldb-16.0.6.src.tar.xz.sig) = bb93c93cfe082631dd00b3727ed6f36dc3ac450c331a8bf5444be947614e7409e7468021e2ae9155a5bad7e7166d7a6b12ea69692a89f2316ff2bb0d0e8200d7 +SHA512 (lldb-17.0.1.src.tar.xz.sig) = 1f23b078ff76f28ffd5c4454541f67ac0222a7deb00e5c70ae1dfe383e6f39996ed5f955b36a066d39a2c15b85417820a50a8e539c45fb4481144aff240db1aa +SHA512 (lldb-17.0.1.src.tar.xz) = 910eca8a96350b4ba1fd616c0fcf7e129c72751ec9efce5dfe1606f37227ff52f288ce444932f14b4bc48b4f75374081a90558948846278c70375a97d4d2bd91