FindPython: enforce artifacts consistency when cross-compiling

Fixes: #26696
This commit is contained in:
Marc Chevrier
2025-02-16 18:27:23 +01:00
parent 7065c7a586
commit 5c1521c54d
24 changed files with 325 additions and 19 deletions

View File

@@ -98,6 +98,7 @@ Policies Introduced by CMake 4.1
.. toctree::
:maxdepth: 1
CMP0190: FindPython enforce consistency in cross-compiling mode. </policy/CMP0190>
CMP0189: TARGET_PROPERTY evaluates LINK_LIBRARIES properties transitively. </policy/CMP0189>
CMP0188: The FindGCCXML module is removed. </policy/CMP0188>
CMP0187: Include source file without an extension after the same name with an extension. </policy/CMP0187>

31
Help/policy/CMP0190.rst Normal file
View File

@@ -0,0 +1,31 @@
CMP0190
-------
.. versionadded:: 4.1
Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
enforce consistency of artifacts in cross-compiling mode.
Starting with CMake 4.1, Modules :module:`FindPython3`, :module:`FindPython2`
and :module:`FindPython` apply, in cross-compiling mode (i.e. the
:variable:`CMAKE_CROSSCOMPILING` variable is set to true), the following
constraints to the requested components:
* ``Interpreter`` or ``Compiler`` alone: the host artifacts will be searched.
* ``Interpreter`` or ``Compiler`` with ``Development`` or any sub-component:
The target artifacts will be searched. In this case, the
:variable:`CMAKE_CROSSCOMPILING_EMULATOR` variable must be defined and will
be used to execute the interpreter or the compiler.
This policy provides compatibility with projects that expect the legacy
behavior.
The ``OLD`` behavior for this policy does not enforce consistency in
cross-compiling mode and will, potentially, returns a mix of artifacts
(i.e. host and target artifacts).
.. |INTRODUCED_IN_CMAKE_VERSION| replace:: 4.1
.. |WARNS_OR_DOES_NOT_WARN| replace:: does *not* warn
.. include:: STANDARD_ADVICE.txt
.. include:: DEPRECATED.txt

View File

@@ -0,0 +1,6 @@
FindPython-crosscompiling-consistency
-------------------------------------
* Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython`
enforce consistency of artifacts in cross-compiling mode. This prevent mixing
host and target artifacts. See policy :policy:`CMP0190` for more information.