macro(SDL_DetectCMakePlatform) set(SDL_CMAKE_PLATFORM ) # Get the platform if(WIN32) set(SDL_CMAKE_PLATFORM Windows) elseif(PSP) set(SDL_CMAKE_PLATFORM psp) elseif(APPLE) if(CMAKE_SYSTEM_NAME MATCHES ".*Darwin.*") set(SDL_CMAKE_PLATFORM Darwin) elseif(CMAKE_SYSTEM_NAME MATCHES ".*MacOS.*") set(SDL_CMAKE_PLATFORM MacosX) elseif(CMAKE_SYSTEM_NAME MATCHES ".*tvOS.*") set(SDL_CMAKE_PLATFORM tvOS) elseif(CMAKE_SYSTEM_NAME MATCHES ".*iOS.*") # !!! FIXME: remove the version check when we start requiring >= 3.14.0 if(CMAKE_VERSION VERSION_LESS 3.14) set(SDL_CMAKE_PLATFORM iOS) endif() endif() elseif(CMAKE_SYSTEM_NAME MATCHES "Haiku.*") set(SDL_CMAKE_PLATFORM Haiku) elseif(NINTENDO_3DS) set(SDL_CMAKE_PLATFORM n3ds) elseif(PS2) set(SDL_CMAKE_PLATFORM ps2) elseif(VITA) set(SDL_CMAKE_PLATFORM Vita) elseif(CMAKE_SYSTEM_NAME MATCHES ".*Linux") set(SDL_CMAKE_PLATFORM Linux) elseif(CMAKE_SYSTEM_NAME MATCHES "kFreeBSD.*") set(SDL_CMAKE_PLATFORM FreeBSD) elseif(CMAKE_SYSTEM_NAME MATCHES "kNetBSD.*|NetBSD.*") set(SDL_CMAKE_PLATFORM NetBSD) elseif(CMAKE_SYSTEM_NAME MATCHES "kOpenBSD.*|OpenBSD.*") set(SDL_CMAKE_PLATFORM OpenBSD) elseif(CMAKE_SYSTEM_NAME MATCHES ".*GNU.*") set(SDL_CMAKE_PLATFORM GNU) elseif(CMAKE_SYSTEM_NAME MATCHES ".*BSDI.*") set(SDL_CMAKE_PLATFORM BSDi) elseif(CMAKE_SYSTEM_NAME MATCHES "DragonFly.*|FreeBSD") set(SDL_CMAKE_PLATFORM FreeBSD) elseif(CMAKE_SYSTEM_NAME MATCHES "SYSV5.*") set(SDL_CMAKE_PLATFORM SYSV5) elseif(CMAKE_SYSTEM_NAME MATCHES "Solaris.*|SunOS.*") set(SDL_CMAKE_PLATFORM Solaris) elseif(CMAKE_SYSTEM_NAME MATCHES "HP-UX.*") set(SDL_CMAKE_PLATFORM HPUX) elseif(CMAKE_SYSTEM_NAME MATCHES "AIX.*") set(SDL_CMAKE_PLATFORM AIX) elseif(CMAKE_SYSTEM_NAME MATCHES "Minix.*") set(SDL_CMAKE_PLATFORM Minix) elseif(CMAKE_SYSTEM_NAME MATCHES "Android.*") set(SDL_CMAKE_PLATFORM Android) elseif(CMAKE_SYSTEM_NAME MATCHES "Emscripten.*") set(SDL_CMAKE_PLATFORM Emscripten) elseif(CMAKE_SYSTEM_NAME MATCHES "BeOS.*") message_error("BeOS support has been removed as of SDL 2.0.2.") endif() if(SDL_CMAKE_PLATFORM) string(TOUPPER "${SDL_CMAKE_PLATFORM}" _upper_platform) set(${_upper_platform} TRUE) else() set(SDL_CMAKE_PLATFORM} "unknown") endif() endmacro() function(SDL_DetectCPUArchitecture) set(sdl_cpu_names) if(APPLE AND CMAKE_OSX_ARCHITECTURES) foreach(osx_arch ${CMAKE_OSX_ARCHITECTURES}) if(osx_arch STREQUAL "x86_64") list(APPEND sdl_cpu_names "x64") elseif(osx_arch STREQUAL "arm64") list(APPEND sdl_cpu_names "arm64") endif() endforeach() endif() set(sdl_known_archs x64 x86 arm64 arm32 emscripten powerpc64 powerpc32 loongarch64) if(NOT sdl_cpu_names) set(found FALSE) foreach(sdl_known_arch ${sdl_known_archs}) if(NOT found) string(TOUPPER "${sdl_known_arch}" sdl_known_arch_upper) set(var_name "SDL_CPU_${sdl_known_arch_upper}") check_cpu_architecture(${sdl_known_arch} ${var_name}) if(${var_name}) list(APPEND sdl_cpu_names ${sdl_known_arch}) set(found TRUE) endif() endif() endforeach() endif() foreach(sdl_known_arch ${sdl_known_archs}) string(TOUPPER "${sdl_known_arch}" sdl_known_arch_upper) set(var_name "SDL_CPU_${sdl_known_arch_upper}") if(sdl_cpu_names MATCHES "(^|;)${sdl_known_arch}($|;)") # FIXME: use if(IN_LIST) set(${var_name} 1 PARENT_SCOPE) else() set(${var_name} 0 PARENT_SCOPE) endif() endforeach() set(SDL_CPU_NAMES ${sdl_cpu_names} PARENT_SCOPE) endfunction()