mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-08 07:10:12 -05:00
Merge topic 'if-sanity'
858d5a0bFix if() checks of CMAKE_SYSTEM_NAME on Cygwine177e7afFPHSA: Avoid if() dereferencing of quoted variable425acc52cmcurl: Use if(DEFINED) to simplify conditionscede5cbdlibarchive: Avoid depending on if() to dereference a quoted variable2d97178bFindGTK2: Avoid depending on if() to dereference a quoted variable0b12815dModules/Test*.cmake: Use if(DEFINED) to simplify conditions188a1f23If: Introduce policy CMP0054 - don't dereference quoted variables in if()b900c1ccIf: Extract cmConditionEvaluator from if() implementation
This commit is contained in:
@@ -3292,6 +3292,7 @@ void cmMakefile::PopFunctionBlockerBarrier(bool reportError)
|
||||
this->FunctionBlockerBarriers.pop_back();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool cmMakefile::ExpandArguments(
|
||||
std::vector<cmListFileArgument> const& inArgs,
|
||||
std::vector<std::string>& outArgs) const
|
||||
@@ -3327,6 +3328,47 @@ bool cmMakefile::ExpandArguments(
|
||||
return !cmSystemTools::GetFatalErrorOccured();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool cmMakefile::ExpandArguments(
|
||||
std::vector<cmListFileArgument> const& inArgs,
|
||||
std::vector<cmExpandedCommandArgument>& outArgs) const
|
||||
{
|
||||
std::vector<cmListFileArgument>::const_iterator i;
|
||||
std::string value;
|
||||
outArgs.reserve(inArgs.size());
|
||||
for(i = inArgs.begin(); i != inArgs.end(); ++i)
|
||||
{
|
||||
// No expansion in a bracket argument.
|
||||
if(i->Delim == cmListFileArgument::Bracket)
|
||||
{
|
||||
outArgs.push_back(cmExpandedCommandArgument(i->Value, true));
|
||||
continue;
|
||||
}
|
||||
// Expand the variables in the argument.
|
||||
value = i->Value;
|
||||
this->ExpandVariablesInString(value, false, false, false,
|
||||
i->FilePath, i->Line,
|
||||
false, false);
|
||||
|
||||
// If the argument is quoted, it should be one argument.
|
||||
// Otherwise, it may be a list of arguments.
|
||||
if(i->Delim == cmListFileArgument::Quoted)
|
||||
{
|
||||
outArgs.push_back(cmExpandedCommandArgument(value, true));
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector<std::string> stringArgs;
|
||||
cmSystemTools::ExpandListArgument(value, stringArgs);
|
||||
for(size_t j = 0; j < stringArgs.size(); ++j)
|
||||
{
|
||||
outArgs.push_back(cmExpandedCommandArgument(stringArgs[j], false));
|
||||
}
|
||||
}
|
||||
}
|
||||
return !cmSystemTools::GetFatalErrorOccured();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmMakefile::AddFunctionBlocker(cmFunctionBlocker* fb)
|
||||
{
|
||||
@@ -4939,12 +4981,14 @@ void cmMakefile::PopPolicyBarrier(bool reportError)
|
||||
this->PolicyBarriers.pop_back();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool cmMakefile::SetPolicyVersion(const char *version)
|
||||
{
|
||||
return this->GetCMakeInstance()->GetPolicies()->
|
||||
ApplyPolicyVersion(this,version);
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
cmPolicies *cmMakefile::GetPolicies() const
|
||||
{
|
||||
if (!this->GetCMakeInstance())
|
||||
@@ -4954,6 +4998,23 @@ cmPolicies *cmMakefile::GetPolicies() const
|
||||
return this->GetCMakeInstance()->GetPolicies();
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
bool cmMakefile::HasCMP0054AlreadyBeenReported(
|
||||
cmListFileContext context) const
|
||||
{
|
||||
cmCMP0054Id id(context);
|
||||
|
||||
bool alreadyReported =
|
||||
this->CMP0054ReportedIds.find(id) != this->CMP0054ReportedIds.end();
|
||||
|
||||
if(!alreadyReported)
|
||||
{
|
||||
this->CMP0054ReportedIds.insert(id);
|
||||
}
|
||||
|
||||
return alreadyReported;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
void cmMakefile::RecordPolicies(cmPolicies::PolicyMap& pm)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user