summaryrefslogtreecommitdiffstats
path: root/cmake/modules/buildtools/LLD.cmake
blob: e77009ef91fa96fe3ef7cc3866ea865b2f7cc5dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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()