Browse Source

cmPolicies: Factor out helper to recognize generated cmake_policy calls

Brad King 1 year ago
parent
commit
aaebad0993
1 changed files with 13 additions and 5 deletions
  1. 13 5
      Source/cmPolicies.cxx

+ 13 - 5
Source/cmPolicies.cxx

@@ -277,6 +277,17 @@ bool cmPolicies::ApplyPolicyVersion(cmMakefile* mf,
                                         warnCompat);
 }
 
+namespace {
+bool IsFromLegacyInstallEXPORT(cmMakefile* mf, unsigned int majorVer,
+                               unsigned int minorVer, unsigned int patchVer)
+{
+  return majorVer == 2 && minorVer == 6 && patchVer == 0 &&
+    mf->GetStateSnapshot().CanPopPolicyScope() &&
+    cmSystemTools::Strucmp(mf->GetBacktrace().Top().Name.c_str(),
+                           "cmake_policy") == 0;
+}
+}
+
 bool cmPolicies::ApplyPolicyVersion(cmMakefile* mf, unsigned int majorVer,
                                     unsigned int minorVer,
                                     unsigned int patchVer,
@@ -285,12 +296,9 @@ bool cmPolicies::ApplyPolicyVersion(cmMakefile* mf, unsigned int majorVer,
   // Warn about policy versions for which support will be removed.
   if (warnCompat == WarnCompat::On &&
       (majorVer < 3 || (majorVer == 3 && minorVer < 10)) &&
-      // Avoid warning on calls generated by install(EXPORT)
+      // Silently tolerate cmake_policy calls generated by install(EXPORT)
       // in CMake versions prior to 3.18.
-      !(majorVer == 2 && minorVer == 6 && patchVer == 0 &&
-        mf->GetStateSnapshot().CanPopPolicyScope() &&
-        cmSystemTools::Strucmp(mf->GetBacktrace().Top().Name.c_str(),
-                               "cmake_policy") == 0)) {
+      !IsFromLegacyInstallEXPORT(mf, majorVer, minorVer, patchVer)) {
     mf->IssueMessage(
       MessageType::DEPRECATION_WARNING,
       "Compatibility with CMake < 3.10 will be removed from "