diff options
author | Stephen Kelly <steveire@gmail.com> | 2015-06-07 12:50:54 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2015-06-08 20:23:44 (GMT) |
commit | 52b9d828ab482f5eaae3313d821d9a4a492f069b (patch) | |
tree | 5bfd46840fe306a15b23d3ddf65ea4fe3dea73ca | |
parent | fe603c7dfb8a3d0dfc892b46f9df0b4c32a892f9 (diff) | |
download | CMake-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.
-rw-r--r-- | Source/cmGetDirectoryPropertyCommand.cxx | 17 | ||||
-rw-r--r-- | Source/cmGetPropertyCommand.cxx | 16 | ||||
-rw-r--r-- | Source/cmMakefile.cxx | 21 | ||||
-rw-r--r-- | Source/cmMakefile.h | 2 |
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); |