@@ -38,15 +38,17 @@ message(STATUS "Python version: ${PYTHON_VERSION}")
3838string (REPLACE "." "" PYTHON_VERSION_WITHOUT_DOTS ${PYTHON_VERSION} )
3939
4040if (${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+ )
5052endif ()
5153
5254execute_process (
@@ -64,6 +66,12 @@ execute_process(
6466)
6567string (STRIP ${PYTHON_EXTENSION_SOABI_tmp} PYTHON_EXTENSION_SOABI_tmp)
6668
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+
6775set (PYTHON_EXTENSION_SOABI ${PYTHON_EXTENSION_SOABI_tmp}
6876 CACHE STRING "Suffix for python extensions" )
6977
@@ -130,4 +138,9 @@ macro(ADD_PYTHON_LIBRARY name)
130138 target_link_libraries (${name} ${PYTHON_LIBRARY} )
131139 set_target_properties (${name} PROPERTIES SUFFIX ".pyd" )
132140 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 ()
133146endmacro (ADD_PYTHON_LIBRARY)
0 commit comments