diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index e35cba40fa9c..4537bdbc3e7d 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -3060,14 +3060,9 @@ def generate_single_compile(self, target: build.BuildTarget, src, element = NinjaBuildElement(self.all_outputs, rel_obj, compiler_name, rel_src) self.add_header_deps(target, element, header_deps) + self.add_order_deps(target, element, order_deps) for d in extra_deps: element.add_dep(d) - for d in order_deps: - if isinstance(d, File): - d = d.rel_to_builddir(self.build_to_src) - elif not self.has_dir_part(d): - d = os.path.join(self.get_target_private_dir(target), d) - element.add_orderdep(d) element.add_dep(pch_dep) for i in self.get_fortran_orderdeps(target, compiler): element.add_orderdep(i) @@ -3128,6 +3123,14 @@ def add_header_deps(self, target: build.BuildTarget, ninja_element: NinjaBuildEl d = os.path.join(self.get_target_private_dir(target), d) ninja_element.add_dep(d) + def add_order_deps(self, target: build.BuildTarget, ninja_element: NinjaBuildElement, header_deps: T.List[FileOrString]) -> None: + for d in header_deps: + if isinstance(d, File): + d = d.rel_to_builddir(self.build_to_src) + elif not self.has_dir_part(d): + d = os.path.join(self.get_target_private_dir(target), d) + ninja_element.add_orderdep(d) + def has_dir_part(self, fname: FileOrString) -> bool: # FIXME FIXME: The usage of this is a terrible and unreliable hack if isinstance(fname, File): @@ -3224,7 +3227,7 @@ def generate_pch(self, target, header_deps=None): elem = NinjaBuildElement(self.all_outputs, objs + [dst], rulename, src) if extradep is not None: elem.add_dep(extradep) - self.add_header_deps(target, elem, header_deps) + self.add_order_deps(target, elem, header_deps) elem.add_item('ARGS', commands) elem.add_item('DEPFILE', dep) self.add_build(elem)