summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon McVittie <smcv@debian.org>2020-09-06 20:00:58 +0100
committerWim Taymans <wim.taymans@gmail.com>2020-09-07 15:17:57 +0000
commitb8c58c74d835ee2918f9e391abd65f9e0132bdb4 (patch)
treecf6860cb3a452e97a19a48445c9a7877bf505ac9
parent8332ee0c252882099a3efff4c49ea246b59b623b (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.build28
-rw-r--r--pipewire-jack/src/meson.build2
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,
)