]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Link libatomic statically when STATIC_LINK is set (#1601)
authorMaksym Sobolyev <sobomax@sippysoft.com>
Mon, 14 Jul 2025 18:16:23 +0000 (11:16 -0700)
committerGitHub <noreply@github.com>
Mon, 14 Jul 2025 18:16:23 +0000 (20:16 +0200)
Link libatomic statically when STATIC_LINK is set.

cmake/StdAtomic.cmake

index 119518a843e63cc5053726dd04dc117b5699a0e2..1aee1b0844ab00ab242dbb044fe89b73f4013648 100644 (file)
@@ -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()