From a42ecb16149e76fcfb946d29e3ffc34077ba4bdf Mon Sep 17 00:00:00 2001 From: Orkun Tokdemir Date: Thu, 16 Mar 2023 16:06:17 +0100 Subject: Autogen: Restore AUTOGEN_PARALLEL support for numbers Refactoring in commit d867e05892 (Autogen: Use JSON instead of CMake script for info files, 2019-09-20, v3.16.0-rc1~57^2) broke support for numerical values of `AUTOGEN_PARALLEL`. Parse and verify the range. Warn if the value is invalid. Fixes: #20376 --- Source/cmQtAutoGenInitializer.cxx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index 410330a..667e0f5 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include // for basic_ios, istringstream @@ -457,12 +458,23 @@ bool cmQtAutoGenInitializer::InitCustomTargets() // Autogen target parallel processing { + using ParallelType = decltype(this->AutogenTarget.Parallel); + unsigned long propInt = 0; std::string const& prop = this->GenTarget->GetSafeProperty("AUTOGEN_PARALLEL"); if (prop.empty() || (prop == "AUTO")) { // Autodetect number of CPUs this->AutogenTarget.Parallel = GetParallelCPUCount(); + } else if (cmStrToULong(prop, &propInt) && propInt > 0 && + propInt <= std::numeric_limits::max()) { + this->AutogenTarget.Parallel = static_cast(propInt); } else { + // Warn the project author that AUTOGEN_PARALLEL is not valid. + this->Makefile->IssueMessage( + MessageType::AUTHOR_WARNING, + cmStrCat("AUTOGEN_PARALLEL=\"", prop, "\" for target \"", + this->GenTarget->GetName(), + "\" is not valid. Using AUTOGEN_PARALLEL=1")); this->AutogenTarget.Parallel = 1; } } -- cgit v0.12