mlx: restore NAX in Metal v4 builds (#17160)

MLX now requires a macOS 26.2 deployment target for NAX kernels. Ollama's Metal v4 build still targeted 26.0, so recent MLX bumps silently built mlx_metal_v4 without NAX kernels.
This commit is contained in:
Daniel Hiltgen
2026-07-13 12:50:38 -07:00
committed by GitHub
parent 82f905cd9c
commit 59bd0b49bb
2 changed files with 9 additions and 6 deletions
+8 -5
View File
@@ -59,7 +59,7 @@ function(ollama_macos_major_version output)
RESULT_VARIABLE _macos_result RESULT_VARIABLE _macos_result
ERROR_QUIET) ERROR_QUIET)
if(_macos_result EQUAL 0) if(_macos_result EQUAL 0)
string(REGEX MATCH "^[0-9]+" _macos_major "${_macos_version}") string(REGEX MATCH "^[0-9]+(\\.[0-9]+)?" _macos_major "${_macos_version}")
endif() endif()
set(${output} "${_macos_major}" PARENT_SCOPE) set(${output} "${_macos_major}" PARENT_SCOPE)
endfunction() endfunction()
@@ -72,7 +72,7 @@ function(ollama_macos_sdk_major_version output)
RESULT_VARIABLE _sdk_result RESULT_VARIABLE _sdk_result
ERROR_QUIET) ERROR_QUIET)
if(_sdk_result EQUAL 0) if(_sdk_result EQUAL 0)
string(REGEX MATCH "^[0-9]+" _sdk_major "${_sdk_version}") string(REGEX MATCH "^[0-9]+(\\.[0-9]+)?" _sdk_major "${_sdk_version}")
endif() endif()
set(${output} "${_sdk_major}" PARENT_SCOPE) set(${output} "${_sdk_major}" PARENT_SCOPE)
endfunction() endfunction()
@@ -83,7 +83,9 @@ function(ollama_default_mlx_backends output)
ollama_check_metal_toolchain(_metal_version) ollama_check_metal_toolchain(_metal_version)
ollama_macos_major_version(_macos_major) ollama_macos_major_version(_macos_major)
ollama_macos_sdk_major_version(_sdk_major) ollama_macos_sdk_major_version(_sdk_major)
if(_macos_major AND _sdk_major AND _macos_major GREATER_EQUAL 26 AND _sdk_major GREATER_EQUAL 26) if(_macos_major AND _sdk_major
AND _macos_major VERSION_GREATER_EQUAL 26.2
AND _sdk_major VERSION_GREATER_EQUAL 26.2)
set(_backends "metal_v4") set(_backends "metal_v4")
else() else()
set(_backends "metal_v3") set(_backends "metal_v3")
@@ -751,14 +753,15 @@ foreach(_backend IN LISTS OLLAMA_MLX_BACKENDS)
endif() endif()
ollama_check_metal_toolchain(_metal_version) ollama_check_metal_toolchain(_metal_version)
ollama_macos_sdk_major_version(_ollama_mlx_sdk_major) ollama_macos_sdk_major_version(_ollama_mlx_sdk_major)
if(_ollama_mlx_sdk_major AND _ollama_mlx_sdk_major GREATER_EQUAL 26) if(_ollama_mlx_sdk_major
AND _ollama_mlx_sdk_major VERSION_GREATER_EQUAL 26.2)
ollama_add_mlx_build(metal_v4 ollama_add_mlx_build(metal_v4
PRESET mlx_metal_v4 PRESET mlx_metal_v4
RUNNER_DIR mlx_metal_v4) RUNNER_DIR mlx_metal_v4)
list(APPEND _mlx_targets ollama-mlx-metal_v4) list(APPEND _mlx_targets ollama-mlx-metal_v4)
else() else()
message(FATAL_ERROR message(FATAL_ERROR
"OLLAMA_MLX_BACKENDS=metal_v4 requires the macOS 26 SDK. " "OLLAMA_MLX_BACKENDS=metal_v4 requires the macOS 26.2 SDK. "
"Install a newer Xcode or use OLLAMA_MLX_BACKENDS=metal_v3.") "Install a newer Xcode or use OLLAMA_MLX_BACKENDS=metal_v3.")
endif() endif()
else() else()
+1 -1
View File
@@ -55,7 +55,7 @@
"inherits": [ "default" ], "inherits": [ "default" ],
"binaryDir": "${sourceDir}/../../build/metal-v4", "binaryDir": "${sourceDir}/../../build/metal-v4",
"cacheVariables": { "cacheVariables": {
"CMAKE_OSX_DEPLOYMENT_TARGET": "26.0", "CMAKE_OSX_DEPLOYMENT_TARGET": "26.2",
"OLLAMA_RUNNER_DIR": "mlx_metal_v4" "OLLAMA_RUNNER_DIR": "mlx_metal_v4"
} }
} }