summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/UseFastestLinker.cmake25
1 files changed, 12 insertions, 13 deletions
diff --git a/cmake/UseFastestLinker.cmake b/cmake/UseFastestLinker.cmake
index c96639cb..8f392aac 100644
--- a/cmake/UseFastestLinker.cmake
+++ b/cmake/UseFastestLinker.cmake
@@ -11,20 +11,19 @@ function(use_fastest_linker)
message(WARNING "use_fastest_linker() disabled, as it is not called at the project top level")
return()
endif()
-
- find_program(FASTER_LINKER ld.lld)
- if(NOT FASTER_LINKER)
- find_program(FASTER_LINKER ld.gold)
- endif()
-
- if(FASTER_LINKER)
- # Note: Compiler flag -fuse-ld requires gcc 9 or clang 3.8.
- # Instead override CMAKE_CXX_LINK_EXECUTABLE directly.
- # By default CMake uses the compiler executable for linking.
- set(CMAKE_CXX_LINK_EXECUTABLE "${FASTER_LINKER} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")
- message_verbose("Using ${FASTER_LINKER} linker for faster linking")
+
+ find_program(HAS_LD_LLD ld.lld)
+ if(HAS_LD_LLD)
+ link_libraries(-fuse-ld=lld)
+ message_verbose("Using lld linker for faster linking")
else()
- message_verbose("Using default linker")
+ find_program(HAS_LD_GOLD ld.gold)
+ if(HAS_LD_GOLD)
+ link_libraries(-fuse-ld=gold)
+ message_verbose("Using gold linker for faster linking")
+ else()
+ message_verbose("Using default linker")
+ endif()
endif()
endfunction()