diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2025-09-23 09:45:47 -0700 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-10-15 10:21:46 -0700 |
| commit | 943638976e692f2d9b073bedd80481653cb3bd31 (patch) | |
| tree | c80f9c035f4513bb2c7ca9f6819cfd9fa911e472 /mesonbuild/modules | |
| parent | 5d05b1e2695d9f87e4f2d5f22c25a7b28e9f5657 (diff) | |
| download | meson-943638976e692f2d9b073bedd80481653cb3bd31.tar.gz | |
build: Add a TypedDict for BuildTarget keyword arguments
This has the "processed" keyword arguments that the interpreter is
supposed to create for us, or that we expect internal users to build by
build.
This requires some hacking around in the rust module for the moment
because we suddenly have a type.
Diffstat (limited to 'mesonbuild/modules')
| -rw-r--r-- | mesonbuild/modules/rust.py | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/mesonbuild/modules/rust.py b/mesonbuild/modules/rust.py index 2c56a860e..c8b5d7482 100644 --- a/mesonbuild/modules/rust.py +++ b/mesonbuild/modules/rust.py @@ -26,7 +26,7 @@ from ..programs import ExternalProgram, NonExistingExternalProgram if T.TYPE_CHECKING: from . import ModuleState - from ..build import IncludeDirs, LibTypes + from ..build import BuildTargetTypes, IncludeDirs, LibTypes from ..compilers.rust import RustCompiler from ..dependencies import Dependency, ExternalLibrary from ..interpreter import Interpreter @@ -44,7 +44,7 @@ if T.TYPE_CHECKING: dependencies: T.List[T.Union[Dependency, ExternalLibrary]] is_parallel: bool link_with: T.List[LibTypes] - link_whole: T.List[LibTypes] + link_whole: T.List[T.Union[StaticLibrary, CustomTarget, CustomTargetIndex]] rust_args: T.List[str] FuncTest = FuncRustTest[_kwargs.TestArgs] @@ -179,16 +179,15 @@ class RustModule(ExtensionModule): tkwargs['protocol'] = 'rust' new_target_kwargs = base_target.original_kwargs.copy() - # Don't mutate the shallow copied list, instead replace it with a new - # one + del new_target_kwargs['rust_crate_type'] + for kw in ('pic', 'prelink', 'rust_abi', 'version', 'soversion', 'darwin_versions'): + if kw in new_target_kwargs: + del new_target_kwargs[kw] # type: ignore[misc] + new_target_kwargs['install'] = False new_target_kwargs['dependencies'] = new_target_kwargs.get('dependencies', []) + kwargs['dependencies'] - new_target_kwargs['link_with'] = new_target_kwargs.get('link_with', []) + kwargs['link_with'] + new_target_kwargs['link_with'] = new_target_kwargs.get('link_with', []) + T.cast('T.List[BuildTargetTypes]', kwargs['link_with']) new_target_kwargs['link_whole'] = new_target_kwargs.get('link_whole', []) + kwargs['link_whole'] - del new_target_kwargs['rust_crate_type'] - for kw in ['pic', 'prelink', 'rust_abi', 'version', 'soversion', 'darwin_versions']: - if kw in new_target_kwargs: - del new_target_kwargs[kw] lang_args = base_target.extra_args.copy() lang_args['rust'] = base_target.extra_args['rust'] + kwargs['rust_args'] + ['--test'] |
