From e89c571de73d0975ac1dc8387fc4f2e7e3f74717 Mon Sep 17 00:00:00 2001 From: Jagrit Digani Date: Fri, 8 Dec 2023 11:03:25 -0800 Subject: [PATCH] Update cmake to detect and throw warnings if not on a arm system (#81) * Update cmake to detect and throw warnings if not on a arm system --- CMakeLists.txt | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 11f2d6ac4..712b03a9d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,6 +21,27 @@ if(NOT MLX_VERSION) set(MLX_VERSION 0.0.3) endif() +# --------------------- Processor tests ------------------------- + +message(STATUS "Building MLX for ${CMAKE_HOST_SYSTEM_PROCESSOR} processor on ${CMAKE_SYSTEM_NAME}") + +set(MLX_BUILD_ARM OFF) + +if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin") + + if (${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "x86_64") + message(WARNING + "Building for x86_64 on MacOS is not supported." + " If you are on an Apple silicon system, " + " make sure you are building for arm64.") + elseif(${CMAKE_HOST_SYSTEM_PROCESSOR} MATCHES "arm64") + set(MLX_BUILD_ARM ON) + endif() + +else() + message(WARNING "MLX is prioritised for Apple Silicon systems using MacOS.") +endif() + # ----------------------------- Lib ----------------------------- include(FetchContent) @@ -78,13 +99,13 @@ elseif (MLX_BUILD_METAL) endif() find_library(ACCELERATE_LIBRARY Accelerate) -if (ACCELERATE_LIBRARY) +if (MLX_BUILD_ARM AND ACCELERATE_LIBRARY) message(STATUS "Accelerate found ${ACCELERATE_LIBRARY}") set(MLX_BUILD_ACCELERATE ON) target_link_libraries(mlx ${ACCELERATE_LIBRARY}) add_compile_definitions(ACCELERATE_NEW_LAPACK) else() - message(STATUS "Accelerate not found, using default backend.") + message(STATUS "Accelerate or arm neon not found, using default backend.") set(MLX_BUILD_ACCELERATE OFF) #set(BLA_VENDOR Generic) find_package(BLAS REQUIRED)