summaryrefslogtreecommitdiffstats
path: root/Source/cmQtAutoGenInitializer.cxx
diff options
context:
space:
mode:
authorOrkun Tokdemir <orkun.tokdemir@qt.io>2023-03-16 15:06:17 (GMT)
committerBrad King <brad.king@kitware.com>2023-03-20 16:10:01 (GMT)
commita42ecb16149e76fcfb946d29e3ffc34077ba4bdf (patch)
tree9e648fbce6847ab3b547c4761ccdffeb2fcd4f49 /Source/cmQtAutoGenInitializer.cxx
parent9d439e235ce117fb24822e0cb1716c785e38db19 (diff)
downloadCMake-a42ecb16149e76fcfb946d29e3ffc34077ba4bdf.zip
CMake-a42ecb16149e76fcfb946d29e3ffc34077ba4bdf.tar.gz
CMake-a42ecb16149e76fcfb946d29e3ffc34077ba4bdf.tar.bz2
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
Diffstat (limited to 'Source/cmQtAutoGenInitializer.cxx')
-rw-r--r--Source/cmQtAutoGenInitializer.cxx12
1 files changed, 12 insertions, 0 deletions
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 <cstddef>
#include <deque>
#include <initializer_list>
+#include <limits>
#include <map>
#include <set>
#include <sstream> // 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<ParallelType>::max()) {
+ this->AutogenTarget.Parallel = static_cast<ParallelType>(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;
}
}