From c5c8a5744173d2af1d3c4b5b4644e2f1cf65aafc Mon Sep 17 00:00:00 2001 From: Andy Lee Date: Mon, 1 Sep 2025 16:15:03 -0700 Subject: [PATCH] fix: Use different optimization levels for ARM64 based on platform MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Use SVE optimization only for ARM64 Linux - Use generic optimization for ARM64 macOS to avoid clang SVE issues - Fixes macOS ARM64 compilation errors with SVE instructions 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- packages/leann-backend-hnsw/CMakeLists.txt | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/leann-backend-hnsw/CMakeLists.txt b/packages/leann-backend-hnsw/CMakeLists.txt index 6ca6d55..87d4592 100644 --- a/packages/leann-backend-hnsw/CMakeLists.txt +++ b/packages/leann-backend-hnsw/CMakeLists.txt @@ -57,9 +57,16 @@ set(FAISS_ENABLE_SSE4_1 OFF CACHE BOOL "" FORCE) # ARM64-specific configuration if(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64") message(STATUS "Configuring Faiss for ARM64 architecture") - # Use SVE optimization level for ARM64 (as seen in Faiss conda build) - set(FAISS_OPT_LEVEL "sve" CACHE STRING "" FORCE) - message(STATUS "Setting FAISS_OPT_LEVEL to 'sve' for ARM64") + + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") + # Use SVE optimization level for ARM64 Linux (as seen in Faiss conda build) + set(FAISS_OPT_LEVEL "sve" CACHE STRING "" FORCE) + message(STATUS "Setting FAISS_OPT_LEVEL to 'sve' for ARM64 Linux") + else() + # Use generic optimization for other ARM64 platforms (like macOS) + set(FAISS_OPT_LEVEL "generic" CACHE STRING "" FORCE) + message(STATUS "Setting FAISS_OPT_LEVEL to 'generic' for ARM64 ${CMAKE_SYSTEM_NAME}") + endif() # ARM64 compatibility: Faiss submodule has been modified to fix x86 header inclusion message(STATUS "Using ARM64-compatible Faiss submodule")