From: Joel Rosdahl Date: Fri, 30 Jul 2021 18:10:50 +0000 (+0200) Subject: build: Only probe for faster linker in dev build mode and on x86_64 X-Git-Tag: v4.4~67 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9d68f0542d70477f9eaf6292367da53643af0d6d;p=thirdparty%2Fccache.git build: Only probe for faster linker in dev build mode and on x86_64 Using Gold or LLD on less common platforms such as MIPS may not be a good idea (see e.g. ), so be conservative and only probe for a faster linker on platforms that likely don’t have toolchain bugs. Also, using a faster linker is in practice only relevant for dev builds. Fixes #907. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 2c6c4511a..4cf2e5f3e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,9 +66,7 @@ endif() message(STATUS "Ccache dev mode: ${CCACHE_DEV_MODE}") include(UseCcache) -if(NOT MSVC) - include(UseFastestLinker) -endif() +include(UseFastestLinker) include(StandardSettings) include(StandardWarnings) include(CIBuildType) diff --git a/cmake/UseFastestLinker.cmake b/cmake/UseFastestLinker.cmake index ffc26ea29..9b4fdd6ab 100644 --- a/cmake/UseFastestLinker.cmake +++ b/cmake/UseFastestLinker.cmake @@ -1,3 +1,23 @@ +if(NOT CCACHE_DEV_MODE) + # For ccache, using a faster linker is in practice only relevant to reduce the + # compile-link-test cycle for developers, so use the standard linker for + # non-developer builds. + return() +endif() + +if(MSVC) + message(STATUS "Using standard linker for MSVC") + return() +endif() + +if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64) + # Be conservative and only probe for a faster linker on platforms that likely + # don't have toolchain bugs. See for example + # . + message(STATUS "Not probing for faster linker on ${CMAKE_SYSTEM_PROCESSOR}") + return() +endif() + function(check_linker linker) string(TOUPPER ${linker} upper_linker) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakefiles/CMakeTmp/main.c" "int main() { return 0; }")