From 12e58917c0280ef8dcb2e94cd9a02bac03c3d27a Mon Sep 17 00:00:00 2001
From: lat9nq <22451773+lat9nq@users.noreply.github.com>
Date: Fri, 16 Apr 2021 19:12:47 -0400
Subject: [PATCH] externals: Add SDL 2.0.12

Since Bintray is (soon to be) no more, there needs to be a way to
acquire SDL2. Since 20.04's version is older than our minimum required
version (2.0.12), add it as an external.
---
 .gitmodules              |  3 +++
 CMakeLists.txt           | 20 +++++++++++---------
 externals/CMakeLists.txt |  6 ++++++
 externals/SDL            |  1 +
 4 files changed, 21 insertions(+), 9 deletions(-)
 create mode 160000 externals/SDL

diff --git a/.gitmodules b/.gitmodules
index a0a89933df..829ab46fef 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -40,3 +40,6 @@
 [submodule "ffmpeg"]
 	path = externals/ffmpeg
 	url = https://git.ffmpeg.org/ffmpeg.git
+[submodule "externals/SDL"]
+	path = externals/SDL
+	url = https://github.com/libsdl-org/SDL.git
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a4a6da2e19..e208715d77 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -274,17 +274,19 @@ if (ENABLE_SDL2)
         target_link_libraries(SDL2 INTERFACE "${SDL2_LIBRARY}")
         target_include_directories(SDL2 INTERFACE "${SDL2_INCLUDE_DIR}")
     else()
-        find_package(SDL2 REQUIRED)
+        find_package(SDL2 2.0.12)
 
-        # Some installations don't set SDL2_LIBRARIES
-        if("${SDL2_LIBRARIES}" STREQUAL "")
-            message(WARNING "SDL2_LIBRARIES wasn't set, manually setting to SDL2::SDL2")
-            set(SDL2_LIBRARIES "SDL2::SDL2")
+        if(SDL2_FOUND)
+            # Some installations don't set SDL2_LIBRARIES
+            if("${SDL2_LIBRARIES}" STREQUAL "")
+                message(WARNING "SDL2_LIBRARIES wasn't set, manually setting to SDL2::SDL2")
+                set(SDL2_LIBRARIES "SDL2::SDL2")
+            endif()
+
+            include_directories(SYSTEM ${SDL2_INCLUDE_DIRS})
+            add_library(SDL2 INTERFACE)
+            target_link_libraries(SDL2 INTERFACE "${SDL2_LIBRARIES}")
         endif()
-
-        include_directories(SYSTEM ${SDL2_INCLUDE_DIRS})
-        add_library(SDL2 INTERFACE)
-        target_link_libraries(SDL2 INTERFACE "${SDL2_LIBRARIES}")
     endif()
 else()
     set(SDL2_FOUND NO)
diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt
index 891a47c3cc..6e4591b4e0 100644
--- a/externals/CMakeLists.txt
+++ b/externals/CMakeLists.txt
@@ -45,6 +45,12 @@ target_include_directories(microprofile INTERFACE ./microprofile)
 add_library(unicorn-headers INTERFACE)
 target_include_directories(unicorn-headers INTERFACE ./unicorn/include)
 
+# SDL2
+if (NOT SDL2_FOUND)
+    set(SDL2_FOUND YES)
+    add_subdirectory(SDL EXCLUDE_FROM_ALL)
+endif()
+
 # SoundTouch
 add_subdirectory(soundtouch)
 
diff --git a/externals/SDL b/externals/SDL
new file mode 160000
index 0000000000..983bbf9ef3
--- /dev/null
+++ b/externals/SDL
@@ -0,0 +1 @@
+Subproject commit 983bbf9ef3e572a073a6f5877faf1c0b4803527c