sdlplatform.cmake 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. macro(SDL_DetectCMakePlatform)
  2. set(SDL_CMAKE_PLATFORM )
  3. # Get the platform
  4. if(WIN32)
  5. set(SDL_CMAKE_PLATFORM WINDOWS)
  6. elseif(UNIX AND NOT APPLE)
  7. if(CMAKE_SYSTEM_NAME MATCHES ".*Linux")
  8. set(SDL_CMAKE_PLATFORM LINUX)
  9. elseif(CMAKE_SYSTEM_NAME MATCHES "kFreeBSD.*")
  10. set(SDL_CMAKE_PLATFORM FREEBSD)
  11. elseif(CMAKE_SYSTEM_NAME MATCHES "kNetBSD.*|NetBSD.*")
  12. set(SDL_CMAKE_PLATFORM NETBSD)
  13. elseif(CMAKE_SYSTEM_NAME MATCHES "kOpenBSD.*|OpenBSD.*")
  14. set(SDL_CMAKE_PLATFORM OPENBSD)
  15. elseif(CMAKE_SYSTEM_NAME MATCHES ".*GNU.*")
  16. set(SDL_CMAKE_PLATFORM GNU)
  17. elseif(CMAKE_SYSTEM_NAME MATCHES ".*BSDI.*")
  18. set(SDL_CMAKE_PLATFORM BSDI)
  19. elseif(CMAKE_SYSTEM_NAME MATCHES "DragonFly.*|FreeBSD")
  20. set(SDL_CMAKE_PLATFORM FREEBSD)
  21. elseif(CMAKE_SYSTEM_NAME MATCHES "SYSV5.*")
  22. set(SDL_CMAKE_PLATFORM SYSV5)
  23. elseif(CMAKE_SYSTEM_NAME MATCHES "Solaris.*|SunOS.*")
  24. set(SDL_CMAKE_PLATFORM SOLARIS)
  25. elseif(CMAKE_SYSTEM_NAME MATCHES "HP-UX.*")
  26. set(SDL_CMAKE_PLATFORM HPUX)
  27. elseif(CMAKE_SYSTEM_NAME MATCHES "AIX.*")
  28. set(SDL_CMAKE_PLATFORM AIX)
  29. elseif(CMAKE_SYSTEM_NAME MATCHES "Minix.*")
  30. set(SDL_CMAKE_PLATFORM MINIX)
  31. endif()
  32. elseif(APPLE)
  33. if(CMAKE_SYSTEM_NAME MATCHES ".*Darwin.*")
  34. set(SDL_CMAKE_PLATFORM DARWIN)
  35. elseif(CMAKE_SYSTEM_NAME MATCHES ".*MacOS.*")
  36. set(SDL_CMAKE_PLATFORM MACOSX)
  37. elseif(CMAKE_SYSTEM_NAME MATCHES ".*tvOS.*")
  38. set(SDL_CMAKE_PLATFORM TVOS)
  39. elseif(CMAKE_SYSTEM_NAME MATCHES ".*iOS.*")
  40. # !!! FIXME: remove the version check when we start requiring >= 3.14.0
  41. if(CMAKE_VERSION VERSION_LESS 3.14)
  42. set(SDL_CMAKE_PLATFORM IOS)
  43. endif()
  44. endif()
  45. elseif(CMAKE_SYSTEM_NAME MATCHES "BeOS.*")
  46. message_error("BeOS support has been removed as of SDL 2.0.2.")
  47. elseif(CMAKE_SYSTEM_NAME MATCHES "Haiku.*")
  48. set(SDL_CMAKE_PLATFORM HAIKU)
  49. elseif(NINTENDO_3DS)
  50. set(SDL_CMAKE_PLATFORM N3DS)
  51. endif()
  52. if(SDL_CMAKE_PLATFORM)
  53. set(${SDL_CMAKE_PLATFORM} TRUE)
  54. endif()
  55. endmacro()
  56. function(SDL_DetectCPUArchitecture)
  57. set(archs x86 x64 arm32 arm64 loongarch64)
  58. set(found FALSE)
  59. foreach(arch ${archs})
  60. string(TOUPPER "${arch}" arch_upper)
  61. set(var_name "SDL_CPU_${arch_upper}")
  62. if(found)
  63. set(${var_name} 0 PARENT_SCOPE)
  64. else()
  65. check_cpu_architecture(${arch} ${var_name})
  66. set(found ${${var_name}})
  67. set(${var_name} ${${var_name}} PARENT_SCOPE)
  68. set(SDL_CPU_NAME ${arch})
  69. endif()
  70. endforeach()
  71. if(NOT found)
  72. message(AUTHOR_WARNING "Unknown architecture (failed archs=${archs})")
  73. set(SDL_CPU_NAME "(unknown)")
  74. endif()
  75. endfunction()