From: Maksym Sobolyev Date: Mon, 14 Jul 2025 18:16:23 +0000 (-0700) Subject: Link libatomic statically when STATIC_LINK is set (#1601) X-Git-Tag: v4.12~87 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=42d95511d157472bc8a02477804a4f54b2100048;p=thirdparty%2Fccache.git Link libatomic statically when STATIC_LINK is set (#1601) Link libatomic statically when STATIC_LINK is set. --- diff --git a/cmake/StdAtomic.cmake b/cmake/StdAtomic.cmake index 119518a8..1aee1b08 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()