diff options
author | Brad King <brad.king@kitware.com> | 2017-10-25 17:54:26 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-10-30 14:21:21 (GMT) |
commit | 409527a03ced550fbc295faf965aebc7b8dbe003 (patch) | |
tree | d89d50365c36860f1efbb2202d394c3e6fd56efc /Source/cmMakefile.cxx | |
parent | a2611d816b49bce8a85678455b6e80ed0f30fb3e (diff) | |
download | CMake-409527a03ced550fbc295faf965aebc7b8dbe003.zip CMake-409527a03ced550fbc295faf965aebc7b8dbe003.tar.gz CMake-409527a03ced550fbc295faf965aebc7b8dbe003.tar.bz2 |
CMP0037: De-duplicate check and message generation
Diffstat (limited to 'Source/cmMakefile.cxx')
-rw-r--r-- | Source/cmMakefile.cxx | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index fbafbf8..43c529c 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -123,6 +123,42 @@ void cmMakefile::IssueMessage(cmake::MessageType t, this->GetCMakeInstance()->IssueMessage(t, text, this->GetBacktrace()); } +bool cmMakefile::CheckCMP0037(std::string const& targetName, + cmStateEnums::TargetType targetType) const +{ + cmake::MessageType messageType = cmake::AUTHOR_WARNING; + std::ostringstream e; + bool issueMessage = false; + switch (this->GetPolicyStatus(cmPolicies::CMP0037)) { + case cmPolicies::WARN: + if (targetType != cmStateEnums::INTERFACE_LIBRARY) { + e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0037) << "\n"; + issueMessage = true; + } + CM_FALLTHROUGH; + case cmPolicies::OLD: + break; + case cmPolicies::NEW: + case cmPolicies::REQUIRED_IF_USED: + case cmPolicies::REQUIRED_ALWAYS: + issueMessage = true; + messageType = cmake::FATAL_ERROR; + break; + } + if (issueMessage) { + e << "The target name \"" << targetName + << "\" is reserved or not valid for certain " + "CMake features, such as generator expressions, and may result " + "in undefined behavior."; + this->IssueMessage(messageType, e.str()); + + if (messageType == cmake::FATAL_ERROR) { + return false; + } + } + return true; +} + cmStringRange cmMakefile::GetIncludeDirectoriesEntries() const { return this->StateSnapshot.GetDirectory().GetIncludeDirectoriesEntries(); |