From 5fb109989dc044bfda18909e308f126819cec6a1 Mon Sep 17 00:00:00 2001 From: Urs Fleisch Date: Mon, 19 Oct 2026 17:37:18 +0200 Subject: [PATCH] Check if libatomic is needed for 64-bit atomic operations (#1465) --- ConfigureChecks.cmake | 28 ++++++++++++++++++++++++++++ taglib/CMakeLists.txt | 1 + 2 files changed, 29 insertions(+) diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake index acffa3fb..c9d44bc6 100644 --- a/ConfigureChecks.cmake +++ b/ConfigureChecks.cmake @@ -107,3 +107,31 @@ check_cxx_source_compiles(" if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") set(PLATFORM_WINRT 1) endif() + +# Check if 64-bit atomics require -latomic + +set(_CMAKE_REQUIRED_LIBRARIES_TMP ${CMAKE_REQUIRED_LIBRARIES}) +set(CMAKE_REQUIRED_LIBRARIES "") +check_cxx_source_compiles(" + #include + #include + std::atomic x; + int main() { + x.fetch_add(1, std::memory_order_relaxed); + return 0; + } +" HAVE_CXX_ATOMICS_WITHOUT_LIB) + +if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB) + set(CMAKE_REQUIRED_LIBRARIES "atomic") + check_cxx_source_compiles(" + #include + #include + std::atomic x; + int main() { + x.fetch_add(1, std::memory_order_relaxed); + return 0; + } + " HAVE_CXX_ATOMICS_WITH_LIBATOMIC) +endif() +set(CMAKE_REQUIRED_LIBRARIES ${_CMAKE_REQUIRED_LIBRARIES_TMP}) diff --git a/taglib/CMakeLists.txt b/taglib/CMakeLists.txt index f2689a88..15c2b944 100644 --- a/taglib/CMakeLists.txt +++ b/taglib/CMakeLists.txt @@ -542,6 +542,7 @@ target_include_directories(tag INTERFACE target_link_libraries(tag PRIVATE $,utf8::cpp,$<$:utf8cpp>> $<$:ZLIB::ZLIB> + $<$:atomic> ) set_target_properties(tag PROPERTIES