From ff849ed1b0d254afa4dd591ca01d8d74c03344ec 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 a052eaa8..1f08f0a5 100644 --- a/pipewire-jack/src/meson.build +++ b/pipewire-jack/src/meson.build @@ -33,13 +33,34 @@ configure_file(input : 'pw-jack.in', configuration : tools_config, install_dir : pipewire_bindir) +# 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', pipewire_jack_sources, soversion : soversion, version : libversion, 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, install_dir : libjack_path, ) -- 2.26.2