cmMakefile: Move CMP0059 handling to command code.
Don't pay a penalty for it in all GetProperty calls. Additionally, the storage of properties will eventually move to cmState, which should only contain state and not logic for policies like this.
This commit is contained in:
parent
fe603c7dfb
commit
52b9d828ab
|
@ -86,6 +86,23 @@ bool cmGetDirectoryPropertyCommand
|
||||||
const char *prop = 0;
|
const char *prop = 0;
|
||||||
if (!i->empty())
|
if (!i->empty())
|
||||||
{
|
{
|
||||||
|
if (*i == "DEFINITIONS")
|
||||||
|
{
|
||||||
|
switch(this->Makefile->GetPolicyStatus(cmPolicies::CMP0059))
|
||||||
|
{
|
||||||
|
case cmPolicies::WARN:
|
||||||
|
this->Makefile->IssueMessage(cmake::AUTHOR_WARNING,
|
||||||
|
cmPolicies::GetPolicyWarning(cmPolicies::CMP0059));
|
||||||
|
case cmPolicies::OLD:
|
||||||
|
this->StoreResult(variable,
|
||||||
|
this->Makefile->GetDefineFlagsCMP0059());
|
||||||
|
return true;
|
||||||
|
case cmPolicies::NEW:
|
||||||
|
case cmPolicies::REQUIRED_ALWAYS:
|
||||||
|
case cmPolicies::REQUIRED_IF_USED:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
prop = dir->GetProperty(*i);
|
prop = dir->GetProperty(*i);
|
||||||
}
|
}
|
||||||
this->StoreResult(variable, prop);
|
this->StoreResult(variable, prop);
|
||||||
|
|
|
@ -279,6 +279,22 @@ bool cmGetPropertyCommand::HandleDirectoryMode()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this->PropertyName == "DEFINITIONS")
|
||||||
|
{
|
||||||
|
switch(mf->GetPolicyStatus(cmPolicies::CMP0059))
|
||||||
|
{
|
||||||
|
case cmPolicies::WARN:
|
||||||
|
mf->IssueMessage(cmake::AUTHOR_WARNING,
|
||||||
|
cmPolicies::GetPolicyWarning(cmPolicies::CMP0059));
|
||||||
|
case cmPolicies::OLD:
|
||||||
|
return this->StoreResult(mf->GetDefineFlagsCMP0059());
|
||||||
|
case cmPolicies::NEW:
|
||||||
|
case cmPolicies::REQUIRED_ALWAYS:
|
||||||
|
case cmPolicies::REQUIRED_IF_USED:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Get the property.
|
// Get the property.
|
||||||
return this->StoreResult(mf->GetProperty(this->PropertyName));
|
return this->StoreResult(mf->GetProperty(this->PropertyName));
|
||||||
}
|
}
|
||||||
|
|
|
@ -4171,22 +4171,6 @@ const char *cmMakefile::GetProperty(const std::string& prop,
|
||||||
this->GetListOfMacros(output);
|
this->GetListOfMacros(output);
|
||||||
return output.c_str();
|
return output.c_str();
|
||||||
}
|
}
|
||||||
else if (prop == "DEFINITIONS")
|
|
||||||
{
|
|
||||||
switch(this->GetPolicyStatus(cmPolicies::CMP0059))
|
|
||||||
{
|
|
||||||
case cmPolicies::WARN:
|
|
||||||
this->IssueMessage(cmake::AUTHOR_WARNING, cmPolicies::
|
|
||||||
GetPolicyWarning(cmPolicies::CMP0059));
|
|
||||||
case cmPolicies::OLD:
|
|
||||||
output += this->DefineFlagsOrig;
|
|
||||||
return output.c_str();
|
|
||||||
case cmPolicies::NEW:
|
|
||||||
case cmPolicies::REQUIRED_ALWAYS:
|
|
||||||
case cmPolicies::REQUIRED_IF_USED:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (prop == "LINK_DIRECTORIES")
|
else if (prop == "LINK_DIRECTORIES")
|
||||||
{
|
{
|
||||||
output = cmJoin(this->GetLinkDirectories(), ";");
|
output = cmJoin(this->GetLinkDirectories(), ";");
|
||||||
|
@ -4674,6 +4658,11 @@ cmState::Snapshot cmMakefile::GetStateSnapshot() const
|
||||||
return this->StateSnapshot;
|
return this->StateSnapshot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* cmMakefile::GetDefineFlagsCMP0059() const
|
||||||
|
{
|
||||||
|
return this->DefineFlagsOrig.c_str();
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
cmPolicies::PolicyStatus
|
cmPolicies::PolicyStatus
|
||||||
cmMakefile::GetPolicyStatus(cmPolicies::PolicyID id) const
|
cmMakefile::GetPolicyStatus(cmPolicies::PolicyID id) const
|
||||||
|
|
|
@ -838,6 +838,8 @@ public:
|
||||||
|
|
||||||
cmState::Snapshot GetStateSnapshot() const;
|
cmState::Snapshot GetStateSnapshot() const;
|
||||||
|
|
||||||
|
const char* GetDefineFlagsCMP0059() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// add link libraries and directories to the target
|
// add link libraries and directories to the target
|
||||||
void AddGlobalLinkInformation(const std::string& name, cmTarget& target);
|
void AddGlobalLinkInformation(const std::string& name, cmTarget& target);
|
||||||
|
|
Loading…
Reference in New Issue