SDL: First pass at changing SDL 2.0 to SDL 3.0

From 2c4159b99adf72c428347a7dea6e704314b5b6f1 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Mon, 21 Nov 2022 20:28:58 -0800
Subject: [PATCH] First pass at changing SDL 2.0 to SDL 3.0

---
 .editorconfig                                 |   2 +-
 Android.mk                                    |  10 +-
 CMakeLists.txt                                | 754 +++++++--------
 Makefile.in                                   |  60 +-
 Makefile.minimal                              |   4 +-
 Makefile.os2                                  |  16 +-
 Makefile.pandora                              |   2 +-
 Makefile.w32                                  |  18 +-
 README.md                                     |   2 +-
 SDL2Config.cmake.in                           |  65 --
 SDL2.spec.in => SDL3.spec.in                  |   6 +-
 SDL3Config.cmake.in                           |  65 ++
 VisualC-GDK/SDL.sln                           |   6 +-
 VisualC-GDK/SDL/SDL.vcxproj                   |   2 +-
 VisualC-GDK/SDLmain/SDLmain.vcxproj           |   4 +-
 VisualC-GDK/SDLtest/SDLtest.vcxproj           |   4 +-
 VisualC-WinRT/SDL-UWP.sln                     |   2 +-
 VisualC-WinRT/SDL-UWP.vcxproj                 |  20 +-
 VisualC/SDL.sln                               |   6 +-
 VisualC/SDL/SDL.vcxproj                       |   2 +-
 VisualC/SDLmain/SDLmain.vcxproj               |   2 +-
 VisualC/SDLtest/SDLtest.vcxproj               |   2 +-
 VisualC/pkg-support/cmake/sdl2-config.cmake   | 111 ---
 ...ersion.cmake => sdl3-config-version.cmake} |   6 +-
 VisualC/pkg-support/cmake/sdl3-config.cmake   | 111 +++
 .../Demos/Demos.xcodeproj/project.pbxproj     |  98 +-
 Xcode-iOS/Demos/README                        |   2 +-
 Xcode-iOS/Demos/config.xcconfig               |   2 +-
 Xcode/SDL/Info-Framework.plist                |   4 +-
 Xcode/SDL/SDL.xcodeproj/project.pbxproj       | 126 +--
 .../xcschemes/Framework-iOS.xcscheme          |   4 +-
 .../xcschemes/xcFramework-iOS.xcscheme        |   4 +-
 Xcode/SDL/{SDL2 => SDL3}/Info.plist           |   0
 Xcode/SDL/pkg-support/SDL.info                |   2 +-
 .../resources/CMake/sdl2-config.cmake         |  69 --
 ...ersion.cmake => sdl3-config-version.cmake} |   6 +-
 .../resources/CMake/sdl3-config.cmake         |  69 ++
 Xcode/SDL/pkg-support/resources/ReadMe.txt    |  10 +-
 Xcode/SDL/pkg-support/resources/SDL_DS_Store  | Bin 15364 -> 15365 bytes
 .../SDLTest/SDLTest.xcodeproj/project.pbxproj |  66 +-
 Xcode/SDLTest/config.xcconfig                 |   6 +-
 android-project-ant/jni/src/Android.mk        |   2 +-
 android-project-ant/jni/src/Android_static.mk |   2 +-
 android-project/app/jni/src/Android.mk        |   2 +-
 android-project/app/jni/src/CMakeLists.txt    |   4 +-
 .../main/java/org/libsdl/app/SDLActivity.java |  18 +-
 build-scripts/android-prefab.sh               |   4 +-
 build-scripts/androidbuildlibs.sh             |   2 +-
 build-scripts/emscripten-buildbot.sh          |   6 +-
 build-scripts/nacl-buildbot.sh                |   8 +-
 build-scripts/naclbuild.sh                    |  12 +-
 build-scripts/raspberrypi-buildbot.sh         |  14 +-
 build-scripts/windows-buildbot-zipper.bat     |   6 +-
 cmake/macros.cmake                            |   2 +-
 cmake/sdlchecks.cmake                         |  58 +-
 cmake/test/CMakeLists.txt                     |  84 +-
 cmake/test/jni/Android.mk                     |   6 +-
 cmake/test/main_cli.c                         |   2 +-
 cmake/test/main_gui.c                         |   4 +-
 cmake/test/main_lib.c                         |   2 +-
 cmake/test/test_pkgconfig.sh                  |   6 +-
 cmake/test/test_sdlconfig.sh                  |   6 +-
 configure                                     |  64 +-
 configure.ac                                  |  44 +-
 docs/README-android.md                        |   8 +-
 docs/README-cmake.md                          |  30 +-
 docs/README-dynapi.md                         |  24 +-
 docs/README-emscripten.md                     |   4 +-
 docs/README-gdk.md                            |  20 +-
 docs/README-ios.md                            |   8 +-
 docs/README-kmsbsd.md                         |   2 +-
 docs/README-n3ds.md                           |   2 +-
 docs/README-ngage.md                          |   4 +-
 docs/README-os2.md                            |  13 +-
 docs/README-ps2.md                            |   6 +-
 docs/README-psp.md                            |   6 +-
 docs/README-raspberrypi.md                    |   4 +-
 docs/README-riscos.md                         |   6 +-
 docs/README-visualc.md                        |  16 +-
 docs/README-winrt.md                          |   6 +-
 docs/doxyfile                                 |   8 +-
 include/SDL.h                                 |   2 +-
 include/SDL_audio.h                           |   2 +-
 include/SDL_hints.h                           |   2 +-
 include/SDL_main.h                            |   2 +-
 include/SDL_test.h                            |   2 +-
 include/SDL_test_assert.h                     |   2 +-
 include/SDL_test_common.h                     |   2 +-
 include/SDL_test_compare.h                    |   2 +-
 include/SDL_test_crc32.h                      |   2 +-
 include/SDL_test_font.h                       |   2 +-
 include/SDL_test_fuzzer.h                     |   2 +-
 include/SDL_test_harness.h                    |   2 +-
 include/SDL_test_images.h                     |   2 +-
 include/SDL_test_log.h                        |   2 +-
 include/SDL_test_md5.h                        |   2 +-
 include/SDL_test_memory.h                     |   2 +-
 include/SDL_test_random.h                     |   2 +-
 include/SDL_thread.h                          |   8 +-
 include/SDL_version.h                         |   6 +-
 .../cmake/sdl2-config-version.cmake           |  19 -
 mingw/pkg-support/cmake/sdl2-config.cmake     |  19 -
 .../cmake/sdl3-config-version.cmake           |  19 +
 mingw/pkg-support/cmake/sdl3-config.cmake     |  19 +
 sdl2-config.cmake.in                          | 206 -----
 ...n.cmake.in => sdl3-config-version.cmake.in |   2 +-
 sdl3-config.cmake.in                          | 206 +++++
 sdl2-config.in => sdl3-config.in              |   4 +-
 sdl2.m4 => sdl3.m4                            |  76 +-
 sdl2.pc.in => sdl3.pc.in                      |   4 +-
 src/SDL_internal.h                            |   2 +-
 src/audio/emscripten/SDL_emscriptenaudio.c    | 134 +--
 src/audio/qsa/SDL_qsa_audio.c                 |   2 +-
 src/core/linux/SDL_ibus.c                     |   2 +-
 src/dynapi/SDL2.exports                       | 869 ------------------
 src/dynapi/SDL3.exports                       | 869 ++++++++++++++++++
 src/dynapi/SDL_dynapi.c                       |  16 +-
 src/dynapi/gendynapi.pl                       |   8 +-
 src/main/windows/version.rc                   |  10 +-
 ...cur => SDL3-WinRTResource_BlankCursor.cur} | Bin
 ...nRTResources.rc => SDL3-WinRTResources.rc} |   2 +-
 src/stdlib/SDL_mslibc.c                       |   2 +-
 .../emscripten/SDL_emscriptenframebuffer.c    |  36 +-
 src/video/haiku/SDL_bmessagebox.cc            |   2 +-
 src/video/kmsdrm/SDL_kmsdrmopengles.c         |   2 +-
 src/video/kmsdrm/SDL_kmsdrmvideo.c            |   2 +-
 src/video/os2/SDL_os2video.c                  |   4 +-
 src/video/raspberry/SDL_rpiopengles.c         |   2 +-
 src/video/windows/SDL_windowswindow.c         |   3 +-
 src/video/winrt/SDL_winrtmouse.cpp            |   4 +-
 src/video/x11/SDL_x11video.c                  |   2 +-
 test/CMakeLists.txt                           |  40 +-
 test/Makefile.in                              |   4 +-
 test/Makefile.os2                             |   2 +-
 test/Makefile.w32                             |   2 +-
 test/acinclude.m4                             |  54 +-
 test/configure                                | 108 +--
 test/configure.ac                             |  20 +-
 test/nacl/Makefile                            |   4 +-
 test/testautomation_audio.c                   |   2 +-
 test/testver.c                                |   6 +-
 test/watcom.mif                               |   8 +-
 visualtest/COPYING.txt                        |   2 +-
 visualtest/acinclude.m4                       |  54 +-
 visualtest/configure                          |  86 +-
 visualtest/configure.ac                       |   6 +-
 146 files changed, 2633 insertions(+), 2635 deletions(-)
 delete mode 100644 SDL2Config.cmake.in
 rename SDL2.spec.in => SDL3.spec.in (97%)
 create mode 100644 SDL3Config.cmake.in
 delete mode 100644 VisualC/pkg-support/cmake/sdl2-config.cmake
 rename VisualC/pkg-support/cmake/{sdl2-config-version.cmake => sdl3-config-version.cmake} (92%)
 create mode 100644 VisualC/pkg-support/cmake/sdl3-config.cmake
 rename Xcode/SDL/{SDL2 => SDL3}/Info.plist (100%)
 delete mode 100644 Xcode/SDL/pkg-support/resources/CMake/sdl2-config.cmake
 rename Xcode/SDL/pkg-support/resources/CMake/{sdl2-config-version.cmake => sdl3-config-version.cmake} (94%)
 create mode 100644 Xcode/SDL/pkg-support/resources/CMake/sdl3-config.cmake
 delete mode 100644 mingw/pkg-support/cmake/sdl2-config-version.cmake
 delete mode 100644 mingw/pkg-support/cmake/sdl2-config.cmake
 create mode 100644 mingw/pkg-support/cmake/sdl3-config-version.cmake
 create mode 100644 mingw/pkg-support/cmake/sdl3-config.cmake
 delete mode 100644 sdl2-config.cmake.in
 rename sdl2-config-version.cmake.in => sdl3-config-version.cmake.in (81%)
 create mode 100644 sdl3-config.cmake.in
 rename sdl2-config.in => sdl3-config.in (94%)
 rename sdl2.m4 => sdl3.m4 (73%)
 rename sdl2.pc.in => sdl3.pc.in (86%)
 delete mode 100644 src/dynapi/SDL2.exports
 create mode 100644 src/dynapi/SDL3.exports
 rename src/main/winrt/{SDL2-WinRTResource_BlankCursor.cur => SDL3-WinRTResource_BlankCursor.cur} (100%)
 rename src/main/winrt/{SDL2-WinRTResources.rc => SDL3-WinRTResources.rc} (54%)

