summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2015-06-07 12:50:54 (GMT)
committerStephen Kelly <steveire@gmail.com>2015-06-08 20:23:44 (GMT)
commit52b9d828ab482f5eaae3313d821d9a4a492f069b (patch)
tree5bfd46840fe306a15b23d3ddf65ea4fe3dea73ca /Source
parentfe603c7dfb8a3d0dfc892b46f9df0b4c32a892f9 (diff)
downloadCMake-52b9d828ab482f5eaae3313d821d9a4a492f069b.zip
CMake-52b9d828ab482f5eaae3313d821d9a4a492f069b.tar.gz
CMake-52b9d828ab482f5eaae3313d821d9a4a492f069b.tar.bz2
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.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmGetDirectoryPropertyCommand.cxx17
-rw-r--r--Source/cmGetPropertyCommand.cxx16
-rw-r--r--Source/cmMakefile.cxx21
-rw-r--r--Source/cmMakefile.h2
4 files changed, 40 insertions, 16 deletions
diff --git a/Source/cmGetDirectoryPropertyCommand.cxx b/Source/cmGetDirectoryPropertyCommand.cxx
index f60eba7..c056d95 100644
--- a/Source/cmGetDirectoryPropertyCommand.cxx
+++ b/Source/cmGetDirectoryPropertyCommand.cxx
@@ -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);
diff --git a/Source/cmGetPropertyCommand.cxx b/Source/cmGetPropertyCommand.cxx
index 36b6c64..33d638b 100644
--- a/Source/cmGetPropertyCommand.cxx
+++ b/Source/cmGetPropertyCommand.cxx
@@ -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));
}
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index a8b163a..63dbe27 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -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
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h
index 6f6ed27..86bde0c 100644
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@ -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);