aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2024-05-02 13:58:58 +0300
committerJussi Pakkanen <jpakkane@gmail.com>2024-05-02 13:58:58 +0300
commit71fee95e9047f66841be96ab1960f7f3131501c8 (patch)
tree04b16651df4168dcd79c500be80dd47f000a0543
parenta0ff14551266c87919f5b4b1469b7be0ef0a052e (diff)
downloadmeson-rustcmix.zip
meson-rustcmix.tar.gz
meson-rustcmix.tar.bz2
Import fix for Rust + C linking.rustcmix
-rw-r--r--mesonbuild/backend/ninjabackend.py10
1 files changed, 10 insertions, 0 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index e394c60..6162b00 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -1993,6 +1993,7 @@ class NinjaBackend(backends.Backend):
linkdirs = mesonlib.OrderedSet()
external_deps = target.external_deps.copy()
target_deps = target.get_dependencies()
+ have_c_abi_libs = False
for d in target_deps:
linkdirs.add(d.subdir)
deps.append(self.get_dependency_filename(d))
@@ -2009,6 +2010,8 @@ class NinjaBackend(backends.Backend):
args += ['--extern', '{}={}'.format(d_name, os.path.join(d.subdir, d.filename))]
project_deps.append(RustDep(d_name, self.rust_crates[d.name].order))
continue
+ else:
+ have_c_abi_libs = True
# Link a C ABI library
@@ -2053,6 +2056,13 @@ class NinjaBackend(backends.Backend):
else:
args.append(f'-Clink-arg={a}')
+ # Fix from:
+ # https://bugs.launchpad.net/ubuntu/+source/meson/+bug/2049904
+ # Link with libc last if we have C ABI libraries
+ if have_c_abi_libs:
+ args.append("-Clink-arg=-lc")
+
+
for d in linkdirs:
d = d or '.'
args.append(f'-L{d}')