aboutsummaryrefslogtreecommitdiff
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
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.
-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: