-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into sh_merge_master
- Loading branch information
Showing
20 changed files
with
429 additions
and
74 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
cmake_minimum_required(VERSION 3.5) | ||
|
||
function(pybind11_guess_python_module_extension python) | ||
|
||
# The SETUPTOOLS_EXT_SUFFIX environment variable takes precedence: | ||
if(NOT DEFINED PYTHON_MODULE_EXT_SUFFIX AND DEFINED ENV{SETUPTOOLS_EXT_SUFFIX}) | ||
message( | ||
STATUS | ||
"Getting Python extension suffix from ENV{SETUPTOOLS_EXT_SUFFIX}: $ENV{SETUPTOOLS_EXT_SUFFIX}" | ||
) | ||
set(PYTHON_MODULE_EXT_SUFFIX | ||
"$ENV{SETUPTOOLS_EXT_SUFFIX}" | ||
CACHE | ||
STRING | ||
"Extension suffix for Python extension modules (Initialized from SETUPTOOLS_EXT_SUFFIX)") | ||
endif() | ||
# If that didn't work, use the Python_SOABI variable: | ||
if(NOT DEFINED PYTHON_MODULE_EXT_SUFFIX AND DEFINED ${python}_SOABI) | ||
message( | ||
STATUS "Determining Python extension suffix based on ${python}_SOABI: ${${python}_SOABI}") | ||
# The final extension depends on the system | ||
set(_PY_BUILD_EXTENSION "${CMAKE_SHARED_MODULE_SUFFIX}") | ||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows") | ||
set(_PY_BUILD_EXTENSION ".pyd") | ||
endif() | ||
# If the SOABI already has an extension, use it as the full suffix | ||
# (used for debug versions of Python on Windows) | ||
if(${python}_SOABI MATCHES "\\.") | ||
set(PYTHON_MODULE_EXT_SUFFIX "${${python}_SOABI}") | ||
# If the SOABI is empty, this is usually a bug, but we generate a | ||
# correct extension anyway, which is the best we can do | ||
elseif("${${python}_SOABI}" STREQUAL "") | ||
message( | ||
WARNING | ||
"${python}_SOABI is defined but empty. You may want to set PYTHON_MODULE_EXT_SUFFIX explicitly." | ||
) | ||
set(PYTHON_MODULE_EXT_SUFFIX "${_PY_BUILD_EXTENSION}") | ||
# Otherwise, add the system-dependent extension to it | ||
else() | ||
set(PYTHON_MODULE_EXT_SUFFIX ".${${python}_SOABI}${_PY_BUILD_EXTENSION}") | ||
endif() | ||
endif() | ||
|
||
# If we could not deduce the extension suffix, unset the results: | ||
if(NOT DEFINED PYTHON_MODULE_EXT_SUFFIX) | ||
unset(PYTHON_MODULE_DEBUG_POSTFIX PARENT_SCOPE) | ||
unset(PYTHON_MODULE_EXTENSION PARENT_SCOPE) | ||
unset(PYTHON_IS_DEBUG PARENT_SCOPE) | ||
return() | ||
endif() | ||
|
||
# Sanity checks: | ||
if(${python}_SOABI AND NOT (PYTHON_MODULE_EXT_SUFFIX STREQUAL ${python}_SOABI | ||
OR PYTHON_MODULE_EXT_SUFFIX MATCHES "\\.${${python}_SOABI}\\.")) | ||
message( | ||
WARNING | ||
"Python extension suffix (${PYTHON_MODULE_EXT_SUFFIX}) does not match ${python}_SOABI (${${python}_SOABI})." | ||
) | ||
endif() | ||
|
||
# Separate file name postfix from extension: (https://github.com/pybind/pybind11/issues/4699) | ||
get_filename_component(_PYTHON_MODULE_DEBUG_POSTFIX "${PYTHON_MODULE_EXT_SUFFIX}" NAME_WE) | ||
get_filename_component(_PYTHON_MODULE_EXTENSION "${PYTHON_MODULE_EXT_SUFFIX}" EXT) | ||
|
||
# Try to deduce the debug ABI from the extension suffix: | ||
if(NOT DEFINED _PYTHON_IS_DEBUG) | ||
if(_PYTHON_MODULE_EXTENSION MATCHES "^\\.(cpython-|cp|pypy)[0-9]+dm?-" | ||
OR _PYTHON_MODULE_DEBUG_POSTFIX MATCHES "^_d") | ||
set(_PYTHON_IS_DEBUG On) | ||
else() | ||
set(_PYTHON_IS_DEBUG Off) | ||
endif() | ||
endif() | ||
|
||
# Return results | ||
set(PYTHON_MODULE_DEBUG_POSTFIX | ||
"${_PYTHON_MODULE_DEBUG_POSTFIX}" | ||
PARENT_SCOPE) | ||
set(PYTHON_MODULE_EXTENSION | ||
"${_PYTHON_MODULE_EXTENSION}" | ||
PARENT_SCOPE) | ||
set(PYTHON_IS_DEBUG | ||
"${_PYTHON_IS_DEBUG}" | ||
PARENT_SCOPE) | ||
|
||
endfunction() |
Oops, something went wrong.