diff options
author | Brad King <brad.king@kitware.com> | 2008-03-13 20:35:39 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2008-03-13 20:35:39 (GMT) |
commit | bf4cef9d5cb67728e855cd65bafa2a3cde684cfe (patch) | |
tree | 22eacf13e8480a8d9a3fda5c15216b324878243e /Source/cmComputeLinkDepends.cxx | |
parent | d46ff28ac9465969f9fda862d06a048fa40d72f6 (diff) | |
download | CMake-bf4cef9d5cb67728e855cd65bafa2a3cde684cfe.zip CMake-bf4cef9d5cb67728e855cd65bafa2a3cde684cfe.tar.gz CMake-bf4cef9d5cb67728e855cd65bafa2a3cde684cfe.tar.bz2 |
ENH: Add policy CMP_0004 to require library names to have no leading or trailing whitespace. Replace previous check of CMAKE_BACKWARDS_COMPATIBILITY against version 2.4 with the policy.
Diffstat (limited to 'Source/cmComputeLinkDepends.cxx')
-rw-r--r-- | Source/cmComputeLinkDepends.cxx | 52 |
1 files changed, 41 insertions, 11 deletions
diff --git a/Source/cmComputeLinkDepends.cxx b/Source/cmComputeLinkDepends.cxx index ecbb129..5005e96 100644 --- a/Source/cmComputeLinkDepends.cxx +++ b/Source/cmComputeLinkDepends.cxx @@ -21,6 +21,7 @@ #include "cmLocalGenerator.h" #include "cmMakefile.h" #include "cmTarget.h" +#include "cmake.h" #include <cmsys/stl/algorithm> @@ -161,6 +162,7 @@ cmComputeLinkDepends this->Makefile = this->Target->GetMakefile(); this->LocalGenerator = this->Makefile->GetLocalGenerator(); this->GlobalGenerator = this->LocalGenerator->GetGlobalGenerator(); + this->CMakeInstance = this->GlobalGenerator->GetCMakeInstance(); // The configuration being linked. this->Config = config; @@ -568,17 +570,45 @@ std::string cmComputeLinkDepends::CleanItemName(std::string const& item) { lib = lib.substr(0, pos+1); } - if(lib != item && !this->Makefile->NeedBackwardsCompatibility(2,4)) - { - cmOStringStream e; - e << "Target \"" << this->Target->GetName() << "\" links to item \"" - << item << "\" which has leading or trailing whitespace. " - << "CMake is stripping off the whitespace but this may not be " - << "supported in the future. " - << "Update the CMakeLists.txt files to avoid adding the whitespace. " - << "Set CMAKE_BACKWARDS_COMPATIBILITY to 2.4 or lower to disable this " - << "warning."; - cmSystemTools::Message(e.str().c_str()); + if(lib != item) + { + switch(this->Target->GetPolicyStatusCMP0004()) + { + case cmPolicies::WARN: + { + cmOStringStream w; + w << (this->Makefile->GetPolicies() + ->GetPolicyWarning(cmPolicies::CMP0004)) << "\n" + << "Target \"" << this->Target->GetName() << "\" links to item \"" + << item << "\" which has leading or trailing whitespace."; + this->CMakeInstance->IssueMessage(cmake::AUTHOR_WARNING, w.str(), + this->Target->GetBacktrace()); + } + case cmPolicies::OLD: + break; + case cmPolicies::NEW: + { + cmOStringStream e; + e << "Target \"" << this->Target->GetName() << "\" links to item \"" + << item << "\" which has leading or trailing whitespace. " + << "This is now an error according to policy CMP0004."; + this->CMakeInstance->IssueMessage(cmake::FATAL_ERROR, e.str(), + this->Target->GetBacktrace()); + } + break; + case cmPolicies::REQUIRED_IF_USED: + case cmPolicies::REQUIRED_ALWAYS: + { + cmOStringStream e; + e << (this->Makefile->GetPolicies() + ->GetRequiredPolicyError(cmPolicies::CMP0004)) << "\n" + << "Target \"" << this->Target->GetName() << "\" links to item \"" + << item << "\" which has leading or trailing whitespace."; + this->CMakeInstance->IssueMessage(cmake::FATAL_ERROR, e.str(), + this->Target->GetBacktrace()); + } + break; + } } return lib; } |