From 22cd66a286d52578de9ed9e052ba5f8b60ebdce1 Mon Sep 17 00:00:00 2001 From: Giulio Eulisse <10544+ktf@users.noreply.github.com> Date: Mon, 5 Oct 2026 20:16:16 +0200 Subject: [PATCH] Prevent broken tests related statements when BUILD_TESTING is OFF --- DataFormats/Detectors/Common/CMakeLists.txt | 2 +- Utilities/rANS/CMakeLists.txt | 4 ++++ cmake/O2AddTest.cmake | 14 ++++++++++---- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/DataFormats/Detectors/Common/CMakeLists.txt b/DataFormats/Detectors/Common/CMakeLists.txt index bbc0aaf9e8320..e96126c6adf7e 100644 --- a/DataFormats/Detectors/Common/CMakeLists.txt +++ b/DataFormats/Detectors/Common/CMakeLists.txt @@ -60,6 +60,6 @@ o2_add_test(CTFEntropyCoder COMPONENT_NAME DetectorsCommonDataFormats TARGETVARNAME TEST_CTF_ENTROPY_CODER LABELS detectorsbase) -if(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") +if(BUILD_TESTING AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") target_compile_options(${TEST_CTF_ENTROPY_CODER} PRIVATE -march=native) endif() diff --git a/Utilities/rANS/CMakeLists.txt b/Utilities/rANS/CMakeLists.txt index 710fe7879571c..d140fa0ef7d3f 100644 --- a/Utilities/rANS/CMakeLists.txt +++ b/Utilities/rANS/CMakeLists.txt @@ -51,6 +51,9 @@ if(${ENABLE_VTUNE_PROFILER}) target_link_libraries(${LIBRANS} INTERFACE PkgConfig::Vtune) endif() +# o2_add_test() returns early when BUILD_TESTING is off, so TARGETVARNAME is +# never set and the target_compile_options() below would see an empty target. +if(BUILD_TESTING) o2_add_test(Utils NAME ransUtils SOURCES test/test_ransUtils.cxx @@ -186,6 +189,7 @@ o2_add_test(Serialize TARGETVARNAME TEST_SERIALIZE LABELS utils) target_compile_options(${TEST_SERIALIZE} PRIVATE ${RANS_TEST_ARCH}) +endif() if (TARGET benchmark::benchmark) o2_add_header_only_library(libransBenchmark diff --git a/cmake/O2AddTest.cmake b/cmake/O2AddTest.cmake index 5687b01724106..b896074cc618e 100644 --- a/cmake/O2AddTest.cmake +++ b/cmake/O2AddTest.cmake @@ -63,10 +63,6 @@ include(O2AddExecutable) function(o2_add_test) - if(NOT BUILD_TESTING) - return() - endif() - cmake_parse_arguments( PARSE_ARGV 1 @@ -80,6 +76,16 @@ function(o2_add_test) message(FATAL_ERROR "Unexpected unparsed arguments: ${A_UNPARSED_ARGUMENTS}") endif() + # Parsed before this check so TARGETVARNAME can be defined (empty) even when + # no target is made: `if(VAR)` at the call site is then reliable, and a value + # left by an earlier call cannot leak into it. + if(NOT BUILD_TESTING) + if(A_TARGETVARNAME) + set(${A_TARGETVARNAME} "" PARENT_SCOPE) + endif() + return() + endif() + set(testName ${ARGV0}) set(linkLibraries ${A_PUBLIC_LINK_LIBRARIES})