FindPython: Add policy to manage lookup stratgey default.

This commit is contained in:
Marc Chevrier
2019-05-21 16:10:43 +02:00
parent 9f205acefe
commit 8517b549f4
9 changed files with 58 additions and 5 deletions
+1
View File
@@ -57,6 +57,7 @@ Policies Introduced by CMake 3.15
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
CMP0094: FindPython3, FindPython2 and FindPython use LOCATION for lookup strategy. </policy/CMP0094>
CMP0093: FindBoost reports Boost_VERSION in x.y.z format. </policy/CMP0093> CMP0093: FindBoost reports Boost_VERSION in x.y.z format. </policy/CMP0093>
CMP0092: MSVC warning flags are not in CMAKE_{C,CXX}_FLAGS by default. </policy/CMP0092> CMP0092: MSVC warning flags are not in CMAKE_{C,CXX}_FLAGS by default. </policy/CMP0092>
CMP0091: MSVC runtime library flags are selected by an abstraction. </policy/CMP0091> CMP0091: MSVC runtime library flags are selected by an abstraction. </policy/CMP0091>
+22
View File
@@ -0,0 +1,22 @@
CMP0094
-------
Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
use ``LOCATION`` for lookup strategy.
Starting with CMake 3.15, Modules :module:`FindPython3`, :module:`FindPython2`
and :module:`FindPython` set value ``LOCATION`` for, respectively, variables
``Python3_FIND_STRATEGY``, ``Python2_FIND_STRATEGY`` and
``Python_FIND_STRATEGY``. This policy provides compatibility with projects that
expect the legacy behavior.
The ``OLD`` behavior for this policy set value ``VERSION`` for variables
``Python3_FIND_STRATEGY``, ``Python2_FIND_STRATEGY`` and
``Python_FIND_STRATEGY``.
This policy was introduced in CMake version 3.15. Use the
:command:`cmake_policy` command to set it to ``OLD`` or ``NEW`` explicitly.
Unlike many policies, CMake version |release| does *not* warn
when this policy is not set and simply uses the ``OLD`` behavior.
.. include:: DEPRECATED.txt
+5
View File
@@ -0,0 +1,5 @@
FindPython-CMP0094
------------------
* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
have changed default strategy for lookup. See policy :policy:`CMP0094`.
@@ -0,0 +1,5 @@
FindPython-FIND_STRATEGY
------------------------
* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
gain a new way to control lookup strategy.
+3 -1
View File
@@ -144,9 +144,11 @@ Hints
* ``VERSION``: Try to find the most recent version in all specified * ``VERSION``: Try to find the most recent version in all specified
locations. locations.
This is the default. This is the default if policy :policy:`CMP0094` is undefined or set to
``OLD``.
* ``LOCATION``: Stops lookup as soon as a version satisfying version * ``LOCATION``: Stops lookup as soon as a version satisfying version
constraints is founded. constraints is founded.
This is the default if policy :policy:`CMP0094` is set to ``NEW``.
``Python_FIND_REGISTRY`` ``Python_FIND_REGISTRY``
On Windows the ``Python_FIND_REGISTRY`` variable determine the order On Windows the ``Python_FIND_REGISTRY`` variable determine the order
+12 -2
View File
@@ -5,8 +5,14 @@
# This file is a "template" file used by various FindPython modules. # This file is a "template" file used by various FindPython modules.
# #
cmake_policy (GET CMP0094 _${_PYTHON_PREFIX}_LOOKUP_POLICY)
cmake_policy (VERSION 3.7) cmake_policy (VERSION 3.7)
if (_${_PYTHON_PREFIX}_LOOKUP_POLICY)
cmake_policy (SET CMP0094 ${_${_PYTHON_PREFIX}_LOOKUP_POLICY})
endif()
# #
# Initial configuration # Initial configuration
# #
@@ -316,13 +322,17 @@ if (${_PYTHON_PREFIX}_FIND_VERSION_COUNT GREATER 1)
endif() endif()
# Define lookup strategy # Define lookup strategy
set (_${_PYTHON_PREFIX}_FIND_STRATEGY "VERSION") if (_${_PYTHON_PREFIX}_LOOKUP_POLICY STREQUAL "NEW")
set (_${_PYTHON_PREFIX}_FIND_STRATEGY "LOCATION")
else()
set (_${_PYTHON_PREFIX}_FIND_STRATEGY "VERSION")
endif()
if (DEFINED ${_PYTHON_PREFIX}_FIND_STRATEGY) if (DEFINED ${_PYTHON_PREFIX}_FIND_STRATEGY)
if (NOT ${_PYTHON_PREFIX}_FIND_STRATEGY MATCHES "^(VERSION|LOCATION)$") if (NOT ${_PYTHON_PREFIX}_FIND_STRATEGY MATCHES "^(VERSION|LOCATION)$")
message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${${_PYTHON_PREFIX}_FIND_STRATEGY}: invalid value for '${_PYTHON_PREFIX}_FIND_STRATEGY'. 'VERSION' or 'LOCATION' expected.") message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${${_PYTHON_PREFIX}_FIND_STRATEGY}: invalid value for '${_PYTHON_PREFIX}_FIND_STRATEGY'. 'VERSION' or 'LOCATION' expected.")
set (_${_PYTHON_PREFIX}_FIND_STRATEGY "VERSION") set (_${_PYTHON_PREFIX}_FIND_STRATEGY "VERSION")
else() else()
set (_${_PYTHON_PREFIX}_FIND_STRATEGY "${${_PYTHON_PREFIX}_FIND_STRATEGY}") set (_${_PYTHON_PREFIX}_FIND_STRATEGY "${${_PYTHON_PREFIX}_FIND_STRATEGY}")
endif() endif()
endif() endif()
+3 -1
View File
@@ -145,9 +145,11 @@ Hints
* ``VERSION``: Try to find the most recent version in all specified * ``VERSION``: Try to find the most recent version in all specified
locations. locations.
This is the default. This is the default if policy :policy:`CMP0094` is undefined or set to
``OLD``.
* ``LOCATION``: Stops lookup as soon as a version satisfying version * ``LOCATION``: Stops lookup as soon as a version satisfying version
constraints is founded. constraints is founded.
This is the default if policy :policy:`CMP0094` is set to ``NEW``.
``Python2_FIND_REGISTRY`` ``Python2_FIND_REGISTRY``
On Windows the ``Python2_FIND_REGISTRY`` variable determine the order On Windows the ``Python2_FIND_REGISTRY`` variable determine the order
+3 -1
View File
@@ -145,9 +145,11 @@ Hints
* ``VERSION``: Try to find the most recent version in all specified * ``VERSION``: Try to find the most recent version in all specified
locations. locations.
This is the default. This is the default if policy :policy:`CMP0094` is undefined or set to
``OLD``.
* ``LOCATION``: Stops lookup as soon as a version satisfying version * ``LOCATION``: Stops lookup as soon as a version satisfying version
constraints is founded. constraints is founded.
This is the default if policy :policy:`CMP0094` is set to ``NEW``.
``Python3_FIND_REGISTRY`` ``Python3_FIND_REGISTRY``
On Windows the ``Python3_FIND_REGISTRY`` variable determine the order On Windows the ``Python3_FIND_REGISTRY`` variable determine the order
+4
View File
@@ -275,6 +275,10 @@ class cmMakefile;
"MSVC warning flags are not in CMAKE_<LANG>_FLAGS by default.", 3, \ "MSVC warning flags are not in CMAKE_<LANG>_FLAGS by default.", 3, \
15, 0, cmPolicies::WARN) \ 15, 0, cmPolicies::WARN) \
SELECT(POLICY, CMP0093, "FindBoost reports Boost_VERSION in x.y.z format.", \ SELECT(POLICY, CMP0093, "FindBoost reports Boost_VERSION in x.y.z format.", \
3, 15, 0, cmPolicies::WARN) \
SELECT(POLICY, CMP0094, \
"FindPython3, FindPython2 and FindPyton use " \
"LOCATION for lookup strategy.", \
3, 15, 0, cmPolicies::WARN) 3, 15, 0, cmPolicies::WARN)
#define CM_SELECT_ID(F, A1, A2, A3, A4, A5, A6) F(A1) #define CM_SELECT_ID(F, A1, A2, A3, A4, A5, A6) F(A1)