From 6de40e7a4d3d3c04697909b4c777920a76141ff1 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 25 Aug 2025 11:31:23 -0400 Subject: Ninja: Fix regression with `.bat` wrapper around `ninja` Revise the change from commit 5a36d0c9e7 (Ninja: Fix regression with a large number of subdirectories, 2025-03-04, v4.0.0-rc3~2^2) to use a command-line length limit small enough for `.bat` files. Fixes: #27153 --- Source/cmGlobalNinjaGenerator.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index baf92e3..2b37abe 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -705,8 +705,9 @@ void cmGlobalNinjaGenerator::CleanMetaData() auto output_it = outputs.begin(); size_t static_arg_size = ninja_tool_arg_size + this->NinjaCommand.size() + this->GetCMakeInstance()->GetHomeOutputDirectory().size(); - // The Windows command-line length limit is 32768. Leave plenty. - constexpr size_t maximum_arg_size = 30000; + // The Windows command-line length limit is 32768, but if `ninja` is + // wrapped by a `.bat` file, the limit is 8192. Leave plenty. + constexpr size_t maximum_arg_size = 8000; while (output_it != outputs.end()) { size_t total_arg_size = static_arg_size; std::vector args; -- cgit v0.12