summaryrefslogtreecommitdiff
path: root/mesonbuild/modules/rust.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/modules/rust.py')
-rw-r--r--mesonbuild/modules/rust.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/mesonbuild/modules/rust.py b/mesonbuild/modules/rust.py
index 606065176..783df1865 100644
--- a/mesonbuild/modules/rust.py
+++ b/mesonbuild/modules/rust.py
@@ -250,6 +250,7 @@ class RustPackage(RustCrate):
'proc_macro': self.proc_macro_method,
'shared_module': self.shared_module_method,
'executable': self.executable_method,
+ 'override_dependency': self.override_dependency_method,
})
@noPosargs
@@ -362,6 +363,19 @@ class RustPackage(RustCrate):
result = self._library_method(state, args, kwargs, shared=True, static=False)
return T.cast('SharedLibrary', result)
+ @typed_pos_args('package.override_dependency', Dependency)
+ @typed_kwargs('package.override_dependency',
+ KwargInfo('rust_abi', (str, NoneType), default=None, validator=in_set_validator({'rust', 'c', 'proc-macro'})))
+ def override_dependency_method(self, state: ModuleState, args: T.Tuple[Dependency], kwargs: FuncDependency) -> None:
+ dep = args[0]
+ rust_abi = self.package.abi_resolve_default(kwargs['rust_abi'])
+ depname = self.package.get_dependency_name(rust_abi)
+ state.override_dependency(depname, dep)
+ if self.package.abi_has_static(rust_abi):
+ state.override_dependency(depname, dep, static=True)
+ if self.package.abi_has_shared(rust_abi):
+ state.override_dependency(depname, dep, static=False)
+
@typed_pos_args('package.library', optargs=[(str, StructuredSources), StructuredSources])
@typed_kwargs(
'package.library',