From 25102efc1db1e0d165ebe5e4eaef33b8206d9d3e Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 28 Apr 2014 14:59:11 -0400 Subject: EVIS: Add policy CMP0053 This policy switches between the old EVIS parser and the new, faster parser. --- Help/manual/cmake-policies.7.rst | 1 + Help/policy/CMP0010.rst | 3 +++ Help/policy/CMP0053.rst | 44 ++++++++++++++++++++++++++++++++++++++++ Source/cmPolicies.cxx | 5 +++++ Source/cmPolicies.h | 2 ++ 5 files changed, 55 insertions(+) create mode 100644 Help/policy/CMP0053.rst diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst index 4b895fe..136cf5c 100644 --- a/Help/manual/cmake-policies.7.rst +++ b/Help/manual/cmake-policies.7.rst @@ -104,3 +104,4 @@ All Policies /policy/CMP0050 /policy/CMP0051 /policy/CMP0052 + /policy/CMP0053 diff --git a/Help/policy/CMP0010.rst b/Help/policy/CMP0010.rst index 01699e1..9d2eb76 100644 --- a/Help/policy/CMP0010.rst +++ b/Help/policy/CMP0010.rst @@ -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. diff --git a/Help/policy/CMP0053.rst b/Help/policy/CMP0053.rst new file mode 100644 index 0000000..fac430e --- /dev/null +++ b/Help/policy/CMP0053.rst @@ -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. diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx index 309f280..693945d 100644 --- a/Source/cmPolicies.cxx +++ b/Source/cmPolicies.cxx @@ -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() diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h index 60f35c2..5d69d14 100644 --- a/Source/cmPolicies.h +++ b/Source/cmPolicies.h @@ -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 -- cgit v0.12