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