summaryrefslogtreecommitdiffstats
path: root/debian/patches/cmake-test-for-16-bytes-atomic-support-on-mips-also.patch
blob: c9712311abd0a1e0dad404765a968995a3dbf984 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Description: cmake: test for 16-byte atomic support on mips also
 it's reported that a mips64el build host is able to pass the test of
 CheckCxxAtomic without linking against libatomic, while librbd.so
 fails to link due to failures like
 .
 /usr/bin/ld: ../../../lib/librbd.so.1.16.0: undefined reference to `__atomic_store_16'
 /usr/bin/ld: ../../../lib/librbd.so.1.16.0: undefined reference to `__atomic_load_16'
 /usr/bin/ld: ../../../lib/librbd.so.1.16.0: undefined reference to `__atomic_compare_exchange_16'
 .
 so we have to check the existence of __atomic_load_16 instruction on
 mips architecture.
Author: Kefu Chai <tchaikov@gmail.com>
Date: Wed, 24 Nov 2021 00:40:54 +0800
Origin: upstream, https://github.com/ceph/ceph/commit/709a77f22010f03aee4a4c0ab930588944cb4a58
Last-Update: 2021-11-24

diff --git a/cmake/modules/CheckCxxAtomic.cmake b/cmake/modules/CheckCxxAtomic.cmake
index f2d89cf3e0beb..da2be5206d634 100644
--- a/cmake/modules/CheckCxxAtomic.cmake
+++ b/cmake/modules/CheckCxxAtomic.cmake
@@ -11,7 +11,7 @@ function(check_cxx_atomics var)
 #include <atomic>
 #include <cstdint>
 
-#if __s390x__
+#if defined(__s390x__) || (defined(__mips__) && _MIPS_SIM ==_ABI64 )
 // Boost needs 16-byte atomics for tagged pointers.
 // These are implemented via inline instructions on the platform
 // if 16-byte alignment can be proven, and are delegated to libatomic