diff options
author | Ben Boeckel <ben.boeckel@kitware.com> | 2020-04-21 14:58:34 (GMT) |
---|---|---|
committer | Ben Boeckel <ben.boeckel@kitware.com> | 2020-04-21 15:27:27 (GMT) |
commit | ad4487a96ae6e7e93e9b14d0fee67da01e27e12a (patch) | |
tree | 1e53f5706e8d63fdcd56edef2e7f16c8344e9afc | |
parent | 5d32699975d8623c19f74c75f22ee128a81508c8 (diff) | |
download | CMake-ad4487a96ae6e7e93e9b14d0fee67da01e27e12a.zip CMake-ad4487a96ae6e7e93e9b14d0fee67da01e27e12a.tar.gz CMake-ad4487a96ae6e7e93e9b14d0fee67da01e27e12a.tar.bz2 |
cmIncludeCommand: add infrastructure for deprecated modules
-rw-r--r-- | Source/cmIncludeCommand.cxx | 32 |
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; } |