From 2a73f81f8a810783db5794256e5ba79f298adee7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20Gallou=C3=ABt?= Date: Thu, 4 Dec 2025 11:42:13 +0100 Subject: [PATCH] cmake : simplify build info detection using standard variables (#17423) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The current approach has several drawbacks. Mostly, when cross-compiling, invoking the compiler binary directly to query the machine hardware can behave unexpectedly depending on the toolchain wrapper (using COMPILER_TARGET, CFLAGS, etc). As CMake is the official tool to build llama.cpp, I propose to only rely on it to get those variables (`CMAKE_SYSTEM_NAME` and `CMAKE_SYSTEM_PROCESSOR`). Signed-off-by: Adrien Gallouët --- cmake/build-info.cmake | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) diff --git a/cmake/build-info.cmake b/cmake/build-info.cmake index 75c78222f2..c7005950c5 100644 --- a/cmake/build-info.cmake +++ b/cmake/build-info.cmake @@ -39,26 +39,10 @@ if(Git_FOUND) endif() endif() -if(MSVC) - set(BUILD_COMPILER "${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}") - if (CMAKE_VS_PLATFORM_NAME) - set(BUILD_TARGET ${CMAKE_VS_PLATFORM_NAME}) - else() - set(BUILD_TARGET "${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_PROCESSOR}") - endif() -else() - execute_process( - COMMAND ${CMAKE_C_COMPILER} --version - OUTPUT_VARIABLE OUT - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - string(REGEX REPLACE " *\n.*" "" OUT "${OUT}") - set(BUILD_COMPILER ${OUT}) +set(BUILD_COMPILER "${CMAKE_C_COMPILER_ID} ${CMAKE_C_COMPILER_VERSION}") - execute_process( - COMMAND ${CMAKE_C_COMPILER} -dumpmachine - OUTPUT_VARIABLE OUT - OUTPUT_STRIP_TRAILING_WHITESPACE - ) - set(BUILD_TARGET ${OUT}) +if(CMAKE_VS_PLATFORM_NAME) + set(BUILD_TARGET ${CMAKE_VS_PLATFORM_NAME}) +else() + set(BUILD_TARGET "${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_PROCESSOR}") endif()