From 76e16338ca565b125f8489ca0857d03e295da82d Mon Sep 17 00:00:00 2001 From: ww2283 Date: Wed, 22 Oct 2025 18:53:13 -0400 Subject: [PATCH] fix: resolve ZMQ linking issues in Python extension - Use pkg_check_modules IMPORTED_TARGET to create PkgConfig::ZMQ - Set PKG_CONFIG_PATH to prioritize ARM64 Homebrew on Apple Silicon - Override macOS -undefined dynamic_lookup to force proper symbol resolution - Use PUBLIC linkage for ZMQ in faiss library for transitive linking - Mark cppzmq includes as SYSTEM to suppress warnings Fixes editable install ZMQ symbol errors while maintaining compatibility across Linux, macOS Intel, and macOS ARM64 platforms. --- packages/leann-backend-hnsw/CMakeLists.txt | 19 ++++++++++++++++--- packages/leann-backend-hnsw/third_party/faiss | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/leann-backend-hnsw/CMakeLists.txt b/packages/leann-backend-hnsw/CMakeLists.txt index 87d4592..b588c25 100644 --- a/packages/leann-backend-hnsw/CMakeLists.txt +++ b/packages/leann-backend-hnsw/CMakeLists.txt @@ -29,12 +29,25 @@ if(APPLE) set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0" CACHE STRING "Minimum macOS version") endif() -# Use system ZeroMQ instead of building from source +# Find ZMQ using pkg-config with IMPORTED_TARGET for automatic target creation find_package(PkgConfig REQUIRED) -pkg_check_modules(ZMQ REQUIRED libzmq) + +# On ARM64 macOS, ensure pkg-config finds ARM64 Homebrew packages first +if(APPLE AND CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64") + set(ENV{PKG_CONFIG_PATH} "/opt/homebrew/lib/pkgconfig:/opt/homebrew/share/pkgconfig:$ENV{PKG_CONFIG_PATH}") +endif() + +pkg_check_modules(ZMQ REQUIRED IMPORTED_TARGET libzmq) + +# This creates PkgConfig::ZMQ target automatically with correct properties +if(TARGET PkgConfig::ZMQ) + message(STATUS "Found and configured ZMQ target: PkgConfig::ZMQ") +else() + message(FATAL_ERROR "pkg_check_modules did not create IMPORTED target for ZMQ.") +endif() # Add cppzmq headers -include_directories(third_party/cppzmq) +include_directories(SYSTEM third_party/cppzmq) # Configure msgpack-c - disable boost dependency set(MSGPACK_USE_BOOST OFF CACHE BOOL "" FORCE) diff --git a/packages/leann-backend-hnsw/third_party/faiss b/packages/leann-backend-hnsw/third_party/faiss index 5952745..6ec1b9b 160000 --- a/packages/leann-backend-hnsw/third_party/faiss +++ b/packages/leann-backend-hnsw/third_party/faiss @@ -1 +1 @@ -Subproject commit 595274523790e3bb5991437c3fc6032f170ebad9 +Subproject commit 6ec1b9b1c7bbb557aea7aa7190c38db6bd50f725