| Author: Vicențiu Ciorbaru <vicentiu@mariadb.org> |
| Date: Fri Dec 21 19:14:04 2018 +0200 |
| |
| Link with libatomic to enable C11 atomics support |
| |
| Some architectures (mips) require libatomic to support proper |
| atomic operations. Check first if support is available without |
| linking, otherwise use the library. |
| |
| Upstream-Status: Pending |
| Signed-off-by: Khem Raj <raj.khem@gmail.com> |
| |
| --- a/configure.cmake |
| +++ b/configure.cmake |
| @@ -926,7 +926,25 @@ int main() |
| long long int *ptr= &var; |
| return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST); |
| }" |
| -HAVE_GCC_C11_ATOMICS) |
| +HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC) |
| +IF (HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC) |
| + SET(HAVE_GCC_C11_ATOMICS True) |
| +ELSE() |
| + SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) |
| + LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic") |
| + CHECK_CXX_SOURCE_COMPILES(" |
| + int main() |
| + { |
| + long long int var= 1; |
| + long long int *ptr= &var; |
| + return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST); |
| + }" |
| + HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC) |
| + IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC) |
| + SET(HAVE_GCC_C11_ATOMICS True) |
| + ENDIF() |
| + SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES}) |
| +ENDIF() |
| |
| IF(WITH_VALGRIND) |
| SET(HAVE_valgrind 1) |
| --- a/mysys/CMakeLists.txt |
| +++ b/mysys/CMakeLists.txt |
| @@ -78,6 +78,10 @@ TARGET_LINK_LIBRARIES(mysys dbug strings |
| ${LIBNSL} ${LIBM} ${LIBRT} ${LIBDL} ${LIBSOCKET} ${LIBEXECINFO} ${CRC32_LIBRARY}) |
| DTRACE_INSTRUMENT(mysys) |
| |
| +IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC) |
| + TARGET_LINK_LIBRARIES(mysys atomic) |
| +ENDIF() |
| + |
| IF(HAVE_BFD_H) |
| TARGET_LINK_LIBRARIES(mysys bfd) |
| ENDIF(HAVE_BFD_H) |
| --- a/sql/CMakeLists.txt |
| +++ b/sql/CMakeLists.txt |
| @@ -178,6 +178,10 @@ ELSE() |
| SET(MYSQLD_SOURCE main.cc ${DTRACE_PROBES_ALL}) |
| ENDIF() |
| |
| +IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC) |
| + TARGET_LINK_LIBRARIES(sql atomic) |
| +ENDIF() |
| + |
| |
| IF(MSVC AND NOT WITHOUT_DYNAMIC_PLUGINS) |
| |