diff options
author | Even Rouault <even.rouault@spatialys.com> | 2024-08-26 13:46:34 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-08-26 14:27:55 (GMT) |
commit | 516124ea23514ff9d7d7d9729031bf0b1e77b682 (patch) | |
tree | 57ca111f45682c86d859e8d8a580369cd00eb4a9 | |
parent | bfa7a5445bbce20363e58443bbccf40e2721aeb3 (diff) | |
download | CMake-516124ea23514ff9d7d7d9729031bf0b1e77b682.zip CMake-516124ea23514ff9d7d7d9729031bf0b1e77b682.tar.gz CMake-516124ea23514ff9d7d7d9729031bf0b1e77b682.tar.bz2 |
FindPython: fix regression of NumPy detection with Intel MKL library
Fix commit df551ee538 (FindPython: fix NumPy detection when Intel MKL
library is installed, 2024-03-20, v3.30.0-rc1~361^2) by setting
`MKL_ENABLE_INSTRUCTIONS` to `SSE4_2`, but only if
`MKL_ENABLE_INSTRUCTIONS` is not set in the calling environment.
Fixes: #26240
-rw-r--r-- | Modules/FindPython/Support.cmake | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/Modules/FindPython/Support.cmake b/Modules/FindPython/Support.cmake index 1386117..294e7d9 100644 --- a/Modules/FindPython/Support.cmake +++ b/Modules/FindPython/Support.cmake @@ -3903,11 +3903,12 @@ if ("NumPy" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS AND ${_PYTHON_PREFIX}_Inte # Workaround Intel MKL library outputting a message in stdout, which cause # incorrect detection of numpy.get_include() and numpy.__version__ - # See https://github.com/numpy/numpy/issues/23775 - if(DEFINED ENV{MKL_ENABLE_INSTRUCTIONS}) - set(_${_PYTHON_PREFIX}_BACKUP_ENV_VAR_MKL_ENABLE_INSTRUCTIONS ENV{MKL_ENABLE_INSTRUCTIONS}) + # See https://github.com/numpy/numpy/issues/23775 and + # https://gitlab.kitware.com/cmake/cmake/-/issues/26240 + if(NOT DEFINED ENV{MKL_ENABLE_INSTRUCTIONS}) + set(_${_PYTHON_PREFIX}_UNSET_ENV_VAR_MKL_ENABLE_INSTRUCTIONS YES) + set(ENV{MKL_ENABLE_INSTRUCTIONS} "SSE4_2") endif() - set(ENV{MKL_ENABLE_INSTRUCTIONS} "SSE4_2") if (NOT _${_PYTHON_PREFIX}_NumPy_INCLUDE_DIR) execute_process(COMMAND ${${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c @@ -3949,11 +3950,9 @@ if ("NumPy" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS AND ${_PYTHON_PREFIX}_Inte set (${_PYTHON_PREFIX}_NumPy_FOUND FALSE) endif() - # Restore previous value of MKL_ENABLE_INSTRUCTIONS - if(DEFINED _${_PYTHON_PREFIX}_BACKUP_ENV_VAR_MKL_ENABLE_INSTRUCTIONS) - set(ENV{MKL_ENABLE_INSTRUCTIONS} ${_${_PYTHON_PREFIX}_BACKUP_ENV_VAR_MKL_ENABLE_INSTRUCTIONS}) - unset(_${_PYTHON_PREFIX}_BACKUP_ENV_VAR_MKL_ENABLE_INSTRUCTIONS) - else() + # Unset MKL_ENABLE_INSTRUCTIONS if set by us + if(DEFINED _${_PYTHON_PREFIX}_UNSET_ENV_VAR_MKL_ENABLE_INSTRUCTIONS) + unset(_${_PYTHON_PREFIX}_UNSET_ENV_VAR_MKL_ENABLE_INSTRUCTIONS) unset(ENV{MKL_ENABLE_INSTRUCTIONS}) endif() |