|
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# Copyright © 2021 The Meson Developers
|
|
|
|
# Copyright © 2021 Intel Corporation
|
|
|
|
|
|
|
|
"""Keyword Argument type annotations."""
|
|
|
|
|
|
|
|
import typing as T
|
|
|
|
|
|
|
|
from typing_extensions import TypedDict, Literal, Protocol
|
|
|
|
|
|
|
|
from .. import build
|
|
|
|
from .. import coredata
|
|
|
|
from ..mesonlib import MachineChoice, File, FileMode, FileOrString, OptionKey
|
|
|
|
from ..programs import ExternalProgram
|
|
|
|
|
|
|
|
|
|
|
|
class FuncAddProjectArgs(TypedDict):
|
|
|
|
|
|
|
|
"""Keyword Arguments for the add_*_arguments family of arguments.
|
|
|
|
|
|
|
|
including `add_global_arguments`, `add_project_arguments`, and their
|
|
|
|
link variants
|
|
|
|
|
|
|
|
Because of the use of a convertor function, we get the native keyword as
|
|
|
|
a MachineChoice instance already.
|
|
|
|
"""
|
|
|
|
|
|
|
|
native: MachineChoice
|
|
|
|
language: T.List[str]
|
|
|
|
|
|
|
|
|
|
|
|
class BaseTest(TypedDict):
|
|
|
|
|
|
|
|
"""Shared base for the Rust module."""
|
|
|
|
|
|
|
|
args: T.List[T.Union[str, File, build.Target]]
|
|
|
|
should_fail: bool
|
|
|
|
timeout: int
|
|
|
|
workdir: T.Optional[str]
|
|
|
|
depends: T.List[T.Union[build.CustomTarget, build.BuildTarget]]
|
|
|
|
priority: int
|
|
|
|
env: build.EnvironmentVariables
|
|
|
|
suite: T.List[str]
|
|
|
|
|
|
|
|
|
|
|
|
class FuncBenchmark(BaseTest):
|
|
|
|
|
|
|
|
"""Keyword Arguments shared between `test` and `benchmark`."""
|
|
|
|
|
|
|
|
protocol: Literal['exitcode', 'tap', 'gtest', 'rust']
|
|
|
|
|
|
|
|
|
|
|
|
class FuncTest(FuncBenchmark):
|
|
|
|
|
|
|
|
"""Keyword Arguments for `test`
|
|
|
|
|
|
|
|
`test` only adds the `is_prallel` argument over benchmark, so inherintance
|
|
|
|
is helpful here.
|
|
|
|
"""
|
|
|
|
|
|
|
|
is_parallel: bool
|
|
|
|
|
|
|
|
|
|
|
|
class ExtractRequired(TypedDict):
|
|
|
|
|
|
|
|
"""Keyword Arguments consumed by the `extract_required_kwargs` function.
|
|
|
|
|
|
|
|
Any function that uses the `required` keyword argument which accepts either
|
|
|
|
a boolean or a feature option should inherit it's arguments from this class.
|
|
|
|
"""
|
|
|
|
|
|
|
|
required: T.Union[bool, coredata.UserFeatureOption]
|
|
|
|
|
|
|
|
|
|
|
|
class ExtractSearchDirs(TypedDict):
|
|
|
|
|
|
|
|
"""Keyword arguments consumed by the `extract_search_dirs` function.
|
|
|
|
|
|
|
|
See the not in `ExtractRequired`
|
|
|
|
"""
|
|
|
|
|
|
|
|
dirs: T.List[str]
|
|
|
|
|
|
|
|
|
|
|
|
class FuncGenerator(TypedDict):
|
|
|
|
|
|
|
|
"""Keyword rguments for the generator function."""
|
|
|
|
|
|
|
|
arguments: T.List[str]
|
|
|
|
output: T.List[str]
|
|
|
|
depfile: T.Optional[str]
|
|
|
|
capture: bool
|
|
|
|
depends: T.List[T.Union[build.BuildTarget, build.CustomTarget]]
|
|
|
|
|
|
|
|
|
|
|
|
class GeneratorProcess(TypedDict):
|
|
|
|
|
|
|
|
"""Keyword Arguments for generator.process."""
|
|
|
|
|
|
|
|
preserve_path_from: T.Optional[str]
|
|
|
|
extra_args: T.List[str]
|
|
|
|
|
|
|
|
class DependencyMethodPartialDependency(TypedDict):
|
|
|
|
|
|
|
|
""" Keyword Arguments for the dep.partial_dependency methods """
|
|
|
|
|
|
|
|
compile_args: bool
|
|
|
|
link_args: bool
|
|
|
|
links: bool
|
|
|
|
includes: bool
|
|
|
|
sources: bool
|
|
|
|
|
|
|
|
class BuildTargeMethodExtractAllObjects(TypedDict):
|
|
|
|
recursive: bool
|
|
|
|
|
|
|
|
class FuncInstallSubdir(TypedDict):
|
|
|
|
|
|
|
|
install_dir: str
|
|
|
|
strip_directory: bool
|
|
|
|
exclude_files: T.List[str]
|
|
|
|
exclude_directories: T.List[str]
|
|
|
|
install_mode: FileMode
|
|
|
|
|
|
|
|
|
|
|
|
class FuncInstallData(TypedDict):
|
|
|
|
|
|
|
|
install_dir: str
|
|
|
|
sources: T.List[FileOrString]
|
|
|
|
rename: T.List[str]
|
|
|
|
install_mode: FileMode
|
|
|
|
|
|
|
|
|
|
|
|
class FuncInstallHeaders(TypedDict):
|
|
|
|
|
|
|
|
install_dir: T.Optional[str]
|
|
|
|
install_mode: FileMode
|
|
|
|
subdir: T.Optional[str]
|
|
|
|
|
|
|
|
|
|
|
|
class FuncInstallMan(TypedDict):
|
|
|
|
|
|
|
|
install_dir: T.Optional[str]
|
|
|
|
install_mode: FileMode
|
|
|
|
locale: T.Optional[str]
|
|
|
|
|
|
|
|
|
|
|
|
class FuncImportModule(ExtractRequired):
|
|
|
|
|
|
|
|
disabler: bool
|
|
|
|
|
|
|
|
|
|
|
|
class FuncIncludeDirectories(TypedDict):
|
|
|
|
|
|
|
|
is_system: bool
|
|
|
|
|
|
|
|
class FuncAddLanguages(ExtractRequired):
|
|
|
|
|
|
|
|
native: T.Optional[bool]
|
|
|
|
|
|
|
|
class RunTarget(TypedDict):
|
|
|
|
|
|
|
|
command: T.List[T.Union[str, build.BuildTarget, build.CustomTarget, ExternalProgram, File]]
|
|
|
|
depends: T.List[T.Union[build.BuildTarget, build.CustomTarget]]
|
|
|
|
env: build.EnvironmentVariables
|
|
|
|
|
|
|
|
|
|
|
|
class CustomTarget(TypedDict):
|
|
|
|
|
|
|
|
build_always: bool
|
|
|
|
build_always_stale: bool
|
|
|
|
build_by_default: bool
|
|
|
|
capture: bool
|
|
|
|
command: T.List[T.Union[str, build.BuildTarget, build.CustomTarget,
|
|
|
|
build.CustomTargetIndex, ExternalProgram, File]]
|
|
|
|
consonle: bool
|
|
|
|
depend_files: T.List[FileOrString]
|
|
|
|
depends: T.List[T.Union[build.BuildTarget, build.CustomTarget]]
|
|
|
|
depfile: T.Optional[str]
|
|
|
|
env: build.EnvironmentVariables
|
|
|
|
feed: bool
|
|
|
|
input: T.List[T.Union[str, build.BuildTarget, build.CustomTarget, build.CustomTargetIndex,
|
|
|
|
build.ExtractedObjects, build.GeneratedList, ExternalProgram, File]]
|
|
|
|
install: bool
|
|
|
|
install_dir: T.List[T.Union[str, bool]]
|
|
|
|
install_mode: FileMode
|
|
|
|
install_tag: T.List[T.Union[str, bool]]
|
|
|
|
output: T.List[str]
|
|
|
|
override_options: T.Dict[OptionKey, str]
|
|
|
|
|
|
|
|
class AddTestSetup(TypedDict):
|
|
|
|
|
|
|
|
exe_wrapper: T.List[T.Union[str, ExternalProgram]]
|
|
|
|
gdb: bool
|
|
|
|
timeout_multiplier: int
|
|
|
|
is_default: bool
|
|
|
|
exclude_suites: T.List[str]
|
|
|
|
env: build.EnvironmentVariables
|
|
|
|
|
|
|
|
|
|
|
|
class Project(TypedDict):
|
|
|
|
|
|
|
|
version: T.Optional[FileOrString]
|
|
|
|
meson_version: T.Optional[str]
|
|
|
|
default_options: T.List[str]
|
|
|
|
license: T.List[str]
|
|
|
|
subproject_dir: str
|
|
|
|
|
|
|
|
|
|
|
|
class _FoundProto(Protocol):
|
|
|
|
|
|
|
|
"""Protocol for subdir arguments.
|
|
|
|
|
|
|
|
This allows us to define any objec that has a found(self) -> bool method
|
|
|
|
"""
|
|
|
|
|
|
|
|
def found(self) -> bool: ...
|
|
|
|
|
|
|
|
|
|
|
|
class Subdir(TypedDict):
|
|
|
|
|
|
|
|
if_found: T.List[_FoundProto]
|
|
|
|
|
|
|
|
|
|
|
|
class Summary(TypedDict):
|
|
|
|
|
|
|
|
section: str
|
|
|
|
bool_yn: bool
|
|
|
|
list_sep: T.Optional[str]
|