From 7ed73bdb4a3d903e53d6277815671889f166c4be Mon Sep 17 00:00:00 2001
From: "Ryan C. Gordon" <[EMAIL REDACTED]>
Date: Tue, 22 Nov 2022 15:43:55 -0500
Subject: [PATCH] test: Added the "test" directory from SDL2.
This will likely need trimming down (for example, there's no NaCl
support in SDL3, so why have a "nacl" test directory? Plus things like
SDL2 build system cruft that we can maybe dump, etc).
---
test/CMakeLists.txt | 443 +
test/COPYING | 8 +
test/Makefile.in | 453 +
test/Makefile.os2 | 18 +
test/Makefile.w32 | 21 +
test/README | 50 +
test/acinclude.m4 | 337 +
test/autogen.sh | 9 +
test/axis.bmp | Bin 0 -> 10138 bytes
test/button.bmp | Bin 0 -> 3746 bytes
test/checkkeys.c | 304 +
test/checkkeysthreads.c | 286 +
test/configure | 6106 +++
test/configure.ac | 289 +
test/controllermap.bmp | Bin 0 -> 163450 bytes
test/controllermap.c | 826 +
test/controllermap_back.bmp | Bin 0 -> 487034 bytes
test/emscripten/joystick-pre.js | 25 +
test/icon.bmp | Bin 0 -> 578 bytes
test/loopwave.c | 184 +
test/loopwavequeue.c | 154 +
test/moose.dat | Bin 0 -> 56320 bytes
test/n3ds/logo48x48.png | Bin 0 -> 3069 bytes
test/nacl/Makefile | 63 +
test/nacl/background.js | 40 +
test/nacl/common.js | 474 +
test/nacl/index.html | 21 +
test/nacl/manifest.json | 22 +
test/picture.xbm | 14 +
test/relative_mode.markdown | 58 +
test/sample.bmp | Bin 0 -> 69202 bytes
test/sample.wav | Bin 0 -> 121946 bytes
test/shapes/p01_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p01_shape32alpha.bmp | Bin 0 -> 1638538 bytes
test/shapes/p01_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p02_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p02_shape32alpha.bmp | Bin 0 -> 1638538 bytes
test/shapes/p02_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p03_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p03_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p04_shape1.bmp | Bin 0 -> 51346 bytes
test/shapes/p04_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p04_shape32alpha.bmp | Bin 0 -> 1638538 bytes
test/shapes/p04_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p05_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p06_shape1alpha.bmp | Bin 0 -> 1638538 bytes
test/shapes/p06_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p06_shape32alpha.bmp | Bin 0 -> 1638538 bytes
test/shapes/p06_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p07_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p07_shape32alpha.bmp | Bin 0 -> 1638538 bytes
test/shapes/p07_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p08_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p08_shape32alpha.bmp | Bin 0 -> 1638538 bytes
test/shapes/p08_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p09_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p09_shape32alpha.bmp | Bin 0 -> 1638538 bytes
test/shapes/p09_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p10_shape1.bmp | Bin 0 -> 51346 bytes
test/shapes/p10_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p10_shape32alpha.bmp | Bin 0 -> 1638538 bytes
test/shapes/p10_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p11_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p11_shape32alpha.bmp | Bin 0 -> 1638538 bytes
test/shapes/p11_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p12_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p12_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p13_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p13_shape32alpha.bmp | Bin 0 -> 1638538 bytes
test/shapes/p13_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p14_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p14_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p15_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p15_shape32alpha.bmp | Bin 0 -> 1638538 bytes
test/shapes/p15_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/p16_shape1.bmp | Bin 0 -> 51346 bytes
test/shapes/p16_shape24.bmp | Bin 0 -> 1228938 bytes
test/shapes/p16_shape8.bmp | Bin 0 -> 410678 bytes
test/shapes/trollface_24.bmp | Bin 0 -> 196662 bytes
test/shapes/trollface_32alpha.bmp | Bin 0 -> 262198 bytes
test/template.test.in | 3 +
test/testatomic.c | 724 +
test/testaudiocapture.c | 165 +
test/testaudiohotplug.c | 207 +
test/testaudioinfo.c | 104 +
test/testautomation.c | 124 +
test/testautomation_audio.c | 1040 +
test/testautomation_clipboard.c | 336 +
test/testautomation_events.c | 201 +
test/testautomation_guid.c | 150 +
test/testautomation_hints.c | 269 +
test/testautomation_joystick.c | 90 +
test/testautomation_keyboard.c | 711 +
test/testautomation_main.c | 190 +
test/testautomation_math.c | 3352 ++
test/testautomation_mouse.c | 607 +
test/testautomation_pixels.c | 533 +
test/testautomation_platform.c | 607 +
test/testautomation_rect.c | 1792 +
test/testautomation_render.c | 1104 +
test/testautomation_rwops.c | 757 +
test/testautomation_sdltest.c | 1318 +
test/testautomation_stdlib.c | 601 +
test/testautomation_suites.h | 60 +
test/testautomation_surface.c | 826 +
test/testautomation_syswm.c | 61 +
test/testautomation_timer.c | 201 +
test/testautomation_video.c | 2073 +
test/testbounds.c | 40 +
test/testcustomcursor.c | 299 +
test/testdisplayinfo.c | 96 +
test/testdraw2.c | 316 +
test/testdrawchessboard.c | 147 +
test/testdropfile.c | 99 +
test/testerror.c | 82 +
test/testevdev.c | 1041 +
test/testfile.c | 283 +
test/testfilesystem.c | 60 +
test/testgamecontroller.c | 976 +
test/testgeometry.c | 269 +
test/testgesture.c | 300 +
test/testgl2.c | 440 +
test/testgles.c | 355 +
test/testgles2.c | 832 +
test/testgles2_sdf.c | 817 +
test/testgles2_sdf_img_normal.bmp | Bin 0 -> 68122 bytes
test/testgles2_sdf_img_sdf.bmp | Bin 0 -> 72202 bytes
test/testhaptic.c | 365 +
test/testhittesting.c | 134 +
test/testhotplug.c | 162 +
test/testiconv.c | 97 +
test/testime.c | 810 +
test/testintersections.c | 363 +
test/testjoystick.c | 340 +
test/testkeys.c | 40 +
test/testloadso.c | 82 +
test/testlocale.c | 67 +
test/testlock.c | 128 +
test/testmessage.c | 217 +
test/testmouse.c | 272 +
test/testmultiaudio.c | 201 +
test/testnative.c | 210 +
test/testnative.h | 51 +
test/testnativecocoa.m | 51 +
test/testnativeos2.c | 57 +
test/testnativew32.c | 86 +
test/testnativex11.c | 53 +
test/testoffscreen.c | 174 +
test/testoverlay2.c | 417 +
test/testplatform.c | 469 +
test/testpower.c | 80 +
test/testqsort.c | 106 +
test/testrelative.c | 126 +
test/testrendercopyex.c | 175 +
test/testrendertarget.c | 285 +
test/testresample.c | 120 +
test/testrumble.c | 149 +
test/testscale.c | 167 +
test/testsem.c | 280 +
test/testsensor.c | 121 +
test/testshader.c | 531 +
test/testshape.c | 200 +
test/testsprite2.c | 590 +
test/testspriteminimal.c | 149 +
test/teststreaming.c | 198 +
test/testsurround.c | 205 +
test/testthread.c | 136 +
test/testtimer.c | 146 +
test/testurl.c | 44 +
test/testutils.c | 151 +
test/testutils.h | 17 +
test/testver.c | 47 +
test/testviewport.c | 232 +
test/testvulkan.c | 1152 +
test/testwm2.c | 301 +
test/testyuv.bmp | Bin 0 -> 739398 bytes
test/testyuv.c | 455 +
test/testyuv_cvt.c | 300 +
test/testyuv_cvt.h | 16 +
test/torturethread.c | 113 +
test/unifont-13.0.06-license.txt | 90 +
test/unifont-13.0.06.hex | 57086 ++++++++++++++++++++++++++++
test/utf8.txt | 287 +
test/watcom.mif | 122 +
184 files changed, 103886 insertions(+)
create mode 100644 test/CMakeLists.txt
create mode 100644 test/COPYING
create mode 100644 test/Makefile.in
create mode 100644 test/Makefile.os2
create mode 100644 test/Makefile.w32
create mode 100644 test/README
create mode 100644 test/acinclude.m4
create mode 100755 test/autogen.sh
create mode 100644 test/axis.bmp
create mode 100644 test/button.bmp
create mode 100644 test/checkkeys.c
create mode 100644 test/checkkeysthreads.c
create mode 100755 test/configure
create mode 100644 test/configure.ac
create mode 100644 test/controllermap.bmp
create mode 100644 test/controllermap.c
create mode 100644 test/controllermap_back.bmp
create mode 100644 test/emscripten/joystick-pre.js
create mode 100644 test/icon.bmp
create mode 100644 test/loopwave.c
create mode 100644 test/loopwavequeue.c
create mode 100644 test/moose.dat
create mode 100644 test/n3ds/logo48x48.png
create mode 100644 test/nacl/Makefile
create mode 100644 test/nacl/background.js
create mode 100644 test/nacl/common.js
create mode 100644 test/nacl/index.html
create mode 100644 test/nacl/manifest.json
create mode 100644 test/picture.xbm
create mode 100644 test/relative_mode.markdown
create mode 100644 test/sample.bmp
create mode 100644 test/sample.wav
create mode 100644 test/shapes/p01_shape24.bmp
create mode 100644 test/shapes/p01_shape32alpha.bmp
create mode 100644 test/shapes/p01_shape8.bmp
create mode 100644 test/shapes/p02_shape24.bmp
create mode 100644 test/shapes/p02_shape32alpha.bmp
create mode 100644 test/shapes/p02_shape8.bmp
create mode 100644 test/shapes/p03_shape24.bmp
create mode 100644 test/shapes/p03_shape8.bmp
create mode 100644 test/shapes/p04_shape1.bmp
create mode 100644 test/shapes/p04_shape24.bmp
create mode 100644 test/shapes/p04_shape32alpha.bmp
create mode 100644 test/shapes/p04_shape8.bmp
create mode 100644 test/shapes/p05_shape8.bmp
create mode 100644 test/shapes/p06_shape1alpha.bmp
create mode 100644 test/shapes/p06_shape24.bmp
create mode 100644 test/shapes/p06_shape32alpha.bmp
create mode 100644 test/shapes/p06_shape8.bmp
create mode 100644 test/shapes/p07_shape24.bmp
create mode 100644 test/shapes/p07_shape32alpha.bmp
create mode 100644 test/shapes/p07_shape8.bmp
create mode 100644 test/shapes/p08_shape24.bmp
create mode 100644 test/shapes/p08_shape32alpha.bmp
create mode 100644 test/shapes/p08_shape8.bmp
create mode 100644 test/shapes/p09_shape24.bmp
create mode 100644 test/shapes/p09_shape32alpha.bmp
create mode 100644 test/shapes/p09_shape8.bmp
create mode 100644 test/shapes/p10_shape1.bmp
create mode 100644 test/shapes/p10_shape24.bmp
create mode 100644 test/shapes/p10_shape32alpha.bmp
create mode 100644 test/shapes/p10_shape8.bmp
create mode 100644 test/shapes/p11_shape24.bmp
create mode 100644 test/shapes/p11_shape32alpha.bmp
create mode 100644 test/shapes/p11_shape8.bmp
create mode 100644 test/shapes/p12_shape24.bmp
create mode 100644 test/shapes/p12_shape8.bmp
create mode 100644 test/shapes/p13_shape24.bmp
create mode 100644 test/shapes/p13_shape32alpha.bmp
create mode 100644 test/shapes/p13_shape8.bmp
create mode 100644 test/shapes/p14_shape24.bmp
create mode 100644 test/shapes/p14_shape8.bmp
create mode 100644 test/shapes/p15_shape24.bmp
create mode 100644 test/shapes/p15_shape32alpha.bmp
create mode 100644 test/shapes/p15_shape8.bmp
create mode 100644 test/shapes/p16_shape1.bmp
create mode 100644 test/shapes/p16_shape24.bmp
create mode 100644 test/shapes/p16_shape8.bmp
create mode 100644 test/shapes/trollface_24.bmp
create mode 100644 test/shapes/trollface_32alpha.bmp
create mode 100644 test/template.test.in
create mode 100644 test/testatomic.c
create mode 100644 test/testaudiocapture.c
create mode 100644 test/testaudiohotplug.c
create mode 100644 test/testaudioinfo.c
create mode 100644 test/testautomation.c
create mode 100644 test/testautomation_audio.c
create mode 100644 test/testautomation_clipboard.c
create mode 100644 test/testautomation_events.c
create mode 100644 test/testautomation_guid.c
create mode 100644 test/testautomation_hints.c
create mode 100644 test/testautomation_joystick.c
create mode 100644 test/testautomation_keyboard.c
create mode 100644 test/testautomation_main.c
create mode 100644 test/testautomation_math.c
create mode 100644 test/testautomation_mouse.c
create mode 100644 test/testautomation_pixels.c
create mode 100644 test/testautomation_platform.c
create mode 100644 test/testautomation_rect.c
create mode 100644 test/testautomation_render.c
create mode 100644 test/testautomation_rwops.c
create mode 100644 test/testautomation_sdltest.c
create mode 100644 test/testautomation_stdlib.c
create mode 100644 test/testautomation_suites.h
create mode 100644 test/testautomation_surface.c
create mode 100644 test/testautomation_syswm.c
create mode 100644 test/testautomation_timer.c
create mode 100644 test/testautomation_video.c
create mode 100644 test/testbounds.c
create mode 100644 test/testcustomcursor.c
create mode 100644 test/testdisplayinfo.c
create mode 100644 test/testdraw2.c
create mode 100644 test/testdrawchessboard.c
create mode 100644 test/testdropfile.c
create mode 100644 test/testerror.c
create mode 100644 test/testevdev.c
create mode 100644 test/testfile.c
create mode 100644 test/testfilesystem.c
create mode 100644 test/testgamecontroller.c
create mode 100644 test/testgeometry.c
create mode 100644 test/testgesture.c
create mode 100644 test/testgl2.c
create mode 100644 test/testgles.c
create mode 100644 test/testgles2.c
create mode 100644 test/testgles2_sdf.c
create mode 100644 test/testgles2_sdf_img_normal.bmp
create mode 100644 test/testgles2_sdf_img_sdf.bmp
create mode 100644 test/testhaptic.c
create mode 100644 test/testhittesting.c
create mode 100644 test/testhotplug.c
create mode 100644 test/testiconv.c
create mode 100644 test/testime.c
create mode 100644 test/testintersections.c
create mode 100644 test/testjoystick.c
create mode 100644 test/testkeys.c
create mode 100644 test/testloadso.c
create mode 100644 test/testlocale.c
create mode 100644 test/testlock.c
create mode 100644 test/testmessage.c
create mode 100644 test/testmouse.c
create mode 100644 test/testmultiaudio.c
create mode 100644 test/testnative.c
create mode 100644 test/testnative.h
create mode 100644 test/testnativecocoa.m
create mode 100644 test/testnativeos2.c
create mode 100644 test/testnativew32.c
create mode 100644 test/testnativex11.c
create mode 100644 test/testoffscreen.c
create mode 100644 test/testoverlay2.c
create mode 100644 test/testplatform.c
create mode 100644 test/testpower.c
create mode 100644 test/testqsort.c
create mode 100644 test/testrelative.c
create mode 100644 test/testrendercopyex.c
create mode 100644 test/testrendertarget.c
create mode 100644 test/testresample.c
create mode 100644 test/testrumble.c
create mode 100644 test/testscale.c
create mode 100644 test/testsem.c
create mode 100644 test/testsensor.c
create mode 100644 test/testshader.c
create mode 100644 test/testshape.c
create mode 100644 test/testsprite2.c
create mode 100644 test/testspriteminimal.c
create mode 100644 test/teststreaming.c
create mode 100644 test/testsurround.c
create mode 100644 test/testthread.c
create mode 100644 test/testtimer.c
create mode 100644 test/testurl.c
create mode 100644 test/testutils.c
create mode 100644 test/testutils.h
create mode 100644 test/testver.c
create mode 100644 test/testviewport.c
create mode 100644 test/testvulkan.c
create mode 100644 test/testwm2.c
create mode 100644 test/testyuv.bmp
create mode 100644 test/testyuv.c
create mode 100644 test/testyuv_cvt.c
create mode 100644 test/testyuv_cvt.h
create mode 100644 test/torturethread.c
create mode 100644 test/unifont-13.0.06-license.txt
create mode 100644 test/unifont-13.0.06.hex
create mode 100644 test/utf8.txt
create mode 100644 test/watcom.mif
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644
index 0000000..676a8e7
--- /dev/null
+++ b/test/CMakeLists.txt
@@ -0,0 +1,443 @@
+cmake_minimum_required(VERSION 3.0)
+project(SDL2_test)
+
+include(CheckCCompilerFlag)
+include(CMakeParseArguments)
+include(CMakePushCheckState)
+
+set(SDL_TEST_EXECUTABLES)
+set(SDL_TESTS_NONINTERACTIVE)
+set(SDL_TESTS_NEEDS_ESOURCES)
+
+macro(add_sdl_test_executable TARGET)
+ cmake_parse_arguments(AST "NONINTERACTIVE;NEEDS_RESOURCES" "" "" ${ARGN})
+ add_executable(${TARGET} ${AST_UNPARSED_ARGUMENTS})
+
+ list(APPEND SDL_TEST_EXECUTABLES ${TARGET})
+ if(AST_NONINTERACTIVE)
+ list(APPEND SDL_TESTS_NONINTERACTIVE ${TARGET})
+ endif()
+ if(AST_NEEDS_RESOURCES)
+ list(APPEND SDL_TESTS_NEEDS_ESOURCES ${TARGET})
+ endif()
+endmacro()
+
+if(NOT TARGET SDL2::SDL2-static)
+ find_package(SDL2 2.0.23 REQUIRED COMPONENTS SDL2-static SDL2test)
+endif()
+
+enable_testing()
+
+if(SDL_INSTALL_TESTS)
+ include(GNUInstallDirs)
+endif()
+
+if(N3DS)
+ link_libraries(SDL2::SDL2main)
+endif()
+
+if(PSP)
+ link_libraries(
+ SDL2::SDL2main
+ SDL2::SDL2test
+ SDL2::SDL2-static
+ GL
+ pspvram
+ pspvfpu
+ pspdisplay
+ pspgu
+ pspge
+ pspaudio
+ pspctrl
+ psphprm
+ psppower
+ )
+elseif(PS2)
+link_libraries(
+ SDL2main
+ SDL2_test
+ SDL2-static
+ patches
+ gskit
+ dmakit
+ ps2_drivers
+)
+else()
+ link_libraries(SDL2::SDL2test SDL2::SDL2-static)
+endif()
+
+if(WINDOWS)
+ # mingw32 must come before SDL2main to link successfully
+ if(MINGW OR CYGWIN)
+ link_libraries(mingw32)
+ endif()
+
+ # CET support was added in VS 16.7
+ if(MSVC_VERSION GREATER 1926 AND CMAKE_GENERATOR_PLATFORM MATCHES "Win32|x64")
+ link_libraries(-CETCOMPAT)
+ endif()
+
+ # FIXME: Parent directory CMakeLists.txt only sets these for mingw/cygwin,
+ # but we need them for VS as well.
+ link_libraries(SDL2main)
+ add_definitions(-Dmain=SDL_main)
+endif()
+
+# CMake incorrectly detects opengl32.lib being present on MSVC ARM64
+if(NOT MSVC OR NOT CMAKE_GENERATOR_PLATFORM STREQUAL "ARM64")
+ # Prefer GLVND, if present
+ set(OpenGL_GL_PREFERENCE GLVND)
+ find_package(OpenGL)
+endif()
+
+if (OPENGL_FOUND)
+add_definitions(-DHAVE_OPENGL)
+endif()
+
+add_sdl_test_executable(checkkeys checkkeys.c)
+add_sdl_test_executable(checkkeysthreads checkkeysthreads.c)
+add_sdl_test_executable(loopwave NEEDS_RESOURCES loopwave.c testutils.c)
+add_sdl_test_executable(loopwavequeue NEEDS_RESOURCES loopwavequeue.c testutils.c)
+add_sdl_test_executable(testsurround testsurround.c)
+add_sdl_test_executable(testresample NEEDS_RESOURCES testresample.c)
+add_sdl_test_executable(testaudioinfo testaudioinfo.c)
+
+file(GLOB TESTAUTOMATION_SOURCE_FILES testautomation*.c)
+add_sdl_test_executable(testautomation NEEDS_RESOURCES ${TESTAUTOMATION_SOURCE_FILES})
+add_sdl_test_executable(testmultiaudio NEEDS_RESOURCES testmultiaudio.c testutils.c)
+add_sdl_test_executable(testaudiohotplug NEEDS_RESOURCES testaudiohotplug.c testutils.c)
+add_sdl_test_executable(testaudiocapture testaudiocapture.c)
+add_sdl_test_executable(testatomic NONINTERACTIVE testatomic.c)
+add_sdl_test_executable(testintersections testintersections.c)
+add_sdl_test_executable(testrelative testrelative.c)
+add_sdl_test_executable(testhittesting testhittesting.c)
+add_sdl_test_executable(testdraw2 testdraw2.c)
+add_sdl_test_executable(testdrawchessboard testdrawchessboard.c)
+add_sdl_test_executable(testdropfile testdropfile.c)
+add_sdl_test_executable(testerror NONINTERACTIVE testerror.c)
+
+if(LINUX)
+ add_sdl_test_executable(testevdev NONINTERACTIVE testevdev.c)
+endif()
+
+add_sdl_test_executable(testfile testfile.c)
+add_sdl_test_executable(testgamecontroller NEEDS_RESOURCES testgamecontroller.c testutils.c)
+add_sdl_test_executable(testgeometry testgeometry.c testutils.c)
+add_sdl_test_executable(testgesture testgesture.c)
+add_sdl_test_executable(testgl2 testgl2.c)
+add_sdl_test_executable(testgles testgles.c)
+add_sdl_test_executable(testgles2 testgles2.c)
+add_sdl_test_executable(testhaptic testhaptic.c)
+add_sdl_test_executable(testhotplug testhotplug.c)
+add_sdl_test_executable(testrumble testrumble.c)
+add_sdl_test_executable(testthread NONINTERACTIVE testthread.c)
+add_sdl_test_executable(testiconv NEEDS_RESOURCES testiconv.c testutils.c)
+add_sdl_test_executable(testime NEEDS_RESOURCES testime.c testutils.c)
+add_sdl_test_executable(testjoystick testjoystick.c)
+add_sdl_test_executable(testkeys testkeys.c)
+add_sdl_test_executable(testloadso testloadso.c)
+add_sdl_test_executable(testlocale NONINTERACTIVE testlocale.c)
+add_sdl_test_executable(testlock testlock.c)
+add_sdl_test_executable(testmouse testmouse.c)
+
+if(APPLE)
+ add_sdl_test_executable(testnative NEEDS_RESOURCES
+ testnative.c
+ testnativecocoa.m
+ testnativex11.c
+ testutils.c
+ )
+
+ cmake_push_check_state(RESET)
+ check_c_compiler_flag(-Wno-error=deprecated-declarations HAVE_WNO_ERROR_DEPRECATED_DECLARATIONS)
+ cmake_pop_check_state()
+ if(HAVE_WNO_ERROR_DEPRECATED_DECLARATIONS)
+ set_property(SOURCE "testnativecocoa.m" APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-error=deprecated-declarations")
+ endif()
+elseif(WINDOWS)
+ add_sdl_test_executable(testnative NEEDS_RESOURCES testnative.c testnativew32.c testutils.c)
+elseif(HAVE_X11)
+ add_sdl_test_executable(testnative NEEDS_RESOURCES testnative.c testnativex11.c testutils.c)
+ target_link_libraries(testnative X11)
+endif()
+
+add_sdl_test_executable(testoverlay2 NEEDS_RESOURCES testoverlay2.c testyuv_cvt.c testutils.c)
+add_sdl_test_executable(testplatform NONINTERACTIVE testplatform.c)
+add_sdl_test_executable(testpower NONINTERACTIVE testpower.c)
+add_sdl_test_executable(testfilesystem NONINTERACTIVE testfilesystem.c)
+add_sdl_test_executable(testrendertarget NEEDS_RESOURCES testrendertarget.c testutils.c)
+add_sdl_test_executable(testscale NEEDS_RESOURCES testscale.c testutils.c)
+add_sdl_test_executable(testsem testsem.c)
+add_sdl_test_executable(testsensor testsensor.c)
+add_sdl_test_executable(testshader NEEDS_RESOURCES testshader.c)
+add_sdl_test_executable(testshape NEEDS_RESOURCES testshape.c)
+add_sdl_test_executable(testsprite2 NEEDS_RESOURCES testsprite2.c testutils.c)
+add_sdl_test_executable(testspriteminimal NEEDS_RESOURCES testspriteminimal.c testutils.c)
+add_sdl_test_executable(teststreaming NEEDS_RESOURCES teststreaming.c testutils.c)
+add_sdl_test_executable(testtimer NONINTERACTIVE testtimer.c)
+add_sdl_test_executable(testurl testurl.c)
+add_sdl_test_executable(testver NONINTERACTIVE testver.c)
+add_sdl_test_executable(testviewport NEEDS_RESOURCES testviewport.c testutils.c)
+add_sdl_test_executable(testwm2 testwm2.c)
+add_sdl_test_executable(testyuv NEEDS_RESOURCES testyuv.c testyuv_cvt.c)
+add_sdl_test_executable(torturethread torturethread.c)
+add_sdl_test_executable(testrendercopyex NEEDS_RESOURCES testrendercopyex.c testutils.c)
+add_sdl_test_executable(testmessage testmessage.c)
+add_sdl_test_executable(testdisplayinfo testdisplayinfo.c)
+add_sdl_test_executable(testqsort NONINTERACTIVE testqsort.c)
+add_sdl_test_executable(testbounds testbounds.c)
+add_sdl_test_executable(testcustomcursor testcustomcursor.c)
+add_sdl_test_executable(controllermap NEEDS_RESOURCES controllermap.c testutils.c)
+add_sdl_test_executable(testvulkan testvulkan.c)
+add_sdl_test_executable(testoffscreen testoffscreen.c)
+
+cmake_push_check_state(RESET)
+
+check_c_compiler_flag(-Wformat-overflow HAVE_WFORMAT_OVERFLOW)
+if(HAVE_WFORMAT_OVERFLOW)
+ target_compile_definitions(testautomation PRIVATE HAVE_WFORMAT_OVERFLOW)
+endif()
+
+check_c_compiler_flag(-Wformat HAVE_WFORMAT)
+if(HAVE_WFORMAT)
+ target_compile_definitions(testautomation PRIVATE HAVE_WFORMAT)
+endif()
+
+check_c_compiler_flag(-Wformat-extra-args HAVE_WFORMAT_EXTRA_ARGS)
+if(HAVE_WFORMAT_EXTRA_ARGS)
+ target_compile_definitions(testautomation PRIVATE HAVE_WFORMAT_EXTRA_ARGS)
+endif()
+
+cmake_pop_check_state()
+
+if(SDL_DUMMYAUDIO)
+ list(APPEND SDL_TESTS_NONINTERACTIVE
+ testaudioinfo
+ testsurround
+ )
+endif()
+
+if(SDL_DUMMYVIDEO)
+ list(APPEND SDL_TESTS_NONINTERACTIVE
+ testkeys
+ testbounds
+ testdisplayinfo
+ )
+endif()
+
+if(OPENGL_FOUND)
+ if(TARGET OpenGL::GL)
+ target_link_libraries(testshader OpenGL::GL)
+ target_link_libraries(testgl2 OpenGL::GL)
+ else()
+ if(EMSCRIPTEN AND OPENGL_gl_LIBRARY STREQUAL "nul")
+ set(OPENGL_gl_LIBRARY GL)
+ endif()
+ # emscripten's FindOpenGL.cmake does not create OpenGL::GL
+ target_link_libraries(testshader ${OPENGL_gl_LIBRARY})
+ target_link_libraries(testgl2 ${OPENGL_gl_LIBRARY})
+ endif()
+endif()
+if(EMSCRIPTEN)
+ target_link_libraries(testshader -sLEGACY_GL_EMULATION)
+endif()
+
+file(GLOB RESOURCE_FILES *.bmp *.wav *.hex moose.dat utf8.txt)
+file(COPY ${RESOURCE_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+
+if(PSP)
+ # Build EBOOT files if building for PSP
+ set(BUILD_EBOOT
+ ${SDL_TESTS_NEEDS_ESOURCES}
+ testatomic
+ testaudiocapture
+ testaudioinfo
+ testbounds
+ testdisplayinfo
+ testdraw2
+ testdrawchessboard
+ testerror
+ testfile
+ testfilesystem
+ testgeometry
+ testgl2
+ testhittesting
+ testiconv
+ testintersections
+ testjoystick
+ testlock
+ testmessage
+ testoverlay2
+ testplatform
+ testpower
+ testqsort
+ testsem
+ teststreaming
+ testsurround
+ testthread
+ testtimer
+ testver
+ testviewport
+ testwm2
+ torturethread
+ )
+ foreach(APP IN LISTS BUILD_EBOOT)
+ create_pbp_file(
+ TARGET ${APP}
+ TITLE SDL-${APP}
+ ICON_PATH NULL
+ BACKGROUND_PATH NULL
+ PREVIEW_PATH NULL
+ )
+ add_custom_command(
+ TARGET ${APP} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E make_directory
+ $<TARGET_FILE_DIR:${ARG_TARGET}>/sdl-${APP}
+ )
+ add_custom_command(
+ TARGET ${APP} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E rename
+ $<TARGET_FILE_DIR:${ARG_TARGET}>/EBOOT.PBP
+ $<TARGET_FILE_DIR:${ARG_TARGET}>/sdl-${APP}/EBOOT.PBP
+ )
+ if(${BUILD_PRX})
+ add_custom_command(
+ TARGET ${APP} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy
+ $<TARGET_FILE_DIR:${ARG_TARGET}>/${APP}
+ $<TARGET_FILE_DIR:${ARG_TARGET}>/sdl-${APP}/${APP}
+ )
+ add_custom_command(
+ TARGET ${APP} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E rename
+ $<TARGET_FILE_DIR:${ARG_TARGET}>/${APP}.prx
+ $<TARGET_FILE_DIR:${ARG_TARGET}>/sdl-${APP}/${APP}.prx
+ )
+ endif()
+ add_custom_command(
+ TARGET ${APP} POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E remove
+ $<TARGET_FILE_DIR:${ARG_TARGET}>/PARAM.SFO
+ )
+ endforeach()
+endif()
+
+if(N3DS)
+ set(ROMFS_DIR "${CMAKE_CURRENT_BINARY_DIR}/romfs")
+ file(COPY ${RESOURCE_FILES} DESTINATION "${ROMFS_DIR}")
+
+ foreach(APP IN LISTS SDL_TEST_EXECUTABLES)
+ get_target_property(TARGET_BINARY_DIR ${APP} BINARY_DIR)
+ set(SMDH_FILE "${TARGET_BINARY_DIR}/${APP}.smdh")
+ ctr_generate_smdh("${SMDH_FILE}"
+ NAME "SDL-${APP}"
+ DESCRIPTION "SDL2 Test suite"
+ AUTHOR "SDL2 Contributors"
+ ICON "${CMAKE_CURRENT_SOURCE_DIR}/n3ds/logo48x48.png"
+ )
+ ctr_create_3dsx(
+ ${APP}
+ ROMFS "${ROMFS_DIR}"
+ SMDH "${SMDH_FILE}"
+ )
+ endforeach()
+endif()
+
+if(RISCOS)
+ set(SDL_TEST_EXECUTABLES_AIF)
+ foreach(APP IN LISTS SDL_TEST_EXECUTABLES)
+ target_link_options(${APP} PRIVATE -static)
+ add_custom_command(
+ OUTPUT ${APP},ff8
+ COMMAND elf2aif ${APP} ${APP},ff8
+ DEPENDS ${APP}
+ )
+ add_custom_target(${APP}-aif ALL DEPENDS ${APP},ff8)
+ list(APPEND SDL_TEST_EXECUTABLES_AIF ${CMAKE_CURRENT_BINARY_DIR}/${APP},ff8)
+ endforeach()
+endif()
+
+foreach(APP IN LISTS SDL_TESTS_NEEDS_RESOURCES)
+ foreach(RESOURCE_FILE ${RESOURCE_FILES})
+ if(PSP OR PS2)
+ add_custom_command(TARGET ${APP} POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${RESOURCE_FILE} $<TARGET_FILE_DIR:${APP}>/sdl-${APP})
+ else()
+ add_custom_command(TARGET ${APP} POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E copy_if_different ${RESOURCE_FILE} $<TARGET_FILE_DIR:${APP}>)
+ endif()
+ endforeach(RESOURCE_FILE)
+ if(APPLE)
+ # Make sure resource files get installed into macOS/iOS .app bundles.
+ target_sources(${APP} PRIVATE "${RESOURCE_FILES}")
+ set_target_properties(${APP} PROPERTIES RESOURCE "${RESOURCE_FILES}")
+ endif()
+endforeach()
+
+# Set Apple App ID / Bundle ID. This is needed to launch apps on some Apple
+# platforms (iOS, for example).
+if(APPLE)
+ if(${CMAKE_VERSION} VERSION_LESS "3.7.0")
+ # CMake's 'BUILDSYSTEM_TARGETS' property is only available in
+ # CMake 3.7 and above.
+ message(WARNING "Unable to set Bundle ID for Apple .app builds due to old CMake (pre 3.7).")
+ else()
+ get_property(TARGETS DIRECTORY ${CMAKE_CURRENT_LIST_DIR} PROPERTY BUILDSYSTEM_TARGETS)
+ foreach(CURRENT_TARGET IN LISTS TARGETS)
+ get_property(TARGET_TYPE TARGET ${CURRENT_TARGET} PROPERTY TYPE)
+ if(TARGET_TYPE STREQUAL "EXECUTABLE")
+ set_target_properties("${CURRENT_TARGET}
(Patch may be truncated, please check the link at the top of this post.)