diff --git a/.editorconfig b/.editorconfig
index 636c5445335c..5f3849ca431f 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -16,7 +16,7 @@ indent_style = space
 indent_size = 4
 indent_style = space
 
-[{CMakeLists.txt,sdl2-config*.cmake.in,cmake/*.cmake}]
+[{CMakeLists.txt,sdl3-config*.cmake.in,cmake/*.cmake}]
 indent_size = 2
 indent_style = space
 
diff --git a/Android.mk b/Android.mk
index 06146cd40cd0..658e15951c44 100644
--- a/Android.mk
+++ b/Android.mk
@@ -8,7 +8,7 @@ LOCAL_PATH := $(call my-dir)
 
 include $(CLEAR_VARS)
 
-LOCAL_MODULE := SDL2
+LOCAL_MODULE := SDL3
 
 LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
 
@@ -97,9 +97,9 @@ include $(BUILD_SHARED_LIBRARY)
 #
 ###########################
 
-LOCAL_MODULE := SDL2_static
+LOCAL_MODULE := SDL3_static
 
-LOCAL_MODULE_FILENAME := libSDL2
+LOCAL_MODULE_FILENAME := libSDL3
 
 LOCAL_LDLIBS :=
 
@@ -120,9 +120,9 @@ include $(CLEAR_VARS)
 
 LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
 
-LOCAL_MODULE := SDL2_main
+LOCAL_MODULE := SDL3_main
 
-LOCAL_MODULE_FILENAME := libSDL2main
+LOCAL_MODULE_FILENAME := libSDL3main
 
 include $(BUILD_STATIC_LIBRARY)
 
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 021b66cd5731..60a4782ae581 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,12 +3,12 @@ if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
 endif()
 
 cmake_minimum_required(VERSION 3.0.0)
-project(SDL2 C CXX)
+project(SDL3 C CXX)
 
 if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
-  set(SDL2_SUBPROJECT OFF)
+  set(SDL3_SUBPROJECT OFF)
 else()
-  set(SDL2_SUBPROJECT ON)
+  set(SDL3_SUBPROJECT ON)
 endif()
 
 if (HAIKU)
@@ -46,7 +46,7 @@ if(POLICY CMP0054)
 endif()
 
 # !!! FIXME: this should probably do "MACOSX_RPATH ON" as a target property
-# !!! FIXME:  for the SDL2 shared library (so you get an
+# !!! FIXME:  for the SDL shared library (so you get an
 # !!! FIXME:  install_name ("soname") of "@rpath/libSDL-whatever.dylib"
 # !!! FIXME:  instead of "/usr/local/lib/libSDL-whatever.dylib"), but I'm
 # !!! FIXME:  punting for now and leaving the existing behavior. Until this
@@ -71,10 +71,10 @@ include(GNUInstallDirs)
 
 find_package(PkgConfig)
 
-list(APPEND CMAKE_MODULE_PATH "${SDL2_SOURCE_DIR}/cmake")
-include(${SDL2_SOURCE_DIR}/cmake/macros.cmake)
-include(${SDL2_SOURCE_DIR}/cmake/sdlchecks.cmake)
-include(${SDL2_SOURCE_DIR}/cmake/CheckCPUArchitecture.cmake)
+list(APPEND CMAKE_MODULE_PATH "${SDL3_SOURCE_DIR}/cmake")
+include(${SDL3_SOURCE_DIR}/cmake/macros.cmake)
+include(${SDL3_SOURCE_DIR}/cmake/sdlchecks.cmake)
+include(${SDL3_SOURCE_DIR}/cmake/CheckCPUArchitecture.cmake)
 
 # Enable large file support on 32-bit glibc, so that we can access files
 # with large inode numbers
@@ -84,8 +84,8 @@ if (LIBC_IS_GLIBC AND CMAKE_SIZEOF_VOID_P EQUAL 4)
 endif()
 
 # See docs/release_checklist.md
-set(SDL_MAJOR_VERSION 2)
-set(SDL_MINOR_VERSION 26)
+set(SDL_MAJOR_VERSION 3)
+set(SDL_MINOR_VERSION 0)
 set(SDL_MICRO_VERSION 0)
 set(SDL_VERSION "${SDL_MAJOR_VERSION}.${SDL_MINOR_VERSION}.${SDL_MICRO_VERSION}")
 
@@ -98,15 +98,15 @@ mark_as_advanced(CMAKE_IMPORT_LIBRARY_SUFFIX SDL_CMAKE_DEBUG_POSTFIX)
 # Calculate a libtool-like version number
 math(EXPR SDL_BINARY_AGE "${SDL_MINOR_VERSION} * 100 + ${SDL_MICRO_VERSION}")
 if(SDL_MINOR_VERSION MATCHES "[02468]$")
-    # Stable branch, 2.24.1 -> libSDL2-2.0.so.0.2400.1
+    # Stable branch, 3.24.1 -> libSDL3-3.0.so.0.2400.1
     set(SDL_INTERFACE_AGE ${SDL_MICRO_VERSION})
 else()
-    # Development branch, 2.23.1 -> libSDL2-2.0.so.0.2301.0
+    # Development branch, 3.23.1 -> libSDL3-3.0.so.0.2301.0
     set(SDL_INTERFACE_AGE 0)
 endif()
 
 # Increment this if there is an incompatible change - but if that happens,
-# we should rename the library from SDL2 to SDL3, at which point this would
+# we should rename the library from SDL3 to SDL4, at which point this would
 # reset to 0 anyway.
 set(LT_MAJOR "0")
 
@@ -114,10 +114,10 @@ math(EXPR LT_AGE "${SDL_BINARY_AGE} - ${SDL_INTERFACE_AGE}")
 math(EXPR LT_CURRENT "${LT_MAJOR} + ${LT_AGE}")
 set(LT_REVISION "${SDL_INTERFACE_AGE}")
 # For historical reasons, the library name redundantly includes the major
-# version twice: libSDL2-2.0.so.0.
+# version twice: libSDL3-3.0.so.0.
 # TODO: in SDL 3, set the OUTPUT_NAME to plain SDL3, which will simplify
 # it to libSDL3.so.0
-set(LT_RELEASE "2.0")
+set(LT_RELEASE "3.0")
 set(LT_VERSION "${LT_MAJOR}.${LT_AGE}.${LT_REVISION}")
 
 # The following should match the versions in the Xcode project file.
@@ -146,7 +146,7 @@ else()
   set(ARCH_64 FALSE)
   set(PROCESSOR_ARCH "x86")
 endif()
-set(LIBNAME SDL2)
+set(LIBNAME SDL3)
 if(NOT LIBTYPE)
   set(LIBTYPE SHARED)
 endif()
@@ -325,9 +325,9 @@ if(MSVC)
   endif()
 endif()
 
-# Those are used for pkg-config and friends, so that the sdl2.pc, sdl2-config,
+# Those are used for pkg-config and friends, so that the sdl3.pc, sdl3-config,
 # etc. are created correctly.
-set(SDL_LIBS "-lSDL2")
+set(SDL_LIBS "-lSDL3")
 set(SDL_CFLAGS )
 
 # When building shared lib for Windows with MinGW,
@@ -358,13 +358,13 @@ endif()
 
 # General includes
 target_compile_definitions(sdl-build-options INTERFACE "-DUSING_GENERATED_CONFIG_H")
-target_include_directories(sdl-build-options BEFORE INTERFACE "${SDL2_BINARY_DIR}/include" "${SDL2_BINARY_DIR}/include-config-$<LOWER_CASE:$<CONFIG>>")
+target_include_directories(sdl-build-options BEFORE INTERFACE "${SDL3_BINARY_DIR}/include" "${SDL3_BINARY_DIR}/include-config-$<LOWER_CASE:$<CONFIG>>")
 # Note: The clang toolset for Visual Studio does not support the '-idirafter' option.
 if(USE_GCC OR (USE_CLANG AND NOT MSVC_CLANG))
   # !!! FIXME: do we _need_ to mess with CMAKE_C_FLAGS here?
-  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -idirafter \"${SDL2_SOURCE_DIR}/src/video/khronos\"")
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -idirafter \"${SDL3_SOURCE_DIR}/src/video/khronos\"")
 else()
-  target_include_directories(sdl-build-options INTERFACE "${SDL2_SOURCE_DIR}/src/video/khronos")
+  target_include_directories(sdl-build-options INTERFACE "${SDL3_SOURCE_DIR}/src/video/khronos")
 endif()
 
 # All these ENABLED_BY_DEFAULT vars will default to ON if not specified, so
@@ -427,9 +427,9 @@ foreach(_SUB ${SDL_SUBSYSTEMS})
 endforeach()
 
 # Allow some projects to be built conditionally.
-set_option(SDL2_DISABLE_SDL2MAIN   "Disable building/installation of SDL2main" OFF)
-set_option(SDL2_DISABLE_INSTALL    "Disable installation of SDL2" ${SDL2_SUBPROJECT})
-set_option(SDL2_DISABLE_UNINSTALL  "Disable uninstallation of SDL2" OFF)
+set_option(SDL3_DISABLE_SDL3MAIN   "Disable building/installation of SDL3main" OFF)
+set_option(SDL3_DISABLE_INSTALL    "Disable installation of SDL3" ${SDL3_SUBPROJECT})
+set_option(SDL3_DISABLE_UNINSTALL  "Disable uninstallation of SDL3" OFF)
 
 option_string(SDL_ASSERTIONS "Enable internal sanity checks (auto/disabled/release/enabled/paranoid)" "auto")
 #set_option(SDL_DEPENDENCY_TRACKING "Use gcc -MMD -MT dependency tracking" ON)
@@ -519,7 +519,7 @@ option(SDL_WERROR "Enable -Werror" OFF)
 
 option(SDL_SHARED "Build a shared version of the library" ${SDL_SHARED_ENABLED_BY_DEFAULT})
 option(SDL_STATIC "Build a static version of the library" ${SDL_STATIC_ENABLED_BY_DEFAULT})
-option(SDL_TEST   "Build the SDL2_test library" ${SDL_TEST_ENABLED_BY_DEFAULT})
+option(SDL_TEST   "Build the SDL3_test library" ${SDL_TEST_ENABLED_BY_DEFAULT})
 
 dep_option(SDL_STATIC_PIC      "Static version of the library should be built with Position Independent Code" "${CMAKE_POSITION_INDEPENDENT_CODE}" "SDL_STATIC" OFF)
 dep_option(SDL_TESTS           "Build the test directory" OFF SDL_TEST OFF)
@@ -562,28 +562,28 @@ endif()
 
 # General source files
 file(GLOB SOURCE_FILES
-  ${SDL2_SOURCE_DIR}/src/*.c
-  ${SDL2_SOURCE_DIR}/src/atomic/*.c
-  ${SDL2_SOURCE_DIR}/src/audio/*.c
-  ${SDL2_SOURCE_DIR}/src/cpuinfo/*.c
-  ${SDL2_SOURCE_DIR}/src/dynapi/*.c
-  ${SDL2_SOURCE_DIR}/src/events/*.c
-  ${SDL2_SOURCE_DIR}/src/file/*.c
-  ${SDL2_SOURCE_DIR}/src/joystick/*.c
-  ${SDL2_SOURCE_DIR}/src/haptic/*.c
-  ${SDL2_SOURCE_DIR}/src/hidapi/*.c
-  ${SDL2_SOURCE_DIR}/src/libm/*.c
-  ${SDL2_SOURCE_DIR}/src/locale/*.c
-  ${SDL2_SOURCE_DIR}/src/misc/*.c
-  ${SDL2_SOURCE_DIR}/src/power/*.c
-  ${SDL2_SOURCE_DIR}/src/render/*.c
-  ${SDL2_SOURCE_DIR}/src/render/*/*.c
-  ${SDL2_SOURCE_DIR}/src/sensor/*.c
-  ${SDL2_SOURCE_DIR}/src/stdlib/*.c
-  ${SDL2_SOURCE_DIR}/src/thread/*.c
-  ${SDL2_SOURCE_DIR}/src/timer/*.c
-  ${SDL2_SOURCE_DIR}/src/video/*.c
-  ${SDL2_SOURCE_DIR}/src/video/yuv2rgb/*.c)
+  ${SDL3_SOURCE_DIR}/src/*.c
+  ${SDL3_SOURCE_DIR}/src/atomic/*.c
+  ${SDL3_SOURCE_DIR}/src/audio/*.c
+  ${SDL3_SOURCE_DIR}/src/cpuinfo/*.c
+  ${SDL3_SOURCE_DIR}/src/dynapi/*.c
+  ${SDL3_SOURCE_DIR}/src/events/*.c
+  ${SDL3_SOURCE_DIR}/src/file/*.c
+  ${SDL3_SOURCE_DIR}/src/joystick/*.c
+  ${SDL3_SOURCE_DIR}/src/haptic/*.c
+  ${SDL3_SOURCE_DIR}/src/hidapi/*.c
+  ${SDL3_SOURCE_DIR}/src/libm/*.c
+  ${SDL3_SOURCE_DIR}/src/locale/*.c
+  ${SDL3_SOURCE_DIR}/src/misc/*.c
+  ${SDL3_SOURCE_DIR}/src/power/*.c
+  ${SDL3_SOURCE_DIR}/src/render/*.c
+  ${SDL3_SOURCE_DIR}/src/render/*/*.c
+  ${SDL3_SOURCE_DIR}/src/sensor/*.c
+  ${SDL3_SOURCE_DIR}/src/stdlib/*.c
+  ${SDL3_SOURCE_DIR}/src/thread/*.c
+  ${SDL3_SOURCE_DIR}/src/timer/*.c
+  ${SDL3_SOURCE_DIR}/src/video/*.c
+  ${SDL3_SOURCE_DIR}/src/video/yuv2rgb/*.c)
 
 
 set(SDL_DEFAULT_ASSERT_LEVEL_CONFIGURED 1)
@@ -924,7 +924,7 @@ if(SDL_ASSEMBLY)
       if(ARMSIMD_FOUND)
         set(HAVE_ARMSIMD TRUE)
         set(SDL_ARM_SIMD_BLITTERS 1)
-        file(GLOB ARMSIMD_SOURCES ${SDL2_SOURCE_DIR}/src/video/arm/pixman-arm-simd*.S)
+        file(GLOB ARMSIMD_SOURCES ${SDL3_SOURCE_DIR}/src/video/arm/pixman-arm-simd*.S)
         list(APPEND SOURCE_FILES ${ARMSIMD_SOURCES})
         set(WARN_ABOUT_ARM_SIMD_ASM_MIT TRUE)
       endif()
@@ -952,7 +952,7 @@ if(SDL_ASSEMBLY)
       if(ARMNEON_FOUND)
         set(HAVE_ARMNEON TRUE)
         set(SDL_ARM_NEON_BLITTERS 1)
-        file(GLOB ARMNEON_SOURCES ${SDL2_SOURCE_DIR}/src/video/arm/pixman-arm-neon*.S)
+        file(GLOB ARMNEON_SOURCES ${SDL3_SOURCE_DIR}/src/video/arm/pixman-arm-neon*.S)
         list(APPEND SOURCE_FILES ${ARMNEON_SOURCES})
         set(WARN_ABOUT_ARM_NEON_ASM_MIT TRUE)
       endif()
@@ -1141,14 +1141,14 @@ if(SDL_AUDIO)
   # CheckDummyAudio/CheckDiskAudio - valid for all platforms
   if(SDL_DUMMYAUDIO)
     set(SDL_AUDIO_DRIVER_DUMMY 1)
-    file(GLOB DUMMYAUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/dummy/*.c)
+    file(GLOB DUMMYAUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/dummy/*.c)
     list(APPEND SOURCE_FILES ${DUMMYAUDIO_SOURCES})
     set(HAVE_DUMMYAUDIO TRUE)
     set(HAVE_SDL_AUDIO TRUE)
   endif()
   if(SDL_DISKAUDIO)
     set(SDL_AUDIO_DRIVER_DISK 1)
-    file(GLOB DISKAUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/disk/*.c)
+    file(GLOB DISKAUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/disk/*.c)
     list(APPEND SOURCE_FILES ${DISKAUDIO_SOURCES})
     set(HAVE_DISKAUDIO TRUE)
     set(HAVE_SDL_AUDIO TRUE)
@@ -1161,7 +1161,7 @@ if(UNIX OR APPLE)
   CheckDLOPEN()
   if(SDL_LOADSO AND HAVE_DLOPEN)
     set(SDL_LOADSO_DLOPEN 1)
-    file(GLOB DLOPEN_SOURCES ${SDL2_SOURCE_DIR}/src/loadso/dlopen/*.c)
+    file(GLOB DLOPEN_SOURCES ${SDL3_SOURCE_DIR}/src/loadso/dlopen/*.c)
     list(APPEND SOURCE_FILES ${DLOPEN_SOURCES})
     set(HAVE_SDL_LOADSO TRUE)
   endif()
@@ -1175,7 +1175,7 @@ if(SDL_JOYSTICK)
   if(SDL_VIRTUAL_JOYSTICK)
     set(HAVE_VIRTUAL_JOYSTICK TRUE)
     set(SDL_JOYSTICK_VIRTUAL 1)
-    file(GLOB JOYSTICK_VIRTUAL_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/virtual/*.c)
+    file(GLOB JOYSTICK_VIRTUAL_SOURCES ${SDL3_SOURCE_DIR}/src/joystick/virtual/*.c)
     list(APPEND SOURCE_FILES ${JOYSTICK_VIRTUAL_SOURCES})
   endif()
 endif()
@@ -1183,14 +1183,14 @@ endif()
 if(SDL_VIDEO)
   if(SDL_DUMMYVIDEO)
     set(SDL_VIDEO_DRIVER_DUMMY 1)
-    file(GLOB VIDEO_DUMMY_SOURCES ${SDL2_SOURCE_DIR}/src/video/dummy/*.c)
+    file(GLOB VIDEO_DUMMY_SOURCES ${SDL3_SOURCE_DIR}/src/video/dummy/*.c)
     list(APPEND SOURCE_FILES ${VIDEO_DUMMY_SOURCES})
     set(HAVE_DUMMYVIDEO TRUE)
     set(HAVE_SDL_VIDEO TRUE)
   endif()
   if(SDL_OFFSCREEN)
     set(SDL_VIDEO_DRIVER_OFFSCREEN 1)
-    file(GLOB VIDEO_OFFSCREEN_SOURCES ${SDL2_SOURCE_DIR}/src/video/offscreen/*.c)
+    file(GLOB VIDEO_OFFSCREEN_SOURCES ${SDL3_SOURCE_DIR}/src/video/offscreen/*.c)
     list(APPEND SOURCE_FILES ${VIDEO_OFFSCREEN_SOURCES})
     set(HAVE_OFFSCREEN TRUE)
     set(HAVE_SDL_VIDEO TRUE)
@@ -1199,12 +1199,12 @@ endif()
 
 # Platform-specific options and settings
 if(ANDROID)
-  file(GLOB ANDROID_CORE_SOURCES ${SDL2_SOURCE_DIR}/src/core/android/*.c)
+  file(GLOB ANDROID_CORE_SOURCES ${SDL3_SOURCE_DIR}/src/core/android/*.c)
   list(APPEND SOURCE_FILES ${ANDROID_CORE_SOURCES} ${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c)
   set_property(SOURCE "${ANDROID_NDK}/sources/android/cpufeatures/cpu-features.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-declaration-after-statement")
 
   if(SDL_MISC)
-    file(GLOB ANDROID_MISC_SOURCES ${SDL2_SOURCE_DIR}/src/misc/android/*.c)
+    file(GLOB ANDROID_MISC_SOURCES ${SDL3_SOURCE_DIR}/src/misc/android/*.c)
     list(APPEND SOURCE_FILES ${ANDROID_MISC_SOURCES})
     set(HAVE_SDL_MISC TRUE)
   endif()
@@ -1217,39 +1217,39 @@ if(ANDROID)
   set(CMAKE_REQUIRED_FLAGS "-Werror=unused-command-line-argument")
   check_c_compiler_flag(-marm HAVE_ARM_MODE)
   if(HAVE_ARM_MODE)
-    set_property(SOURCE "${SDL2_SOURCE_DIR}/src/atomic/SDL_spinlock.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -marm")
+    set_property(SOURCE "${SDL3_SOURCE_DIR}/src/atomic/SDL_spinlock.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -marm")
   endif()
   cmake_pop_check_state()
 
-  file(GLOB ANDROID_MAIN_SOURCES ${SDL2_SOURCE_DIR}/src/main/android/*.c)
+  file(GLOB ANDROID_MAIN_SOURCES ${SDL3_SOURCE_DIR}/src/main/android/*.c)
   list(APPEND SDLMAIN_SOURCES ${ANDROID_MAIN_SOURCES})
 
   if(SDL_AUDIO)
     set(SDL_AUDIO_DRIVER_ANDROID 1)
-    file(GLOB ANDROID_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/android/*.c)
+    file(GLOB ANDROID_AUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/android/*.c)
     list(APPEND SOURCE_FILES ${ANDROID_AUDIO_SOURCES})
 
     set(SDL_AUDIO_DRIVER_OPENSLES 1)
-    file(GLOB OPENSLES_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/openslES/*.c)
+    file(GLOB OPENSLES_AUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/openslES/*.c)
     list(APPEND SOURCE_FILES ${OPENSLES_AUDIO_SOURCES})
 
     list(APPEND EXTRA_LIBS ${ANDROID_DL_LIBRARY} OpenSLES)
 
     set(SDL_AUDIO_DRIVER_AAUDIO 1)
-    file(GLOB AAUDIO_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/aaudio/*.c)
+    file(GLOB AAUDIO_AUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/aaudio/*.c)
     list(APPEND SOURCE_FILES ${AAUDIO_AUDIO_SOURCES})
 
     set(HAVE_SDL_AUDIO TRUE)
   endif()
   if(SDL_FILESYSTEM)
     set(SDL_FILESYSTEM_ANDROID 1)
-    file(GLOB ANDROID_FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/android/*.c)
+    file(GLOB ANDROID_FILESYSTEM_SOURCES ${SDL3_SOURCE_DIR}/src/filesystem/android/*.c)
     list(APPEND SOURCE_FILES ${ANDROID_FILESYSTEM_SOURCES})
     set(HAVE_SDL_FILESYSTEM TRUE)
   endif()
   if(SDL_HAPTIC)
     set(SDL_HAPTIC_ANDROID 1)
-    file(GLOB ANDROID_HAPTIC_SOURCES ${SDL2_SOURCE_DIR}/src/haptic/android/*.c)
+    file(GLOB ANDROID_HAPTIC_SOURCES ${SDL3_SOURCE_DIR}/src/haptic/android/*.c)
     list(APPEND SOURCE_FILES ${ANDROID_HAPTIC_SOURCES})
     set(HAVE_SDL_HAPTIC TRUE)
   endif()
@@ -1258,42 +1258,42 @@ if(ANDROID)
   endif()
   if(SDL_JOYSTICK)
     set(SDL_JOYSTICK_ANDROID 1)
-    file(GLOB ANDROID_JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/android/*.c ${SDL2_SOURCE_DIR}/src/joystick/steam/*.c)
+    file(GLOB ANDROID_JOYSTICK_SOURCES ${SDL3_SOURCE_DIR}/src/joystick/android/*.c ${SDL3_SOURCE_DIR}/src/joystick/steam/*.c)
     list(APPEND SOURCE_FILES ${ANDROID_JOYSTICK_SOURCES})
     set(HAVE_SDL_JOYSTICK TRUE)
   endif()
   if(SDL_LOADSO)
     set(SDL_LOADSO_DLOPEN 1)
-    file(GLOB LOADSO_SOURCES ${SDL2_SOURCE_DIR}/src/loadso/dlopen/*.c)
+    file(GLOB LOADSO_SOURCES ${SDL3_SOURCE_DIR}/src/loadso/dlopen/*.c)
     list(APPEND SOURCE_FILES ${LOADSO_SOURCES})
     set(HAVE_SDL_LOADSO TRUE)
   endif()
   if(SDL_POWER)
     set(SDL_POWER_ANDROID 1)
-    file(GLOB ANDROID_POWER_SOURCES ${SDL2_SOURCE_DIR}/src/power/android/*.c)
+    file(GLOB ANDROID_POWER_SOURCES ${SDL3_SOURCE_DIR}/src/power/android/*.c)
     list(APPEND SOURCE_FILES ${ANDROID_POWER_SOURCES})
     set(HAVE_SDL_POWER TRUE)
   endif()
   if(SDL_LOCALE)
-    file(GLOB ANDROID_LOCALE_SOURCES ${SDL2_SOURCE_DIR}/src/locale/android/*.c)
+    file(GLOB ANDROID_LOCALE_SOURCES ${SDL3_SOURCE_DIR}/src/locale/android/*.c)
     list(APPEND SOURCE_FILES ${ANDROID_LOCALE_SOURCES})
     set(HAVE_SDL_LOCALE TRUE)
   endif()
   if(SDL_TIMERS)
     set(SDL_TIMER_UNIX 1)
-    file(GLOB TIMER_SOURCES ${SDL2_SOURCE_DIR}/src/timer/unix/*.c)
+    file(GLOB TIMER_SOURCES ${SDL3_SOURCE_DIR}/src/timer/unix/*.c)
     list(APPEND SOURCE_FILES ${TIMER_SOURCES})
     set(HAVE_SDL_TIMERS TRUE)
   endif()
   if(SDL_SENSOR)
     set(SDL_SENSOR_ANDROID 1)
     set(HAVE_SDL_SENSORS TRUE)
-    file(GLOB ANDROID_SENSOR_SOURCES ${SDL2_SOURCE_DIR}/src/sensor/android/*.c)
+    file(GLOB ANDROID_SENSOR_SOURCES ${SDL3_SOURCE_DIR}/src/sensor/android/*.c)
     list(APPEND SOURCE_FILES ${ANDROID_SENSOR_SOURCES})
   endif()
   if(SDL_VIDEO)
     set(SDL_VIDEO_DRIVER_ANDROID 1)
-    file(GLOB ANDROID_VIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/android/*.c)
+    file(GLOB ANDROID_VIDEO_SOURCES ${SDL3_SOURCE_DIR}/src/video/android/*.c)
     list(APPEND SOURCE_FILES ${ANDROID_VIDEO_SOURCES})
     set(HAVE_SDL_VIDEO TRUE)
 
@@ -1340,42 +1340,42 @@ elseif(EMSCRIPTEN)
   target_compile_options(sdl-build-options INTERFACE "-Wno-warn-absolute-paths")
 
   if(SDL_MISC)
-    file(GLOB EMSRIPTEN_MISC_SOURCES ${SDL2_SOURCE_DIR}/src/misc/emscripten/*.c)
+    file(GLOB EMSRIPTEN_MISC_SOURCES ${SDL3_SOURCE_DIR}/src/misc/emscripten/*.c)
     list(APPEND SOURCE_FILES ${EMSRIPTEN_MISC_SOURCES})
     set(HAVE_SDL_MISC TRUE)
   endif()
   if(SDL_AUDIO)
     set(SDL_AUDIO_DRIVER_EMSCRIPTEN 1)
-    file(GLOB EM_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/emscripten/*.c)
+    file(GLOB EM_AUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/emscripten/*.c)
     list(APPEND SOURCE_FILES ${EM_AUDIO_SOURCES})
     set(HAVE_SDL_AUDIO TRUE)
   endif()
   if(SDL_FILESYSTEM)
     set(SDL_FILESYSTEM_EMSCRIPTEN 1)
-    file(GLOB EM_FILESYSTEM_SOURCES ${SDL2_SOURCE_DIR}/src/filesystem/emscripten/*.c)
+    file(GLOB EM_FILESYSTEM_SOURCES ${SDL3_SOURCE_DIR}/src/filesystem/emscripten/*.c)
     list(APPEND SOURCE_FILES ${EM_FILESYSTEM_SOURCES})
     set(HAVE_SDL_FILESYSTEM TRUE)
   endif()
   if(SDL_JOYSTICK)
     set(SDL_JOYSTICK_EMSCRIPTEN 1)
-    file(GLOB EM_JOYSTICK_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/emscripten/*.c)
+    file(GLOB EM_JOYSTICK_SOURCES ${SDL3_SOURCE_DIR}/src/joystick/emscripten/*.c)
     list(APPEND SOURCE_FILES ${EM_JOYSTICK_SOURCES})
     set(HAVE_SDL_JOYSTICK TRUE)
   endif()
   if(SDL_POWER)
     set(SDL_POWER_EMSCRIPTEN 1)
-    file(GLOB EM_POWER_SOURCES ${SDL2_SOURCE_DIR}/src/power/emscripten/*.c)
+    file(GLOB EM_POWER_SOURCES ${SDL3_SOURCE_DIR}/src/power/emscripten/*.c)
     list(APPEND SOURCE_FILES ${EM_POWER_SOURCES})
     set(HAVE_SDL_POWER TRUE)
   endif()
   if(SDL_LOCALE)
-    file(GLOB LOCALE_SOURCES ${SDL2_SOURCE_DIR}/src/locale/emscripten/*.c)
+    file(GLOB LOCALE_SOURCES ${SDL3_SOURCE_DIR}/src/locale/emscripten/*.c)
     list(APPEND SOURCE_FILES ${LOCALE_SOURCES})
     set(HAVE_SDL_LOCALE TRUE)
   endif()
   if(SDL_TIMERS)
     set(SDL_TIMER_UNIX 1)
-    file(GLOB TIMER_SOURCES ${SDL2_SOURCE_DIR}/src/timer/unix/*.c)
+    file(GLOB TIMER_SOURCES ${SDL3_SOURCE_DIR}/src/timer/unix/*.c)
     list(APPEND SOURCE_FILES ${TIMER_SOURCES})
     set(HAVE_SDL_TIMERS TRUE)
 
@@ -1385,7 +1385,7 @@ elseif(EMSCRIPTEN)
   endif()
   if(SDL_VIDEO)
     set(SDL_VIDEO_DRIVER_EMSCRIPTEN 1)
-    file(GLOB EM_VIDEO_SOURCES ${SDL2_SOURCE_DIR}/src/video/emscripten/*.c)
+    file(GLOB EM_VIDEO_SOURCES ${SDL3_SOURCE_DIR}/src/video/emscripten/*.c)
     list(APPEND SOURCE_FILES ${EM_VIDEO_SOURCES})
     set(HAVE_SDL_VIDEO TRUE)
 
@@ -1408,17 +1408,17 @@ elseif(UNIX AND NOT APPLE AND NOT RISCOS AND NOT HAIKU)
   if(SDL_AUDIO)
     if(SYSV5 OR SOLARIS OR HPUX)
         set(SDL_AUDIO_DRIVER_SUNAUDIO 1)
-        file(GLOB SUN_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/sun/*.c)
+        file(GLOB SUN_AUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/sun/*.c)
         list(APPEND SOURCE_FILES ${SUN_AUDIO_SOURCES})
         set(HAVE_SDL_AUDIO TRUE)
     elseif(NETBSD)
         set(SDL_AUDIO_DRIVER_NETBSD 1)
-        file(GLOB NETBSD_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/netbsd/*.c)
+        file(GLOB NETBSD_AUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/netbsd/*.c)
         list(APPEND SOURCE_FILES ${NETBSD_AUDIO_SOURCES})
         set(HAVE_SDL_AUDIO TRUE)
     elseif(AIX)
         set(SDL_AUDIO_DRIVER_PAUDIO 1)
-        file(GLOB AIX_AUDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/paudio/*.c)
+        file(GLOB AIX_AUDIO_SOURCES ${SDL3_SOURCE_DIR}/src/audio/paudio/*.c)
         list(APPEND SOURCE_FILES ${AIX_AUDIO_SOURCES})
         set(HAVE_SDL_AUDIO TRUE)
     endif()
@@ -1455,7 +1455,7 @@ elseif(UNIX AND NOT APPLE AND NOT RISCOS AND NOT HAIKU)
   endif()
 
   if(UNIX)
-    file(GLOB CORE_UNIX_SOURCES ${SDL2_SOURCE_DIR}/src/core/unix/*.c)
+    file(GLOB CORE_UNIX_SOURCES ${SDL3_SOURCE_DIR}/src/core/unix/*.c)
     list(APPEND SOURCE_FILES ${CORE_UNIX_SOURCES})
 
     check_c_source_compiles("
@@ -1493,7 +1493,7 @@ elseif(UNIX AND NOT APPLE AND NOT RISCOS AND NOT HAIKU)
 
     if(SDL_HAPTIC AND HAVE_INPUT_EVENTS)
       set(SDL_HAPTIC_LINUX 1)
-      file(GLOB HAPTIC_SOURCES ${SDL2_SOURCE_DIR}/src/haptic/linux/*.c)
+      file(GLOB HAPTIC_SOURCES ${SDL3_SOURCE_DIR}/src/haptic/linux/*.c

(Patch may be truncated, please check the link at the top of this post.)