diff options
author | Marc Chevrier <marc.chevrier@gmail.com> | 2020-04-23 15:01:38 (GMT) |
---|---|---|
committer | Marc Chevrier <marc.chevrier@gmail.com> | 2020-04-23 15:47:22 (GMT) |
commit | f39da773eee5ae018aa5c02352ec9933b9e64d08 (patch) | |
tree | 397ef3246b277773a598a64bf2bb22719c6ba8e6 /Modules/FindPython | |
parent | 8c00f5ef0a29758c56fa46a11e150b0e0f5c364e (diff) | |
download | CMake-f39da773eee5ae018aa5c02352ec9933b9e64d08.zip CMake-f39da773eee5ae018aa5c02352ec9933b9e64d08.tar.gz CMake-f39da773eee5ae018aa5c02352ec9933b9e64d08.tar.bz2 |
FindPython: fix python compiler validation
Ensure also the cache of properties is erased in case of multiple
searches.
Fixes: #20626, #20627
Diffstat (limited to 'Modules/FindPython')
-rw-r--r-- | Modules/FindPython/Support.cmake | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/Modules/FindPython/Support.cmake b/Modules/FindPython/Support.cmake index 0581145..90f3c11 100644 --- a/Modules/FindPython/Support.cmake +++ b/Modules/FindPython/Support.cmake @@ -474,7 +474,7 @@ function (_PYTHON_VALIDATE_INTERPRETER) cmake_parse_arguments (PARSE_ARGV 0 _PVI "EXACT;CHECK_EXISTS" "" "") if (_PVI_UNPARSED_ARGUMENTS) - set (expected_version ${_PVI_UNPARSED_ARGUMENTS}) + set (expected_version "${_PVI_UNPARSED_ARGUMENTS}") else() unset (expected_version) endif() @@ -585,18 +585,18 @@ function (_PYTHON_VALIDATE_INTERPRETER) endfunction() -function (_PYTHON_VALIDATE_COMPILER expected_version) +function (_PYTHON_VALIDATE_COMPILER) if (NOT _${_PYTHON_PREFIX}_COMPILER) return() endif() - cmake_parse_arguments (_PVC "EXACT;CHECK_EXISTS" "" "" ${ARGN}) + cmake_parse_arguments (PARSE_ARGV 0 _PVC "EXACT;CHECK_EXISTS" "" "") if (_PVC_UNPARSED_ARGUMENTS) set (major_version FALSE) - set (expected_version ${_PVC_UNPARSED_ARGUMENTS}) + set (expected_version "${_PVC_UNPARSED_ARGUMENTS}") else() set (major_version TRUE) - set (expected_version ${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}) + set (expected_version "${_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR}") set (_PVC_EXACT TRUE) endif() @@ -625,15 +625,15 @@ function (_PYTHON_VALIDATE_COMPILER expected_version) RESULT_VARIABLE result OUTPUT_VARIABLE version ERROR_QUIET) - file (REMOVE_RECURSE "${_${_PYTHON_PREFIX}_VERSION_DIR}") - - if (result OR (_PVC_EXACT AND NOT version VERSION_EQUAL expected_version) OR (version VERSION_LESS expected_version)) - # Compiler not usable or has wrong version - if (result) - set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Cannot use the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"") - else() - set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Wrong version for the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"") - endif() + file (REMOVE_RECURSE "${working_dir}") + if (result) + # compiler is not usable + set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Cannot use the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"") + set_property (CACHE _${_PYTHON_PREFIX}_COMPILER PROPERTY VALUE "${_PYTHON_PREFIX}_COMPILER-NOTFOUND") + elseif ((_PVC_EXACT AND NOT version VERSION_EQUAL expected_version) + OR NOT version VERSION_GREATER_EQUAL expected_version) + # Compiler has wrong version + set (_${_PYTHON_PREFIX}_Compiler_REASON_FAILURE "Wrong version for the compiler \"${_${_PYTHON_PREFIX}_COMPILER}\"") set_property (CACHE _${_PYTHON_PREFIX}_COMPILER PROPERTY VALUE "${_PYTHON_PREFIX}_COMPILER-NOTFOUND") endif() endfunction() @@ -963,7 +963,8 @@ unset (_${_PYTHON_PREFIX}_NumPy_REASON_FAILURE) # first step, search for the interpreter if ("Interpreter" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS) - list (APPEND _${_PYTHON_PREFIX}_CACHED_VARS _${_PYTHON_PREFIX}_EXECUTABLE) + list (APPEND _${_PYTHON_PREFIX}_CACHED_VARS _${_PYTHON_PREFIX}_EXECUTABLE + _${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES) if (${_PYTHON_PREFIX}_FIND_REQUIRED_Interpreter) list (APPEND _${_PYTHON_PREFIX}_REQUIRED_VARS ${_PYTHON_PREFIX}_EXECUTABLE) endif() |