summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2022-07-25 15:57:38 (GMT)
committerKitware Robot <kwrobot@kitware.com>2022-07-25 15:57:47 (GMT)
commit7c9bda81bdd620b6da66ff9de5876ec8b82fcabf (patch)
tree75976fde65860e00040e0f3699ae7d0754798ce5 /Source
parentcba5652a1f9a39f85454d2448fff31f0b108c19b (diff)
parentfebe3190f0782d3c2efdd4115e563632ec8b41b7 (diff)
downloadCMake-7c9bda81bdd620b6da66ff9de5876ec8b82fcabf.zip
CMake-7c9bda81bdd620b6da66ff9de5876ec8b82fcabf.tar.gz
CMake-7c9bda81bdd620b6da66ff9de5876ec8b82fcabf.tar.bz2
Merge topic 'cmake-P-path-args' into release-3.24
febe3190f0 Merge branch 'backport-3.23-cmake-P-path-args' 846a650ff7 cmake: In -P mode ignore extra paths on the command line c362cba566 cmake: simplify to a single source of truth of working mode 261fa5db39 cmake: In -P mode ignore extra paths on the command line 314135cdf1 cmake: simplify to a single source of truth of working mode Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !7494
Diffstat (limited to 'Source')
-rw-r--r--Source/cmake.cxx23
1 files changed, 10 insertions, 13 deletions
diff --git a/Source/cmake.cxx b/Source/cmake.cxx
index e6fa219..1c1cab3 100644
--- a/Source/cmake.cxx
+++ b/Source/cmake.cxx
@@ -405,9 +405,6 @@ void cmake::PrintPresetEnvironment()
// Parse the args
bool cmake::SetCacheArgs(const std::vector<std::string>& args)
{
- auto findPackageMode = false;
- auto seenScriptOption = false;
-
auto DefineLambda = [](std::string const& entry, cmake* state) -> bool {
std::string var;
std::string value;
@@ -498,10 +495,10 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args)
GetProjectCommandsInScriptMode(state->GetState());
// Documented behavior of CMAKE{,_CURRENT}_{SOURCE,BINARY}_DIR is to be
// set to $PWD for -P mode.
+ state->SetWorkingMode(SCRIPT_MODE);
state->SetHomeDirectory(cmSystemTools::GetCurrentWorkingDirectory());
state->SetHomeOutputDirectory(cmSystemTools::GetCurrentWorkingDirectory());
state->ReadListFile(args, path);
- seenScriptOption = true;
return true;
};
@@ -565,12 +562,12 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args)
"No install directory specified for --install-prefix",
CommandArgument::Values::One, PrefixLambda },
CommandArgument{ "--find-package", CommandArgument::Values::Zero,
- CommandArgument::setToTrue(findPackageMode) },
+ IgnoreAndTrueLambda },
};
for (decltype(args.size()) i = 1; i < args.size(); ++i) {
std::string const& arg = args[i];
- if (arg == "--" && seenScriptOption) {
+ if (arg == "--" && this->GetWorkingMode() == SCRIPT_MODE) {
// Stop processing CMake args and avoid possible errors
// when arbitrary args are given to CMake script.
break;
@@ -585,7 +582,7 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args)
}
}
- if (findPackageMode) {
+ if (this->GetWorkingMode() == FIND_PACKAGE_MODE) {
return this->FindPackage(args);
}
@@ -790,7 +787,6 @@ void cmake::SetArgs(const std::vector<std::string>& args)
bool haveToolset = false;
bool havePlatform = false;
bool haveBArg = false;
- bool scriptMode = false;
std::string possibleUnknownArg;
std::string extraProvidedPath;
#if !defined(CMAKE_BOOTSTRAP)
@@ -873,7 +869,7 @@ void cmake::SetArgs(const std::vector<std::string>& args)
CommandArgument{ "-P", "-P must be followed by a file name.",
CommandArgument::Values::One,
CommandArgument::RequiresSeparator::No,
- CommandArgument::setToTrue(scriptMode) },
+ IgnoreAndTrueLambda },
CommandArgument{ "-D", "-D must be followed with VAR=VALUE.",
CommandArgument::Values::One,
CommandArgument::RequiresSeparator::No,
@@ -1165,7 +1161,7 @@ void cmake::SetArgs(const std::vector<std::string>& args)
// iterate each argument
std::string const& arg = args[i];
- if (scriptMode && arg == "--") {
+ if (this->GetWorkingMode() == SCRIPT_MODE && arg == "--") {
// Stop processing CMake args and avoid possible errors
// when arbitrary args are given to CMake script.
break;
@@ -1211,12 +1207,12 @@ void cmake::SetArgs(const std::vector<std::string>& args)
}
}
- if (!extraProvidedPath.empty() && !scriptMode) {
+ if (!extraProvidedPath.empty() && this->GetWorkingMode() == NORMAL_MODE) {
this->IssueMessage(MessageType::WARNING,
cmStrCat("Ignoring extra path from command line:\n \"",
extraProvidedPath, "\""));
}
- if (!possibleUnknownArg.empty() && !scriptMode) {
+ if (!possibleUnknownArg.empty() && this->GetWorkingMode() != SCRIPT_MODE) {
cmSystemTools::Error(cmStrCat("Unknown argument ", possibleUnknownArg));
cmSystemTools::Error("Run 'cmake --help' for all supported options.");
exit(1);
@@ -1800,7 +1796,8 @@ void cmake::SetHomeDirectoryViaCommandLine(std::string const& path)
}
auto prev_path = this->GetHomeDirectory();
- if (prev_path != path && !prev_path.empty()) {
+ if (prev_path != path && !prev_path.empty() &&
+ this->GetWorkingMode() == NORMAL_MODE) {
this->IssueMessage(MessageType::WARNING,
cmStrCat("Ignoring extra path from command line:\n \"",
prev_path, "\""));