From 1f3b5b6aca7cb9f4de131e804d4472f6297658a2 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Thu, 5 Mar 2026 10:34:03 -0700 Subject: [PATCH 1/3] Update GTest CMake for use w/ sanitizers Ensure that GoogleTest is fetched and built from source with the same flags as the library when building with the sanitizers enabled. Without this, we don't see useful output when there are failures. --- cmake/AISUseGTest.cmake | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/cmake/AISUseGTest.cmake b/cmake/AISUseGTest.cmake index cea7cf65..64139dc0 100644 --- a/cmake/AISUseGTest.cmake +++ b/cmake/AISUseGTest.cmake @@ -4,25 +4,40 @@ include(FetchContent) +# This line is used (or not) in FetchContent_Declare to determine +# if we check for a system GoogleTest install first. When building +# with the sanitizers, we HAVE to build GoogleTest from source. +# # lint_cmake: -readability/wonkycase -FetchContent_Declare( - googletest - URL https://github.com/google/googletest/releases/download/v1.17.0/googletest-1.17.0.tar.gz - DOWNLOAD_EXTRACT_TIMESTAMP true - FIND_PACKAGE_ARGS NAMES GTest - SYSTEM -) +if(AIS_USE_SANITIZERS) + FetchContent_Declare( + googletest + URL https://github.com/google/googletest/releases/download/v1.17.0/googletest-1.17.0.tar.gz + DOWNLOAD_EXTRACT_TIMESTAMP true + SYSTEM + ) +else() + FetchContent_Declare( + googletest + URL https://github.com/google/googletest/releases/download/v1.17.0/googletest-1.17.0.tar.gz + DOWNLOAD_EXTRACT_TIMESTAMP true + FIND_PACKAGE_ARGS NAMES GTest # <-- Different + SYSTEM + ) +endif() +# lint_cmake: +readability/wonkycase -set(INSTALL_GTEST OFF CACHE BOOL "Don't install gtest.") -set(GTEST_HAS_ABSL OFF CACHE BOOL "Don't use abseil for GTest.") +set(INSTALL_GTEST OFF CACHE BOOL "Don't install GoogleTest") +set(GTEST_HAS_ABSL OFF CACHE BOOL "Don't use Abseil for GoogleTest") +# lint_cmake: -readability/wonkycase FetchContent_MakeAvailable(googletest) # lint_cmake: +readability/wonkycase -if(rocm-cmake_SOURCE_DIR) - message(STATUS "Using fetched googletest.") +if(googletest_SOURCE_DIR) + message(STATUS "Using fetched GoogleTest") else() - message(STATUS "Using system googletest.") + message(STATUS "Using system GoogleTest") endif() include(GoogleTest) From 36eaea79181866d9529d5f55bdb1510723e2589f Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Thu, 5 Mar 2026 10:48:03 -0700 Subject: [PATCH 2/3] Expand GTest build to other sanitizers --- cmake/AISUseGTest.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/AISUseGTest.cmake b/cmake/AISUseGTest.cmake index 64139dc0..d80afeee 100644 --- a/cmake/AISUseGTest.cmake +++ b/cmake/AISUseGTest.cmake @@ -9,7 +9,7 @@ include(FetchContent) # with the sanitizers, we HAVE to build GoogleTest from source. # # lint_cmake: -readability/wonkycase -if(AIS_USE_SANITIZERS) +if(AIS_USE_SANITIZERS OR AIS_USE_INTEGER_SANITIZER OR AIS_USE_THREAD_SANITIZER) FetchContent_Declare( googletest URL https://github.com/google/googletest/releases/download/v1.17.0/googletest-1.17.0.tar.gz From c60dbb2f785f9e4bab80b4bb8445519bf84b82b1 Mon Sep 17 00:00:00 2001 From: Dana Robinson Date: Thu, 5 Mar 2026 11:25:00 -0700 Subject: [PATCH 3/3] Use a variable to avoid duplicate call --- cmake/AISUseGTest.cmake | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/cmake/AISUseGTest.cmake b/cmake/AISUseGTest.cmake index d80afeee..50e0ad8e 100644 --- a/cmake/AISUseGTest.cmake +++ b/cmake/AISUseGTest.cmake @@ -7,24 +7,20 @@ include(FetchContent) # This line is used (or not) in FetchContent_Declare to determine # if we check for a system GoogleTest install first. When building # with the sanitizers, we HAVE to build GoogleTest from source. -# -# lint_cmake: -readability/wonkycase if(AIS_USE_SANITIZERS OR AIS_USE_INTEGER_SANITIZER OR AIS_USE_THREAD_SANITIZER) - FetchContent_Declare( - googletest - URL https://github.com/google/googletest/releases/download/v1.17.0/googletest-1.17.0.tar.gz - DOWNLOAD_EXTRACT_TIMESTAMP true - SYSTEM - ) + set(AIS_LOCAL_GTEST_CHECK "") else() - FetchContent_Declare( - googletest - URL https://github.com/google/googletest/releases/download/v1.17.0/googletest-1.17.0.tar.gz - DOWNLOAD_EXTRACT_TIMESTAMP true - FIND_PACKAGE_ARGS NAMES GTest # <-- Different - SYSTEM - ) + set(AIS_LOCAL_GTEST_CHECK FIND_PACKAGE_ARGS NAMES GTest) endif() + +# lint_cmake: -readability/wonkycase +FetchContent_Declare( + googletest + URL https://github.com/google/googletest/releases/download/v1.17.0/googletest-1.17.0.tar.gz + DOWNLOAD_EXTRACT_TIMESTAMP true + ${AIS_LOCAL_GTEST_CHECK} + SYSTEM +) # lint_cmake: +readability/wonkycase set(INSTALL_GTEST OFF CACHE BOOL "Don't install GoogleTest")