diff options
Diffstat (limited to 'cmake/modules/buildtools/LLD.cmake')
-rw-r--r-- | cmake/modules/buildtools/LLD.cmake | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/cmake/modules/buildtools/LLD.cmake b/cmake/modules/buildtools/LLD.cmake new file mode 100644 index 0000000..e77009e --- /dev/null +++ b/cmake/modules/buildtools/LLD.cmake @@ -0,0 +1,22 @@ +if(ENABLE_LLD) + execute_process(COMMAND ${CMAKE_CXX_COMPILER} -fuse-ld=lld -Wl,--version ERROR_QUIET OUTPUT_VARIABLE LD_VERSION) + if(LD_VERSION MATCHES "LLD") + include(FindPackageHandleStandardArgs) + find_program(LLD_EXECUTABLE lld) + find_package_handle_standard_args(LLD REQUIRED_VARS LLD_EXECUTABLE) + + if(LLD_FOUND) + set(CMAKE_LINKER ${LLD_EXECUTABLE}) + set(CMAKE_CXX_LINK_FLAGS -fuse-ld=lld) + set(CMAKE_C_LINK_FLAGS -fuse-ld=lld) + set(CMAKE_EXE_LINKER_FLAGS "${LD_FLAGS} -fuse-ld=lld") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}") + message(STATUS "Linker: LLVM lld") + endif() + mark_as_advanced(LLD_EXECUTABLE CMAKE_LINKER) + + else() + message(FATAL_ERROR "LLVM lld linker not found") + endif() +endif() |