diff options
| author | Xavier Claessens <xclaessens@netflix.com> | 2025-10-11 17:54:00 -0400 |
|---|---|---|
| committer | Xavier Claessens <xclaesse@gmail.com> | 2025-10-15 12:15:39 -0400 |
| commit | 76facd5f717e152d64bfeeadc6217686304c5000 (patch) | |
| tree | 805a47db390429fbd4ac5ec151faea37bec9b4c5 | |
| parent | 0fa4c9ee9512eb362d0e9ca869725175464462f7 (diff) | |
| download | meson-76facd5f717e152d64bfeeadc6217686304c5000.tar.gz | |
Add support for LocalProgram to generator()
| -rw-r--r-- | mesonbuild/build.py | 10 | ||||
| -rw-r--r-- | mesonbuild/interpreter/interpreter.py | 4 |
2 files changed, 9 insertions, 5 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py index 7bf3a60a8..2365b005a 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -1982,7 +1982,7 @@ class FileMaybeInTargetPrivateDir: return self.fname class Generator(HoldableObject): - def __init__(self, exe: T.Union['Executable', programs.ExternalProgram], + def __init__(self, exe: T.Union[Executable, programs.ExternalProgram, LocalProgram, CustomTarget, CustomTargetIndex], arguments: T.List[str], output: T.List[str], # how2dataclass @@ -1991,10 +1991,14 @@ class Generator(HoldableObject): capture: bool = False, depends: T.Optional[T.List[BuildTargetTypes]] = None, name: str = 'Generator'): + self.depends = list(depends or []) + if isinstance(exe, LocalProgram): + # FIXME: Generator does not have depend_files? + self.depends.extend(exe.depends) + exe = exe.program self.exe = exe self.depfile = depfile self.capture = capture - self.depends: T.List[BuildTargetTypes] = depends or [] self.arglist = arguments self.outputs = output self.name = name @@ -2003,7 +2007,7 @@ class Generator(HoldableObject): repr_str = "<{0}: {1}>" return repr_str.format(self.__class__.__name__, self.exe) - def get_exe(self) -> T.Union['Executable', programs.ExternalProgram]: + def get_exe(self) -> T.Union[Executable, programs.ExternalProgram, CustomTarget, CustomTargetIndex]: return self.exe def get_base_outnames(self, inname: str) -> T.List[str]: diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index 681fcd7c0..61b5e2ce3 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -2238,7 +2238,7 @@ class Interpreter(InterpreterBase, HoldableObject): self.add_target(name, tg) return tg - @typed_pos_args('generator', (build.Executable, ExternalProgram)) + @typed_pos_args('generator', (build.Executable, ExternalProgram, build.LocalProgram)) @typed_kwargs( 'generator', KwargInfo('arguments', ContainerTypeInfo(list, str, allow_empty=False), required=True, listify=True), @@ -2248,7 +2248,7 @@ class Interpreter(InterpreterBase, HoldableObject): KwargInfo('capture', bool, default=False, since='0.43.0'), ) def func_generator(self, node: mparser.FunctionNode, - args: T.Tuple[T.Union[build.Executable, ExternalProgram]], + args: T.Tuple[T.Union[build.Executable, ExternalProgram, build.LocalProgram]], kwargs: 'kwtypes.FuncGenerator') -> build.Generator: for rule in kwargs['output']: if '@BASENAME@' not in rule and '@PLAINNAME@' not in rule: |
