summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorMarc Chevrier <marc.chevrier@gmail.com>2020-08-18 10:30:47 (GMT)
committerMarc Chevrier <marc.chevrier@gmail.com>2020-08-18 10:30:47 (GMT)
commit72822e26c9f5c3a83fde718af110dcf28b54994d (patch)
tree38b2adb24ec80ad159f25cc2eb4826b2411ed022 /Modules
parentacd15bf146616517df7ac7f55f9c270657cad0d5 (diff)
downloadCMake-72822e26c9f5c3a83fde718af110dcf28b54994d.zip
CMake-72822e26c9f5c3a83fde718af110dcf28b54994d.tar.gz
CMake-72822e26c9f5c3a83fde718af110dcf28b54994d.tar.bz2
FindPython: enhance robustness of version extraction from library name
Fixes: #21105
Diffstat (limited to 'Modules')
-rw-r--r--Modules/FindPython/Support.cmake7
1 files changed, 4 insertions, 3 deletions
diff --git a/Modules/FindPython/Support.cmake b/Modules/FindPython/Support.cmake
index a927a5d..1d68c44 100644
--- a/Modules/FindPython/Support.cmake
+++ b/Modules/FindPython/Support.cmake
@@ -558,18 +558,19 @@ function (_PYTHON_GET_VERSION)
if (_PGV_LIBRARY)
# retrieve version and abi from library name
if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE)
+ get_filename_component (library_name "${_${_PYTHON_PREFIX}_LIBRARY_RELEASE}" NAME)
# extract version from library name
- if (_${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "python([23])([0-9]+)")
+ if (library_name MATCHES "python([23])([0-9]+)")
set (${_PGV_PREFIX}VERSION_MAJOR "${CMAKE_MATCH_1}" PARENT_SCOPE)
set (${_PGV_PREFIX}VERSION_MINOR "${CMAKE_MATCH_2}" PARENT_SCOPE)
set (${_PGV_PREFIX}VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}" PARENT_SCOPE)
set (${_PGV_PREFIX}ABI "" PARENT_SCOPE)
- elseif (_${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "python([23])\\.([0-9]+)([dmu]*)")
+ elseif (library_name MATCHES "python([23])\\.([0-9]+)([dmu]*)")
set (${_PGV_PREFIX}VERSION_MAJOR "${CMAKE_MATCH_1}" PARENT_SCOPE)
set (${_PGV_PREFIX}VERSION_MINOR "${CMAKE_MATCH_2}" PARENT_SCOPE)
set (${_PGV_PREFIX}VERSION "${CMAKE_MATCH_1}.${CMAKE_MATCH_2}" PARENT_SCOPE)
set (${_PGV_PREFIX}ABI "${CMAKE_MATCH_3}" PARENT_SCOPE)
- elseif (_${_PYTHON_PREFIX}_LIBRARY_RELEASE MATCHES "pypy(3)?")
+ elseif (library_name MATCHES "pypy(3)?-c")
set (version "${CMAKE_MATCH_1}")
if (version EQUAL "3")
set (${_PGV_PREFIX}VERSION_MAJOR "3" PARENT_SCOPE)