diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2021-09-16 10:11:29 -0700 |
---|---|---|
committer | Eli Schwartz <eschwartz93@gmail.com> | 2021-09-20 01:25:21 -0400 |
commit | 40ff02268c7e7b3bf76ee4a42d8905acc0d0e415 (patch) | |
tree | 6120b74399dd6fb5f986c2a6b9834535db50b70a /mesonbuild/backend/ninjabackend.py | |
parent | 276ff0cc892fbe948018334df58bed289b14f1a2 (diff) | |
download | meson-40ff02268c7e7b3bf76ee4a42d8905acc0d0e415.zip meson-40ff02268c7e7b3bf76ee4a42d8905acc0d0e415.tar.gz meson-40ff02268c7e7b3bf76ee4a42d8905acc0d0e415.tar.bz2 |
backend/ninja: add generated sources to depscan order deps
Since we changed to using a json file to avoid over long command lines
we created a situation where the generated files may not be ready when
the depscan happens. To avoid that, we need to add all of the generated
sources as order deps.
Fixes: #9258
Diffstat (limited to 'mesonbuild/backend/ninjabackend.py')
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index a15607a..d821734 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -887,7 +887,7 @@ class NinjaBackend(backends.Backend): else: final_obj_list = obj_list elem = self.generate_link(target, outname, final_obj_list, linker, pch_objects, stdlib_args=stdlib_args) - self.generate_dependency_scan_target(target, compiled_sources, source2object) + self.generate_dependency_scan_target(target, compiled_sources, source2object, generated_source_files) self.generate_shlib_aliases(target, self.get_target_dir(target)) self.add_build(elem) @@ -911,7 +911,7 @@ class NinjaBackend(backends.Backend): return False return True - def generate_dependency_scan_target(self, target, compiled_sources, source2object): + def generate_dependency_scan_target(self, target, compiled_sources, source2object, generated_source_files: T.List[mesonlib.File]): if not self.should_use_dyndeps_for_target(target): return depscan_file = self.get_dep_scan_file_for(target) @@ -929,6 +929,10 @@ class NinjaBackend(backends.Backend): json.dump(scan_sources, f) elem = NinjaBuildElement(self.all_outputs, depscan_file, rule_name, json_abs) elem.add_item('picklefile', pickle_file) + # Add any generated outputs to the order deps of the scan target, so + # that those sources are present + for g in generated_source_files: + elem.orderdeps.add(g.relative_name()) scaninfo = TargetDependencyScannerInfo(self.get_target_private_dir(target), source2object) with open(pickle_abs, 'wb') as p: pickle.dump(scaninfo, p) |