From 42d95511d157472bc8a02477804a4f54b2100048 Mon Sep 17 00:00:00 2001 From: Maksym Sobolyev Date: Mon, 14 Jul 2025 11:16:23 -0700 Subject: [PATCH] Link libatomic statically when STATIC_LINK is set (#1601) Link libatomic statically when STATIC_LINK is set. --- cmake/StdAtomic.cmake | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/cmake/StdAtomic.cmake b/cmake/StdAtomic.cmake index 119518a84..1aee1b084 100644 --- a/cmake/StdAtomic.cmake +++ b/cmake/StdAtomic.cmake @@ -1,5 +1,7 @@ # Check if std::atomic needs -latomic +set(LIBATOMIC_STATIC_PATH "" CACHE PATH "Directory containing static libatomic.a") + include(CheckCXXSourceCompiles) set( @@ -24,6 +26,17 @@ if(NOT std_atomic_without_libatomic) if(NOT std_atomic_with_libatomic) message(FATAL_ERROR "Toolchain doesn't support std::atomic with nor without -latomic") else() - target_link_libraries(standard_settings INTERFACE atomic) + if(STATIC_LINK) + find_library(ATOMIC_STATIC NAMES libatomic.a PATHS /usr/lib /usr/local/lib ${LIBATOMIC_STATIC_PATH} NO_DEFAULT_PATH) + if(ATOMIC_STATIC) + message(STATUS "Linking static libatomic: ${ATOMIC_STATIC}") + target_link_libraries(standard_settings INTERFACE ${ATOMIC_STATIC}) + else() + message(WARNING "STATIC_LINK is set but static libatomic not found; falling back to -latomic") + target_link_libraries(standard_settings INTERFACE atomic) + endif() + else() + target_link_libraries(standard_settings INTERFACE atomic) + endif() endif() endif() -- 2.47.3