summaryrefslogtreecommitdiff
path: root/mesonbuild/modules
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2025-09-23 09:45:47 -0700
committerDylan Baker <dylan@pnwbakers.com>2025-10-15 10:21:46 -0700
commit943638976e692f2d9b073bedd80481653cb3bd31 (patch)
treec80f9c035f4513bb2c7ca9f6819cfd9fa911e472 /mesonbuild/modules
parent5d05b1e2695d9f87e4f2d5f22c25a7b28e9f5657 (diff)
downloadmeson-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.py17
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']