summaryrefslogtreecommitdiffstats
path: root/build/build-clang/llvmorg-16-init-15447-g8d3ab9dfc4d4.patch
diff options
context:
space:
mode:
Diffstat (limited to 'build/build-clang/llvmorg-16-init-15447-g8d3ab9dfc4d4.patch')
-rw-r--r--build/build-clang/llvmorg-16-init-15447-g8d3ab9dfc4d4.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/build/build-clang/llvmorg-16-init-15447-g8d3ab9dfc4d4.patch b/build/build-clang/llvmorg-16-init-15447-g8d3ab9dfc4d4.patch
new file mode 100644
index 0000000000..76bbebdf72
--- /dev/null
+++ b/build/build-clang/llvmorg-16-init-15447-g8d3ab9dfc4d4.patch
@@ -0,0 +1,48 @@
+From 8d3ab9dfc4d49062e045d6d5db419975b81da7e4 Mon Sep 17 00:00:00 2001
+From: serge-sans-paille <sguelton@mozilla.com>
+Date: Thu, 22 Dec 2022 10:48:37 +0100
+Subject: [PATCH] Properly support LLVM_ENABLE_LLD on Windows
+
+Currently, setting -DLLVM_ENABLE_LLD=ON on windows also requires setting
+-DCMAKE_LINKER=lld-link.exe. This is both misleading and redundant.
+
+Fix this by trying to find llvm-link.exe when -DLLVM_ENABLE_LLD=ON is
+set and CMAKE_LINKER is not, and aborting otherwise.
+
+Differential Revision: https://reviews.llvm.org/D140534
+---
+ llvm/cmake/modules/HandleLLVMOptions.cmake | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake
+index 7f141d93d4c2..4f4a64bc02eb 100644
+--- a/llvm/cmake/modules/HandleLLVMOptions.cmake
++++ b/llvm/cmake/modules/HandleLLVMOptions.cmake
+@@ -293,10 +293,23 @@ if( LLVM_ENABLE_LLD )
+ if ( LLVM_USE_LINKER )
+ message(FATAL_ERROR "LLVM_ENABLE_LLD and LLVM_USE_LINKER can't be set at the same time")
+ endif()
++
+ # In case of MSVC cmake always invokes the linker directly, so the linker
+ # should be specified by CMAKE_LINKER cmake variable instead of by -fuse-ld
+ # compiler option.
+- if ( NOT MSVC )
++ if ( MSVC )
++ if(NOT CMAKE_LINKER MATCHES "lld-link")
++ get_filename_component(CXX_COMPILER_DIR ${CMAKE_CXX_COMPILER} DIRECTORY)
++ get_filename_component(C_COMPILER_DIR ${CMAKE_C_COMPILER} DIRECTORY)
++ find_program(LLD_LINK NAMES "lld-link" "lld-link.exe" HINTS ${CXX_COMPILER_DIR} ${C_COMPILER_DIR} DOC "lld linker")
++ if(NOT LLD_LINK)
++ message(FATAL_ERROR
++ "LLVM_ENABLE_LLD set, but cannot find lld-link. "
++ "Consider setting CMAKE_LINKER to lld-link path.")
++ endif()
++ set(CMAKE_LINKER ${LLD_LINK})
++ endif()
++ else()
+ set(LLVM_USE_LINKER "lld")
+ endif()
+ endif()
+--
+2.38.1
+