From 19d162281cf045655f15952e6e92e07d96ac524b Mon Sep 17 00:00:00 2001 From: Anonymous Maarten 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 a593b668a6..87c87739ea 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 f55ad313b3..e32529a678 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()