From 19d162281cf045655f15952e6e92e07d96ac524b Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Mon, 9 Jan 2023 15:06:45 +0100
Subject: [PATCH] cmake: detect cpu architecture in SDL_DetectCPUArchitecture
Stop looking for arch, when one is found
---
CMakeLists.txt | 6 +-----
cmake/sdlplatform.cmake | 21 +++++++++++++++++++++
2 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a593b668a6a1..87c87739eae2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -104,11 +104,7 @@ set(SDL_DYLIB_COMPAT_VERSION "${SDL_DYLIB_COMPAT_VERSION_MAJOR}.${SDL_DYLIB_COMP
#message("SDL_SO_VERSION=${SDL_SO_VERSION} SDL_DYLIB_CURRENT_VERSION=${SDL_DYLIB_CURRENT_VERSION} SDL_DYLIB_COMPAT_VERSION=${SDL_DYLIB_COMPAT_VERSION}")
-check_cpu_architecture(x86 SDL_CPU_X86)
-check_cpu_architecture(x64 SDL_CPU_X64)
-check_cpu_architecture(arm32 SDL_CPU_ARM32)
-check_cpu_architecture(arm64 SDL_CPU_ARM64)
-check_cpu_architecture(loongarch64 SDL_CPU_LOONGARCH64)
+SDL_DetectCPUArchitecture()
# Check for 64 or 32 bit
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
diff --git a/cmake/sdlplatform.cmake b/cmake/sdlplatform.cmake
index f55ad313b309..e32529a6782b 100644
--- a/cmake/sdlplatform.cmake
+++ b/cmake/sdlplatform.cmake
@@ -53,3 +53,24 @@ macro(SDL_DetectCMakePlatform)
set(${SDL_CMAKE_PLATFORM} TRUE)
endif()
endmacro()
+
+function(SDL_DetectCPUArchitecture)
+ set(archs x86 x64 arm32 arm64 loongarch64)
+ set(found FALSE)
+ foreach(arch ${archs})
+ string(TOUPPER "${arch}" arch_upper)
+ set(var_name "SDL_CPU_${arch_upper}")
+ if(found)
+ set(${var_name} 0 PARENT_SCOPE)
+ else()
+ check_cpu_architecture(${arch} ${var_name})
+ set(found ${${var_name}})
+ set(${var_name} ${${var_name}} PARENT_SCOPE)
+ set(SDL_CPU_NAME ${arch})
+ endif()
+ endforeach()
+ if(NOT found)
+ message(AUTHOR_WARNING "Unknown architecture (failed archs=${archs})")
+ set(SDL_CPU_NAME "(unknown)")
+ endif()
+endfunction()