diff options
author | Simon McVittie <smcv@debian.org> | 2020-09-06 20:00:58 +0100 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2020-09-07 15:17:57 +0000 |
commit | b8c58c74d835ee2918f9e391abd65f9e0132bdb4 (patch) | |
tree | cf6860cb3a452e97a19a48445c9a7877bf505ac9 | |
parent | 8332ee0c252882099a3efff4c49ea246b59b623b (diff) |
Link pipewire-jack to libatomic if required
This is necessary on some 32-bit architectures that implement atomic
operations on 64-bit quantities as library calls, including Debian's
armel and mipsel ports.
Signed-off-by: Simon McVittie <smcv@debian.org>
-rw-r--r-- | meson.build | 28 | ||||
-rw-r--r-- | pipewire-jack/src/meson.build | 2 |
2 files changed, 29 insertions, 1 deletions
diff --git a/meson.build b/meson.build index 6cfcecdc..a81a7755 100644 --- a/meson.build +++ b/meson.build @@ -155,6 +155,34 @@ elif cc.has_argument('-mfpu=neon') endif endif +libatomic = cc.find_library('atomic', required : false) + +test_8_byte_atomic = ''' +#include <stdint.h> + +int main(void) +{ + int64_t eight; + __atomic_store_n(&eight, 123, __ATOMIC_SEQ_CST); + return 0; +} +''' + +# We currently assume that libatomic is unnecessary for 4-byte atomic +# operations on any reasonable architecture. +if cc.links( + test_8_byte_atomic, + name : '8-byte __atomic_store_n without libatomic') + atomic_dep = dependency('', required: false) +elif cc.links( + test_8_byte_atomic, + dependencies : libatomic, + name : '8-byte __atomic_store_n with libatomic') + atomic_dep = libatomic +elif get_option('pipewire-jack') + # Currently only required for the JACK backend + error('8-byte atomic operations are required for pipewire-jack') +endif cdata = configuration_data() cdata.set('PIPEWIRE_VERSION_MAJOR', pipewire_version_major) diff --git a/pipewire-jack/src/meson.build b/pipewire-jack/src/meson.build index a052eaa8..0795795e 100644 --- a/pipewire-jack/src/meson.build +++ b/pipewire-jack/src/meson.build @@ -39,7 +39,7 @@ pipewire_jack = shared_library('jack', version : libversion, c_args : pipewire_jack_c_args, include_directories : [configinc], - dependencies : [pipewire_dep, jack_dep, mathlib], + dependencies : [pipewire_dep, atomic_dep, jack_dep, mathlib], install : true, install_dir : libjack_path, ) |