summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Boeckel <ben.boeckel@kitware.com>2020-04-21 14:58:34 (GMT)
committerBen Boeckel <ben.boeckel@kitware.com>2020-04-21 15:27:27 (GMT)
commitad4487a96ae6e7e93e9b14d0fee67da01e27e12a (patch)
tree1e53f5706e8d63fdcd56edef2e7f16c8344e9afc
parent5d32699975d8623c19f74c75f22ee128a81508c8 (diff)
downloadCMake-ad4487a96ae6e7e93e9b14d0fee67da01e27e12a.zip
CMake-ad4487a96ae6e7e93e9b14d0fee67da01e27e12a.tar.gz
CMake-ad4487a96ae6e7e93e9b14d0fee67da01e27e12a.tar.bz2
cmIncludeCommand: add infrastructure for deprecated modules
-rw-r--r--Source/cmIncludeCommand.cxx32
1 files changed, 31 insertions, 1 deletions
diff --git a/Source/cmIncludeCommand.cxx b/Source/cmIncludeCommand.cxx
index 14264f4..019483e 100644
--- a/Source/cmIncludeCommand.cxx
+++ b/Source/cmIncludeCommand.cxx
@@ -2,7 +2,9 @@
file Copyright.txt or https://cmake.org/licensing for details. */
#include "cmIncludeCommand.h"
+#include <map>
#include <sstream>
+#include <utility>
#include "cmExecutionStatus.h"
#include "cmGlobalGenerator.h"
@@ -16,6 +18,8 @@
bool cmIncludeCommand(std::vector<std::string> const& args,
cmExecutionStatus& status)
{
+ static std::map<std::string, cmPolicies::PolicyID> DeprecatedModules;
+
if (args.empty() || args.size() > 4) {
status.SetError("called with wrong number of arguments. "
"include() only takes one file.");
@@ -65,9 +69,35 @@ bool cmIncludeCommand(std::vector<std::string> const& args,
}
if (!cmSystemTools::FileIsFullPath(fname)) {
+ bool system = false;
// Not a path. Maybe module.
std::string module = cmStrCat(fname, ".cmake");
- std::string mfile = status.GetMakefile().GetModulesFile(module);
+ std::string mfile = status.GetMakefile().GetModulesFile(module, system);
+
+ if (system) {
+ auto ModulePolicy = DeprecatedModules.find(fname);
+ if (ModulePolicy != DeprecatedModules.end()) {
+ cmPolicies::PolicyStatus PolicyStatus =
+ status.GetMakefile().GetPolicyStatus(ModulePolicy->second);
+ switch (PolicyStatus) {
+ case cmPolicies::WARN: {
+ status.GetMakefile().IssueMessage(
+ MessageType::AUTHOR_WARNING,
+ cmStrCat(cmPolicies::GetPolicyWarning(ModulePolicy->second),
+ "\n"));
+ CM_FALLTHROUGH;
+ }
+ case cmPolicies::OLD:
+ break;
+ case cmPolicies::REQUIRED_IF_USED:
+ case cmPolicies::REQUIRED_ALWAYS:
+ case cmPolicies::NEW:
+ mfile = "";
+ break;
+ }
+ }
+ }
+
if (!mfile.empty()) {
fname = mfile;
}