1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-14 02:08:27 +08:00

FindPython: python_add_library can now manage SOABI suffix.

Fixes: #20408
This commit is contained in:
Marc Chevrier
2020-03-03 13:10:16 +01:00
parent d1cb554c99
commit 0c97b73bc0
6 changed files with 52 additions and 14 deletions

View File

@@ -2514,15 +2514,21 @@ 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" "" "")
"STATIC;SHARED;MODULE;WITH_SOABI" "" "")
unset (type)
if (NOT (PYTHON_ADD_LIBRARY_STATIC
OR PYTHON_ADD_LIBRARY_SHARED
OR PYTHON_ADD_LIBRARY_MODULE))
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)
set (type SHARED)
else()
set (type MODULE)
endif()
add_library (${name} ${type} ${ARGN})
add_library (${name} ${type} ${PYTHON_ADD_LIBRARY_UNPARSED_ARGUMENTS})
get_property (type TARGET ${name} PROPERTY TYPE)
@@ -2533,7 +2539,18 @@ if(_${_PYTHON_PREFIX}_CMAKE_ROLE STREQUAL "PROJECT")
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
set_property (TARGET ${name} PROPERTY SUFFIX ".pyd")
endif()
if (PYTHON_ADD_LIBRARY_WITH_SOABI AND ${prefix}_SOABI)
get_property (suffix TARGET ${name} PROPERTY SUFFIX)
if (NOT suffix)
set (suffix "${CMAKE_SHARED_MODULE_SUFFIX}")
endif()
set_property (TARGET ${name} PROPERTY SUFFIX ".${${prefix}_SOABI}${suffix}")
endif()
else()
if (PYTHON_ADD_LIBRARY_WITH_SOABI)
message (AUTHOR_WARNING "Find${prefix}: Option `WITH_SOABI` is only supported for `MODULE` library type.")
endif()
target_link_libraries (${name} PRIVATE ${prefix}::Python)
endif()
endfunction()