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()