Merge topic 'move-CMP0059-handling'
52b9d828
cmMakefile: Move CMP0059 handling to command code.fe603c7d
cmGetDirectoryPropertyCommand: Move variable to the point of use.8fc53c3c
cmGetDirectoryPropertyCommand: Extract StoreResult method.
This commit is contained in:
commit
d78fbb6ad4
|
@ -26,7 +26,6 @@ bool cmGetDirectoryPropertyCommand
|
|||
std::vector<std::string>::const_iterator i = args.begin();
|
||||
std::string variable = *i;
|
||||
++i;
|
||||
std::string output = "";
|
||||
|
||||
// get the directory argument if there is one
|
||||
cmMakefile *dir = this->Makefile;
|
||||
|
@ -79,7 +78,7 @@ bool cmGetDirectoryPropertyCommand
|
|||
"providing the name of the variable to get.");
|
||||
return false;
|
||||
}
|
||||
output = dir->GetSafeDefinition(*i);
|
||||
std::string output = dir->GetSafeDefinition(*i);
|
||||
this->Makefile->AddDefinition(variable, output.c_str());
|
||||
return true;
|
||||
}
|
||||
|
@ -87,14 +86,37 @@ 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);
|
||||
}
|
||||
if (prop)
|
||||
{
|
||||
this->Makefile->AddDefinition(variable, prop);
|
||||
return true;
|
||||
}
|
||||
this->Makefile->AddDefinition(variable, "");
|
||||
this->StoreResult(variable, prop);
|
||||
return true;
|
||||
}
|
||||
|
||||
void cmGetDirectoryPropertyCommand::StoreResult(std::string const& variable,
|
||||
const char* prop)
|
||||
{
|
||||
if (prop)
|
||||
{
|
||||
this->Makefile->AddDefinition(variable, prop);
|
||||
return;
|
||||
}
|
||||
this->Makefile->AddDefinition(variable, "");
|
||||
}
|
||||
|
||||
|
|
|
@ -40,8 +40,9 @@ public:
|
|||
virtual std::string GetName() const { return "get_directory_property";}
|
||||
|
||||
cmTypeMacro(cmGetDirectoryPropertyCommand, cmCommand);
|
||||
|
||||
private:
|
||||
void StoreResult(const std::string& variable, const char* prop);
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue