1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-22 16:07:49 +08:00

FindPython: ensure all ABI are searched by default

Fixes: #26279
This commit is contained in:
Marc Chevrier
2024-09-12 19:22:40 +02:00
parent 641976a36b
commit f885b007b9
3 changed files with 23 additions and 37 deletions

View File

@@ -332,7 +332,8 @@ Hints
.. note:: .. note::
If ``Python_FIND_ABI`` is not defined, any ABI will be searched. If ``Python3_FIND_ABI`` is not defined, any ABI, excluding the
``gil_disabled`` flag, will be searched.
From this 4-tuple, various ABIs will be searched starting from the most From this 4-tuple, various ABIs will be searched starting from the most
specialized to the most general. Moreover, when ``ANY`` is specified for specialized to the most general. Moreover, when ``ANY`` is specified for

View File

@@ -225,19 +225,14 @@ function (_PYTHON_GET_REGISTRIES _PYTHON_PGR_REGISTRY_PATHS)
endfunction() endfunction()
function (_PYTHON_GET_ABIFLAGS _PGABIFLAGS) function (_PYTHON_GET_ABIFLAGS _PGA_FIND_ABI _PGABIFLAGS)
if (NOT DEFINED _${_PYTHON_PREFIX}_FIND_ABI)
set (${_PGABIFLAGS} "<none>" PARENT_SCOPE)
return()
endif()
set (abiflags "<none>") set (abiflags "<none>")
list (GET _${_PYTHON_PREFIX}_FIND_ABI 0 pydebug) list (GET _PGA_FIND_ABI 0 pydebug)
list (GET _${_PYTHON_PREFIX}_FIND_ABI 1 pymalloc) list (GET _PGA_FIND_ABI 1 pymalloc)
list (GET _${_PYTHON_PREFIX}_FIND_ABI 2 unicode) list (GET _PGA_FIND_ABI 2 unicode)
list (LENGTH _${_PYTHON_PREFIX}_FIND_ABI find_abi_length) list (LENGTH _PGA_FIND_ABI find_abi_length)
if (find_abi_length GREATER 3) if (find_abi_length GREATER 3)
list (GET _${_PYTHON_PREFIX}_FIND_ABI 3 gil) list (GET _PGA_FIND_ABI 3 gil)
else() else()
set (gil "OFF") set (gil "OFF")
endif() endif()
@@ -302,12 +297,8 @@ function (_PYTHON_GET_PATH_SUFFIXES _PYTHON_PGPS_PATH_SUFFIXES)
set (_PGPS_IMPLEMENTATIONS ${_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS}) set (_PGPS_IMPLEMENTATIONS ${_${_PYTHON_PREFIX}_FIND_IMPLEMENTATIONS})
endif() endif()
if (DEFINED _${_PYTHON_PREFIX}_ABIFLAGS)
set (abi "${_${_PYTHON_PREFIX}_ABIFLAGS}") set (abi "${_${_PYTHON_PREFIX}_ABIFLAGS}")
list (TRANSFORM abi REPLACE "^<none>$" "") list (TRANSFORM abi REPLACE "^<none>$" "")
else()
set (abi "mu" "m" "u" "")
endif()
set (path_suffixes) set (path_suffixes)
@@ -401,12 +392,8 @@ function (_PYTHON_GET_NAMES _PYTHON_PGN_NAMES)
else() else()
string (REPLACE "." "" name_version ${version}) string (REPLACE "." "" name_version ${version})
endif() endif()
if (DEFINED _${_PYTHON_PREFIX}_ABIFLAGS)
set (abi "${_${_PYTHON_PREFIX}_ABIFLAGS}") set (abi "${_${_PYTHON_PREFIX}_ABIFLAGS}")
list (TRANSFORM abi REPLACE "^<none>$" "") list (TRANSFORM abi REPLACE "^<none>$" "")
else()
set (abi "")
endif()
if (abi) if (abi)
set (abinames "${abi}") set (abinames "${abi}")
list (TRANSFORM abinames PREPEND "python${name_version}") list (TRANSFORM abinames PREPEND "python${name_version}")
@@ -420,16 +407,8 @@ function (_PYTHON_GET_NAMES _PYTHON_PGN_NAMES)
endif() endif()
if (_PGN_POSIX) if (_PGN_POSIX)
if (DEFINED _${_PYTHON_PREFIX}_ABIFLAGS)
set (abi "${_${_PYTHON_PREFIX}_ABIFLAGS}") set (abi "${_${_PYTHON_PREFIX}_ABIFLAGS}")
list (TRANSFORM abi REPLACE "^<none>$" "") list (TRANSFORM abi REPLACE "^<none>$" "")
else()
if (_PGN_INTERPRETER OR _PGN_CONFIG)
set (abi "")
else()
set (abi "mu" "m" "u" "")
endif()
endif()
if (abi) if (abi)
if (_PGN_CONFIG AND DEFINED CMAKE_LIBRARY_ARCHITECTURE) if (_PGN_CONFIG AND DEFINED CMAKE_LIBRARY_ARCHITECTURE)
@@ -1529,7 +1508,6 @@ if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR VERSION_LESS "3")
set (_${_PYTHON_PREFIX}_ABIFLAGS "<none>") set (_${_PYTHON_PREFIX}_ABIFLAGS "<none>")
else() else()
unset (_${_PYTHON_PREFIX}_FIND_ABI) unset (_${_PYTHON_PREFIX}_FIND_ABI)
unset (_${_PYTHON_PREFIX}_ABIFLAGS)
if (DEFINED ${_PYTHON_PREFIX}_FIND_ABI) if (DEFINED ${_PYTHON_PREFIX}_FIND_ABI)
# normalization # normalization
string (TOUPPER "${${_PYTHON_PREFIX}_FIND_ABI}" _${_PYTHON_PREFIX}_FIND_ABI) string (TOUPPER "${${_PYTHON_PREFIX}_FIND_ABI}" _${_PYTHON_PREFIX}_FIND_ABI)
@@ -1539,8 +1517,14 @@ else()
message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${${_PYTHON_PREFIX}_FIND_ABI}: invalid value for '${_PYTHON_PREFIX}_FIND_ABI'. Ignore it") message (AUTHOR_WARNING "Find${_PYTHON_PREFIX}: ${${_PYTHON_PREFIX}_FIND_ABI}: invalid value for '${_PYTHON_PREFIX}_FIND_ABI'. Ignore it")
unset (_${_PYTHON_PREFIX}_FIND_ABI) unset (_${_PYTHON_PREFIX}_FIND_ABI)
endif() endif()
_python_get_abiflags ("${${_PYTHON_PREFIX}_FIND_ABI}" _${_PYTHON_PREFIX}_ABIFLAGS)
else()
if (WIN32)
_python_get_abiflags ("OFF;OFF;OFF;OFF" _${_PYTHON_PREFIX}_ABIFLAGS)
else()
_python_get_abiflags ("ANY;ANY;ANY;OFF" _${_PYTHON_PREFIX}_ABIFLAGS)
endif()
endif() endif()
_python_get_abiflags (_${_PYTHON_PREFIX}_ABIFLAGS)
endif() endif()
unset (${_PYTHON_PREFIX}_SOABI) unset (${_PYTHON_PREFIX}_SOABI)
unset (${_PYTHON_PREFIX}_SOSABI) unset (${_PYTHON_PREFIX}_SOSABI)

View File

@@ -330,7 +330,8 @@ Hints
.. note:: .. note::
If ``Python3_FIND_ABI`` is not defined, any ABI will be searched. If ``Python3_FIND_ABI`` is not defined, any ABI, excluding the
``gil_disabled`` flag, will be searched.
From this 4-tuple, various ABIs will be searched starting from the most From this 4-tuple, various ABIs will be searched starting from the most
specialized to the most general. Moreover, when ``ANY`` is specified for specialized to the most general. Moreover, when ``ANY`` is specified for