1 Author: Vicențiu Ciorbaru <vicentiu@mariadb.org>
2 Date: Fri Dec 21 19:14:04 2018 +0200
4 Link with libatomic to enable C11 atomics support
6 Some architectures (mips) require libatomic to support proper
7 atomic operations. Check first if support is available without
8 linking, otherwise use the library.
12 @@ -866,7 +866,25 @@ int main()
13 long long int *ptr= &var;
14 return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
16 -HAVE_GCC_C11_ATOMICS)
17 +HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
18 +IF (HAVE_GCC_C11_ATOMICS_WITHOUT_LIBATOMIC)
19 + SET(HAVE_GCC_C11_ATOMICS True)
21 + SET(OLD_CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
22 + LIST(APPEND CMAKE_REQUIRED_LIBRARIES "atomic")
23 + CHECK_CXX_SOURCE_COMPILES("
26 + long long int var= 1;
27 + long long int *ptr= &var;
28 + return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
30 + HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
31 + IF(HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
32 + SET(HAVE_GCC_C11_ATOMICS True)
34 + SET(CMAKE_REQUIRED_LIBRARIES ${OLD_CMAKE_REQUIRED_LIBRARIES})
39 --- a/mysys/CMakeLists.txt
40 +++ b/mysys/CMakeLists.txt
41 @@ -168,6 +168,10 @@ TARGET_LINK_LIBRARIES(mysys dbug strings
42 ${LIBNSL} ${LIBM} ${LIBRT} ${CMAKE_DL_LIBS} ${LIBSOCKET} ${LIBEXECINFO})
43 DTRACE_INSTRUMENT(mysys)
45 +IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
46 + TARGET_LINK_LIBRARIES(mysys atomic)
50 TARGET_LINK_LIBRARIES(mysys bfd)
52 --- a/sql/CMakeLists.txt
53 +++ b/sql/CMakeLists.txt
54 @@ -324,6 +324,10 @@ IF(WITH_MYSQLD_LDFLAGS)
55 "${MYSQLD_LINK_FLAGS} ${WITH_MYSQLD_LDFLAGS}")
58 +IF (HAVE_GCC_C11_ATOMICS_WITH_LIBATOMIC)
59 + TARGET_LINK_LIBRARIES(sql atomic)
63 FIND_PACKAGE(BISON 2.0)