diff options
Diffstat (limited to 'mesonbuild/modules/rust.py')
| -rw-r--r-- | mesonbuild/modules/rust.py | 14 |
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', |
