[llvm] 8d3ab9d - Properly support LLVM_ENABLE_LLD on Windows
via llvm-commits
llvm-commits at lists.llvm.org
Thu Dec 22 11:07:43 PST 2022
Author: serge-sans-paille
Date: 2022-12-22T20:07:25+01:00
New Revision: 8d3ab9dfc4d49062e045d6d5db419975b81da7e4
URL: https://github.com/llvm/llvm-project/commit/8d3ab9dfc4d49062e045d6d5db419975b81da7e4
DIFF: https://github.com/llvm/llvm-project/commit/8d3ab9dfc4d49062e045d6d5db419975b81da7e4.diff
LOG: 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
Added:
Modified:
llvm/cmake/modules/HandleLLVMOptions.cmake
Removed:
################################################################################
diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake
index 7f141d93d4c2f..4f4a64bc02eb6 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()
More information about the llvm-commits
mailing list