nixpkgs/pkgs/by-name/ro/root/Fix-find_package-LLVM-overwriting-LLVM_LINK_LLVM_DYLIB.patch
2025-05-26 22:56:05 -04:00

56 lines
2.0 KiB
Diff

From a4ed1625ee4e74c4e8664742165d6a485b737d57 Mon Sep 17 00:00:00 2001
From: Jonas Rembser <jonas.rembser@cern.ch>
Date: Tue, 22 Apr 2025 12:36:46 +0200
Subject: [PATCH] Work around find_package(LLVM) overwriting
LLVM_LINK_LLVM_DYLIB
---
clang/CMakeLists.txt | 10 ++++++++++
.../clang/cmake/modules/ClangConfig.cmake.in | 6 ++++++
2 files changed, 16 insertions(+)
diff --git a/clang/CMakeLists.txt b/clang/CMakeLists.txt
index 5f2b7f064d..a9581d081e 100644
--- a/clang/CMakeLists.txt
+++ b/clang/CMakeLists.txt
@@ -28,7 +28,17 @@ if(CLANG_BUILT_STANDALONE)
mark_as_advanced(LLVM_ENABLE_ASSERTIONS)
endif()
+ # Remember current value of LLVM_LINK_LLVM_DYLIB and reset later, because
+ # find_package(LLVM) is overwriting it without a good reason. See:
+ # https://github.com/llvm/llvm-project/pull/135570
+ if(DEFINED LLVM_LINK_LLVM_DYLIB)
+ set(llvm_link_llvm_dylib ${LLVM_LINK_LLVM_DYLIB})
+ endif()
find_package(LLVM REQUIRED HINTS "${LLVM_CMAKE_DIR}")
+ if(DEFINED llvm_link_llvm_dylib)
+ set(LLVM_LINK_LLVM_DYLIB ${llvm_link_llvm_dylib})
+ endif()
+
list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}")
# Turn into CACHE PATHs for overwritting
diff --git a/clang/cmake/modules/ClangConfig.cmake.in b/clang/cmake/modules/ClangConfig.cmake.in
index 5f67681649..36a34ddab2 100644
--- a/clang/cmake/modules/ClangConfig.cmake.in
+++ b/clang/cmake/modules/ClangConfig.cmake.in
@@ -3,8 +3,14 @@
@CLANG_CONFIG_CODE@
set(LLVM_VERSION @LLVM_VERSION_MAJOR@.@LLVM_VERSION_MINOR@.@LLVM_VERSION_PATCH@)
+
+# ROOT calls find_package(LLVM) before find_package(Clang), and
+# find_package(LLVM) is overwriting LLVM_LINK_LLVM_DYLIB without a good
+# reason. See: https://github.com/llvm/llvm-project/pull/135570
+# So we need to set it to what it needs to be for ROOT.
find_package(LLVM ${LLVM_VERSION} EXACT REQUIRED CONFIG
HINTS "@CLANG_CONFIG_LLVM_CMAKE_DIR@")
+set(LLVM_LINK_LLVM_DYLIB OFF)
set(CLANG_EXPORTED_TARGETS "@CLANG_EXPORTS@")
set(CLANG_CMAKE_DIR "@CLANG_CONFIG_CMAKE_DIR@")
--
2.49.0