diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 082158c6e..3780e31b2 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -316,9 +316,14 @@ endif() # On clang and gcc, some functionalities of std::atomic require -latomic. # See . -if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" - OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - set(PLATFORM_LIBS ${PLATFORM_LIBS} atomic) +# Note that find_library does not reliably find it so we have to resort to this. +# Also, passing -latomic is not always the same as adding atomic to the library list. +include(CheckCSourceCompiles) +set(CMAKE_REQUIRED_LIBRARIES "-latomic") +check_c_source_compiles("int main(){}" HAVE_LINK_ATOMIC) +set(CMAKE_REQUIRED_LIBRARIES "") +if(HAVE_LINK_ATOMIC) + set(PLATFORM_LIBS ${PLATFORM_LIBS} "-latomic") endif() check_include_files(endian.h HAVE_ENDIAN_H)