From fbaa632c7fb5b4f23423eda8ebdde2a6925fe670 Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Thu, 21 May 2026 15:55:00 -0400 Subject: [PATCH] Do not apply LTO on GoogleTest executables Signed-off-by: Juan Cruz Viotti --- cmake/common/targets/googletest.cmake | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cmake/common/targets/googletest.cmake b/cmake/common/targets/googletest.cmake index 176d2872b..39cb9f22f 100644 --- a/cmake/common/targets/googletest.cmake +++ b/cmake/common/targets/googletest.cmake @@ -18,6 +18,14 @@ function(sourcemeta_googletest) target_link_libraries("${TARGET_NAME}" PRIVATE GTest::gtest GTest::gmock GTest::gtest_main) + + # Test executables are not shipped, so LTO buys nothing and significantly + # slows the link step (GCC's LTRANS phase serializes per executable) + if(SOURCEMETA_COMPILER_LLVM OR SOURCEMETA_COMPILER_GCC) + target_compile_options("${TARGET_NAME}" PRIVATE -fno-lto) + target_link_options("${TARGET_NAME}" PRIVATE -fno-lto) + endif() + add_test(NAME "${SOURCEMETA_GOOGLETEST_PROJECT}.${SOURCEMETA_GOOGLETEST_NAME}" COMMAND "${TARGET_NAME}" --gtest_brief=1) endfunction()