diff --git a/configure.cmake b/configure.cmake index 4c2b9c22..72bed3f0 100644 --- a/configure.cmake +++ b/configure.cmake @@ -104,6 +104,25 @@ IF(UNIX) MY_SEARCH_LIBS(timer_create rt LIBRT) MY_SEARCH_LIBS(backtrace execinfo LIBEXECINFO) + SET(ATOMIC_TEST_SOURCE " + int main() + { + char x=1; + short y=1; + int z=1; + long w = 1; + long long s = 1; + x = __atomic_add_fetch(&x, 1, __ATOMIC_SEQ_CST); + y = __atomic_add_fetch(&y, 1, __ATOMIC_SEQ_CST); + z = __atomic_add_fetch(&z, 1, __ATOMIC_SEQ_CST); + w = __atomic_add_fetch(&w, 1, __ATOMIC_SEQ_CST); + return (int)__atomic_load_n(&s, __ATOMIC_SEQ_CST); + }" ) + CHECK_CXX_SOURCE_COMPILES("${ATOMIC_TEST_SOURCE}" ATOMICS_ARE_BUILTIN) + IF(NOT ATOMICS_ARE_BUILTIN) + MY_SEARCH_LIBS(atomic_thread_fence atomic LIBATOMIC) + ENDIF() + LIST(APPEND CMAKE_REQUIRED_LIBRARIES ${LIBM} ${LIBNSL} ${LIBBIND} ${LIBSOCKET} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT} ${LIBRT} ${LIBEXECINFO} diff --git a/mysys/CMakeLists.txt b/mysys/CMakeLists.txt index 429fb4bf..4e4ec8ad 100644 --- a/mysys/CMakeLists.txt +++ b/mysys/CMakeLists.txt @@ -185,6 +185,7 @@ ADD_CONVENIENCE_LIBRARY(mysys ${MYSYS_SOURCES} ${LIBEXECINFO} ${LIBUNWIND_LDFLAGS} ${SSL_LIBRARIES} + ${LIBATOMIC} ) # For targets that link with mysys, and are independent of other targets. diff --git a/router/src/harness/src/CMakeLists.txt b/router/src/harness/src/CMakeLists.txt index 16381738..f3a81f12 100644 --- a/router/src/harness/src/CMakeLists.txt +++ b/router/src/harness/src/CMakeLists.txt @@ -133,7 +133,7 @@ ELSE() ENDIF() SET(common_libraries ${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT} - ${SHLWAPI_LIBRARIES} ${WINSOCK_LIBRARIES} ${SSL_LIBRARIES}) + ${SHLWAPI_LIBRARIES} ${WINSOCK_LIBRARIES} ${SSL_LIBRARIES} ${LIBATOMIC}) SET(INSTALL_INCLUDE_DIR "include/mysql/harness") -- 2.25.1