cmake: test for 16-byte atomic support on mips also
authorKefu Chai <tchaikov@gmail.com>
Tue, 23 Nov 2021 16:40:54 +0000 (00:40 +0800)
committerThomas Goirand <zigo@debian.org>
Mon, 10 Jan 2022 10:45:19 +0000 (10:45 +0000)
Origin: upstream, https://github.com/ceph/ceph/commit/709a77f22010f03aee4a4c0ab930588944cb4a58
Last-Update: 2021-11-24

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.

Gbp-Pq: Name cmake-test-for-16-bytes-atomic-support-on-mips-also.patch

cmake/modules/CheckCxxAtomic.cmake

index f2d89cf3e0beb44e8c664a8d20e4b828edf8b86c..833977b758b24fc6748a622595386e0970cf5012 100644 (file)
@@ -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