cmPolicies: Factor out helper to recognize generated cmake_policy calls

This commit is contained in:
Brad King
2024-11-07 13:40:04 -05:00
parent ad3ae50adf
commit aaebad0993
+13 -5
View File
@@ -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 "