@@ -95,25 +95,31 @@ endif()
95
95
96
96
# Get the suffix - SO is deprecated, should use EXT_SUFFIX, but this is
97
97
# required for PyPy3 (as of 7.3.1)
98
- if (NOT DEFINED PYTHON_MODULE_EXTENSION )
98
+ if (NOT DEFINED PYTHON_MODULE_EXTENSION OR NOT DEFINED PYTHON_MODULE_DEBUG_POSTFIX )
99
99
execute_process (
100
100
COMMAND
101
101
"${${_Python} _EXECUTABLE}" "-c"
102
- "import sys, importlib; s = importlib.import_module('distutils.sysconfig' if sys.version_info < (3, 10) else 'sysconfig'); print(s.get_config_var('EXT_SUFFIX') or s.get_config_var('SO'))"
103
- OUTPUT_VARIABLE _PYTHON_MODULE_EXTENSION
104
- ERROR_VARIABLE _PYTHON_MODULE_EXTENSION_ERR
102
+ "import sys, importlib; s = importlib.import_module('distutils.sysconfig' if sys.version_info < (3, 10) else 'sysconfig'); print(( s.get_config_var('EXT_SUFFIX') or s.get_config_var('SO')).replace('.', ';.', 1 ))"
103
+ OUTPUT_VARIABLE _PYTHON_MODULE_EXT_SUFFIX
104
+ ERROR_VARIABLE _PYTHON_MODULE_EXT_SUFFIX_ERR
105
105
OUTPUT_STRIP_TRAILING_WHITESPACE )
106
106
107
- if (_PYTHON_MODULE_EXTENSION STREQUAL "" )
107
+ if (_PYTHON_MODULE_EXT_SUFFIX STREQUAL "" )
108
108
message (
109
109
FATAL_ERROR "pybind11 could not query the module file extension, likely the 'distutils'"
110
- "package is not installed. Full error message:\n ${_PYTHON_MODULE_EXTENSION_ERR } " )
110
+ "package is not installed. Full error message:\n ${_PYTHON_MODULE_EXT_SUFFIX_ERR } " )
111
111
endif ()
112
112
113
113
# This needs to be available for the pybind11_extension function
114
- set (PYTHON_MODULE_EXTENSION
115
- "${_PYTHON_MODULE_EXTENSION} "
116
- CACHE INTERNAL "" )
114
+ if (NOT DEFINED PYTHON_MODULE_DEBUG_POSTFIX )
115
+ list (GET _PYTHON_MODULE_EXT_SUFFIX 0 _PYTHON_MODULE_DEBUG_POSTFIX )
116
+ set (PYTHON_MODULE_DEBUG_POSTFIX "${_PYTHON_MODULE_DEBUG_POSTFIX} " CACHE INTERNAL "" )
117
+ endif ()
118
+
119
+ if (NOT DEFINED PYTHON_MODULE_EXTENSION )
120
+ list (GET _PYTHON_MODULE_EXT_SUFFIX 1 _PYTHON_MODULE_EXTENSION )
121
+ set (PYTHON_MODULE_EXTENSION "${_PYTHON_MODULE_EXTENSION} " CACHE INTERNAL "" )
122
+ endif ()
117
123
endif ()
118
124
119
125
# Python debug libraries expose slightly different objects before 3.8
@@ -251,6 +257,5 @@ endfunction()
251
257
252
258
function (pybind11_extension name )
253
259
# The extension is precomputed
254
- set_target_properties (${name} PROPERTIES PREFIX "" SUFFIX "${PYTHON_MODULE_EXTENSION} " )
255
-
260
+ set_target_properties (${name} PROPERTIES PREFIX "" DEBUG_POSTFIX "${PYTHON_MODULE_DEBUG_POSTFIX} " SUFFIX "${PYTHON_MODULE_EXTENSION} " )
256
261
endfunction ()
0 commit comments