cmake: fix persistent ARM CPU detection warning on Clang/macOS

This commit is contained in:
Alex Wu 2026-04-16 10:34:53 +08:00
parent 408225bb1a
commit c5ca739ea2
1 changed files with 11 additions and 1 deletions

View File

@ -132,13 +132,23 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
if (NOT ARM_MCPU_RESULT)
string(REGEX MATCH "-mcpu=[^ ']+" ARM_MCPU_FLAG "${ARM_MCPU}")
string(REGEX MATCH "-march=[^ ']+" ARM_MARCH_FLAG "${ARM_MCPU}")
# on some old GCC we need to read -march=
if (ARM_MARCH_FLAG AND NOT "${ARM_MARCH_FLAG}" STREQUAL "-march=native")
set(ARM_NATIVE_FLAG "${ARM_MARCH_FLAG}")
elseif(ARM_MCPU_FLAG AND NOT "${ARM_MCPU_FLAG}" STREQUAL "-mcpu=native")
set(ARM_NATIVE_FLAG "${ARM_MCPU_FLAG}")
endif()
if (CMAKE_C_COMPILER_ID STREQUAL "Clang" OR
CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
# clang shows the resolved cpu as:
# -target-cpu <name>
string(REGEX MATCH "-target-cpu [^ '\"]+" ARM_TARGET_CPU_FLAG "${ARM_MCPU}")
if(ARM_TARGET_CPU_FLAG)
string(REGEX REPLACE ".*-target-cpu ([^ '\"]+).*" "-mcpu=\\1" ARM_MCPU_FLAG "${ARM_TARGET_CPU_FLAG}")
set(ARM_NATIVE_FLAG "${ARM_MCPU_FLAG}")
endif()
endif()
endif()
if ("${ARM_NATIVE_FLAG}" STREQUAL "")