mirror of
https://github.com/pybind/pybind11.git
synced 2025-02-16 13:47:53 +00:00
fix: allow cmake varibles from Python calls to be cached (#2570)
This commit is contained in:
parent
fecef38864
commit
d46f3322a4
@ -80,31 +80,39 @@ if(NOT DEFINED ${_Python}_EXECUTABLE)
|
|||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Debug check - see https://stackoverflow.com/questions/646518/python-how-to-detect-debug-Interpreter
|
if(NOT DEFINED PYTHON_IS_DEBUG)
|
||||||
execute_process(
|
# Debug check - see https://stackoverflow.com/questions/646518/python-how-to-detect-debug-Interpreter
|
||||||
COMMAND "${${_Python}_EXECUTABLE}" "-c" "import sys; sys.exit(hasattr(sys, 'gettotalrefcount'))"
|
execute_process(
|
||||||
RESULT_VARIABLE PYTHON_IS_DEBUG)
|
COMMAND "${${_Python}_EXECUTABLE}" "-c"
|
||||||
|
"import sys; sys.exit(hasattr(sys, 'gettotalrefcount'))"
|
||||||
|
RESULT_VARIABLE _PYTHON_IS_DEBUG)
|
||||||
|
set(PYTHON_IS_DEBUG
|
||||||
|
"${_PYTHON_IS_DEBUG}"
|
||||||
|
CACHE INTERNAL "Python debug status")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Get the suffix - SO is deprecated, should use EXT_SUFFIX, but this is
|
# Get the suffix - SO is deprecated, should use EXT_SUFFIX, but this is
|
||||||
# required for PyPy3 (as of 7.3.1)
|
# required for PyPy3 (as of 7.3.1)
|
||||||
execute_process(
|
if(NOT DEFINED PYTHON_MODULE_EXTENSION)
|
||||||
COMMAND "${${_Python}_EXECUTABLE}" "-c"
|
execute_process(
|
||||||
"from distutils import sysconfig; print(sysconfig.get_config_var('SO'))"
|
COMMAND "${${_Python}_EXECUTABLE}" "-c"
|
||||||
OUTPUT_VARIABLE _PYTHON_MODULE_EXTENSION
|
"from distutils import sysconfig; print(sysconfig.get_config_var('SO'))"
|
||||||
ERROR_VARIABLE _PYTHON_MODULE_EXTENSION_ERR
|
OUTPUT_VARIABLE _PYTHON_MODULE_EXTENSION
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
ERROR_VARIABLE _PYTHON_MODULE_EXTENSION_ERR
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
if(_PYTHON_MODULE_EXTENSION STREQUAL "")
|
if(_PYTHON_MODULE_EXTENSION STREQUAL "")
|
||||||
message(
|
message(
|
||||||
FATAL_ERROR "pybind11 could not query the module file extension, likely the 'distutils'"
|
FATAL_ERROR "pybind11 could not query the module file extension, likely the 'distutils'"
|
||||||
"package is not installed. Full error message:\n${_PYTHON_MODULE_EXTENSION_ERR}")
|
"package is not installed. Full error message:\n${_PYTHON_MODULE_EXTENSION_ERR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# This needs to be available for the pybind11_extension function
|
||||||
|
set(PYTHON_MODULE_EXTENSION
|
||||||
|
"${_PYTHON_MODULE_EXTENSION}"
|
||||||
|
CACHE INTERNAL "")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# This needs to be available for the pybind11_extension function
|
|
||||||
set(PYTHON_MODULE_EXTENSION
|
|
||||||
"${_PYTHON_MODULE_EXTENSION}"
|
|
||||||
CACHE INTERNAL "")
|
|
||||||
|
|
||||||
# Python debug libraries expose slightly different objects before 3.8
|
# Python debug libraries expose slightly different objects before 3.8
|
||||||
# https://docs.python.org/3.6/c-api/intro.html#debugging-builds
|
# https://docs.python.org/3.6/c-api/intro.html#debugging-builds
|
||||||
# https://stackoverflow.com/questions/39161202/how-to-work-around-missing-pymodule-create2-in-amd64-win-python35-d-lib
|
# https://stackoverflow.com/questions/39161202/how-to-work-around-missing-pymodule-create2-in-amd64-win-python35-d-lib
|
||||||
|
Loading…
Reference in New Issue
Block a user