diff --git a/build_files/cmake/platform/platform_unix.cmake b/build_files/cmake/platform/platform_unix.cmake index 798dbb310e8..19d777f252c 100644 --- a/build_files/cmake/platform/platform_unix.cmake +++ b/build_files/cmake/platform/platform_unix.cmake @@ -928,6 +928,27 @@ elseif(CMAKE_C_COMPILER_ID MATCHES "Clang") unset(MOLD_BIN) endif() + if(WITH_LINKER_LLD AND _IS_LINKER_DEFAULT) + find_program(LLD_BIN "ld.lld") + mark_as_advanced(LLD_BIN) + if(NOT LLD_BIN) + message(STATUS "The \"ld.lld\" binary could not be found, using system linker.") + set(WITH_LINKER_LLD OFF) + else() + if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0) + string(APPEND CMAKE_EXE_LINKER_FLAGS " --ld-path=\"${LLD_BIN}\"") + string(APPEND CMAKE_SHARED_LINKER_FLAGS " --ld-path=\"${LLD_BIN}\"") + string(APPEND CMAKE_MODULE_LINKER_FLAGS " --ld-path=\"${LLD_BIN}\"") + else() + string(APPEND CMAKE_EXE_LINKER_FLAGS " -fuse-ld=\"${LLD_BIN}\"") + string(APPEND CMAKE_SHARED_LINKER_FLAGS " -fuse-ld=\"${LLD_BIN}\"") + string(APPEND CMAKE_MODULE_LINKER_FLAGS " -fuse-ld=\"${LLD_BIN}\"") + endif() + set(_IS_LINKER_DEFAULT OFF) + endif() + unset(LLD_BIN) + endif() + # Intel C++ Compiler elseif(CMAKE_C_COMPILER_ID MATCHES "Intel") # think these next two are broken