mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
Merge topic 'FindPython-manage-SOABI-in-all-versions'
951640f1f9 FindPython: manage SOABI for all Python versions
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5119
This commit is contained in:
@@ -486,7 +486,7 @@ function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME)
|
||||
endif()
|
||||
elseif (NAME STREQUAL "SOABI")
|
||||
execute_process (COMMAND ${_${_PYTHON_PREFIX}_INTERPRETER_LAUNCHER} "${_${_PYTHON_PREFIX}_EXECUTABLE}" -c
|
||||
"import sys\ntry:\n from distutils import sysconfig\n sys.stdout.write(';'.join([sysconfig.get_config_var('SOABI') or '',sysconfig.get_config_var('EXT_SUFFIX') or '']))\nexcept Exception:\n import sysconfig;sys.stdout.write(';'.join([sysconfig.get_config_var('SOABI') or '',sysconfig.get_config_var('EXT_SUFFIX') or '']))"
|
||||
"import sys\ntry:\n from distutils import sysconfig\n sys.stdout.write(';'.join([sysconfig.get_config_var('SOABI') or '',sysconfig.get_config_var('EXT_SUFFIX') or '',sysconfig.get_config_var('SO') or '']))\nexcept Exception:\n import sysconfig;sys.stdout.write(';'.join([sysconfig.get_config_var('SOABI') or '',sysconfig.get_config_var('EXT_SUFFIX') or '',sysconfig.get_config_var('SO') or '']))"
|
||||
RESULT_VARIABLE _result
|
||||
OUTPUT_VARIABLE _soabi
|
||||
ERROR_QUIET
|
||||
@@ -522,7 +522,7 @@ function (_PYTHON_GET_CONFIG_VAR _PYTHON_PGCV_VALUE NAME)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (config_flag STREQUAL "ABIFLAGS")
|
||||
if (NAME STREQUAL "ABIFLAGS" OR NAME STREQUAL "SOABI")
|
||||
set (${_PYTHON_PGCV_VALUE} "${_values}" PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
@@ -1768,9 +1768,7 @@ if ("Interpreter" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS)
|
||||
unset (${_PYTHON_PREFIX}_SITEARCH)
|
||||
endif()
|
||||
|
||||
if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR VERSION_GREATER_EQUAL "3")
|
||||
_python_get_config_var (${_PYTHON_PREFIX}_SOABI SOABI)
|
||||
endif()
|
||||
_python_get_config_var (${_PYTHON_PREFIX}_SOABI SOABI)
|
||||
|
||||
# store properties in the cache to speed-up future searches
|
||||
set (_${_PYTHON_PREFIX}_INTERPRETER_PROPERTIES
|
||||
@@ -2841,8 +2839,7 @@ if (("Development.Module" IN_LIST ${_PYTHON_PREFIX}_FIND_COMPONENTS
|
||||
${_PYTHON_PREFIX}_PyPy_VERSION "${${_PYTHON_PREFIX}_PyPy_VERSION}")
|
||||
endif()
|
||||
|
||||
if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR VERSION_GREATER_EQUAL "3"
|
||||
AND NOT DEFINED ${_PYTHON_PREFIX}_SOABI)
|
||||
if (NOT DEFINED ${_PYTHON_PREFIX}_SOABI)
|
||||
_python_get_config_var (${_PYTHON_PREFIX}_SOABI SOABI)
|
||||
endif()
|
||||
|
||||
@@ -3092,11 +3089,6 @@ if(_${_PYTHON_PREFIX}_CMAKE_ROLE STREQUAL "PROJECT")
|
||||
function (__${_PYTHON_PREFIX}_ADD_LIBRARY prefix name)
|
||||
cmake_parse_arguments (PARSE_ARGV 2 PYTHON_ADD_LIBRARY "STATIC;SHARED;MODULE;WITH_SOABI" "" "")
|
||||
|
||||
if (prefix STREQUAL "Python2" AND PYTHON_ADD_LIBRARY_WITH_SOABI)
|
||||
message (AUTHOR_WARNING "FindPython2: Option `WITH_SOABI` is not supported for Python2 and will be ignored.")
|
||||
unset (PYTHON_ADD_LIBRARY_WITH_SOABI)
|
||||
endif()
|
||||
|
||||
if (PYTHON_ADD_LIBRARY_STATIC)
|
||||
set (type STATIC)
|
||||
elseif (PYTHON_ADD_LIBRARY_SHARED)
|
||||
|
||||
@@ -20,3 +20,19 @@ if (Python3_Development_FOUND AND Python3_SOABI)
|
||||
message(FATAL_ERROR "Module suffix do not include Python3_SOABI")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
find_package(Python2 COMPONENTS ${CMake_TEST_FindPython_COMPONENT})
|
||||
if(NOT DEFINED Python2_SOABI)
|
||||
message(FATAL_ERROR "Python2_SOABI for ${CMake_TEST_FindPython_COMPONENT} not found")
|
||||
endif()
|
||||
|
||||
if (Python2_Development_FOUND AND Python2_SOABI)
|
||||
Python2_add_library (spam2 MODULE WITH_SOABI ../spam.c)
|
||||
target_compile_definitions (spam2 PRIVATE PYTHON2)
|
||||
|
||||
get_property (suffix TARGET spam2 PROPERTY SUFFIX)
|
||||
if (NOT suffix MATCHES "^.${Python2_SOABI}")
|
||||
message(FATAL_ERROR "Module suffix do not include Python2_SOABI")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user