|
|
@@ -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);
|