Import fix for Rust + C linking.
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 @@
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 @@
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 @@
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}')