summaryrefslogtreecommitdiffstats
path: root/Source/cmComputeLinkDepends.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2008-03-13 20:35:39 (GMT)
committerBrad King <brad.king@kitware.com>2008-03-13 20:35:39 (GMT)
commitbf4cef9d5cb67728e855cd65bafa2a3cde684cfe (patch)
tree22eacf13e8480a8d9a3fda5c15216b324878243e /Source/cmComputeLinkDepends.cxx
parentd46ff28ac9465969f9fda862d06a048fa40d72f6 (diff)
downloadCMake-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.cxx52
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;
}