From 6cc74b614049bd2fce53675f1a11eecec3e1e079 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Wed, 22 Jan 2020 10:41:30 -0500 Subject: cmGlobalNinjaGenerator: avoid cleandead and recompact in Ninja-Multi Fixes: #20247 --- Source/cmGlobalNinjaGenerator.cxx | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 1f83ec5..280f9e0 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -552,10 +552,19 @@ void cmGlobalNinjaGenerator::Generate() } }; - if (this->NinjaSupportsCleanDeadTool) { + // The `cleandead` tool needs to know about all outputs in the build we just + // wrote out. Ninja-Multi doesn't have a single `build.ninja` we can use that + // is the union of all generated configurations, so we can't run it reliably + // in that case. + if (this->NinjaSupportsCleanDeadTool && !this->IsMultiConfig()) { run_ninja_tool({ "cleandead" }); } - if (this->NinjaSupportsUnconditionalRecompactTool) { + // The `recompact` tool loads the manifest. As above, we don't have a single + // `build.ninja` to load for this in Ninja-Multi. This may be relaxed in the + // future pending further investigation into how Ninja works upstream + // (ninja#1721). + if (this->NinjaSupportsUnconditionalRecompactTool && + !this->IsMultiConfig()) { run_ninja_tool({ "recompact" }); } if (this->NinjaSupportsRestatTool) { -- cgit v0.12