]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
meson: add libatomic dependency
authorHeinrich Schuchardt <heinrich.schuchardt@canonical.com>
Mon, 12 Sep 2022 16:41:34 +0000 (18:41 +0200)
committerLuca Boccassi <luca.boccassi@gmail.com>
Thu, 15 Sep 2022 12:44:11 +0000 (13:44 +0100)
Building with GCC 12.2 and binutils 2.39 fails on riscv64 Ubuntu Kinetic
with:

FAILED: systemd-oomd
/usr/bin/ld: systemd-oomd.p/src_oom_oomd-util.c.o:
in function `oomd_cgroup_context_acquire':
build/../src/oom/oomd-util.c:415:
undefined reference to `__atomic_exchange_1'

We have to link with -latomic.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
meson.build
src/network/meson.build
src/oom/meson.build

index f11582131bc3fc2a5cfb7d50c38db8418a95bd27..41a110871675b8f5ce2bf3adc8798b6e52c54da5 100644 (file)
@@ -1013,6 +1013,16 @@ endif
 
 #####################################################################
 
+libatomic = []
+if not cc.links('''#include <stdint.h>
+                   int main() {
+                     char i;
+                     __atomic_exchange_1(&i, 1, 0);
+                     return 1;
+                   }''',
+                name : 'Atomic builtin requires -latomic')
+        libatomic = cc.find_library('atomic')
+endif
 threads = dependency('threads')
 librt = cc.find_library('rt')
 libm = cc.find_library('m')
@@ -3177,7 +3187,7 @@ if conf.get('ENABLE_OOMD') == 1
                    systemd_oomd_sources,
                    include_directories : includes,
                    link_with : [libshared],
-                   dependencies : [],
+                   dependencies : [libatomic],
                    install_rpath : rootpkglibdir,
                    install : true,
                    install_dir : rootlibexecdir)
index e4def6bc51e2cdd61ec81d90f748362aad3cf75d..b09c18dbbd1923563c97de0ffde6787893229e3b 100644 (file)
@@ -290,13 +290,13 @@ tests += [
         [files('test-networkd-address.c'),
          [libnetworkd_core,
           libsystemd_network],
-         [],
+         [libatomic],
          network_includes],
 
         [files('test-networkd-conf.c'),
          [libnetworkd_core,
           libsystemd_network],
-         [],
+         [libatomic],
          network_includes],
 
         [files('test-networkd-util.c'),
index 6926ae0d18f871b85bda47276b8ac22196e07362..12035183deb55a79d933a6020889deda6b94d464 100644 (file)
@@ -28,5 +28,7 @@ endif
 tests += [
         [files('test-oomd-util.c',
                'oomd-util.c',
-               'oomd-util.h')],
+               'oomd-util.h'),
+        [],
+        [libatomic]]
 ]