sdl2-compat: cmake: add SDL_DetectCMakePlatform macro

From d0d7c58be7bc854a1dfd3f6c3baa58e43553d13a Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Tue, 29 Nov 2022 17:04:46 +0100
Subject: [PATCH] cmake: add SDL_DetectCMakePlatform macro

---
 CMakeLists.txt          |  2 ++
 cmake/sdlplatform.cmake | 55 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 57 insertions(+)
 create mode 100644 cmake/sdlplatform.cmake

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 04f2ba7..9ba35e4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -24,7 +24,9 @@ include(CheckCCompilerFlag)
 include(CMakePackageConfigHelpers)
 include(GNUInstallDirs)
 include("${CMAKE_CURRENT_LIST_DIR}/cmake/sdlchecks.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/cmake/sdlplatform.cmake")
 
+SDL_DetectCMakePlatform()
 CheckOpenGLES()
 
 set(CMAKE_SKIP_RPATH TRUE)
diff --git a/cmake/sdlplatform.cmake b/cmake/sdlplatform.cmake
new file mode 100644
index 0000000..f55ad31
--- /dev/null
+++ b/cmake/sdlplatform.cmake
@@ -0,0 +1,55 @@
+macro(SDL_DetectCMakePlatform)
+  set(SDL_CMAKE_PLATFORM )
+  # Get the platform
+  if(WIN32)
+    set(SDL_CMAKE_PLATFORM WINDOWS)
+  elseif(UNIX AND NOT APPLE)
+    if(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)
+    endif()
+  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 "BeOS.*")
+    message_error("BeOS support has been removed as of SDL 2.0.2.")
+  elseif(CMAKE_SYSTEM_NAME MATCHES "Haiku.*")
+    set(SDL_CMAKE_PLATFORM HAIKU)
+  elseif(NINTENDO_3DS)
+    set(SDL_CMAKE_PLATFORM N3DS)
+  endif()
+  if(SDL_CMAKE_PLATFORM)
+    set(${SDL_CMAKE_PLATFORM} TRUE)
+  endif()
+endmacro()