From 37171d9db014db8743dc57a2540dc239e10f32da Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 24 Nov 2025 11:29:15 -0500 Subject: [PATCH] Source: Improve detection of Linux architectures requiring explicit libatomic Extend commit fa3c4b6dbf (Source: Link libatomic when needed on any Linux architecture, 2023-08-24, v3.27.5~9^2) to decide based on the architecture targeted by the compiler, known since CMake 4.1. Use `CMAKE_SYSTEM_PROCESSOR` only as a fallback for older versions. Fixes: #27406 --- Source/Checks/cm_cxx_features.cmake | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/Source/Checks/cm_cxx_features.cmake b/Source/Checks/cm_cxx_features.cmake index 0ba0c22b6b..f4832b3487 100644 --- a/Source/Checks/cm_cxx_features.cmake +++ b/Source/Checks/cm_cxx_features.cmake @@ -102,11 +102,18 @@ else() set(CMake_HAVE_CXX_FILESYSTEM FALSE) endif() -if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|aarch64)$") - cm_check_cxx_feature(atomic_builtin) - if(NOT CMake_HAVE_CXX_ATOMIC_BUILTIN) - set(cm_check_cxx_feature_LINK_LIBRARIES atomic) - cm_check_cxx_feature(atomic_lib) # defines CMake_HAVE_CXX_ATOMIC_LIB - unset(cm_check_cxx_feature_LINK_LIBRARIES) +if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID) + set(arch_id "${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}") + else() + set(arch_id "${CMAKE_SYSTEM_PROCESSOR}") + endif() + if(NOT arch_id MATCHES "^(x86_64|aarch64)$") + cm_check_cxx_feature(atomic_builtin) + if(NOT CMake_HAVE_CXX_ATOMIC_BUILTIN) + set(cm_check_cxx_feature_LINK_LIBRARIES atomic) + cm_check_cxx_feature(atomic_lib) # defines CMake_HAVE_CXX_ATOMIC_LIB + unset(cm_check_cxx_feature_LINK_LIBRARIES) + endif() endif() endif()