From 412858de9094de06047a33237ebf12753324636e Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Wed, 11 Mar 2020 07:28:28 -0600 Subject: [PATCH] atomic --- pipewire-jack/src/meson.build | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/pipewire-jack/src/meson.build b/pipewire-jack/src/meson.build index 68821a1b..70bdd21b 100644 --- a/pipewire-jack/src/meson.build +++ b/pipewire-jack/src/meson.build @@ -13,12 +13,33 @@ pipewire_jack_c_args = [ #optional dependencies jack_dep = dependency('jack', version : '>= 1.9.10', required : false) +# Check for GCC style atomics +dep_atomic = declare_dependency() + +if cc.compiles('int main() { int n; return __atomic_load_n(&n, __ATOMIC_ACQUIRE); }', + name : 'GCC atomic builtins') + # Not all atomic calls can be turned into lock-free instructions, in which + # GCC will make calls into the libatomic library. Check whether we need to + # link with -latomic. + # + # This can happen for 64-bit atomic operations on 32-bit architectures such + # as ARM. + if not cc.links('''#include + int main() { + uint64_t n; + return (int)__atomic_load_n(&n, __ATOMIC_ACQUIRE); + }''', + name : 'GCC atomic builtins required -latomic') + dep_atomic = cc.find_library('atomic') + endif +endif + pipewire_jack = shared_library('jack-pw', pipewire_jack_sources, soversion : pipewire_version, c_args : pipewire_jack_c_args, include_directories : [configinc], - dependencies : [pipewire_dep, jack_dep, mathlib], + dependencies : [pipewire_dep, jack_dep, mathlib, dep_atomic], install : true, ) -- 2.24.1