@@ -38,15 +38,17 @@ message(STATUS "Python version: ${PYTHON_VERSION}")
38
38
string (REPLACE "." "" PYTHON_VERSION_WITHOUT_DOTS ${PYTHON_VERSION} )
39
39
40
40
if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows" )
41
- FIND_LIBRARY (PYTHON_LIBRARY NAMES
42
- python${PYTHON_VERSION}
43
- python${PYTHON_VERSION} m
44
- python${PYTHON_VERSION_WITHOUT_DOTS}
45
- PATHS ${PYTHON_LIB_PATH} ${PYTHON_PREFIX_PATH} /lib ${PYTHON_PREFIX_PATH} /libs
46
- PATH_SUFFIXES ${CMAKE_LIBRARY_ARCHITECTURE}
47
- NO_DEFAULT_PATH
48
- NO_SYSTEM_ENVIRONMENT_PATH
49
- )
41
+ if (WITH_PY_LIMITED_API)
42
+ set (PYTHON_LIBRARY_NAMES python3)
43
+ else ()
44
+ set (PYTHON_LIBRARY_NAMES python${PYTHON_VERSION} python${PYTHON_VERSION} m python${PYTHON_VERSION_WITHOUT_DOTS} )
45
+ endif ()
46
+ FIND_LIBRARY (PYTHON_LIBRARY NAMES ${PYTHON_LIBRARY_NAMES}
47
+ PATHS ${PYTHON_LIB_PATH} ${PYTHON_PREFIX_PATH} /lib ${PYTHON_PREFIX_PATH} /libs
48
+ PATH_SUFFIXES ${CMAKE_LIBRARY_ARCHITECTURE}
49
+ NO_DEFAULT_PATH
50
+ NO_SYSTEM_ENVIRONMENT_PATH
51
+ )
50
52
endif ()
51
53
52
54
execute_process (
@@ -64,6 +66,12 @@ execute_process(
64
66
)
65
67
string (STRIP ${PYTHON_EXTENSION_SOABI_tmp} PYTHON_EXTENSION_SOABI_tmp)
66
68
69
+ if (WITH_PY_LIMITED_API)
70
+ if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows" )
71
+ set (PYTHON_EXTENSION_SOABI_tmp ".abi3" )
72
+ endif ()
73
+ endif ()
74
+
67
75
set (PYTHON_EXTENSION_SOABI ${PYTHON_EXTENSION_SOABI_tmp}
68
76
CACHE STRING "Suffix for python extensions" )
69
77
@@ -130,4 +138,9 @@ macro(ADD_PYTHON_LIBRARY name)
130
138
target_link_libraries (${name} ${PYTHON_LIBRARY} )
131
139
set_target_properties (${name} PROPERTIES SUFFIX ".pyd" )
132
140
ENDIF ()
141
+ IF (WITH_PY_LIMITED_API)
142
+ target_compile_definitions (${name} PRIVATE
143
+ Py_LIMITED_API=${WITH_PY_LIMITED_API}
144
+ CYTHON_LIMITED_API=1)
145
+ ENDIF ()
133
146
endmacro (ADD_PYTHON_LIBRARY)
0 commit comments