diff options
Diffstat (limited to 'site_scons/site_tools/ninja.py')
-rw-r--r-- | site_scons/site_tools/ninja.py | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/site_scons/site_tools/ninja.py b/site_scons/site_tools/ninja.py index a55205fc612..2b2fe875d89 100644 --- a/site_scons/site_tools/ninja.py +++ b/site_scons/site_tools/ninja.py @@ -810,15 +810,23 @@ class NinjaState: # cycle. if (generated_source_files and check_generated_source_deps(build)): - # Make all non-generated source targets depend on - # _generated_sources. We use order_only for generated - # sources so that we don't rebuild the world if one - # generated source was rebuilt. We just need to make - # sure that all of these sources are generated before - # other builds. - order_only = build.get("order_only", []) - order_only.append(generated_sources_alias) - build["order_only"] = order_only + depends_on_gen_source = False + if build['outputs']: + depends_on_gen_source = all([ + True if gen_source_exception not in build['outputs'][0] else False + for gen_source_exception in self.env.get('NINJA_PREGEN_SOURCE_TARGETS', []) + ]) + + if depends_on_gen_source: + # Make all non-generated source targets depend on + # _generated_sources. We use order_only for generated + # sources so that we don't rebuild the world if one + # generated source was rebuilt. We just need to make + # sure that all of these sources are generated before + # other builds. + order_only = build.get("order_only", []) + order_only.append(generated_sources_alias) + build["order_only"] = order_only if "order_only" in build: build["order_only"].sort() |