Commit 52b9d828 authored by Stephen Kelly's avatar Stephen Kelly
Browse files

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.
parent fe603c7d
......@@ -86,6 +86,23 @@ bool cmGetDirectoryPropertyCommand
const char *prop = 0;
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);
}
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.
return this->StoreResult(mf->GetProperty(this->PropertyName));
}
......
......@@ -4171,22 +4171,6 @@ const char *cmMakefile::GetProperty(const std::string& prop,
this->GetListOfMacros(output);
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")
{
output = cmJoin(this->GetLinkDirectories(), ";");
......@@ -4674,6 +4658,11 @@ cmState::Snapshot cmMakefile::GetStateSnapshot() const
return this->StateSnapshot;
}
const char* cmMakefile::GetDefineFlagsCMP0059() const
{
return this->DefineFlagsOrig.c_str();
}
//----------------------------------------------------------------------------
cmPolicies::PolicyStatus
cmMakefile::GetPolicyStatus(cmPolicies::PolicyID id) const
......
......@@ -838,6 +838,8 @@ public:
cmState::Snapshot GetStateSnapshot() const;
const char* GetDefineFlagsCMP0059() const;
protected:
// add link libraries and directories to the target
void AddGlobalLinkInformation(const std::string& name, cmTarget& target);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment