diff --git a/Modules/FindPython/Support.cmake b/Modules/FindPython/Support.cmake index 81dde3c8ed..9314f21360 100644 --- a/Modules/FindPython/Support.cmake +++ b/Modules/FindPython/Support.cmake @@ -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()