EVIS: Add policy CMP0053

This policy switches between the old EVIS parser and the new, faster
parser.
This commit is contained in:
Ben Boeckel 2014-04-28 14:59:11 -04:00 committed by Brad King
parent e423f1c05d
commit 25102efc1d
5 changed files with 55 additions and 0 deletions

View File

@ -104,3 +104,4 @@ All Policies
/policy/CMP0050
/policy/CMP0051
/policy/CMP0052
/policy/CMP0053

View File

@ -10,6 +10,9 @@ variable reference is an error. The OLD behavior for this policy is
to warn about the error, leave the string untouched, and continue.
The NEW behavior for this policy is to report an error.
If :policy:`CMP0053` is set to ``NEW``, this policy has no effect
and is treated as always being ``NEW``.
This policy was introduced in CMake version 2.6.3. CMake version
|release| warns when the policy is not set and uses OLD behavior. Use
the cmake_policy command to set it to OLD or NEW explicitly.

44
Help/policy/CMP0053.rst Normal file
View File

@ -0,0 +1,44 @@
CMP0053
-------
Simplify variable reference and escape sequence evaluation.
CMake 3.1 introduced a much faster implementation of evaluation of the
:ref:`Variable References` and :ref:`Escape Sequences` documented in the
:manual:`cmake-language(7)` manual. While the behavior is identical
to the legacy implementation in most cases, some corner cases were
cleaned up to simplify the behavior. Specifically:
* Expansion of ``@VAR@`` reference syntax defined by the
:command:`configure_file` and :command:`string(CONFIGURE)`
commands is no longer performed in other contexts.
* Literal ``${VAR}`` reference syntax may contain only
alphanumeric characters (``A-Z``, ``a-z``, ``0-9``) and
the characters ``_``, ``.``, ``/``, ``-``, and ``+``.
Variables with other characters in their name may still
be referenced indirectly, e.g.
.. code-block:: cmake
set(varname "otherwise & disallowed $ characters")
message("${${varname}}")
* The setting of policy :policy:`CMP0010` is not considered,
so improper variable reference syntax is always an error.
* More characters are allowed to be escaped in variable names.
Previously, only ``()#" \#@^`` were valid characters to
escape. Now any non-alphanumeric, non-semicolon, non-NUL
character may be escaped following the ``escape_identity``
production in the :ref:`Escape Sequences` section of the
:manual:`cmake-language(7)` manual.
The ``OLD`` behavior for this policy is to honor the legacy behavior for
variable references and escape sequences. The ``NEW`` behavior is to
use the simpler variable expansion and escape sequence evaluation rules.
This policy was introduced in CMake version 3.1.
CMake version |release| warns when the policy is not set and uses
``OLD`` behavior. Use the :command:`cmake_policy` command to set
it to ``OLD`` or ``NEW`` explicitly.

View File

@ -354,6 +354,11 @@ cmPolicies::cmPolicies()
"Reject source and build dirs in installed "
"INTERFACE_INCLUDE_DIRECTORIES.",
3,1,0, cmPolicies::WARN);
this->DefinePolicy(
CMP0053, "CMP0053",
"Simplify variable reference and escape sequence evaluation.",
3,1,0, cmPolicies::WARN);
}
cmPolicies::~cmPolicies()

View File

@ -108,6 +108,8 @@ public:
CMP0052, ///< Reject source and build dirs in installed
/// INTERFACE_INCLUDE_DIRECTORIES
CMP0053, ///< Simplify variable reference and escape sequence evaluation
/** \brief Always the last entry.
*
* Useful mostly to avoid adding a comma the last policy when adding a new