aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/backend/ninjabackend.py
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2023-04-13 20:38:32 +0300
committerXavier Claessens <xclaesse@gmail.com>2023-04-14 06:22:33 -0400
commitc725816c8191ad3235fe3f5f45dddaff429158e2 (patch)
tree317bf1f21c78eb26461d8f7944c488df713f9adb /mesonbuild/backend/ninjabackend.py
parent49e62877d14fee68baf854fde3c13f58a97384de (diff)
downloadmeson-c725816c8191ad3235fe3f5f45dddaff429158e2.zip
meson-c725816c8191ad3235fe3f5f45dddaff429158e2.tar.gz
meson-c725816c8191ad3235fe3f5f45dddaff429158e2.tar.bz2
rust: Convert dashes in crate names to underscores
Dashes can't be used as identifiers in Rust and cargo is converting dashes in crate names to underscores for the same reason.
Diffstat (limited to 'mesonbuild/backend/ninjabackend.py')
-rw-r--r--mesonbuild/backend/ninjabackend.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 2522b62..d0c63f2 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -1908,8 +1908,13 @@ class NinjaBackend(backends.Backend):
# 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))]
- project_deps.append(RustDep(d.name, self.rust_crates[d.name].order))
+ #
+ # Also convert crate names with dashes to underscores like
+ # cargo does as dashes can't be used as parts of identifiers
+ # in Rust
+ d_name = d.name.replace('-', '_')
+ args += ['--extern', '{}={}'.format(d_name, os.path.join(d.subdir, d.filename))]
+ project_deps.append(RustDep(d_name, self.rust_crates[d.name].order))
elif d.typename == 'static library':
# Rustc doesn't follow Meson's convention that static libraries
# are called .a, and import libraries are .lib, so we have to
@@ -1946,8 +1951,13 @@ class NinjaBackend(backends.Backend):
# 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))]
- project_deps.append(RustDep(d.name, self.rust_crates[d.name].order))
+ #
+ # Also convert crate names with dashes to underscores like
+ # cargo does as dashes can't be used as parts of identifiers
+ # in Rust
+ d_name = d.name.replace('-', '_')
+ args += ['--extern', '{}={}'.format(d_name, os.path.join(d.subdir, d.filename))]
+ project_deps.append(RustDep(d_name, self.rust_crates[d.name].order))
else:
if rustc.linker.id in {'link', 'lld-link'}:
if verbatim: