From: iron Date: Fri, 7 Nov 2025 16:18:14 +0000 (+0800) Subject: ggml-cpu: detect correct cpu flags for arm64 (#16229) (#16239) X-Git-Tag: upstream/0.0.7011~38 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=7c23f3f0d4b9f5d6ea140756eb694b562d5acebb;p=pkg%2Fggml%2Fsources%2Fllama.cpp ggml-cpu: detect correct cpu flags for arm64 (#16229) (#16239) When using GCC 9 and GCC 12 on the arm64 platform of ubuntu 2004, the command "gcc -mcpu=native -E -v -" fails to detect the correct CPU flags, which results in compilation failures for certain extended instructions, but the correct CPU flags can be obtained by using gcc -march. Signed-off-by: lizhenneng Co-authored-by: lizhenneng --- diff --git a/ggml/src/ggml-cpu/CMakeLists.txt b/ggml/src/ggml-cpu/CMakeLists.txt index 23ec8bb0..485227d2 100644 --- a/ggml/src/ggml-cpu/CMakeLists.txt +++ b/ggml/src/ggml-cpu/CMakeLists.txt @@ -118,18 +118,18 @@ function(ggml_add_cpu_backend_variant_impl tag_name) # so we check for them manually and enable them if available execute_process( - COMMAND ${CMAKE_C_COMPILER} -mcpu=native -E -v - + COMMAND ${CMAKE_C_COMPILER} -march=native -E -v - INPUT_FILE "/dev/null" OUTPUT_QUIET ERROR_VARIABLE ARM_MCPU RESULT_VARIABLE ARM_MCPU_RESULT ) if (NOT ARM_MCPU_RESULT) - string(REGEX MATCH "-mcpu=[^ ']+" ARM_MCPU_FLAG "${ARM_MCPU}") + string(REGEX MATCH "-march=[^ ']+" ARM_MCPU_FLAG "${ARM_MCPU}") endif() if ("${ARM_MCPU_FLAG}" STREQUAL "") - set(ARM_MCPU_FLAG -mcpu=native) - message(STATUS "ARM -mcpu not found, -mcpu=native will be used") + set(ARM_MCPU_FLAG -march=native) + message(STATUS "ARM -mcpu not found, -march=native will be used") endif() include(CheckCXXSourceRuns)