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>
This commit is contained in:
Simon McVittie 2020-09-06 20:00:58 +01:00 committed by Wim Taymans
parent 8332ee0c25
commit b8c58c74d8
2 changed files with 29 additions and 1 deletions

View file

@ -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)

View file

@ -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,
)