diff options
author | Brad King <brad.king@kitware.com> | 2009-01-22 18:18:40 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2009-01-22 18:18:40 (GMT) |
commit | c332e0bf3c4e619358322bd0d0961af45653eb5b (patch) | |
tree | 3e31da4052687557169b0e8da2cf897f42cbcb63 /Source/cmPolicies.cxx | |
parent | 3028ca756c8621b3cc37032987eb01fbe61da248 (diff) | |
download | CMake-c332e0bf3c4e619358322bd0d0961af45653eb5b.zip CMake-c332e0bf3c4e619358322bd0d0961af45653eb5b.tar.gz CMake-c332e0bf3c4e619358322bd0d0961af45653eb5b.tar.bz2 |
ENH: Isolate policy changes in included scripts
Isolation of policy changes inside scripts is important for protecting
the including context. This teaches include() and find_package() to
imply a cmake_policy(PUSH) and cmake_policy(POP) around the scripts they
load, with a NO_POLICY_SCOPE option to disable the behavior. This also
creates CMake Policy CMP0011 to provide compatibility. See issue #8192.
Diffstat (limited to 'Source/cmPolicies.cxx')
-rw-r--r-- | Source/cmPolicies.cxx | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index be546f8..169814a 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -335,6 +335,26 @@ cmPolicies::cmPolicies() "the string untouched, and continue. " "The NEW behavior for this policy is to report an error.", 2,6,3, cmPolicies::WARN); + + this->DefinePolicy( + CMP0011, "CMP0011", + "Included scripts do automatic cmake_policy PUSH and POP.", + "In CMake 2.6.2 and below, CMake Policy settings in scripts loaded by " + "the include() and find_package() commands would affect the includer. " + "Explicit invocations of cmake_policy(PUSH) and cmake_policy(POP) were " + "required to isolate policy changes and protect the includer. " + "While some scripts intend to affect the policies of their includer, " + "most do not. " + "In CMake 2.6.3 and above, include() and find_package() by default PUSH " + "and POP an entry on the policy stack around an included script, " + "but provide a NO_POLICY_SCOPE option to disable it. " + "This policy determines whether or not to imply NO_POLICY_SCOPE for " + "compatibility. " + "The OLD behavior for this policy is to imply NO_POLICY_SCOPE for " + "include() and find_package() commands. " + "The NEW behavior for this policy is to allow the commands to do their " + "default cmake_policy PUSH and POP.", + 2,6,3, cmPolicies::WARN); } cmPolicies::~cmPolicies() |