diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py index 6a182d922..9d3f6c542 100644 --- a/mesonbuild/backend/vs2010backend.py +++ b/mesonbuild/backend/vs2010backend.py @@ -12,7 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. +from __future__ import annotations import copy +import itertools import os import xml.dom.minidom import xml.etree.ElementTree as ET @@ -318,11 +320,13 @@ class Vs2010Backend(backends.Backend): gen_exe = generator.get_exe() if isinstance(gen_exe, build.Executable): all_deps[gen_exe.get_id()] = gen_exe - for d in generator.depends: + for d in itertools.chain(generator.depends, gendep.depends): if isinstance(d, build.CustomTargetIndex): all_deps[d.get_id()] = d.target - else: + elif isinstance(d, build.Target): all_deps[d.get_id()] = d + # FIXME: we don't handle other kinds of deps correctly here, such + # as GeneratedLists, StructuredSources, and generated File. if not t or not recursive: return all_deps diff --git a/mesonbuild/build.py b/mesonbuild/build.py index b2f8f377c..7b8966b3b 100644 --- a/mesonbuild/build.py +++ b/mesonbuild/build.py @@ -1720,7 +1720,7 @@ class Generator(HoldableObject): output.depends.add(e.target) if isinstance(e, (CustomTarget, CustomTargetIndex, GeneratedList)): - self.depends.append(e) # BUG: this should go in the GeneratedList object, not this object. + output.depends.add(e) fs = [File.from_built_file(state.subdir, f) for f in e.get_outputs()] elif isinstance(e, str): fs = [File.from_source_file(state.environment.source_dir, state.subdir, e)] @@ -1748,7 +1748,7 @@ class GeneratedList(HoldableObject): def __post_init__(self) -> None: self.name = self.generator.exe - self.depends: T.Set['CustomTarget'] = set() # Things this target depends on (because e.g. a custom target was used as input) + self.depends: T.Set[GeneratedTypes] = set() self.infilelist: T.List['File'] = [] self.outfilelist: T.List[str] = [] self.outmap: T.Dict[File, T.List[str]] = {}