diff --git a/cmake/extensions/CMakeLists.txt b/cmake/extensions/CMakeLists.txt index 002d41c9..c001be3f 100644 --- a/cmake/extensions/CMakeLists.txt +++ b/cmake/extensions/CMakeLists.txt @@ -382,19 +382,30 @@ if(WIN32) endif() else() if(APPLE) - add_python_extension(_ctypes - SOURCES ${ctypes_COMMON_SOURCES} - _ctypes/malloc_closure.c - _ctypes/darwin/dlfcn_simple.c - _ctypes/libffi_osx/ffi.c - _ctypes/libffi_osx/x86/darwin64.S - _ctypes/libffi_osx/x86/x86-darwin.S - _ctypes/libffi_osx/x86/x86-ffi_darwin.c - _ctypes/libffi_osx/x86/x86-ffi64.c - INCLUDEDIRS ${SRC_DIR}/Modules/_ctypes/libffi_osx/include - ${SRC_DIR}/Modules/_ctypes/darwin - DEFINITIONS MACOSX - ) + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64") + add_python_extension(_ctypes + SOURCES ${ctypes_COMMON_SOURCES} + _ctypes/malloc_closure.c + _ctypes/darwin/dlfcn_simple.c + _ctypes/libffi_osx/ffi.c + _ctypes/libffi_osx/x86/darwin64.S + _ctypes/libffi_osx/x86/x86-darwin.S + _ctypes/libffi_osx/x86/x86-ffi_darwin.c + _ctypes/libffi_osx/x86/x86-ffi64.c + INCLUDEDIRS ${SRC_DIR}/Modules/_ctypes/libffi_osx/include + ${SRC_DIR}/Modules/_ctypes/darwin + DEFINITIONS MACOSX + ) + else() + # non-x86_64 architectures, e.g. arm64 or arm64+x86_64 universal build + add_python_extension(_ctypes + REQUIRES LibFFI_INCLUDE_DIR LibFFI_LIBRARY + SOURCES ${ctypes_COMMON_SOURCES} + DEFINITIONS Py_BUILD_CORE_MODULE FFI_BUILDING + INCLUDEDIRS ${LibFFI_INCLUDE_DIR} + LIBRARIES ${LibFFI_LIBRARY} + ) + endif() else() if("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "x86_64") set(_libffi_system_extra_src