diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2021-02-07 16:57:39 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-07 16:57:39 +0000 |
commit | a855bcab1ccaff68155374c53896c1a780337f40 (patch) | |
tree | 9f5da58d50d50e74bd0c3741420f72918f161863 /mesonbuild/backend/ninjabackend.py | |
parent | 3f8585676ba6d2c1bcd5d80a44275fdfa695f8c2 (diff) | |
parent | 9cebd29da973553c6e657f7b318ab1d6afbc76e6 (diff) | |
download | meson-a855bcab1ccaff68155374c53896c1a780337f40.zip meson-a855bcab1ccaff68155374c53896c1a780337f40.tar.gz meson-a855bcab1ccaff68155374c53896c1a780337f40.tar.bz2 |
Merge pull request #8162 from dcbaker/wip/2021-01/rust-module-bindgen
Add a wrapper to the rust module for bindgen
Diffstat (limited to 'mesonbuild/backend/ninjabackend.py')
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 3eca3c0..b93ac39 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1597,14 +1597,19 @@ int dummy; args += target.get_extra_args('rust') args += rustc.get_output_args(os.path.join(target.subdir, target.get_filename())) args += self.environment.coredata.get_external_args(target.for_machine, rustc.language) - linkdirs = OrderedDict() + linkdirs = mesonlib.OrderedSet() for d in target.link_targets: - linkdirs[d.subdir] = True - # specify `extern CRATE_NAME=OUTPUT_FILE` for each Rust - # dependency, so that collisions with libraries in rustc's - # sysroot don't cause ambiguity - args += ['--extern', '{}={}'.format(d.name, os.path.join(d.subdir, d.filename))] - for d in linkdirs.keys(): + linkdirs.add(d.subdir) + if d.uses_rust(): + # specify `extern CRATE_NAME=OUTPUT_FILE` for each Rust + # dependency, so that collisions with libraries in rustc's + # sysroot don't cause ambiguity + args += ['--extern', '{}={}'.format(d.name, os.path.join(d.subdir, d.filename))] + else: + # Rust uses -l for non rust dependencies, but we still need to add (shared|static)=foo + _type = 'static' if d.typename == 'static library' else 'shared' + args += ['-l', f'{_type}={d.name}'] + for d in linkdirs: if d == '': d = '.' args += ['-L', d] |