echo "CC=clang-${{ matrix.config.version }}" >> $GITHUB_ENV
echo "CXX=clang++-${{ matrix.config.version }}" >> $GITHUB_ENV
- sudo apt install -y clang-${{ matrix.config.version }} g++-multilib
+ sudo apt install -y clang-${{ matrix.config.version }} g++-multilib lld-${{ matrix.config.version }}
fi
elif [ "${{ runner.os }}" = "macOS" ]; then
HOMEBREW_NO_AUTO_UPDATE=1 HOMEBREW_NO_INSTALL_CLEANUP=1 \
return()
endif()
- set(use_default_linker 1)
+ # prefer an lld that matches the clang version
+ if(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION MATCHES "^([0-9]*)\\.")
+ check_linker(lld-${CMAKE_MATCH_1})
+ if(HAVE_LD_LLD-${CMAKE_MATCH_1})
+ link_libraries("-fuse-ld=lld-${CMAKE_MATCH_1}")
+ message(STATUS "Using lld-${CMAKE_MATCH_1} linker")
+ return()
+ endif()
+ endif()
+
check_linker(lld)
if(HAVE_LD_LLD)
link_libraries("-fuse-ld=lld")
- set(use_default_linker 0)
message(STATUS "Using lld linker")
- else()
- check_linker(gold)
- if(HAVE_LD_GOLD)
- link_libraries("-fuse-ld=gold")
- set(use_default_linker 0)
- message(STATUS "Using gold linker")
- endif()
+ return()
endif()
- if(use_default_linker)
- message(STATUS "Using default linker")
+
+ check_linker(gold)
+ if(HAVE_LD_GOLD)
+ link_libraries("-fuse-ld=gold")
+ message(STATUS "Using gold linker")
+ return()
endif()
+
+ message(STATUS "Using default linker")
endfunction()
option(USE_FASTER_LINKER "Use the lld or gold linker instead of the default for faster linking" TRUE)