diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 529dfdf9..5b3bd0d5 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -7,7 +7,7 @@ set(CLIENT_SOURCES decoder/pcm_decoder.cpp player/player.cpp) -set(CLIENT_LIBRARIES ${CMAKE_THREAD_LIBS_INIT} common) +set(CLIENT_LIBRARIES ${CMAKE_THREAD_LIBS_INIT} ${ATOMIC_LIBRARY} common) set(CLIENT_INCLUDE ${Boost_INCLUDE_DIR} diff --git a/cmake/CheckAtomic.cmake b/cmake/CheckAtomic.cmake index 7248cee2..05415223 100644 --- a/cmake/CheckAtomic.cmake +++ b/cmake/CheckAtomic.cmake @@ -108,6 +108,8 @@ endfunction(check_working_cxx_atomics64_2args) # First check if atomics work without the library. check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITHOUT_LIB) +set(ATOMIC_LIBRARY "") + # If not, check if the library exists, and atomics work with it. if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB) check_library_exists(atomic __atomic_fetch_add_4 "" HAVE_LIBATOMIC) @@ -116,7 +118,7 @@ if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB) endif() if( HAVE_LIBATOMIC OR HAVE_LIBATOMIC_2ARGS ) list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic") - set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -latomic") + set(ATOMIC_LIBRARY "atomic") check_working_cxx_atomics(HAVE_CXX_ATOMICS_WITH_LIB) if (NOT HAVE_CXX_ATOMICS_WITH_LIB) message(FATAL_ERROR "Host compiler must support std::atomic!") @@ -137,7 +139,7 @@ if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB) endif() if( HAVE_CXX_LIBATOMICS64 OR HAVE_CXX_LIBATOMICS64_2ARGS ) list(APPEND CMAKE_REQUIRED_LIBRARIES "atomic") - set(CMAKE_CXX_LINK_FLAGS "${CMAKE_CXX_LINK_FLAGS} -latomic") + set(ATOMIC_LIBRARY "atomic") check_working_cxx_atomics64(HAVE_CXX_ATOMICS64_WITH_LIB) if (NOT HAVE_CXX_ATOMICS64_WITH_LIB) message(FATAL_ERROR "Host compiler must support std::atomic!") diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt index 40bf39ec..1ab4256c 100644 --- a/server/CMakeLists.txt +++ b/server/CMakeLists.txt @@ -23,6 +23,7 @@ set(SERVER_SOURCES set(SERVER_LIBRARIES ${CMAKE_THREAD_LIBS_INIT} + ${ATOMIC_LIBRARY} common) set(SERVER_INCLUDE