Create findATOMIC.cmake

Provided by @Floessie  https://github.com/Beep6581/RawTherapee/issues/6821#issuecomment-1678626624
This commit is contained in:
Richard E Barber 2023-08-28 09:32:43 -07:00 committed by GitHub
parent a56c11570f
commit f0b282a695
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -0,0 +1,36 @@
include(CheckCXXSourceCompiles)
set(ATOMIC_CXX_TEST_SOURCE
"
#include <atomic>
int main() {
std::atomic<bool> b(false);
std::atomic<int> i(0);
std::atomic<unsigned int> ui(0);
b.exchange(true);
++i;
return ++ui;
}
")
set(SAFE_CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}")
list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES "atomic")
check_cxx_source_compiles("${ATOMIC_CXX_TEST_SOURCE}" HAVE_CXX_ATOMICS_WITHOUT_LIB)
if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB)
list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
check_cxx_source_compiles("${ATOMIC_CXX_TEST_SOURCE}" HAVE_CXX_ATOMICS_WITH_LIB)
if (NOT HAVE_CXX_ATOMICS_WITH_LIB)
message(FATAL_ERROR "libatomic support needed for std::atomic<> but not
found.")
endif()
set(ATOMIC_LIBRARIES "atomic")
set(ATOMIC_FOUND ON)
endif()
set(CMAKE_REQUIRED_LIBRARIES "${SAFE_CMAKE_REQUIRED_LIBRARIES}")
unset(SAFE_CMAKE_REQUIRED_LIBRARIES)
mark_as_advanced(ATOMIC_LIBRARIES)
mark_as_advanced(ATOMIC_FOUND)