FindPython: fix CROSSCOMPILING with CMP0190=OLD

Fixes: #28029
This commit is contained in:
Marc Chevrier
2026-08-10 14:52:04 +02:00
parent dd78af3ac2
commit 44fabaa32d
+14 -8
View File
@@ -1647,18 +1647,24 @@ endif()
cmake_policy (GET CMP0190 _${_PYTHON_PREFIX}_CROSSCOMPILING_POLICY)
unset (_${_PYTHON_PREFIX}_CROSSCOMPILING)
unset (_${_PYTHON_PREFIX}_CROSSCOMPILING_EMULATOR)
if (CMAKE_CROSSCOMPILING AND _${_PYTHON_PREFIX}_CROSSCOMPILING_POLICY STREQUAL "NEW")
if (CMAKE_CROSSCOMPILING)
if (${_PYTHON_BASE}_FIND_COMPONENTS MATCHES "Interpreter|Compiler"
AND ${_PYTHON_BASE}_FIND_COMPONENTS MATCHES "Development")
if (DEFINED ${_PYTHON_PREFIX}_CROSSCOMPILING_EMULATOR OR CMAKE_CROSSCOMPILING_EMULATOR)
set (_${_PYTHON_PREFIX}_CROSSCOMPILING TRUE)
if (DEFINED ${_PYTHON_PREFIX}_CROSSCOMPILING_EMULATOR)
set (_${_PYTHON_PREFIX}_CROSSCOMPILING_EMULATOR "${${_PYTHON_PREFIX}_CROSSCOMPILING_EMULATOR}")
cmake_policy (GET CMP0190 _${_PYTHON_PREFIX}_CROSSCOMPILING_POLICY)
if (_${_PYTHON_PREFIX}_CROSSCOMPILING_POLICY STREQUAL "NEW")
if (DEFINED ${_PYTHON_PREFIX}_CROSSCOMPILING_EMULATOR OR CMAKE_CROSSCOMPILING_EMULATOR)
set (_${_PYTHON_PREFIX}_CROSSCOMPILING TRUE)
if (DEFINED ${_PYTHON_PREFIX}_CROSSCOMPILING_EMULATOR)
set (_${_PYTHON_PREFIX}_CROSSCOMPILING_EMULATOR "${${_PYTHON_PREFIX}_CROSSCOMPILING_EMULATOR}")
else()
set (_${_PYTHON_PREFIX}_CROSSCOMPILING_EMULATOR "${CMAKE_CROSSCOMPILING_EMULATOR}")
endif()
else()
set (_${_PYTHON_PREFIX}_CROSSCOMPILING_EMULATOR "${CMAKE_CROSSCOMPILING_EMULATOR}")
_python_display_failure ("${_PYTHON_PREFIX}: When cross-compiling, Interpreter and/or Compiler components cannot be searched when ${_PYTHON_PREFIX}_CROSSCOMPILING_EMULATOR or CMAKE_CROSSCOMPILING_EMULATOR variable is not specified (see policy CMP0190)." FATAL)
endif()
else()
_python_display_failure ("${_PYTHON_PREFIX}: When cross-compiling, Interpreter and/or Compiler components cannot be searched when ${_PYTHON_PREFIX}_CROSSCOMPILING_EMULATOR or CMAKE_CROSSCOMPILING_EMULATOR variable is not specified (see policy CMP0190)." FATAL)
# CMP0190 == OLD : no condition regarding crosscompiling environment
set (_${_PYTHON_PREFIX}_CROSSCOMPILING TRUE)
endif()
endif()
endif()
@@ -2461,7 +2467,7 @@ if ("Interpreter" IN_LIST ${_PYTHON_BASE}_FIND_COMPONENTS)
if (_${_PYTHON_PREFIX}_EXECUTABLE AND _${_PYTHON_PREFIX}_EXECUTABLE_USABLE)
list (LENGTH _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES _properties_length)
if (NOT _properties_length EQUAL "12")
if (NOT _properties_length EQUAL "13")
# cache variable comes from some older Python module version: not usable
unset (_${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES CACHE)
endif()