diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2024-05-02 13:58:58 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2024-05-02 13:58:58 +0300 |
commit | 71fee95e9047f66841be96ab1960f7f3131501c8 (patch) | |
tree | 04b16651df4168dcd79c500be80dd47f000a0543 | |
parent | a0ff14551266c87919f5b4b1469b7be0ef0a052e (diff) | |
download | meson-rustcmix.zip meson-rustcmix.tar.gz meson-rustcmix.tar.bz2 |
Import fix for Rust + C linking.rustcmix
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 10 |
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}') |