From 814630ca6046115e0c738de594a57fda4bea1f96 Mon Sep 17 00:00:00 2001 From: Michael Yang Date: Thu, 5 Feb 2026 20:49:08 -0800 Subject: [PATCH] Revert "move tokenizers to separate package (#13825)" (#14111) --- CMakeLists.txt | 4 +-- x/imagegen/mlx/CMakeLists.txt | 61 +++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 x/imagegen/mlx/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index f6bfc52d1..7d53531be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -182,7 +182,7 @@ option(MLX_ENGINE "Enable MLX backend" OFF) if(MLX_ENGINE) message(STATUS "Setting up MLX (this takes a while...)") - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/x/ml/backend/mlx) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/x/imagegen/mlx) # Find CUDA toolkit if MLX is built with CUDA support find_package(CUDAToolkit) @@ -216,4 +216,4 @@ if(MLX_ENGINE) COMPONENT MLX) endif() endif() -endif() \ No newline at end of file +endif() diff --git a/x/imagegen/mlx/CMakeLists.txt b/x/imagegen/mlx/CMakeLists.txt new file mode 100644 index 000000000..b62cbf2eb --- /dev/null +++ b/x/imagegen/mlx/CMakeLists.txt @@ -0,0 +1,61 @@ +include(FetchContent) + +# Read MLX version from top-level file (shared with Dockerfile) +file(READ "${CMAKE_SOURCE_DIR}/MLX_VERSION" MLX_C_GIT_TAG) +string(STRIP "${MLX_C_GIT_TAG}" MLX_C_GIT_TAG) + +set(MLX_C_BUILD_EXAMPLES OFF) + +set(MLX_BUILD_GGUF OFF) +set(MLX_BUILD_SAFETENSORS ON) + +function(set_target_output_directory _target) + if(TARGET ${_target}) + set_target_properties(${_target} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${OLLAMA_BUILD_DIR} + LIBRARY_OUTPUT_DIRECTORY ${OLLAMA_BUILD_DIR} + ARCHIVE_OUTPUT_DIRECTORY ${OLLAMA_BUILD_DIR} + ) + endif() +endfunction() + +# Check for Metal support (macOS only) +if(CMAKE_SYSTEM_NAME MATCHES "Darwin") + execute_process( + COMMAND + zsh "-c" + "echo \"__METAL_VERSION__\" | xcrun -sdk macosx metal ${XCRUN_FLAGS} -E -x metal -P - | tail -1 | tr -d '\n'" + OUTPUT_VARIABLE MLX_METAL_VERSION COMMAND_ERROR_IS_FATAL ANY) + + if(NOT MLX_METAL_VERSION) + message(STATUS "`xcrun metal` error. Setting MLX_BUILD_METAL=OFF") + set(MLX_BUILD_METAL OFF) + endif() +else() + # On Linux, disable Metal backend + message(STATUS "Non-macOS platform detected. Setting MLX_BUILD_METAL=OFF") + set(MLX_BUILD_METAL OFF) +endif() + +# Map CMAKE_CUDA_ARCHITECTURES to MLX_CUDA_ARCHITECTURES if not explicitly set +if(NOT MLX_CUDA_ARCHITECTURES AND CMAKE_CUDA_ARCHITECTURES) + set(MLX_CUDA_ARCHITECTURES ${CMAKE_CUDA_ARCHITECTURES}) + message(STATUS "Using CMAKE_CUDA_ARCHITECTURES for MLX: ${MLX_CUDA_ARCHITECTURES}") +endif() + +# Enable CUDA backend if CUDA architectures are specified and CUDA compiler is available +if(MLX_CUDA_ARCHITECTURES AND CMAKE_CUDA_COMPILER) + set(MLX_BUILD_CUDA ON CACHE BOOL "Build CUDA backend for MLX" FORCE) + message(STATUS "Enabling MLX CUDA backend with architectures: ${MLX_CUDA_ARCHITECTURES}") +elseif(MLX_CUDA_ARCHITECTURES) + message(WARNING "MLX_CUDA_ARCHITECTURES specified but CUDA compiler not found, CUDA backend will be disabled") +endif() + +FetchContent_Declare( + mlx-c + GIT_REPOSITORY "https://github.com/ml-explore/mlx-c.git" + GIT_TAG ${MLX_C_GIT_TAG}) +FetchContent_MakeAvailable(mlx-c) + +set_target_output_directory(mlx) +set_target_output_directory(mlxc)