diff options
author | Brad King <brad.king@kitware.com> | 2017-04-21 18:29:27 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2017-04-21 19:04:33 (GMT) |
commit | 4f5bbbeab9bbe7dd3aa3bd9be5d201ed2447bad1 (patch) | |
tree | 5b9afb2c7559f9a69137cbdcace548e9540c16bb /Source | |
parent | 294cf948dc37799e1980685afbf1fa585ad5b0fb (diff) | |
download | CMake-4f5bbbeab9bbe7dd3aa3bd9be5d201ed2447bad1.zip CMake-4f5bbbeab9bbe7dd3aa3bd9be5d201ed2447bad1.tar.gz CMake-4f5bbbeab9bbe7dd3aa3bd9be5d201ed2447bad1.tar.bz2 |
Add deprecation warnings for policies CMP0036 and below
The OLD behaviors of all policies are deprecated, but only by
documentation. Add an explicit deprecation diagnostic for some policies
to encourage projects to port away from setting policies to OLD.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmMakefile.cxx | 7 | ||||
-rw-r--r-- | Source/cmPolicies.cxx | 16 | ||||
-rw-r--r-- | Source/cmPolicies.h | 1 |
3 files changed, 24 insertions, 0 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 4ed76c7..b8a5293 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -4002,6 +4002,13 @@ bool cmMakefile::SetPolicy(cmPolicies::PolicyID id, return false; } + // Deprecate old policies, especially those that require a lot + // of code to maintain the old behavior. + if (status == cmPolicies::OLD && id <= cmPolicies::CMP0036) { + this->IssueMessage(cmake::DEPRECATION_WARNING, + cmPolicies::GetPolicyDeprecatedWarning(id)); + } + this->StateSnapshot.SetPolicy(id, status); return true; } diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index 837557b..da3edd4 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -275,6 +275,22 @@ std::string cmPolicies::GetPolicyWarning(cmPolicies::PolicyID id) return msg.str(); } +std::string cmPolicies::GetPolicyDeprecatedWarning(cmPolicies::PolicyID id) +{ + std::ostringstream msg; + /* clang-format off */ + msg << + "The OLD behavior for policy " << idToString(id) << " " + "will be removed from a future version of CMake.\n" + "The cmake-policies(7) manual explains that the OLD behaviors of all " + "policies are deprecated and that a policy should be set to OLD only " + "under specific short-term circumstances. Projects should be ported " + "to the NEW behavior and not rely on setting a policy to OLD." + ; + /* clang-format on */ + return msg.str(); +} + ///! return an error string for when a required policy is unspecified std::string cmPolicies::GetRequiredPolicyError(cmPolicies::PolicyID id) { diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 120beb6..69cbc18 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -279,6 +279,7 @@ public: ///! return a warning string for a given policy static std::string GetPolicyWarning(cmPolicies::PolicyID id); + static std::string GetPolicyDeprecatedWarning(cmPolicies::PolicyID id); ///! return an error string for when a required policy is unspecified static std::string GetRequiredPolicyError(cmPolicies::PolicyID id); |