From 8290dd4b1f066d24a548d31b72a3053270ca9abc Mon Sep 17 00:00:00 2001 From: Gustavo Varo Date: Fri, 3 Apr 2026 17:28:07 -0400 Subject: [PATCH] Fix ARM64 cross-compilation: exclude ARM64 from x64 MI_ARCH detection When cross-compiling for ARM64 on an x64 host, CMAKE_SYSTEM_PROCESSOR (AMD64) was matching the x64 condition before reaching ARM64, causing the wrong redirect lib to be linked. Add 'AND NOT CMAKE_GENERATOR_PLATFORM STREQUAL ARM64' to the x64 detection to let ARM64 builds fall through to the correct condition. Cherry-picked from dev branch (PR #1244). --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4d62b8bc..159b5793 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -128,7 +128,7 @@ set(MI_OPT_ARCH_FLAGS "") set(MI_ARCH "unknown") if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86|i[3456]86)$" OR CMAKE_GENERATOR_PLATFORM MATCHES "^(x86|Win32)$") set(MI_ARCH "x86") -elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|x64|amd64|AMD64)$" OR CMAKE_GENERATOR_PLATFORM STREQUAL "x64" OR "x86_64" IN_LIST CMAKE_OSX_ARCHITECTURES) # must be before arm64 +elseif((CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|x64|amd64|AMD64)$" OR CMAKE_GENERATOR_PLATFORM STREQUAL "x64" OR "x86_64" IN_LIST CMAKE_OSX_ARCHITECTURES) AND NOT CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64") # must be before arm64 set(MI_ARCH "x64") elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64|armv[89].?|ARM64)$" OR CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64" OR "arm64" IN_LIST CMAKE_OSX_ARCHITECTURES) set(MI_ARCH "arm64") @@ -465,7 +465,7 @@ if (MSVC AND MSVC_VERSION GREATER_EQUAL 1914) list(APPEND mi_cflags /Zc:__cplusplus) if(MI_OPT_ARCH AND NOT MI_CLANG_CL) if(MI_ARCH STREQUAL "arm64") - set(MI_OPT_ARCH_FLAGS "/arch:armv8.1") # fast atomics + set(MI_OPT_ARCH_FLAGS "/arch:armv8.1") # fast atomics (LSE) endif() endif() endif()