From c45d712c8460436601ccd2ee0b4fbe00e8e6d2ce Mon Sep 17 00:00:00 2001 From: Brett Jia Date: Tue, 26 Sep 2023 23:32:57 -0400 Subject: [PATCH 1/3] allow using system ffi on macos --- cmake/extensions/CMakeLists.txt | 36 +++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/cmake/extensions/CMakeLists.txt b/cmake/extensions/CMakeLists.txt index 002d41c9..eed28f68 100644 --- a/cmake/extensions/CMakeLists.txt +++ b/cmake/extensions/CMakeLists.txt @@ -382,19 +382,29 @@ 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(not USE_SYSTEM_LibFFI) + 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() + 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 From 3ae8684a5acfa39d7a1c9dc00acfdea52298016c Mon Sep 17 00:00:00 2001 From: Brett Jia Date: Tue, 26 Sep 2023 23:55:03 -0400 Subject: [PATCH 2/3] typo --- cmake/extensions/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/extensions/CMakeLists.txt b/cmake/extensions/CMakeLists.txt index eed28f68..7de930d8 100644 --- a/cmake/extensions/CMakeLists.txt +++ b/cmake/extensions/CMakeLists.txt @@ -382,7 +382,7 @@ if(WIN32) endif() else() if(APPLE) - if(not USE_SYSTEM_LibFFI) + if(NOT USE_SYSTEM_LibFFI) add_python_extension(_ctypes SOURCES ${ctypes_COMMON_SOURCES} _ctypes/malloc_closure.c From 53d5a76d3084186eca1e169a8c866c7ce8d1c35b Mon Sep 17 00:00:00 2001 From: Brett Jia Date: Wed, 27 Sep 2023 10:39:24 -0400 Subject: [PATCH 3/3] restore x86_64 behavior --- cmake/extensions/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cmake/extensions/CMakeLists.txt b/cmake/extensions/CMakeLists.txt index 7de930d8..c001be3f 100644 --- a/cmake/extensions/CMakeLists.txt +++ b/cmake/extensions/CMakeLists.txt @@ -382,7 +382,7 @@ if(WIN32) endif() else() if(APPLE) - if(NOT USE_SYSTEM_LibFFI) + 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 @@ -397,6 +397,7 @@ else() 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}