Procházet zdrojové kódy

cmake: detect cpu architecture in SDL_DetectCPUArchitecture

Stop looking for arch, when one is found
Anonymous Maarten před 2 roky
rodič
revize
19d162281c
2 změnil soubory, kde provedl 22 přidání a 5 odebrání
  1. 1 5
      CMakeLists.txt
  2. 21 0
      cmake/sdlplatform.cmake

+ 1 - 5
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)

+ 21 - 0
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()