From e2c10228aabe81bdd5928ed51d00fb7cb5e6d1b3 Mon Sep 17 00:00:00 2001 From: squishy Date: Mon, 25 Mar 2024 08:20:48 +0000 Subject: [PATCH] added SDL3 to extern --- .gitignore | 6 + blooblib.sln | 31 + blooblib/blooblib.vcxproj | 141 + blooblib/blooblib.vcxproj.filters | 22 + blooblib/blooblib.vcxproj.user | 6 + blooblib/src/main.cpp | 8 + extern/SDL3-3.1.0/.clang-format | 91 + extern/SDL3-3.1.0/.clang-tidy | 59 + extern/SDL3-3.1.0/.editorconfig | 69 + extern/SDL3-3.1.0/.git-hash | 1 + extern/SDL3-3.1.0/.wikiheaders-options | 17 + extern/SDL3-3.1.0/Android.mk | 145 + extern/SDL3-3.1.0/BUGS.txt | 16 + extern/SDL3-3.1.0/CMakeLists.txt | 3643 + extern/SDL3-3.1.0/CREDITS.md | 34 + extern/SDL3-3.1.0/INSTALL.md | 64 + extern/SDL3-3.1.0/LICENSE.txt | 18 + extern/SDL3-3.1.0/README-SDL.txt | 13 + extern/SDL3-3.1.0/README.md | 17 + extern/SDL3-3.1.0/VERSION.txt | 1 + extern/SDL3-3.1.0/VisualC-GDK/SDL.sln | 120 + extern/SDL3-3.1.0/VisualC-GDK/SDL/SDL.vcxproj | 854 + .../VisualC-GDK/SDL/SDL.vcxproj.filters | 456 + .../VisualC-GDK/SDL_test/SDL_test.vcxproj | 209 + extern/SDL3-3.1.0/VisualC-GDK/clean.sh | 7 + .../VisualC-GDK/logos/Logo100x100.png | Bin 0 -> 10832 bytes .../VisualC-GDK/logos/Logo150x150.png | Bin 0 -> 12709 bytes .../VisualC-GDK/logos/Logo44x44.png | Bin 0 -> 7460 bytes .../VisualC-GDK/logos/Logo480x480.png | Bin 0 -> 28677 bytes .../VisualC-GDK/logos/SplashScreenImage.png | Bin 0 -> 6599 bytes .../tests/testcontroller/PackageLayout.xml | 9 + .../testcontroller/testcontroller.vcxproj | 339 + .../testcontroller.vcxproj.filters | 52 + .../wingdk/MicrosoftGame.config | 34 + .../xboxone/MicrosoftGame.config | 29 + .../xboxseries/MicrosoftGame.config | 29 + .../tests/testgdk/PackageLayout.xml | 10 + .../VisualC-GDK/tests/testgdk/src/testgdk.cpp | 462 + .../VisualC-GDK/tests/testgdk/testgdk.vcxproj | 395 + .../tests/testgdk/testgdk.vcxproj.filters | 53 + .../tests/testgdk/wingdk/MicrosoftGame.config | 34 + .../testgdk/xboxone/MicrosoftGame.config | 29 + .../testgdk/xboxseries/MicrosoftGame.config | 29 + .../tests/testsprite/PackageLayout.xml | 9 + .../tests/testsprite/testsprite.vcxproj | 389 + .../testsprite/testsprite.vcxproj.filters | 52 + .../testsprite/wingdk/MicrosoftGame.config | 34 + .../testsprite/xboxone/MicrosoftGame.config | 29 + .../xboxseries/MicrosoftGame.config | 29 + extern/SDL3-3.1.0/VisualC-WinRT/SDL-UWP.sln | 69 + .../SDL3-3.1.0/VisualC-WinRT/SDL-UWP.vcxproj | 906 + .../VisualC-WinRT/SDL-UWP.vcxproj.filters | 960 + .../Assets/LockScreenLogo.scale-200.png | Bin 0 -> 1430 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 7700 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 2937 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 1647 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 1255 bytes .../testdraw/Assets/StoreLogo.png | Bin 0 -> 1451 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 3204 bytes .../testdraw/Package.appxmanifest | 49 + .../VisualC-WinRT/testdraw/testdraw.vcxproj | 331 + .../testdraw/testdraw.vcxproj.filters | 88 + extern/SDL3-3.1.0/VisualC/SDL.sln | 295 + extern/SDL3-3.1.0/VisualC/SDL/SDL.vcxproj | 715 + .../VisualC/SDL/SDL.vcxproj.filters | 1486 + .../SDL3-3.1.0/VisualC/SDL/SDL.vcxproj.user | 6 + .../VisualC/SDL_test/SDL_test.vcxproj | 175 + extern/SDL3-3.1.0/VisualC/clean.sh | 4 + .../cmake/sdl3-config-version.cmake | 54 + .../pkg-support/cmake/sdl3-config.cmake | 133 + .../VisualC/tests/checkkeys/checkkeys.vcxproj | 219 + .../VisualC/tests/loopwave/loopwave.vcxproj | 231 + .../VisualC/tests/loopwave/sample.wav | Bin 0 -> 121946 bytes .../tests/testatomic/testatomic.vcxproj | 204 + .../testautomation/testautomation.vcxproj | 239 + .../testcontroller/testcontroller.vcxproj | 206 + .../VisualC/tests/testdraw/testdraw.vcxproj | 204 + .../VisualC/tests/testfile/testfile.vcxproj | 204 + .../VisualC/tests/testgl/testgl.vcxproj | 208 + .../VisualC/tests/testgles2/testgles2.vcxproj | 204 + .../VisualC/tests/testoverlay/moose.dat | Bin 0 -> 56320 bytes .../tests/testoverlay/testoverlay.vcxproj | 225 + .../VisualC/tests/testpen/testpen.vcxproj | 204 + .../tests/testplatform/testplatform.vcxproj | 232 + .../VisualC/tests/testpower/testpower.vcxproj | 204 + .../VisualC/tests/testrendertarget/icon.bmp | Bin 0 -> 578 bytes .../VisualC/tests/testrendertarget/sample.bmp | Bin 0 -> 69202 bytes .../testrendertarget/testrendertarget.vcxproj | 243 + .../tests/testrumble/testrumble.vcxproj | 204 + .../VisualC/tests/testscale/icon.bmp | Bin 0 -> 578 bytes .../VisualC/tests/testscale/sample.bmp | Bin 0 -> 69202 bytes .../VisualC/tests/testscale/testscale.vcxproj | 243 + .../tests/testsensor/testsensor.vcxproj | 204 + .../VisualC/tests/testshape/testshape.vcxproj | 204 + .../VisualC/tests/testsprite/icon.bmp | Bin 0 -> 578 bytes .../tests/testsprite/testsprite.vcxproj | 225 + .../tests/testsurround/testsurround.vcxproj | 210 + .../tests/testvulkan/testvulkan.vcxproj | 200 + .../VisualC/tests/testwm/testwm.vcxproj | 204 + .../VisualC/tests/testyuv/testyuv.bmp | Bin 0 -> 739398 bytes .../VisualC/tests/testyuv/testyuv.vcxproj | 229 + extern/SDL3-3.1.0/WhatsNew.txt | 33 + .../SDL3-3.1.0/Xcode/SDL/Info-Framework.plist | 28 + .../Xcode/SDL/SDL.xcodeproj/project.pbxproj | 3075 + extern/SDL3-3.1.0/Xcode/SDL/SDL3/Info.plist | 22 + .../SDL3-3.1.0/Xcode/SDL/pkg-support/SDL.info | 15 + .../resources/CMake/sdl3-config-version.cmake | 62 + .../resources/CMake/sdl3-config.cmake | 156 + .../SDL/pkg-support/resources/License.txt | 19 + .../SDL/pkg-support/resources/ReadMe.txt | 44 + .../SDL/pkg-support/resources/SDL_DS_Store | Bin 0 -> 10244 bytes .../Xcode/SDL/pkg-support/sdl_logo.pdf | Bin 0 -> 163800 bytes .../SDLTest/SDLTest.xcodeproj/project.pbxproj | 5065 + .../SDL3-3.1.0/Xcode/SDLTest/config.xcconfig | 14 + extern/SDL3-3.1.0/Xcode/XcodeDocSet/Doxyfile | 1558 + .../android-project/app/build.gradle | 76 + .../android-project/app/jni/Android.mk | 1 + .../android-project/app/jni/Application.mk | 10 + .../android-project/app/jni/CMakeLists.txt | 20 + .../android-project/app/jni/src/Android.mk | 18 + .../app/jni/src/CMakeLists.txt | 13 + .../android-project/app/proguard-rules.pro | 85 + .../app/src/main/AndroidManifest.xml | 106 + .../main/java/org/libsdl/app/HIDDevice.java | 21 + .../app/HIDDeviceBLESteamController.java | 645 + .../java/org/libsdl/app/HIDDeviceManager.java | 682 + .../java/org/libsdl/app/HIDDeviceUSB.java | 308 + .../app/src/main/java/org/libsdl/app/SDL.java | 86 + .../main/java/org/libsdl/app/SDLActivity.java | 2016 + .../java/org/libsdl/app/SDLAudioManager.java | 500 + .../org/libsdl/app/SDLControllerManager.java | 856 + .../java/org/libsdl/app/SDLDummyEdit.java | 62 + .../org/libsdl/app/SDLInputConnection.java | 136 + .../main/java/org/libsdl/app/SDLSurface.java | 413 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2683 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1698 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 3872 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6874 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 14526 bytes .../app/src/main/res/values/colors.xml | 6 + .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 8 + .../SDL3-3.1.0/android-project/build.gradle | 25 + .../android-project/gradle.properties | 17 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54213 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + extern/SDL3-3.1.0/android-project/gradlew | 160 + extern/SDL3-3.1.0/android-project/gradlew.bat | 90 + .../android-project/settings.gradle | 1 + .../build-scripts/SDL_migration.cocci | 3121 + .../build-scripts/add-source-to-projects.pl | 600 + .../build-scripts/android-prefab.sh | 315 + .../SDL3-3.1.0/build-scripts/androidbuild.sh | 101 + .../build-scripts/androidbuildlibs.sh | 78 + .../SDL3-3.1.0/build-scripts/build-release.py | 641 + .../build-scripts/check_stdlib_usage.py | 263 + .../build-scripts/clang-format-src.sh | 32 + .../cmake-toolchain-mingw64-i686.cmake | 18 + .../cmake-toolchain-mingw64-x86_64.cmake | 18 + .../cmake-toolchain-qnx-aarch64le.cmake | 14 + .../cmake-toolchain-qnx-x86_64.cmake | 14 + .../build-scripts/codechecker-buildbot.sh | 59 + extern/SDL3-3.1.0/build-scripts/fnsince.pl | 156 + .../gen_audio_channel_conversion.c | 461 + .../gen_audio_resampler_filter.c | 149 + .../build-scripts/git-pre-push-hook.pl | 78 + extern/SDL3-3.1.0/build-scripts/mkinstalldirs | 162 + extern/SDL3-3.1.0/build-scripts/rename_api.py | 254 + .../build-scripts/rename_headers.py | 75 + .../SDL3-3.1.0/build-scripts/rename_macros.py | 383 + .../build-scripts/rename_symbols.py | 130 + extern/SDL3-3.1.0/build-scripts/showrev.sh | 48 + extern/SDL3-3.1.0/build-scripts/strip_fPIC.sh | 21 + .../build-scripts/test-versioning.sh | 162 + .../build-scripts/update-copyright.sh | 15 + .../build-scripts/update-version.sh | 79 + extern/SDL3-3.1.0/build-scripts/updaterev.sh | 49 + .../SDL3-3.1.0/build-scripts/wikiheaders.pl | 1708 + extern/SDL3-3.1.0/cmake/3rdparty.cmake | 118 + .../cmake/CPackProjectConfig.cmake.in | 36 + .../cmake/CheckCPUArchitecture.cmake | 48 + extern/SDL3-3.1.0/cmake/FindFFmpeg.cmake | 138 + extern/SDL3-3.1.0/cmake/FindLibUSB.cmake | 73 + .../cmake/GetGitRevisionDescription.cmake | 284 + .../cmake/GetGitRevisionDescription.cmake.in | 43 + extern/SDL3-3.1.0/cmake/PkgConfigHelper.cmake | 34 + extern/SDL3-3.1.0/cmake/SDL3Config.cmake.in | 102 + .../SDL3-3.1.0/cmake/SDL3jarTargets.cmake.in | 10 + .../cmake/android/FindSdlAndroid.cmake | 103 + .../android/FindSdlAndroidBuildTools.cmake | 115 + .../android/FindSdlAndroidPlatform.cmake | 123 + .../cmake/android/SdlAndroidFunctions.cmake | 276 + .../cmake/android/SdlAndroidScript.cmake | 74 + .../SDL3-3.1.0/cmake/cmake_uninstall.cmake.in | 17 + extern/SDL3-3.1.0/cmake/macros.cmake | 410 + extern/SDL3-3.1.0/cmake/sdl3.pc.in | 13 + extern/SDL3-3.1.0/cmake/sdlchecks.cmake | 1238 + extern/SDL3-3.1.0/cmake/sdlcompilers.cmake | 140 + extern/SDL3-3.1.0/cmake/sdlmanpages.cmake | 68 + extern/SDL3-3.1.0/cmake/sdlplatform.cmake | 109 + extern/SDL3-3.1.0/cmake/sdltargets.cmake | 364 + extern/SDL3-3.1.0/cmake/test/CMakeLists.txt | 114 + .../SDL3-3.1.0/cmake/test/inc_sdl_noslash.c | 8 + extern/SDL3-3.1.0/cmake/test/inc_sdl_slash.c | 8 + extern/SDL3-3.1.0/cmake/test/main_cli.c | 15 + extern/SDL3-3.1.0/cmake/test/main_gui.c | 24 + extern/SDL3-3.1.0/cmake/test/main_lib.c | 34 + extern/SDL3-3.1.0/cmake/test/sdltest.c | 9 + .../SDL3-3.1.0/cmake/test/test_pkgconfig.sh | 51 + extern/SDL3-3.1.0/cmake/xxd.py | 37 + extern/SDL3-3.1.0/docs/README-android.md | 563 + extern/SDL3-3.1.0/docs/README-cmake.md | 397 + extern/SDL3-3.1.0/docs/README-contributing.md | 97 + extern/SDL3-3.1.0/docs/README-dynapi.md | 138 + extern/SDL3-3.1.0/docs/README-emscripten.md | 365 + extern/SDL3-3.1.0/docs/README-gdk.md | 174 + extern/SDL3-3.1.0/docs/README-highdpi.md | 8 + extern/SDL3-3.1.0/docs/README-ios.md | 272 + extern/SDL3-3.1.0/docs/README-kmsbsd.md | 27 + extern/SDL3-3.1.0/docs/README-linux.md | 88 + extern/SDL3-3.1.0/docs/README-macos.md | 252 + .../SDL3-3.1.0/docs/README-main-functions.md | 194 + extern/SDL3-3.1.0/docs/README-migration.md | 1776 + extern/SDL3-3.1.0/docs/README-n3ds.md | 28 + extern/SDL3-3.1.0/docs/README-ngage.md | 44 + extern/SDL3-3.1.0/docs/README-platforms.md | 8 + extern/SDL3-3.1.0/docs/README-porting.md | 65 + extern/SDL3-3.1.0/docs/README-ps2.md | 51 + extern/SDL3-3.1.0/docs/README-psp.md | 36 + extern/SDL3-3.1.0/docs/README-raspberrypi.md | 180 + extern/SDL3-3.1.0/docs/README-riscos.md | 35 + extern/SDL3-3.1.0/docs/README-touch.md | 82 + extern/SDL3-3.1.0/docs/README-versions.md | 60 + extern/SDL3-3.1.0/docs/README-visualc.md | 113 + extern/SDL3-3.1.0/docs/README-vita.md | 33 + extern/SDL3-3.1.0/docs/README-wayland.md | 231 + extern/SDL3-3.1.0/docs/README-windows.md | 66 + extern/SDL3-3.1.0/docs/README-winrt.md | 523 + extern/SDL3-3.1.0/docs/README.md | 64 + extern/SDL3-3.1.0/docs/doxyfile | 1563 + extern/SDL3-3.1.0/docs/release_checklist.md | 49 + extern/SDL3-3.1.0/include/SDL3/SDL.h | 85 + extern/SDL3-3.1.0/include/SDL3/SDL_assert.h | 346 + extern/SDL3-3.1.0/include/SDL3/SDL_atomic.h | 417 + extern/SDL3-3.1.0/include/SDL3/SDL_audio.h | 1453 + .../SDL3-3.1.0/include/SDL3/SDL_begin_code.h | 204 + extern/SDL3-3.1.0/include/SDL3/SDL_bits.h | 124 + .../SDL3-3.1.0/include/SDL3/SDL_blendmode.h | 196 + extern/SDL3-3.1.0/include/SDL3/SDL_camera.h | 478 + .../SDL3-3.1.0/include/SDL3/SDL_clipboard.h | 246 + .../SDL3-3.1.0/include/SDL3/SDL_close_code.h | 40 + extern/SDL3-3.1.0/include/SDL3/SDL_copying.h | 26 + extern/SDL3-3.1.0/include/SDL3/SDL_cpuinfo.h | 303 + extern/SDL3-3.1.0/include/SDL3/SDL_dialog.h | 213 + extern/SDL3-3.1.0/include/SDL3/SDL_egl.h | 2357 + extern/SDL3-3.1.0/include/SDL3/SDL_endian.h | 398 + extern/SDL3-3.1.0/include/SDL3/SDL_error.h | 152 + extern/SDL3-3.1.0/include/SDL3/SDL_events.h | 1285 + .../SDL3-3.1.0/include/SDL3/SDL_filesystem.h | 326 + extern/SDL3-3.1.0/include/SDL3/SDL_gamepad.h | 1391 + extern/SDL3-3.1.0/include/SDL3/SDL_guid.h | 100 + extern/SDL3-3.1.0/include/SDL3/SDL_haptic.h | 1349 + extern/SDL3-3.1.0/include/SDL3/SDL_hidapi.h | 550 + extern/SDL3-3.1.0/include/SDL3/SDL_hints.h | 2734 + extern/SDL3-3.1.0/include/SDL3/SDL_init.h | 184 + extern/SDL3-3.1.0/include/SDL3/SDL_intrin.h | 161 + extern/SDL3-3.1.0/include/SDL3/SDL_iostream.h | 1009 + extern/SDL3-3.1.0/include/SDL3/SDL_joystick.h | 1101 + extern/SDL3-3.1.0/include/SDL3/SDL_keyboard.h | 410 + extern/SDL3-3.1.0/include/SDL3/SDL_keycode.h | 356 + extern/SDL3-3.1.0/include/SDL3/SDL_loadso.h | 110 + extern/SDL3-3.1.0/include/SDL3/SDL_locale.h | 101 + extern/SDL3-3.1.0/include/SDL3/SDL_log.h | 403 + extern/SDL3-3.1.0/include/SDL3/SDL_main.h | 511 + .../SDL3-3.1.0/include/SDL3/SDL_main_impl.h | 215 + .../SDL3-3.1.0/include/SDL3/SDL_messagebox.h | 191 + extern/SDL3-3.1.0/include/SDL3/SDL_metal.h | 103 + extern/SDL3-3.1.0/include/SDL3/SDL_misc.h | 77 + extern/SDL3-3.1.0/include/SDL3/SDL_mouse.h | 534 + extern/SDL3-3.1.0/include/SDL3/SDL_mutex.h | 749 + extern/SDL3-3.1.0/include/SDL3/SDL_oldnames.h | 1044 + extern/SDL3-3.1.0/include/SDL3/SDL_opengl.h | 2119 + .../include/SDL3/SDL_opengl_glext.h | 13213 ++ extern/SDL3-3.1.0/include/SDL3/SDL_opengles.h | 39 + .../SDL3-3.1.0/include/SDL3/SDL_opengles2.h | 52 + .../include/SDL3/SDL_opengles2_gl2.h | 656 + .../include/SDL3/SDL_opengles2_gl2ext.h | 4033 + .../include/SDL3/SDL_opengles2_gl2platform.h | 27 + .../include/SDL3/SDL_opengles2_khrplatform.h | 311 + extern/SDL3-3.1.0/include/SDL3/SDL_pen.h | 282 + extern/SDL3-3.1.0/include/SDL3/SDL_pixels.h | 999 + extern/SDL3-3.1.0/include/SDL3/SDL_platform.h | 63 + .../include/SDL3/SDL_platform_defines.h | 202 + extern/SDL3-3.1.0/include/SDL3/SDL_power.h | 85 + .../SDL3-3.1.0/include/SDL3/SDL_properties.h | 467 + extern/SDL3-3.1.0/include/SDL3/SDL_quit.h | 58 + extern/SDL3-3.1.0/include/SDL3/SDL_rect.h | 378 + extern/SDL3-3.1.0/include/SDL3/SDL_render.h | 2162 + extern/SDL3-3.1.0/include/SDL3/SDL_revision.h | 37 + extern/SDL3-3.1.0/include/SDL3/SDL_scancode.h | 439 + extern/SDL3-3.1.0/include/SDL3/SDL_sensor.h | 294 + extern/SDL3-3.1.0/include/SDL3/SDL_stdinc.h | 876 + extern/SDL3-3.1.0/include/SDL3/SDL_storage.h | 350 + extern/SDL3-3.1.0/include/SDL3/SDL_surface.h | 1047 + extern/SDL3-3.1.0/include/SDL3/SDL_system.h | 686 + extern/SDL3-3.1.0/include/SDL3/SDL_test.h | 66 + .../SDL3-3.1.0/include/SDL3/SDL_test_assert.h | 103 + .../SDL3-3.1.0/include/SDL3/SDL_test_common.h | 249 + .../include/SDL3/SDL_test_compare.h | 65 + .../SDL3-3.1.0/include/SDL3/SDL_test_crc32.h | 122 + .../SDL3-3.1.0/include/SDL3/SDL_test_font.h | 167 + .../SDL3-3.1.0/include/SDL3/SDL_test_fuzzer.h | 384 + .../include/SDL3/SDL_test_harness.h | 132 + extern/SDL3-3.1.0/include/SDL3/SDL_test_log.h | 65 + extern/SDL3-3.1.0/include/SDL3/SDL_test_md5.h | 127 + .../SDL3-3.1.0/include/SDL3/SDL_test_memory.h | 68 + .../SDL3-3.1.0/include/SDL3/SDL_test_random.h | 112 + extern/SDL3-3.1.0/include/SDL3/SDL_thread.h | 439 + extern/SDL3-3.1.0/include/SDL3/SDL_time.h | 208 + extern/SDL3-3.1.0/include/SDL3/SDL_timer.h | 200 + extern/SDL3-3.1.0/include/SDL3/SDL_touch.h | 145 + extern/SDL3-3.1.0/include/SDL3/SDL_version.h | 163 + extern/SDL3-3.1.0/include/SDL3/SDL_video.h | 2595 + extern/SDL3-3.1.0/include/SDL3/SDL_vulkan.h | 196 + .../include/build_config/SDL_build_config.h | 61 + .../build_config/SDL_build_config.h.cmake | 564 + .../build_config/SDL_build_config_android.h | 207 + .../SDL_build_config_emscripten.h | 214 + .../build_config/SDL_build_config_ios.h | 225 + .../build_config/SDL_build_config_macos.h | 284 + .../build_config/SDL_build_config_minimal.h | 96 + .../build_config/SDL_build_config_ngage.h | 93 + .../build_config/SDL_build_config_windows.h | 324 + .../build_config/SDL_build_config_wingdk.h | 258 + .../build_config/SDL_build_config_winrt.h | 226 + .../build_config/SDL_build_config_xbox.h | 242 + .../include/build_config/SDL_revision.h.cmake | 39 + .../SDL3-3.1.0/mingw/pkg-support/INSTALL.txt | 18 + extern/SDL3-3.1.0/mingw/pkg-support/Makefile | 26 + .../cmake/sdl3-config-version.cmake | 19 + .../mingw/pkg-support/cmake/sdl3-config.cmake | 19 + extern/SDL3-3.1.0/src/SDL.c | 716 + extern/SDL3-3.1.0/src/SDL_assert.c | 453 + extern/SDL3-3.1.0/src/SDL_assert_c.h | 28 + extern/SDL3-3.1.0/src/SDL_error.c | 108 + extern/SDL3-3.1.0/src/SDL_error_c.h | 49 + extern/SDL3-3.1.0/src/SDL_guid.c | 92 + extern/SDL3-3.1.0/src/SDL_hashtable.c | 273 + extern/SDL3-3.1.0/src/SDL_hashtable.h | 57 + extern/SDL3-3.1.0/src/SDL_hints.c | 312 + extern/SDL3-3.1.0/src/SDL_hints_c.h | 32 + extern/SDL3-3.1.0/src/SDL_internal.h | 295 + extern/SDL3-3.1.0/src/SDL_list.c | 86 + extern/SDL3-3.1.0/src/SDL_list.h | 36 + extern/SDL3-3.1.0/src/SDL_log.c | 611 + extern/SDL3-3.1.0/src/SDL_log_c.h | 31 + extern/SDL3-3.1.0/src/SDL_properties.c | 785 + extern/SDL3-3.1.0/src/SDL_properties_c.h | 25 + extern/SDL3-3.1.0/src/SDL_utils.c | 63 + extern/SDL3-3.1.0/src/SDL_utils_c.h | 33 + extern/SDL3-3.1.0/src/atomic/SDL_atomic.c | 301 + extern/SDL3-3.1.0/src/atomic/SDL_spinlock.c | 203 + extern/SDL3-3.1.0/src/audio/SDL_audio.c | 2300 + extern/SDL3-3.1.0/src/audio/SDL_audio_c.h | 27 + .../src/audio/SDL_audio_channel_converters.h | 1068 + .../src/audio/SDL_audio_resampler_filter.h | 544 + extern/SDL3-3.1.0/src/audio/SDL_audiocvt.c | 1251 + extern/SDL3-3.1.0/src/audio/SDL_audiodev.c | 127 + extern/SDL3-3.1.0/src/audio/SDL_audiodev_c.h | 41 + extern/SDL3-3.1.0/src/audio/SDL_audioqueue.c | 514 + extern/SDL3-3.1.0/src/audio/SDL_audioqueue.h | 77 + .../SDL3-3.1.0/src/audio/SDL_audioresample.c | 335 + .../SDL3-3.1.0/src/audio/SDL_audioresample.h | 43 + .../SDL3-3.1.0/src/audio/SDL_audiotypecvt.c | 990 + extern/SDL3-3.1.0/src/audio/SDL_mixer.c | 293 + extern/SDL3-3.1.0/src/audio/SDL_sysaudio.h | 362 + extern/SDL3-3.1.0/src/audio/SDL_wave.c | 2129 + extern/SDL3-3.1.0/src/audio/SDL_wave.h | 151 + .../SDL3-3.1.0/src/audio/aaudio/SDL_aaudio.c | 553 + .../SDL3-3.1.0/src/audio/aaudio/SDL_aaudio.h | 38 + .../src/audio/aaudio/SDL_aaudiofuncs.h | 82 + .../src/audio/alsa/SDL_alsa_audio.c | 994 + .../src/audio/alsa/SDL_alsa_audio.h | 42 + .../src/audio/android/SDL_androidaudio.c | 191 + .../src/audio/android/SDL_androidaudio.h | 38 + .../src/audio/coreaudio/SDL_coreaudio.h | 68 + .../src/audio/coreaudio/SDL_coreaudio.m | 979 + .../src/audio/directsound/SDL_directsound.c | 680 + .../src/audio/directsound/SDL_directsound.h | 43 + .../SDL3-3.1.0/src/audio/disk/SDL_diskaudio.c | 173 + .../SDL3-3.1.0/src/audio/disk/SDL_diskaudio.h | 36 + .../SDL3-3.1.0/src/audio/dsp/SDL_dspaudio.c | 304 + .../SDL3-3.1.0/src/audio/dsp/SDL_dspaudio.h | 37 + .../src/audio/dummy/SDL_dummyaudio.c | 97 + .../src/audio/dummy/SDL_dummyaudio.h | 34 + .../audio/emscripten/SDL_emscriptenaudio.c | 351 + .../audio/emscripten/SDL_emscriptenaudio.h | 33 + .../src/audio/haiku/SDL_haikuaudio.cc | 222 + .../src/audio/haiku/SDL_haikuaudio.h | 35 + .../SDL3-3.1.0/src/audio/jack/SDL_jackaudio.c | 444 + .../SDL3-3.1.0/src/audio/jack/SDL_jackaudio.h | 35 + .../SDL3-3.1.0/src/audio/n3ds/SDL_n3dsaudio.c | 287 + .../SDL3-3.1.0/src/audio/n3ds/SDL_n3dsaudio.h | 40 + .../src/audio/netbsd/SDL_netbsdaudio.c | 328 + .../src/audio/netbsd/SDL_netbsdaudio.h | 44 + .../src/audio/openslES/SDL_openslES.c | 801 + .../src/audio/openslES/SDL_openslES.h | 38 + .../src/audio/pipewire/SDL_pipewire.c | 1287 + .../src/audio/pipewire/SDL_pipewire.h | 43 + .../SDL3-3.1.0/src/audio/ps2/SDL_ps2audio.c | 159 + .../SDL3-3.1.0/src/audio/ps2/SDL_ps2audio.h | 42 + .../SDL3-3.1.0/src/audio/psp/SDL_pspaudio.c | 183 + .../SDL3-3.1.0/src/audio/psp/SDL_pspaudio.h | 41 + .../src/audio/pulseaudio/SDL_pulseaudio.c | 1032 + .../src/audio/pulseaudio/SDL_pulseaudio.h | 44 + .../SDL3-3.1.0/src/audio/qnx/SDL_qsa_audio.c | 450 + .../SDL3-3.1.0/src/audio/qnx/SDL_qsa_audio.h | 40 + .../src/audio/sndio/SDL_sndioaudio.c | 359 + .../src/audio/sndio/SDL_sndioaudio.h | 38 + .../SDL3-3.1.0/src/audio/vita/SDL_vitaaudio.c | 237 + .../SDL3-3.1.0/src/audio/vita/SDL_vitaaudio.h | 41 + .../SDL3-3.1.0/src/audio/wasapi/SDL_wasapi.c | 796 + .../SDL3-3.1.0/src/audio/wasapi/SDL_wasapi.h | 73 + .../src/audio/wasapi/SDL_wasapi_win32.c | 205 + .../src/audio/wasapi/SDL_wasapi_winrt.cpp | 360 + extern/SDL3-3.1.0/src/camera/SDL_camera.c | 1505 + extern/SDL3-3.1.0/src/camera/SDL_camera_c.h | 35 + extern/SDL3-3.1.0/src/camera/SDL_syscamera.h | 213 + .../src/camera/android/SDL_camera_android.c | 891 + .../camera/coremedia/SDL_camera_coremedia.m | 479 + .../src/camera/dummy/SDL_camera_dummy.c | 80 + .../camera/emscripten/SDL_camera_emscripten.c | 265 + .../SDL_camera_mediafoundation.c | 933 + .../src/camera/v4l2/SDL_camera_v4l2.c | 890 + .../src/core/SDL_core_unsupported.c | 237 + extern/SDL3-3.1.0/src/core/SDL_runapp.c | 44 + .../SDL3-3.1.0/src/core/android/SDL_android.c | 2769 + .../SDL3-3.1.0/src/core/android/SDL_android.h | 149 + .../freebsd/SDL_evdev_kbd_default_keyaccmap.h | 167 + .../src/core/freebsd/SDL_evdev_kbd_freebsd.c | 613 + extern/SDL3-3.1.0/src/core/gdk/SDL_gdk.cpp | 236 + extern/SDL3-3.1.0/src/core/gdk/SDL_gdk.h | 24 + extern/SDL3-3.1.0/src/core/haiku/SDL_BApp.h | 426 + extern/SDL3-3.1.0/src/core/haiku/SDL_BeApp.cc | 195 + extern/SDL3-3.1.0/src/core/haiku/SDL_BeApp.h | 40 + extern/SDL3-3.1.0/src/core/linux/SDL_dbus.c | 635 + extern/SDL3-3.1.0/src/core/linux/SDL_dbus.h | 114 + extern/SDL3-3.1.0/src/core/linux/SDL_evdev.c | 1038 + extern/SDL3-3.1.0/src/core/linux/SDL_evdev.h | 41 + .../src/core/linux/SDL_evdev_capabilities.c | 167 + .../src/core/linux/SDL_evdev_capabilities.h | 73 + .../SDL3-3.1.0/src/core/linux/SDL_evdev_kbd.c | 998 + .../SDL3-3.1.0/src/core/linux/SDL_evdev_kbd.h | 35 + .../linux/SDL_evdev_kbd_default_accents.h | 282 + .../core/linux/SDL_evdev_kbd_default_keymap.h | 4765 + extern/SDL3-3.1.0/src/core/linux/SDL_fcitx.c | 467 + extern/SDL3-3.1.0/src/core/linux/SDL_fcitx.h | 35 + extern/SDL3-3.1.0/src/core/linux/SDL_ibus.c | 745 + extern/SDL3-3.1.0/src/core/linux/SDL_ibus.h | 55 + extern/SDL3-3.1.0/src/core/linux/SDL_ime.c | 150 + extern/SDL3-3.1.0/src/core/linux/SDL_ime.h | 35 + .../SDL3-3.1.0/src/core/linux/SDL_sandbox.c | 45 + .../SDL3-3.1.0/src/core/linux/SDL_sandbox.h | 37 + .../src/core/linux/SDL_system_theme.c | 156 + .../src/core/linux/SDL_system_theme.h | 30 + .../src/core/linux/SDL_threadprio.c | 345 + extern/SDL3-3.1.0/src/core/linux/SDL_udev.c | 596 + extern/SDL3-3.1.0/src/core/linux/SDL_udev.h | 113 + extern/SDL3-3.1.0/src/core/n3ds/SDL_n3ds.c | 49 + .../src/core/ngage/SDL_ngage_runapp.cpp | 78 + .../SDL3-3.1.0/src/core/openbsd/SDL_wscons.h | 25 + .../src/core/openbsd/SDL_wscons_kbd.c | 936 + .../src/core/openbsd/SDL_wscons_mouse.c | 138 + extern/SDL3-3.1.0/src/core/ps2/SDL_ps2.c | 85 + extern/SDL3-3.1.0/src/core/psp/SDL_psp.c | 82 + extern/SDL3-3.1.0/src/core/unix/SDL_appid.c | 76 + extern/SDL3-3.1.0/src/core/unix/SDL_appid.h | 30 + extern/SDL3-3.1.0/src/core/unix/SDL_poll.c | 95 + extern/SDL3-3.1.0/src/core/unix/SDL_poll.h | 33 + .../SDL3-3.1.0/src/core/windows/SDL_directx.h | 112 + extern/SDL3-3.1.0/src/core/windows/SDL_hid.c | 256 + extern/SDL3-3.1.0/src/core/windows/SDL_hid.h | 218 + .../src/core/windows/SDL_immdevice.c | 432 + .../src/core/windows/SDL_immdevice.h | 45 + .../SDL3-3.1.0/src/core/windows/SDL_windows.c | 466 + .../SDL3-3.1.0/src/core/windows/SDL_windows.h | 174 + .../SDL3-3.1.0/src/core/windows/SDL_xinput.c | 144 + .../SDL3-3.1.0/src/core/windows/SDL_xinput.h | 276 + extern/SDL3-3.1.0/src/core/windows/pch.c | 21 + .../SDL3-3.1.0/src/core/windows/pch_cpp.cpp | 21 + extern/SDL3-3.1.0/src/core/windows/version.rc | 38 + .../src/core/winrt/SDL_winrtapp_common.cpp | 59 + .../src/core/winrt/SDL_winrtapp_common.h | 31 + .../src/core/winrt/SDL_winrtapp_direct3d.cpp | 758 + .../src/core/winrt/SDL_winrtapp_direct3d.h | 92 + .../src/core/winrt/SDL_winrtapp_xaml.cpp | 146 + .../src/core/winrt/SDL_winrtapp_xaml.h | 31 + extern/SDL3-3.1.0/src/cpuinfo/SDL_cpuinfo.c | 1166 + extern/SDL3-3.1.0/src/cpuinfo/SDL_cpuinfo_c.h | 27 + .../src/dialog/cocoa/SDL_cocoadialog.m | 169 + .../src/dialog/dummy/SDL_dummydialog.c | 41 + .../src/dialog/haiku/SDL_haikudialog.cc | 233 + .../src/dialog/unix/SDL_portaldialog.c | 492 + .../src/dialog/unix/SDL_portaldialog.h | 29 + .../src/dialog/unix/SDL_unixdialog.c | 85 + .../src/dialog/unix/SDL_zenitydialog.c | 488 + .../src/dialog/unix/SDL_zenitydialog.h | 29 + .../src/dialog/windows/SDL_windowsdialog.c | 460 + extern/SDL3-3.1.0/src/dynapi/SDL_dynapi.c | 565 + extern/SDL3-3.1.0/src/dynapi/SDL_dynapi.h | 77 + extern/SDL3-3.1.0/src/dynapi/SDL_dynapi.sym | 1020 + .../src/dynapi/SDL_dynapi_overrides.h | 1041 + .../SDL3-3.1.0/src/dynapi/SDL_dynapi_procs.h | 1057 + .../src/dynapi/SDL_dynapi_unsupported.h | 52 + extern/SDL3-3.1.0/src/dynapi/gendynapi.py | 570 + .../src/events/SDL_clipboardevents.c | 41 + .../src/events/SDL_clipboardevents_c.h | 28 + .../SDL3-3.1.0/src/events/SDL_displayevents.c | 65 + .../src/events/SDL_displayevents_c.h | 28 + extern/SDL3-3.1.0/src/events/SDL_dropevents.c | 115 + .../SDL3-3.1.0/src/events/SDL_dropevents_c.h | 31 + extern/SDL3-3.1.0/src/events/SDL_events.c | 1542 + extern/SDL3-3.1.0/src/events/SDL_events_c.h | 58 + extern/SDL3-3.1.0/src/events/SDL_keyboard.c | 1438 + extern/SDL3-3.1.0/src/events/SDL_keyboard_c.h | 100 + .../src/events/SDL_keysym_to_scancode.c | 438 + .../src/events/SDL_keysym_to_scancode_c.h | 28 + extern/SDL3-3.1.0/src/events/SDL_mouse.c | 1634 + extern/SDL3-3.1.0/src/events/SDL_mouse_c.h | 189 + extern/SDL3-3.1.0/src/events/SDL_pen.c | 1107 + extern/SDL3-3.1.0/src/events/SDL_pen_c.h | 343 + extern/SDL3-3.1.0/src/events/SDL_quit.c | 195 + .../src/events/SDL_scancode_tables.c | 71 + .../src/events/SDL_scancode_tables_c.h | 33 + extern/SDL3-3.1.0/src/events/SDL_touch.c | 500 + extern/SDL3-3.1.0/src/events/SDL_touch_c.h | 60 + .../SDL3-3.1.0/src/events/SDL_windowevents.c | 264 + .../src/events/SDL_windowevents_c.h | 29 + extern/SDL3-3.1.0/src/events/blank_cursor.h | 31 + extern/SDL3-3.1.0/src/events/default_cursor.h | 113 + extern/SDL3-3.1.0/src/events/imKStoUCS.c | 349 + extern/SDL3-3.1.0/src/events/imKStoUCS.h | 32 + .../SDL3-3.1.0/src/events/scancodes_ascii.h | 165 + .../SDL3-3.1.0/src/events/scancodes_darwin.h | 159 + .../SDL3-3.1.0/src/events/scancodes_linux.h | 848 + .../SDL3-3.1.0/src/events/scancodes_windows.h | 286 + .../SDL3-3.1.0/src/events/scancodes_xfree86.h | 520 + extern/SDL3-3.1.0/src/file/SDL_iostream.c | 1289 + .../file/cocoa/SDL_iostreambundlesupport.h | 30 + .../file/cocoa/SDL_iostreambundlesupport.m | 65 + .../src/file/n3ds/SDL_iostreamromfs.c | 88 + .../src/file/n3ds/SDL_iostreamromfs.h | 28 + .../src/filesystem/SDL_filesystem.c | 76 + .../src/filesystem/SDL_sysfilesystem.h | 32 + .../filesystem/android/SDL_sysfilesystem.c | 60 + .../src/filesystem/cocoa/SDL_sysfilesystem.m | 231 + .../src/filesystem/dummy/SDL_sysfilesystem.c | 46 + .../src/filesystem/dummy/SDL_sysfsops.c | 54 + .../filesystem/emscripten/SDL_sysfilesystem.c | 103 + .../src/filesystem/gdk/SDL_sysfilesystem.cpp | 139 + .../src/filesystem/haiku/SDL_sysfilesystem.cc | 138 + .../src/filesystem/n3ds/SDL_sysfilesystem.c | 88 + .../src/filesystem/posix/SDL_sysfsops.c | 131 + .../src/filesystem/ps2/SDL_sysfilesystem.c | 112 + .../src/filesystem/psp/SDL_sysfilesystem.c | 79 + .../src/filesystem/riscos/SDL_sysfilesystem.c | 206 + .../src/filesystem/unix/SDL_sysfilesystem.c | 600 + .../src/filesystem/vita/SDL_sysfilesystem.c | 92 + .../filesystem/windows/SDL_sysfilesystem.c | 331 + .../src/filesystem/windows/SDL_sysfsops.c | 176 + .../filesystem/winrt/SDL_sysfilesystem.cpp | 239 + extern/SDL3-3.1.0/src/haptic/SDL_haptic.c | 708 + extern/SDL3-3.1.0/src/haptic/SDL_haptic_c.h | 28 + extern/SDL3-3.1.0/src/haptic/SDL_syshaptic.h | 221 + .../src/haptic/android/SDL_syshaptic.c | 328 + .../src/haptic/android/SDL_syshaptic_c.h | 28 + .../src/haptic/darwin/SDL_syshaptic.c | 1376 + .../src/haptic/darwin/SDL_syshaptic_c.h | 29 + .../src/haptic/dummy/SDL_syshaptic.c | 150 + .../src/haptic/linux/SDL_syshaptic.c | 1133 + .../src/haptic/windows/SDL_dinputhaptic.c | 1242 + .../src/haptic/windows/SDL_dinputhaptic_c.h | 53 + .../src/haptic/windows/SDL_windowshaptic.c | 369 + .../src/haptic/windows/SDL_windowshaptic_c.h | 87 + extern/SDL3-3.1.0/src/hidapi/AUTHORS.txt | 18 + .../SDL3-3.1.0/src/hidapi/BUILD.autotools.md | 114 + extern/SDL3-3.1.0/src/hidapi/BUILD.cmake.md | 280 + extern/SDL3-3.1.0/src/hidapi/BUILD.md | 127 + extern/SDL3-3.1.0/src/hidapi/CMakeLists.txt | 108 + extern/SDL3-3.1.0/src/hidapi/HACKING.txt | 19 + extern/SDL3-3.1.0/src/hidapi/LICENSE-bsd.txt | 26 + extern/SDL3-3.1.0/src/hidapi/LICENSE-gpl3.txt | 674 + extern/SDL3-3.1.0/src/hidapi/LICENSE-orig.txt | 9 + extern/SDL3-3.1.0/src/hidapi/LICENSE.txt | 13 + extern/SDL3-3.1.0/src/hidapi/Makefile.am | 85 + extern/SDL3-3.1.0/src/hidapi/README.md | 196 + extern/SDL3-3.1.0/src/hidapi/SDL_hidapi.c | 1753 + .../src/hidapi/SDL_hidapi_android.h | 26 + extern/SDL3-3.1.0/src/hidapi/SDL_hidapi_c.h | 35 + extern/SDL3-3.1.0/src/hidapi/SDL_hidapi_ios.h | 26 + .../SDL3-3.1.0/src/hidapi/SDL_hidapi_libusb.h | 134 + .../SDL3-3.1.0/src/hidapi/SDL_hidapi_linux.h | 47 + extern/SDL3-3.1.0/src/hidapi/SDL_hidapi_mac.h | 25 + .../SDL3-3.1.0/src/hidapi/SDL_hidapi_netbsd.h | 25 + .../src/hidapi/SDL_hidapi_steamxbox.h | 23 + .../src/hidapi/SDL_hidapi_windows.h | 82 + extern/SDL3-3.1.0/src/hidapi/VERSION | 1 + extern/SDL3-3.1.0/src/hidapi/android/hid.cpp | 1471 + extern/SDL3-3.1.0/src/hidapi/android/hid.h | 39 + extern/SDL3-3.1.0/src/hidapi/bootstrap | 2 + extern/SDL3-3.1.0/src/hidapi/configure.ac | 256 + .../SDL3-3.1.0/src/hidapi/dist/hidapi.podspec | 31 + .../documentation/cmake-gui-drop-down.png | Bin 0 -> 22316 bytes .../documentation/cmake-gui-highlights.png | Bin 0 -> 77327 bytes extern/SDL3-3.1.0/src/hidapi/doxygen/Doxyfile | 2724 + .../src/hidapi/doxygen/main_page.md | 13 + extern/SDL3-3.1.0/src/hidapi/hidapi/hidapi.h | 634 + .../src/hidapi/hidtest/CMakeLists.txt | 40 + .../SDL3-3.1.0/src/hidapi/hidtest/Makefile.am | 28 + extern/SDL3-3.1.0/src/hidapi/hidtest/test.c | 316 + extern/SDL3-3.1.0/src/hidapi/ios/hid.m | 1037 + .../src/hidapi/libusb/CMakeLists.txt | 107 + .../src/hidapi/libusb/Makefile-manual | 22 + .../SDL3-3.1.0/src/hidapi/libusb/Makefile.am | 34 + .../src/hidapi/libusb/Makefile.freebsd | 39 + .../src/hidapi/libusb/Makefile.haiku | 39 + .../src/hidapi/libusb/Makefile.linux | 42 + extern/SDL3-3.1.0/src/hidapi/libusb/hid.c | 2143 + .../src/hidapi/libusb/hidapi_libusb.h | 56 + .../src/hidapi/libusb/hidapi_thread_pthread.h | 174 + .../src/hidapi/libusb/hidapi_thread_sdl.h | 198 + .../src/hidapi/linux/CMakeLists.txt | 38 + .../src/hidapi/linux/Makefile-manual | 42 + .../SDL3-3.1.0/src/hidapi/linux/Makefile.am | 10 + extern/SDL3-3.1.0/src/hidapi/linux/hid.c | 1483 + extern/SDL3-3.1.0/src/hidapi/m4/ax_pthread.m4 | 309 + extern/SDL3-3.1.0/src/hidapi/m4/pkg.m4 | 157 + .../SDL3-3.1.0/src/hidapi/mac/CMakeLists.txt | 48 + .../SDL3-3.1.0/src/hidapi/mac/Makefile-manual | 27 + extern/SDL3-3.1.0/src/hidapi/mac/Makefile.am | 9 + extern/SDL3-3.1.0/src/hidapi/mac/hid.c | 1594 + .../SDL3-3.1.0/src/hidapi/mac/hidapi_darwin.h | 98 + extern/SDL3-3.1.0/src/hidapi/meson.build | 22 + .../src/hidapi/netbsd/CMakeLists.txt | 35 + extern/SDL3-3.1.0/src/hidapi/netbsd/README.md | 29 + extern/SDL3-3.1.0/src/hidapi/netbsd/hid.c | 1173 + .../src/hidapi/pc/hidapi-hidraw.pc.in | 11 + .../src/hidapi/pc/hidapi-libusb.pc.in | 11 + .../src/hidapi/pc/hidapi-netbsd.pc.in | 11 + extern/SDL3-3.1.0/src/hidapi/pc/hidapi.pc.in | 11 + .../SDL3-3.1.0/src/hidapi/src/CMakeLists.txt | 206 + .../hidapi/src/cmake/hidapi-config.cmake.in | 61 + .../src/hidapi/subprojects/README.md | 2 + .../hidapi_build_cmake/CMakeLists.txt | 10 + .../src/hidapi/testgui/Makefile-manual | 26 + .../SDL3-3.1.0/src/hidapi/testgui/Makefile.am | 43 + .../src/hidapi/testgui/Makefile.freebsd | 33 + .../src/hidapi/testgui/Makefile.linux | 32 + .../src/hidapi/testgui/Makefile.mac | 46 + .../src/hidapi/testgui/Makefile.mingw | 32 + .../TestGUI.app.in/Contents/Info.plist | 28 + .../testgui/TestGUI.app.in/Contents/PkgInfo | 1 + .../Resources/English.lproj/InfoPlist.strings | Bin 0 -> 92 bytes .../Contents/Resources/Signal11.icns | Bin 0 -> 21918 bytes .../src/hidapi/testgui/copy_to_bundle.sh | 98 + .../src/hidapi/testgui/mac_support.h | 17 + .../src/hidapi/testgui/mac_support_cocoa.m | 103 + extern/SDL3-3.1.0/src/hidapi/testgui/test.cpp | 532 + .../SDL3-3.1.0/src/hidapi/testgui/testgui.sln | 20 + .../src/hidapi/testgui/testgui.vcproj | 217 + .../SDL3-3.1.0/src/hidapi/udev/69-hid.rules | 36 + .../src/hidapi/windows/CMakeLists.txt | 63 + .../src/hidapi/windows/Makefile-manual | 14 + .../SDL3-3.1.0/src/hidapi/windows/Makefile.am | 15 + .../src/hidapi/windows/Makefile.mingw | 30 + extern/SDL3-3.1.0/src/hidapi/windows/hid.c | 1725 + .../SDL3-3.1.0/src/hidapi/windows/hidapi.rc | 35 + .../SDL3-3.1.0/src/hidapi/windows/hidapi.sln | 41 + .../src/hidapi/windows/hidapi.vcproj | 200 + .../src/hidapi/windows/hidapi.vcxproj | 200 + .../src/hidapi/windows/hidapi_cfgmgr32.h | 86 + .../windows/hidapi_descriptor_reconstruct.c | 990 + .../windows/hidapi_descriptor_reconstruct.h | 252 + .../src/hidapi/windows/hidapi_hidclass.h | 40 + .../src/hidapi/windows/hidapi_hidpi.h | 72 + .../src/hidapi/windows/hidapi_hidsdi.h | 59 + .../src/hidapi/windows/hidapi_winapi.h | 74 + .../src/hidapi/windows/hidtest.vcproj | 196 + .../src/hidapi/windows/hidtest.vcxproj | 176 + .../windows/pp_data_dump/CMakeLists.txt | 15 + .../src/hidapi/windows/pp_data_dump/README.md | 122 + .../windows/pp_data_dump/pp_data_dump.c | 238 + .../src/hidapi/windows/test/CMakeLists.txt | 76 + .../test/data/045E_02FF_0005_0001.pp_data | 420 + .../045E_02FF_0005_0001_expected.rpt_desc | 12 + .../data/045E_02FF_0005_0001_real.rpt_desc | 64 + .../test/data/046A_0011_0006_0001.pp_data | 183 + .../046A_0011_0006_0001_expected.rpt_desc | 7 + .../data/046A_0011_0006_0001_real.rpt_desc | 7 + .../test/data/046D_0A37_0001_000C.pp_data | 532 + .../046D_0A37_0001_000C_expected.rpt_desc | 16 + .../data/046D_0A37_0001_000C_real.rpt_desc | 61 + .../test/data/046D_B010_0001_000C.pp_data | 97 + .../046D_B010_0001_000C_expected.rpt_desc | 3 + .../data/046D_B010_0001_000C_real.rpt_desc | 38 + .../test/data/046D_B010_0001_FF00.pp_data | 139 + .../046D_B010_0001_FF00_expected.rpt_desc | 4 + .../data/046D_B010_0001_FF00_real.rpt_desc | 39 + .../test/data/046D_B010_0002_0001.pp_data | 302 + .../046D_B010_0002_0001_expected.rpt_desc | 8 + .../data/046D_B010_0002_0001_real.rpt_desc | 61 + .../test/data/046D_B010_0002_FF00.pp_data | 139 + .../046D_B010_0002_FF00_expected.rpt_desc | 4 + .../data/046D_B010_0002_FF00_real.rpt_desc | 39 + .../test/data/046D_B010_0006_0001.pp_data | 185 + .../046D_B010_0006_0001_expected.rpt_desc | 7 + .../data/046D_B010_0006_0001_real.rpt_desc | 58 + .../test/data/046D_C077_0002_0001.pp_data | 252 + .../046D_C077_0002_0001_expected.rpt_desc | 5 + .../data/046D_C077_0002_0001_real.rpt_desc | 24 + .../test/data/046D_C283_0004_0001.pp_data | 520 + .../046D_C283_0004_0001_expected.rpt_desc | 18 + .../data/046D_C283_0004_0001_real.rpt_desc | 18 + .../test/data/046D_C52F_0001_000C.pp_data | 93 + .../046D_C52F_0001_000C_expected.rpt_desc | 3 + .../data/046D_C52F_0001_000C_real.rpt_desc | 12 + .../test/data/046D_C52F_0001_FF00.pp_data | 139 + .../046D_C52F_0001_FF00_expected.rpt_desc | 4 + .../data/046D_C52F_0001_FF00_real.rpt_desc | 13 + .../test/data/046D_C52F_0002_0001.pp_data | 302 + .../046D_C52F_0002_0001_expected.rpt_desc | 8 + .../data/046D_C52F_0002_0001_real.rpt_desc | 33 + .../test/data/046D_C52F_0002_FF00.pp_data | 139 + .../046D_C52F_0002_FF00_expected.rpt_desc | 4 + .../data/046D_C52F_0002_FF00_real.rpt_desc | 13 + .../test/data/046D_C534_0001_000C.pp_data | 93 + .../046D_C534_0001_000C_expected.rpt_desc | 3 + .../data/046D_C534_0001_000C_real.rpt_desc | 18 + .../test/data/046D_C534_0001_FF00.pp_data | 139 + .../046D_C534_0001_FF00_expected.rpt_desc | 4 + .../data/046D_C534_0001_FF00_real.rpt_desc | 20 + .../test/data/046D_C534_0002_0001.pp_data | 302 + .../046D_C534_0002_0001_expected.rpt_desc | 8 + .../data/046D_C534_0002_0001_real.rpt_desc | 44 + .../test/data/046D_C534_0002_FF00.pp_data | 139 + .../046D_C534_0002_FF00_expected.rpt_desc | 4 + .../data/046D_C534_0002_FF00_real.rpt_desc | 22 + .../test/data/046D_C534_0006_0001.pp_data | 185 + .../046D_C534_0006_0001_expected.rpt_desc | 7 + .../data/046D_C534_0006_0001_real.rpt_desc | 42 + .../test/data/046D_C534_0080_0001.pp_data | 185 + .../046D_C534_0080_0001_expected.rpt_desc | 4 + .../data/046D_C534_0080_0001_real.rpt_desc | 22 + .../test/data/047F_C056_0001_000C.pp_data | 385 + .../047F_C056_0001_000C_expected.rpt_desc | 10 + .../data/047F_C056_0001_000C_real.rpt_desc | 47 + .../test/data/047F_C056_0003_FFA0.pp_data | 1255 + .../047F_C056_0003_FFA0_expected.rpt_desc | 24 + .../data/047F_C056_0003_FFA0_real.rpt_desc | 113 + .../test/data/047F_C056_0005_000B.pp_data | 461 + .../047F_C056_0005_000B_expected.rpt_desc | 17 + .../data/047F_C056_0005_000B_real.rpt_desc | 68 + .../test/data/17CC_1130_0000_FF01.pp_data | 11508 ++ .../17CC_1130_0000_FF01_expected.rpt_desc | 75 + .../data/17CC_1130_0000_FF01_real.rpt_desc | 381 + .../test/hid_report_reconstructor_test.c | 563 + extern/SDL3-3.1.0/src/joystick/SDL_gamepad.c | 3849 + .../SDL3-3.1.0/src/joystick/SDL_gamepad_c.h | 50 + .../SDL3-3.1.0/src/joystick/SDL_gamepad_db.h | 881 + extern/SDL3-3.1.0/src/joystick/SDL_joystick.c | 3752 + .../SDL3-3.1.0/src/joystick/SDL_joystick_c.h | 264 + .../src/joystick/SDL_steam_virtual_gamepad.c | 249 + .../src/joystick/SDL_steam_virtual_gamepad.h | 36 + .../SDL3-3.1.0/src/joystick/SDL_sysjoystick.h | 268 + .../src/joystick/android/SDL_sysjoystick.c | 672 + .../src/joystick/android/SDL_sysjoystick_c.h | 56 + .../src/joystick/apple/SDL_mfijoystick.m | 2106 + .../src/joystick/apple/SDL_mfijoystick_c.h | 73 + .../src/joystick/bsd/SDL_bsdjoystick.c | 870 + .../SDL3-3.1.0/src/joystick/check_8bitdo.sh | 15 + .../SDL3-3.1.0/src/joystick/controller_list.h | 602 + .../SDL3-3.1.0/src/joystick/controller_type.c | 140 + .../SDL3-3.1.0/src/joystick/controller_type.h | 78 + .../src/joystick/darwin/SDL_iokitjoystick.c | 1089 + .../src/joystick/darwin/SDL_iokitjoystick_c.h | 80 + .../src/joystick/dummy/SDL_sysjoystick.c | 156 + .../src/joystick/emscripten/SDL_sysjoystick.c | 443 + .../joystick/emscripten/SDL_sysjoystick_c.h | 49 + .../src/joystick/gdk/SDL_gameinputjoystick.c | 723 + .../src/joystick/haiku/SDL_haikujoystick.cc | 324 + .../src/joystick/hidapi/SDL_hidapi_combined.c | 234 + .../src/joystick/hidapi/SDL_hidapi_gamecube.c | 530 + .../src/joystick/hidapi/SDL_hidapi_luna.c | 431 + .../src/joystick/hidapi/SDL_hidapi_nintendo.h | 49 + .../src/joystick/hidapi/SDL_hidapi_ps3.c | 1414 + .../src/joystick/hidapi/SDL_hidapi_ps4.c | 1350 + .../src/joystick/hidapi/SDL_hidapi_ps5.c | 1618 + .../src/joystick/hidapi/SDL_hidapi_rumble.c | 283 + .../src/joystick/hidapi/SDL_hidapi_rumble.h | 42 + .../src/joystick/hidapi/SDL_hidapi_shield.c | 585 + .../src/joystick/hidapi/SDL_hidapi_stadia.c | 325 + .../src/joystick/hidapi/SDL_hidapi_steam.c | 1245 + .../joystick/hidapi/SDL_hidapi_steamdeck.c | 443 + .../src/joystick/hidapi/SDL_hidapi_switch.c | 2401 + .../src/joystick/hidapi/SDL_hidapi_wii.c | 1599 + .../src/joystick/hidapi/SDL_hidapi_xbox360.c | 404 + .../src/joystick/hidapi/SDL_hidapi_xbox360w.c | 396 + .../src/joystick/hidapi/SDL_hidapi_xboxone.c | 1668 + .../src/joystick/hidapi/SDL_hidapijoystick.c | 1727 + .../joystick/hidapi/SDL_hidapijoystick_c.h | 183 + .../hidapi/steam/controller_constants.h | 582 + .../hidapi/steam/controller_structs.h | 463 + .../src/joystick/linux/SDL_sysjoystick.c | 2765 + .../src/joystick/linux/SDL_sysjoystick_c.h | 117 + .../src/joystick/n3ds/SDL_sysjoystick.c | 298 + .../src/joystick/ps2/SDL_sysjoystick.c | 370 + .../src/joystick/psp/SDL_sysjoystick.c | 282 + .../src/joystick/sort_controllers.py | 161 + .../src/joystick/steam/SDL_steamcontroller.c | 49 + .../src/joystick/steam/SDL_steamcontroller.h | 37 + extern/SDL3-3.1.0/src/joystick/usb_ids.h | 181 + .../joystick/virtual/SDL_virtualjoystick.c | 778 + .../joystick/virtual/SDL_virtualjoystick_c.h | 56 + .../src/joystick/vita/SDL_sysjoystick.c | 407 + .../src/joystick/windows/SDL_dinputjoystick.c | 1201 + .../joystick/windows/SDL_dinputjoystick_c.h | 40 + .../joystick/windows/SDL_rawinputjoystick.c | 2226 + .../joystick/windows/SDL_rawinputjoystick_c.h | 32 + .../windows/SDL_windows_gaming_input.c | 1027 + .../joystick/windows/SDL_windowsjoystick.c | 701 + .../joystick/windows/SDL_windowsjoystick_c.h | 103 + .../src/joystick/windows/SDL_xinputjoystick.c | 468 + .../joystick/windows/SDL_xinputjoystick_c.h | 44 + extern/SDL3-3.1.0/src/libm/e_atan2.c | 135 + extern/SDL3-3.1.0/src/libm/e_exp.c | 201 + extern/SDL3-3.1.0/src/libm/e_fmod.c | 145 + extern/SDL3-3.1.0/src/libm/e_log.c | 153 + extern/SDL3-3.1.0/src/libm/e_log10.c | 107 + extern/SDL3-3.1.0/src/libm/e_pow.c | 348 + extern/SDL3-3.1.0/src/libm/e_rem_pio2.c | 162 + extern/SDL3-3.1.0/src/libm/e_sqrt.c | 458 + extern/SDL3-3.1.0/src/libm/k_cos.c | 83 + extern/SDL3-3.1.0/src/libm/k_rem_pio2.c | 315 + extern/SDL3-3.1.0/src/libm/k_sin.c | 66 + extern/SDL3-3.1.0/src/libm/k_tan.c | 119 + extern/SDL3-3.1.0/src/libm/math_libm.h | 46 + extern/SDL3-3.1.0/src/libm/math_private.h | 228 + extern/SDL3-3.1.0/src/libm/s_atan.c | 119 + extern/SDL3-3.1.0/src/libm/s_copysign.c | 30 + extern/SDL3-3.1.0/src/libm/s_cos.c | 74 + extern/SDL3-3.1.0/src/libm/s_fabs.c | 30 + extern/SDL3-3.1.0/src/libm/s_floor.c | 76 + extern/SDL3-3.1.0/src/libm/s_modf.c | 68 + extern/SDL3-3.1.0/src/libm/s_scalbn.c | 74 + extern/SDL3-3.1.0/src/libm/s_sin.c | 74 + extern/SDL3-3.1.0/src/libm/s_tan.c | 68 + .../src/loadso/dlopen/SDL_sysloadso.c | 82 + .../src/loadso/dummy/SDL_sysloadso.c | 47 + .../src/loadso/windows/SDL_sysloadso.c | 80 + extern/SDL3-3.1.0/src/locale/SDL_locale.c | 99 + extern/SDL3-3.1.0/src/locale/SDL_syslocale.h | 33 + .../src/locale/android/SDL_syslocale.c | 30 + .../src/locale/dummy/SDL_syslocale.c | 29 + .../src/locale/emscripten/SDL_syslocale.c | 71 + .../src/locale/haiku/SDL_syslocale.cc | 72 + .../src/locale/macos/SDL_syslocale.m | 76 + .../src/locale/n3ds/SDL_syslocale.c | 55 + .../src/locale/unix/SDL_syslocale.c | 103 + .../src/locale/vita/SDL_syslocale.c | 69 + .../src/locale/windows/SDL_syslocale.c | 111 + .../src/locale/winrt/SDL_syslocale.c | 54 + .../SDL3-3.1.0/src/main/SDL_main_callbacks.c | 142 + .../SDL3-3.1.0/src/main/SDL_main_callbacks.h | 32 + .../main/emscripten/SDL_sysmain_callbacks.c | 47 + .../src/main/generic/SDL_sysmain_callbacks.c | 83 + .../src/main/ios/SDL_sysmain_callbacks.m | 82 + .../winrt/SDL3-WinRTResource_BlankCursor.cur | Bin 0 -> 326 bytes .../src/main/winrt/SDL3-WinRTResources.rc | 2 + extern/SDL3-3.1.0/src/misc/SDL_sysurl.h | 31 + extern/SDL3-3.1.0/src/misc/SDL_url.c | 31 + .../SDL3-3.1.0/src/misc/android/SDL_sysurl.c | 29 + extern/SDL3-3.1.0/src/misc/dummy/SDL_sysurl.c | 28 + .../src/misc/emscripten/SDL_sysurl.c | 33 + .../SDL3-3.1.0/src/misc/haiku/SDL_sysurl.cc | 31 + extern/SDL3-3.1.0/src/misc/ios/SDL_sysurl.m | 43 + extern/SDL3-3.1.0/src/misc/macos/SDL_sysurl.m | 39 + .../SDL3-3.1.0/src/misc/riscos/SDL_sysurl.c | 46 + extern/SDL3-3.1.0/src/misc/unix/SDL_sysurl.c | 85 + extern/SDL3-3.1.0/src/misc/vita/SDL_sysurl.c | 41 + .../SDL3-3.1.0/src/misc/windows/SDL_sysurl.c | 59 + .../SDL3-3.1.0/src/misc/winrt/SDL_sysurl.cpp | 38 + extern/SDL3-3.1.0/src/power/SDL_power.c | 116 + extern/SDL3-3.1.0/src/power/SDL_syspower.h | 47 + .../src/power/android/SDL_syspower.c | 60 + .../src/power/emscripten/SDL_syspower.c | 58 + .../SDL3-3.1.0/src/power/haiku/SDL_syspower.c | 123 + .../SDL3-3.1.0/src/power/linux/SDL_syspower.c | 648 + .../SDL3-3.1.0/src/power/macos/SDL_syspower.c | 185 + .../SDL3-3.1.0/src/power/n3ds/SDL_syspower.c | 102 + .../SDL3-3.1.0/src/power/psp/SDL_syspower.c | 61 + .../SDL3-3.1.0/src/power/uikit/SDL_syspower.h | 28 + .../SDL3-3.1.0/src/power/uikit/SDL_syspower.m | 105 + .../SDL3-3.1.0/src/power/vita/SDL_syspower.c | 61 + .../src/power/windows/SDL_syspower.c | 70 + .../src/power/winrt/SDL_syspower.cpp | 39 + extern/SDL3-3.1.0/src/render/SDL_d3dmath.c | 132 + extern/SDL3-3.1.0/src/render/SDL_d3dmath.h | 81 + extern/SDL3-3.1.0/src/render/SDL_render.c | 4711 + .../src/render/SDL_render_unsupported.c | 22 + extern/SDL3-3.1.0/src/render/SDL_sysrender.h | 342 + extern/SDL3-3.1.0/src/render/SDL_yuv_sw.c | 404 + extern/SDL3-3.1.0/src/render/SDL_yuv_sw_c.h | 67 + .../render/direct3d/D3D9_PixelShader_YUV.h | 164 + .../render/direct3d/D3D9_PixelShader_YUV.hlsl | 47 + .../src/render/direct3d/SDL_render_d3d.c | 1757 + .../src/render/direct3d/SDL_shaders_d3d.c | 48 + .../src/render/direct3d/SDL_shaders_d3d.h | 32 + .../src/render/direct3d/compile_shaders.bat | 1 + .../direct3d11/D3D11_PixelShader_Advanced.h | 1060 + .../D3D11_PixelShader_Advanced.hlsl | 7 + .../direct3d11/D3D11_PixelShader_Colors.h | 284 + .../direct3d11/D3D11_PixelShader_Colors.hlsl | 7 + .../direct3d11/D3D11_PixelShader_Common.hlsli | 235 + .../direct3d11/D3D11_PixelShader_Textures.h | 332 + .../D3D11_PixelShader_Textures.hlsl | 9 + .../render/direct3d11/D3D11_VertexShader.h | 339 + .../render/direct3d11/D3D11_VertexShader.hlsl | 38 + .../src/render/direct3d11/SDL_render_d3d11.c | 2861 + .../render/direct3d11/SDL_render_winrt.cpp | 93 + .../src/render/direct3d11/SDL_render_winrt.h | 36 + .../src/render/direct3d11/SDL_shaders_d3d11.c | 116 + .../src/render/direct3d11/SDL_shaders_d3d11.h | 35 + .../src/render/direct3d11/compile_shaders.bat | 4 + .../direct3d12/D3D12_PixelShader_Advanced.h | 1387 + .../D3D12_PixelShader_Advanced.hlsl | 8 + .../direct3d12/D3D12_PixelShader_Colors.h | 488 + .../direct3d12/D3D12_PixelShader_Colors.hlsl | 8 + .../direct3d12/D3D12_PixelShader_Common.hlsli | 236 + .../direct3d12/D3D12_PixelShader_Textures.h | 584 + .../D3D12_PixelShader_Textures.hlsl | 8 + .../direct3d12/D3D12_RootSig_Advanced.h | 31 + .../render/direct3d12/D3D12_RootSig_Color.h | 16 + .../render/direct3d12/D3D12_RootSig_Texture.h | 23 + .../direct3d12/D3D12_Shader_Common.hlsli | 37 + .../render/direct3d12/D3D12_VertexShader.hlsl | 45 + .../direct3d12/D3D12_VertexShader_Advanced.h | 653 + .../direct3d12/D3D12_VertexShader_Color.h | 637 + .../direct3d12/D3D12_VertexShader_Texture.h | 645 + .../src/render/direct3d12/SDL_render_d3d12.c | 3289 + .../direct3d12/SDL_render_d3d12_xbox.cpp | 174 + .../render/direct3d12/SDL_render_d3d12_xbox.h | 49 + .../src/render/direct3d12/SDL_shaders_d3d12.c | 125 + .../src/render/direct3d12/SDL_shaders_d3d12.h | 54 + .../direct3d12/SDL_shaders_d3d12_xboxone.cpp | 133 + .../SDL_shaders_d3d12_xboxseries.cpp | 134 + .../src/render/direct3d12/compile_shaders.bat | 21 + .../direct3d12/compile_shaders_xbox.bat | 13 + .../src/render/metal/SDL_render_metal.m | 2234 + .../src/render/metal/SDL_shaders_metal.metal | 306 + .../src/render/metal/SDL_shaders_metal_ios.h | 2106 + .../metal/SDL_shaders_metal_iphonesimulator.h | 2441 + .../render/metal/SDL_shaders_metal_macos.h | 2016 + .../src/render/metal/SDL_shaders_metal_tvos.h | 2106 + .../metal/SDL_shaders_metal_tvsimulator.h | 2444 + .../src/render/metal/build-metal-shaders.sh | 24 + .../src/render/opengl/SDL_glfuncs.h | 476 + .../src/render/opengl/SDL_render_gl.c | 1932 + .../src/render/opengl/SDL_shaders_gl.c | 546 + .../src/render/opengl/SDL_shaders_gl.h | 52 + .../src/render/opengles2/SDL_gles2funcs.h | 78 + .../src/render/opengles2/SDL_render_gles2.c | 2277 + .../src/render/opengles2/SDL_shaders_gles2.c | 387 + .../src/render/opengles2/SDL_shaders_gles2.h | 65 + .../src/render/ps2/SDL_render_ps2.c | 733 + .../src/render/psp/SDL_render_psp.c | 1430 + .../src/render/software/SDL_blendfillrect.c | 346 + .../src/render/software/SDL_blendfillrect.h | 30 + .../src/render/software/SDL_blendline.c | 862 + .../src/render/software/SDL_blendline.h | 30 + .../src/render/software/SDL_blendpoint.c | 351 + .../src/render/software/SDL_blendpoint.h | 30 + .../SDL3-3.1.0/src/render/software/SDL_draw.h | 659 + .../src/render/software/SDL_drawline.c | 200 + .../src/render/software/SDL_drawline.h | 30 + .../src/render/software/SDL_drawpoint.c | 109 + .../src/render/software/SDL_drawpoint.h | 30 + .../src/render/software/SDL_render_sw.c | 1229 + .../src/render/software/SDL_render_sw_c.h | 27 + .../src/render/software/SDL_rotate.c | 616 + .../src/render/software/SDL_rotate.h | 30 + .../src/render/software/SDL_triangle.c | 937 + .../src/render/software/SDL_triangle.h | 40 + .../src/render/vitagxm/SDL_render_vita_gxm.c | 1237 + .../vitagxm/SDL_render_vita_gxm_memory.c | 177 + .../vitagxm/SDL_render_vita_gxm_memory.h | 42 + .../vitagxm/SDL_render_vita_gxm_shaders.h | 282 + .../vitagxm/SDL_render_vita_gxm_tools.c | 1213 + .../vitagxm/SDL_render_vita_gxm_tools.h | 63 + .../vitagxm/SDL_render_vita_gxm_types.h | 210 + .../src/render/vitagxm/shader_src/clear_f.cg | 4 + .../src/render/vitagxm/shader_src/clear_v.cg | 4 + .../src/render/vitagxm/shader_src/color_f.cg | 4 + .../src/render/vitagxm/shader_src/color_v.cg | 13 + .../render/vitagxm/shader_src/texture_f.cg | 4 + .../render/vitagxm/shader_src/texture_v.cg | 14 + .../src/render/vulkan/SDL_render_vulkan.c | 4131 + .../src/render/vulkan/SDL_shaders_vulkan.c | 60 + .../src/render/vulkan/SDL_shaders_vulkan.h | 44 + .../vulkan/VULKAN_PixelShader_Advanced.h | 271 + .../vulkan/VULKAN_PixelShader_Advanced.hlsl | 7 + .../render/vulkan/VULKAN_PixelShader_Colors.h | 41 + .../vulkan/VULKAN_PixelShader_Colors.hlsl | 7 + .../vulkan/VULKAN_PixelShader_Common.hlsli | 181 + .../vulkan/VULKAN_PixelShader_Textures.h | 50 + .../vulkan/VULKAN_PixelShader_Textures.hlsl | 7 + .../src/render/vulkan/VULKAN_VertexShader.h | 51 + .../render/vulkan/VULKAN_VertexShader.hlsl | 45 + .../src/render/vulkan/compile_shaders.bat | 5 + extern/SDL3-3.1.0/src/sensor/SDL_sensor.c | 626 + extern/SDL3-3.1.0/src/sensor/SDL_sensor_c.h | 59 + extern/SDL3-3.1.0/src/sensor/SDL_syssensor.h | 112 + .../src/sensor/android/SDL_androidsensor.c | 288 + .../src/sensor/android/SDL_androidsensor.h | 21 + .../sensor/coremotion/SDL_coremotionsensor.h | 27 + .../sensor/coremotion/SDL_coremotionsensor.m | 214 + .../src/sensor/dummy/SDL_dummysensor.c | 93 + .../src/sensor/dummy/SDL_dummysensor.h | 21 + .../src/sensor/n3ds/SDL_n3dssensor.c | 203 + .../src/sensor/vita/SDL_vitasensor.c | 204 + .../src/sensor/vita/SDL_vitasensor.h | 29 + .../src/sensor/windows/SDL_windowssensor.c | 485 + .../src/sensor/windows/SDL_windowssensor.h | 21 + extern/SDL3-3.1.0/src/stdlib/SDL_crc16.c | 52 + extern/SDL3-3.1.0/src/stdlib/SDL_crc32.c | 50 + extern/SDL3-3.1.0/src/stdlib/SDL_getenv.c | 227 + extern/SDL3-3.1.0/src/stdlib/SDL_iconv.c | 849 + extern/SDL3-3.1.0/src/stdlib/SDL_malloc.c | 5342 + extern/SDL3-3.1.0/src/stdlib/SDL_memcpy.c | 101 + extern/SDL3-3.1.0/src/stdlib/SDL_memmove.c | 73 + extern/SDL3-3.1.0/src/stdlib/SDL_memset.c | 139 + extern/SDL3-3.1.0/src/stdlib/SDL_mslibc.c | 754 + .../SDL3-3.1.0/src/stdlib/SDL_mslibc_x64.masm | 29 + extern/SDL3-3.1.0/src/stdlib/SDL_qsort.c | 566 + extern/SDL3-3.1.0/src/stdlib/SDL_stdlib.c | 560 + extern/SDL3-3.1.0/src/stdlib/SDL_string.c | 2224 + extern/SDL3-3.1.0/src/stdlib/SDL_strtokr.c | 95 + extern/SDL3-3.1.0/src/stdlib/SDL_vacopy.h | 34 + extern/SDL3-3.1.0/src/storage/SDL_storage.c | 323 + .../SDL3-3.1.0/src/storage/SDL_sysstorage.h | 51 + .../src/storage/generic/SDL_genericstorage.c | 283 + .../src/storage/steam/SDL_steamstorage.c | 216 + .../src/storage/steam/SDL_steamstorage_proc.h | 14 + extern/SDL3-3.1.0/src/test/SDL_test_assert.c | 157 + extern/SDL3-3.1.0/src/test/SDL_test_common.c | 2696 + extern/SDL3-3.1.0/src/test/SDL_test_compare.c | 151 + extern/SDL3-3.1.0/src/test/SDL_test_crc32.c | 160 + extern/SDL3-3.1.0/src/test/SDL_test_font.c | 3493 + extern/SDL3-3.1.0/src/test/SDL_test_fuzzer.c | 488 + extern/SDL3-3.1.0/src/test/SDL_test_harness.c | 698 + extern/SDL3-3.1.0/src/test/SDL_test_log.c | 111 + extern/SDL3-3.1.0/src/test/SDL_test_md5.c | 342 + extern/SDL3-3.1.0/src/test/SDL_test_memory.c | 395 + extern/SDL3-3.1.0/src/test/SDL_test_random.c | 98 + extern/SDL3-3.1.0/src/thread/SDL_systhread.h | 77 + extern/SDL3-3.1.0/src/thread/SDL_thread.c | 497 + extern/SDL3-3.1.0/src/thread/SDL_thread_c.h | 104 + .../src/thread/generic/SDL_syscond.c | 216 + .../src/thread/generic/SDL_syscond_c.h | 36 + .../src/thread/generic/SDL_sysmutex.c | 132 + .../src/thread/generic/SDL_sysmutex_c.h | 21 + .../src/thread/generic/SDL_sysrwlock.c | 184 + .../src/thread/generic/SDL_sysrwlock_c.h | 38 + .../src/thread/generic/SDL_syssem.c | 172 + .../src/thread/generic/SDL_systhread.c | 61 + .../src/thread/generic/SDL_systhread_c.h | 24 + .../src/thread/generic/SDL_systls.c | 33 + .../SDL3-3.1.0/src/thread/n3ds/SDL_syscond.c | 116 + .../SDL3-3.1.0/src/thread/n3ds/SDL_sysmutex.c | 64 + .../src/thread/n3ds/SDL_sysmutex_c.h | 33 + .../SDL3-3.1.0/src/thread/n3ds/SDL_syssem.c | 117 + .../src/thread/n3ds/SDL_systhread.c | 137 + .../src/thread/n3ds/SDL_systhread_c.h | 30 + .../src/thread/ngage/SDL_sysmutex.cpp | 102 + .../src/thread/ngage/SDL_syssem.cpp | 160 + .../src/thread/ngage/SDL_systhread.cpp | 110 + .../src/thread/ngage/SDL_systhread_c.h | 23 + extern/SDL3-3.1.0/src/thread/ps2/SDL_syssem.c | 140 + .../SDL3-3.1.0/src/thread/ps2/SDL_systhread.c | 135 + .../src/thread/ps2/SDL_systhread_c.h | 24 + .../SDL3-3.1.0/src/thread/psp/SDL_sysmutex.c | 106 + .../src/thread/psp/SDL_sysmutex_c.h | 21 + extern/SDL3-3.1.0/src/thread/psp/SDL_syssem.c | 143 + .../SDL3-3.1.0/src/thread/psp/SDL_systhread.c | 107 + .../src/thread/psp/SDL_systhread_c.h | 24 + .../src/thread/pthread/SDL_syscond.c | 143 + .../src/thread/pthread/SDL_sysmutex.c | 154 + .../src/thread/pthread/SDL_sysmutex_c.h | 40 + .../src/thread/pthread/SDL_sysrwlock.c | 113 + .../src/thread/pthread/SDL_syssem.c | 180 + .../src/thread/pthread/SDL_systhread.c | 283 + .../src/thread/pthread/SDL_systhread_c.h | 25 + .../src/thread/pthread/SDL_systls.c | 64 + .../src/thread/stdcpp/SDL_syscond.cpp | 141 + .../src/thread/stdcpp/SDL_sysmutex.cpp | 77 + .../src/thread/stdcpp/SDL_sysmutex_c.h | 29 + .../src/thread/stdcpp/SDL_sysrwlock.cpp | 114 + .../src/thread/stdcpp/SDL_systhread.cpp | 161 + .../src/thread/stdcpp/SDL_systhread_c.h | 24 + .../SDL3-3.1.0/src/thread/vita/SDL_sysmutex.c | 106 + .../src/thread/vita/SDL_sysmutex_c.h | 21 + .../SDL3-3.1.0/src/thread/vita/SDL_syssem.c | 145 + .../src/thread/vita/SDL_systhread.c | 133 + .../src/thread/vita/SDL_systhread_c.h | 24 + .../src/thread/windows/SDL_syscond_cv.c | 260 + .../src/thread/windows/SDL_sysmutex.c | 252 + .../src/thread/windows/SDL_sysmutex_c.h | 73 + .../src/thread/windows/SDL_sysrwlock_srw.c | 255 + .../src/thread/windows/SDL_syssem.c | 384 + .../src/thread/windows/SDL_systhread.c | 209 + .../src/thread/windows/SDL_systhread_c.h | 30 + .../src/thread/windows/SDL_systls.c | 79 + extern/SDL3-3.1.0/src/time/SDL_time.c | 232 + extern/SDL3-3.1.0/src/time/SDL_time_c.h | 39 + extern/SDL3-3.1.0/src/time/n3ds/SDL_systime.c | 139 + extern/SDL3-3.1.0/src/time/ps2/SDL_systime.c | 65 + extern/SDL3-3.1.0/src/time/psp/SDL_systime.c | 136 + extern/SDL3-3.1.0/src/time/unix/SDL_systime.c | 193 + extern/SDL3-3.1.0/src/time/vita/SDL_systime.c | 142 + .../SDL3-3.1.0/src/time/windows/SDL_systime.c | 139 + extern/SDL3-3.1.0/src/timer/SDL_timer.c | 594 + extern/SDL3-3.1.0/src/timer/SDL_timer_c.h | 37 + .../SDL3-3.1.0/src/timer/haiku/SDL_systimer.c | 43 + .../SDL3-3.1.0/src/timer/n3ds/SDL_systimer.c | 43 + .../src/timer/ngage/SDL_systimer.cpp | 59 + .../SDL3-3.1.0/src/timer/ps2/SDL_systimer.c | 50 + .../SDL3-3.1.0/src/timer/psp/SDL_systimer.c | 54 + .../SDL3-3.1.0/src/timer/unix/SDL_systimer.c | 188 + .../SDL3-3.1.0/src/timer/vita/SDL_systimer.c | 51 + .../src/timer/windows/SDL_systimer.c | 115 + extern/SDL3-3.1.0/src/video/SDL_RLEaccel.c | 1602 + extern/SDL3-3.1.0/src/video/SDL_RLEaccel_c.h | 32 + extern/SDL3-3.1.0/src/video/SDL_blit.c | 295 + extern/SDL3-3.1.0/src/video/SDL_blit.h | 634 + extern/SDL3-3.1.0/src/video/SDL_blit_0.c | 983 + extern/SDL3-3.1.0/src/video/SDL_blit_1.c | 552 + extern/SDL3-3.1.0/src/video/SDL_blit_A.c | 1471 + extern/SDL3-3.1.0/src/video/SDL_blit_N.c | 3451 + extern/SDL3-3.1.0/src/video/SDL_blit_auto.c | 6995 + extern/SDL3-3.1.0/src/video/SDL_blit_auto.h | 33 + extern/SDL3-3.1.0/src/video/SDL_blit_copy.c | 164 + extern/SDL3-3.1.0/src/video/SDL_blit_copy.h | 27 + extern/SDL3-3.1.0/src/video/SDL_blit_slow.c | 916 + extern/SDL3-3.1.0/src/video/SDL_blit_slow.h | 30 + extern/SDL3-3.1.0/src/video/SDL_bmp.c | 873 + extern/SDL3-3.1.0/src/video/SDL_clipboard.c | 397 + extern/SDL3-3.1.0/src/video/SDL_clipboard_c.h | 42 + extern/SDL3-3.1.0/src/video/SDL_egl.c | 1343 + extern/SDL3-3.1.0/src/video/SDL_egl_c.h | 170 + extern/SDL3-3.1.0/src/video/SDL_fillrect.c | 442 + extern/SDL3-3.1.0/src/video/SDL_pixels.c | 1513 + extern/SDL3-3.1.0/src/video/SDL_pixels_c.h | 65 + extern/SDL3-3.1.0/src/video/SDL_rect.c | 112 + extern/SDL3-3.1.0/src/video/SDL_rect_c.h | 29 + extern/SDL3-3.1.0/src/video/SDL_rect_impl.h | 437 + extern/SDL3-3.1.0/src/video/SDL_stretch.c | 946 + extern/SDL3-3.1.0/src/video/SDL_surface.c | 1932 + extern/SDL3-3.1.0/src/video/SDL_sysvideo.h | 541 + extern/SDL3-3.1.0/src/video/SDL_video.c | 5390 + extern/SDL3-3.1.0/src/video/SDL_video_c.h | 66 + .../src/video/SDL_video_unsupported.c | 113 + .../src/video/SDL_vulkan_internal.h | 80 + .../SDL3-3.1.0/src/video/SDL_vulkan_utils.c | 470 + extern/SDL3-3.1.0/src/video/SDL_yuv.c | 2586 + extern/SDL3-3.1.0/src/video/SDL_yuv_c.h | 36 + .../src/video/android/SDL_androidclipboard.c | 44 + .../src/video/android/SDL_androidclipboard.h | 30 + .../src/video/android/SDL_androidevents.c | 239 + .../src/video/android/SDL_androidevents.h | 26 + .../src/video/android/SDL_androidgl.c | 85 + .../src/video/android/SDL_androidgl.h | 31 + .../src/video/android/SDL_androidkeyboard.c | 378 + .../src/video/android/SDL_androidkeyboard.h | 33 + .../src/video/android/SDL_androidmessagebox.c | 33 + .../src/video/android/SDL_androidmessagebox.h | 27 + .../src/video/android/SDL_androidmouse.c | 250 + .../src/video/android/SDL_androidmouse.h | 31 + .../src/video/android/SDL_androidtouch.c | 92 + .../src/video/android/SDL_androidtouch.h | 27 + .../src/video/android/SDL_androidvideo.c | 303 + .../src/video/android/SDL_androidvideo.h | 50 + .../src/video/android/SDL_androidvulkan.c | 165 + .../src/video/android/SDL_androidvulkan.h | 49 + .../src/video/android/SDL_androidwindow.c | 198 + .../src/video/android/SDL_androidwindow.h | 51 + .../SDL3-3.1.0/src/video/arm/pixman-arm-asm.h | 36 + .../src/video/arm/pixman-arm-neon-asm.S | 375 + .../src/video/arm/pixman-arm-neon-asm.h | 1184 + .../src/video/arm/pixman-arm-simd-asm.S | 532 + .../src/video/arm/pixman-arm-simd-asm.h | 1034 + .../src/video/cocoa/SDL_cocoaclipboard.h | 37 + .../src/video/cocoa/SDL_cocoaclipboard.m | 176 + .../src/video/cocoa/SDL_cocoaevents.h | 33 + .../src/video/cocoa/SDL_cocoaevents.m | 653 + .../src/video/cocoa/SDL_cocoakeyboard.h | 36 + .../src/video/cocoa/SDL_cocoakeyboard.m | 478 + .../src/video/cocoa/SDL_cocoamessagebox.h | 27 + .../src/video/cocoa/SDL_cocoamessagebox.m | 145 + .../src/video/cocoa/SDL_cocoametalview.h | 66 + .../src/video/cocoa/SDL_cocoametalview.m | 180 + .../src/video/cocoa/SDL_cocoamodes.h | 44 + .../src/video/cocoa/SDL_cocoamodes.m | 581 + .../src/video/cocoa/SDL_cocoamouse.h | 50 + .../src/video/cocoa/SDL_cocoamouse.m | 585 + .../src/video/cocoa/SDL_cocoaopengl.h | 89 + .../src/video/cocoa/SDL_cocoaopengl.m | 541 + .../src/video/cocoa/SDL_cocoaopengles.h | 48 + .../src/video/cocoa/SDL_cocoaopengles.m | 156 + .../src/video/cocoa/SDL_cocoashape.h | 28 + .../src/video/cocoa/SDL_cocoashape.m | 54 + .../src/video/cocoa/SDL_cocoavideo.h | 119 + .../src/video/cocoa/SDL_cocoavideo.m | 321 + .../src/video/cocoa/SDL_cocoavulkan.h | 49 + .../src/video/cocoa/SDL_cocoavulkan.m | 300 + .../src/video/cocoa/SDL_cocoawindow.h | 184 + .../src/video/cocoa/SDL_cocoawindow.m | 2982 + .../src/video/dummy/SDL_nullevents.c | 38 + .../src/video/dummy/SDL_nullevents_c.h | 31 + .../src/video/dummy/SDL_nullframebuffer.c | 78 + .../src/video/dummy/SDL_nullframebuffer_c.h | 31 + .../src/video/dummy/SDL_nullvideo.c | 180 + .../src/video/dummy/SDL_nullvideo.h | 28 + .../video/emscripten/SDL_emscriptenevents.c | 1024 + .../video/emscripten/SDL_emscriptenevents.h | 31 + .../emscripten/SDL_emscriptenframebuffer.c | 161 + .../emscripten/SDL_emscriptenframebuffer.h | 30 + .../video/emscripten/SDL_emscriptenmouse.c | 214 + .../video/emscripten/SDL_emscriptenmouse.h | 37 + .../video/emscripten/SDL_emscriptenopengles.c | 158 + .../video/emscripten/SDL_emscriptenopengles.h | 43 + .../video/emscripten/SDL_emscriptenvideo.c | 345 + .../video/emscripten/SDL_emscriptenvideo.h | 50 + .../src/video/gdk/SDL_gdktextinput.cpp | 298 + .../src/video/gdk/SDL_gdktextinput.h | 51 + extern/SDL3-3.1.0/src/video/haiku/SDL_BWin.h | 755 + .../src/video/haiku/SDL_bclipboard.cc | 92 + .../src/video/haiku/SDL_bclipboard.h | 31 + .../SDL3-3.1.0/src/video/haiku/SDL_bevents.cc | 39 + .../SDL3-3.1.0/src/video/haiku/SDL_bevents.h | 37 + .../src/video/haiku/SDL_bframebuffer.cc | 127 + .../src/video/haiku/SDL_bframebuffer.h | 45 + .../src/video/haiku/SDL_bkeyboard.cc | 186 + .../src/video/haiku/SDL_bkeyboard.h | 40 + .../src/video/haiku/SDL_bmessagebox.cc | 394 + .../src/video/haiku/SDL_bmessagebox.h | 43 + .../SDL3-3.1.0/src/video/haiku/SDL_bmodes.cc | 298 + .../SDL3-3.1.0/src/video/haiku/SDL_bmodes.h | 45 + .../SDL3-3.1.0/src/video/haiku/SDL_bopengl.cc | 195 + .../SDL3-3.1.0/src/video/haiku/SDL_bopengl.h | 52 + .../SDL3-3.1.0/src/video/haiku/SDL_bvideo.cc | 319 + .../SDL3-3.1.0/src/video/haiku/SDL_bvideo.h | 40 + .../SDL3-3.1.0/src/video/haiku/SDL_bwindow.cc | 185 + .../SDL3-3.1.0/src/video/haiku/SDL_bwindow.h | 44 + extern/SDL3-3.1.0/src/video/khronos/EGL/egl.h | 342 + .../SDL3-3.1.0/src/video/khronos/EGL/eglext.h | 1507 + .../src/video/khronos/EGL/eglplatform.h | 175 + .../SDL3-3.1.0/src/video/khronos/GLES2/gl2.h | 656 + .../src/video/khronos/GLES2/gl2ext.h | 4101 + .../src/video/khronos/GLES2/gl2platform.h | 27 + .../src/video/khronos/KHR/khrplatform.h | 311 + .../vk_video/vulkan_video_codec_h264std.h | 312 + .../vulkan_video_codec_h264std_decode.h | 77 + .../vulkan_video_codec_h264std_encode.h | 147 + .../vk_video/vulkan_video_codec_h265std.h | 446 + .../vulkan_video_codec_h265std_decode.h | 67 + .../vulkan_video_codec_h265std_encode.h | 157 + .../vk_video/vulkan_video_codecs_common.h | 36 + .../src/video/khronos/vulkan/vk_icd.h | 244 + .../src/video/khronos/vulkan/vk_layer.h | 189 + .../src/video/khronos/vulkan/vk_platform.h | 84 + .../video/khronos/vulkan/vk_sdk_platform.h | 69 + .../src/video/khronos/vulkan/vulkan.h | 99 + .../src/video/khronos/vulkan/vulkan_android.h | 153 + .../src/video/khronos/vulkan/vulkan_beta.h | 216 + .../src/video/khronos/vulkan/vulkan_core.h | 19371 +++ .../video/khronos/vulkan/vulkan_directfb.h | 55 + .../src/video/khronos/vulkan/vulkan_fuchsia.h | 262 + .../src/video/khronos/vulkan/vulkan_ggp.h | 60 + .../src/video/khronos/vulkan/vulkan_ios.h | 48 + .../src/video/khronos/vulkan/vulkan_macos.h | 48 + .../src/video/khronos/vulkan/vulkan_metal.h | 203 + .../src/video/khronos/vulkan/vulkan_screen.h | 108 + .../src/video/khronos/vulkan/vulkan_vi.h | 48 + .../src/video/khronos/vulkan/vulkan_wayland.h | 55 + .../src/video/khronos/vulkan/vulkan_win32.h | 342 + .../src/video/khronos/vulkan/vulkan_xcb.h | 56 + .../src/video/khronos/vulkan/vulkan_xlib.h | 56 + .../video/khronos/vulkan/vulkan_xlib_xrandr.h | 46 + .../src/video/kmsdrm/SDL_kmsdrmdyn.c | 157 + .../src/video/kmsdrm/SDL_kmsdrmdyn.h | 51 + .../src/video/kmsdrm/SDL_kmsdrmevents.c | 44 + .../src/video/kmsdrm/SDL_kmsdrmevents.h | 29 + .../src/video/kmsdrm/SDL_kmsdrmmouse.c | 434 + .../src/video/kmsdrm/SDL_kmsdrmmouse.h | 53 + .../src/video/kmsdrm/SDL_kmsdrmopengles.c | 210 + .../src/video/kmsdrm/SDL_kmsdrmopengles.h | 46 + .../src/video/kmsdrm/SDL_kmsdrmsym.h | 128 + .../src/video/kmsdrm/SDL_kmsdrmvideo.c | 1629 + .../src/video/kmsdrm/SDL_kmsdrmvideo.h | 179 + .../src/video/kmsdrm/SDL_kmsdrmvulkan.c | 508 + .../src/video/kmsdrm/SDL_kmsdrmvulkan.h | 49 + .../src/video/n3ds/SDL_n3dsevents.c | 45 + .../src/video/n3ds/SDL_n3dsevents_c.h | 29 + .../src/video/n3ds/SDL_n3dsframebuffer.c | 121 + .../src/video/n3ds/SDL_n3dsframebuffer_c.h | 31 + .../SDL3-3.1.0/src/video/n3ds/SDL_n3dsswkb.c | 68 + .../SDL3-3.1.0/src/video/n3ds/SDL_n3dsswkb.h | 36 + .../SDL3-3.1.0/src/video/n3ds/SDL_n3dstouch.c | 78 + .../SDL3-3.1.0/src/video/n3ds/SDL_n3dstouch.h | 29 + .../SDL3-3.1.0/src/video/n3ds/SDL_n3dsvideo.c | 174 + .../SDL3-3.1.0/src/video/n3ds/SDL_n3dsvideo.h | 37 + .../src/video/ngage/SDL_ngageevents.cpp | 194 + .../src/video/ngage/SDL_ngageevents_c.h | 26 + .../src/video/ngage/SDL_ngageframebuffer.cpp | 397 + .../src/video/ngage/SDL_ngageframebuffer_c.h | 36 + .../src/video/ngage/SDL_ngagevideo.cpp | 164 + .../src/video/ngage/SDL_ngagevideo.h | 65 + .../src/video/ngage/SDL_ngagewindow.cpp | 125 + .../src/video/ngage/SDL_ngagewindow.h | 38 + .../src/video/offscreen/SDL_offscreenevents.c | 38 + .../video/offscreen/SDL_offscreenevents_c.h | 23 + .../offscreen/SDL_offscreenframebuffer.c | 79 + .../offscreen/SDL_offscreenframebuffer_c.h | 25 + .../video/offscreen/SDL_offscreenopengles.c | 84 + .../video/offscreen/SDL_offscreenopengles.h | 44 + .../src/video/offscreen/SDL_offscreenvideo.c | 126 + .../src/video/offscreen/SDL_offscreenvideo.h | 28 + .../src/video/offscreen/SDL_offscreenwindow.c | 90 + .../src/video/offscreen/SDL_offscreenwindow.h | 40 + .../SDL3-3.1.0/src/video/ps2/SDL_ps2video.c | 120 + .../SDL3-3.1.0/src/video/ps2/SDL_ps2video.h | 46 + .../SDL3-3.1.0/src/video/psp/SDL_pspevents.c | 276 + .../src/video/psp/SDL_pspevents_c.h | 29 + extern/SDL3-3.1.0/src/video/psp/SDL_pspgl.c | 190 + extern/SDL3-3.1.0/src/video/psp/SDL_pspgl_c.h | 50 + .../SDL3-3.1.0/src/video/psp/SDL_pspmouse.c | 37 + .../SDL3-3.1.0/src/video/psp/SDL_pspmouse_c.h | 24 + .../SDL3-3.1.0/src/video/psp/SDL_pspvideo.c | 258 + .../SDL3-3.1.0/src/video/psp/SDL_pspvideo.h | 81 + extern/SDL3-3.1.0/src/video/qnx/SDL_qnx.h | 48 + extern/SDL3-3.1.0/src/video/qnx/SDL_qnxgl.c | 276 + .../src/video/qnx/SDL_qnxkeyboard.c | 132 + .../SDL3-3.1.0/src/video/qnx/SDL_qnxvideo.c | 350 + .../src/video/raspberry/SDL_rpievents.c | 43 + .../src/video/raspberry/SDL_rpievents_c.h | 29 + .../src/video/raspberry/SDL_rpimouse.c | 319 + .../src/video/raspberry/SDL_rpimouse.h | 41 + .../src/video/raspberry/SDL_rpiopengles.c | 65 + .../src/video/raspberry/SDL_rpiopengles.h | 47 + .../src/video/raspberry/SDL_rpivideo.c | 369 + .../src/video/raspberry/SDL_rpivideo.h | 89 + .../src/video/riscos/SDL_riscosdefs.h | 51 + .../src/video/riscos/SDL_riscosevents.c | 176 + .../src/video/riscos/SDL_riscosevents_c.h | 33 + .../src/video/riscos/SDL_riscosframebuffer.c | 127 + .../video/riscos/SDL_riscosframebuffer_c.h | 31 + .../src/video/riscos/SDL_riscosmessagebox.c | 67 + .../src/video/riscos/SDL_riscosmessagebox.h | 27 + .../src/video/riscos/SDL_riscosmodes.c | 310 + .../src/video/riscos/SDL_riscosmodes.h | 31 + .../src/video/riscos/SDL_riscosmouse.c | 79 + .../src/video/riscos/SDL_riscosmouse.h | 28 + .../src/video/riscos/SDL_riscosvideo.c | 128 + .../src/video/riscos/SDL_riscosvideo.h | 36 + .../src/video/riscos/SDL_riscoswindow.c | 62 + .../src/video/riscos/SDL_riscoswindow.h | 38 + .../src/video/riscos/scancodes_riscos.h | 157 + extern/SDL3-3.1.0/src/video/sdlgenblit.pl | 683 + .../src/video/uikit/SDL_uikitappdelegate.h | 45 + .../src/video/uikit/SDL_uikitappdelegate.m | 541 + .../src/video/uikit/SDL_uikitclipboard.h | 33 + .../src/video/uikit/SDL_uikitclipboard.m | 104 + .../src/video/uikit/SDL_uikitevents.h | 38 + .../src/video/uikit/SDL_uikitevents.m | 478 + .../src/video/uikit/SDL_uikitmessagebox.h | 29 + .../src/video/uikit/SDL_uikitmessagebox.m | 154 + .../src/video/uikit/SDL_uikitmetalview.h | 54 + .../src/video/uikit/SDL_uikitmetalview.m | 125 + .../src/video/uikit/SDL_uikitmodes.h | 65 + .../src/video/uikit/SDL_uikitmodes.m | 541 + .../src/video/uikit/SDL_uikitopengles.h | 40 + .../src/video/uikit/SDL_uikitopengles.m | 216 + .../src/video/uikit/SDL_uikitopenglview.h | 62 + .../src/video/uikit/SDL_uikitopenglview.m | 377 + .../src/video/uikit/SDL_uikitvideo.h | 52 + .../src/video/uikit/SDL_uikitvideo.m | 305 + .../src/video/uikit/SDL_uikitview.h | 46 + .../src/video/uikit/SDL_uikitview.m | 492 + .../src/video/uikit/SDL_uikitviewcontroller.h | 95 + .../src/video/uikit/SDL_uikitviewcontroller.m | 643 + .../src/video/uikit/SDL_uikitvulkan.h | 49 + .../src/video/uikit/SDL_uikitvulkan.m | 257 + .../src/video/uikit/SDL_uikitwindow.h | 56 + .../src/video/uikit/SDL_uikitwindow.m | 468 + .../src/video/vita/SDL_vitaframebuffer.c | 116 + .../src/video/vita/SDL_vitaframebuffer.h | 25 + .../src/video/vita/SDL_vitagl_pvr.c | 122 + .../src/video/vita/SDL_vitagl_pvr_c.h | 31 + .../SDL3-3.1.0/src/video/vita/SDL_vitagles.c | 217 + .../src/video/vita/SDL_vitagles_c.h | 53 + .../src/video/vita/SDL_vitagles_pvr.c | 93 + .../src/video/vita/SDL_vitagles_pvr_c.h | 32 + .../src/video/vita/SDL_vitakeyboard.c | 190 + .../src/video/vita/SDL_vitakeyboard.h | 31 + .../src/video/vita/SDL_vitamessagebox.c | 125 + .../src/video/vita/SDL_vitamessagebox.h | 31 + .../SDL3-3.1.0/src/video/vita/SDL_vitamouse.c | 89 + .../src/video/vita/SDL_vitamouse_c.h | 31 + .../SDL3-3.1.0/src/video/vita/SDL_vitatouch.c | 186 + .../SDL3-3.1.0/src/video/vita/SDL_vitatouch.h | 33 + .../SDL3-3.1.0/src/video/vita/SDL_vitavideo.c | 554 + .../SDL3-3.1.0/src/video/vita/SDL_vitavideo.h | 106 + .../src/video/vivante/SDL_vivanteopengles.c | 41 + .../src/video/vivante/SDL_vivanteopengles.h | 46 + .../src/video/vivante/SDL_vivanteplatform.c | 49 + .../src/video/vivante/SDL_vivanteplatform.h | 45 + .../src/video/vivante/SDL_vivantevideo.c | 361 + .../src/video/vivante/SDL_vivantevideo.h | 86 + .../src/video/vivante/SDL_vivantevulkan.c | 145 + .../src/video/vivante/SDL_vivantevulkan.h | 48 + .../src/video/wayland/SDL_waylandclipboard.c | 173 + .../src/video/wayland/SDL_waylandclipboard.h | 34 + .../video/wayland/SDL_waylanddatamanager.c | 624 + .../video/wayland/SDL_waylanddatamanager.h | 161 + .../src/video/wayland/SDL_waylanddyn.c | 176 + .../src/video/wayland/SDL_waylanddyn.h | 195 + .../src/video/wayland/SDL_waylandevents.c | 3451 + .../src/video/wayland/SDL_waylandevents_c.h | 227 + .../src/video/wayland/SDL_waylandkeyboard.c | 153 + .../src/video/wayland/SDL_waylandkeyboard.h | 41 + .../src/video/wayland/SDL_waylandmessagebox.c | 269 + .../src/video/wayland/SDL_waylandmessagebox.h | 31 + .../src/video/wayland/SDL_waylandmouse.c | 798 + .../src/video/wayland/SDL_waylandmouse.h | 34 + .../src/video/wayland/SDL_waylandopengles.c | 205 + .../src/video/wayland/SDL_waylandopengles.h | 48 + .../src/video/wayland/SDL_waylandshmbuffer.c | 170 + .../src/video/wayland/SDL_waylandshmbuffer.h | 38 + .../src/video/wayland/SDL_waylandsym.h | 239 + .../src/video/wayland/SDL_waylandvideo.c | 1419 + .../src/video/wayland/SDL_waylandvideo.h | 132 + .../src/video/wayland/SDL_waylandvulkan.c | 171 + .../src/video/wayland/SDL_waylandvulkan.h | 49 + .../src/video/wayland/SDL_waylandwindow.c | 2613 + .../src/video/wayland/SDL_waylandwindow.h | 212 + .../SDL3-3.1.0/src/video/windows/SDL_msctf.h | 246 + .../src/video/windows/SDL_windowsclipboard.c | 343 + .../src/video/windows/SDL_windowsclipboard.h | 34 + .../src/video/windows/SDL_windowsevents.c | 2137 + .../src/video/windows/SDL_windowsevents.h | 39 + .../video/windows/SDL_windowsframebuffer.c | 132 + .../video/windows/SDL_windowsframebuffer.h | 25 + .../src/video/windows/SDL_windowskeyboard.c | 1750 + .../src/video/windows/SDL_windowskeyboard.h | 40 + .../src/video/windows/SDL_windowsmessagebox.c | 1042 + .../src/video/windows/SDL_windowsmessagebox.h | 27 + .../src/video/windows/SDL_windowsmodes.c | 851 + .../src/video/windows/SDL_windowsmodes.h | 55 + .../src/video/windows/SDL_windowsmouse.c | 687 + .../src/video/windows/SDL_windowsmouse.h | 34 + .../src/video/windows/SDL_windowsopengl.c | 905 + .../src/video/windows/SDL_windowsopengl.h | 178 + .../src/video/windows/SDL_windowsopengles.c | 144 + .../src/video/windows/SDL_windowsopengles.h | 48 + .../src/video/windows/SDL_windowsshape.c | 124 + .../src/video/windows/SDL_windowsshape.h | 28 + .../src/video/windows/SDL_windowsvideo.c | 731 + .../src/video/windows/SDL_windowsvideo.h | 476 + .../src/video/windows/SDL_windowsvulkan.c | 163 + .../src/video/windows/SDL_windowsvulkan.h | 49 + .../src/video/windows/SDL_windowswindow.c | 1723 + .../src/video/windows/SDL_windowswindow.h | 135 + extern/SDL3-3.1.0/src/video/windows/wmmsg.h | 1050 + .../src/video/winrt/SDL_winrtevents.cpp | 143 + .../src/video/winrt/SDL_winrtevents_c.h | 80 + .../src/video/winrt/SDL_winrtgamebar.cpp | 185 + .../src/video/winrt/SDL_winrtgamebar_cpp.h | 33 + .../src/video/winrt/SDL_winrtkeyboard.cpp | 193 + .../src/video/winrt/SDL_winrtmessagebox.cpp | 111 + .../src/video/winrt/SDL_winrtmessagebox.h | 27 + .../src/video/winrt/SDL_winrtmouse.cpp | 255 + .../src/video/winrt/SDL_winrtmouse_c.h | 38 + .../src/video/winrt/SDL_winrtopengles.cpp | 207 + .../src/video/winrt/SDL_winrtopengles.h | 67 + .../src/video/winrt/SDL_winrtpointerinput.cpp | 389 + .../src/video/winrt/SDL_winrtvideo.cpp | 843 + .../src/video/winrt/SDL_winrtvideo_cpp.h | 106 + .../src/video/x11/SDL_x11clipboard.c | 274 + .../src/video/x11/SDL_x11clipboard.h | 45 + extern/SDL3-3.1.0/src/video/x11/SDL_x11dyn.c | 201 + extern/SDL3-3.1.0/src/video/x11/SDL_x11dyn.h | 106 + .../SDL3-3.1.0/src/video/x11/SDL_x11events.c | 2059 + .../SDL3-3.1.0/src/video/x11/SDL_x11events.h | 38 + .../src/video/x11/SDL_x11framebuffer.c | 256 + .../src/video/x11/SDL_x11framebuffer.h | 34 + .../src/video/x11/SDL_x11keyboard.c | 498 + .../src/video/x11/SDL_x11keyboard.h | 38 + .../src/video/x11/SDL_x11messagebox.c | 855 + .../src/video/x11/SDL_x11messagebox.h | 31 + .../SDL3-3.1.0/src/video/x11/SDL_x11modes.c | 1064 + .../SDL3-3.1.0/src/video/x11/SDL_x11modes.h | 68 + .../SDL3-3.1.0/src/video/x11/SDL_x11mouse.c | 515 + .../SDL3-3.1.0/src/video/x11/SDL_x11mouse.h | 40 + .../SDL3-3.1.0/src/video/x11/SDL_x11opengl.c | 1048 + .../SDL3-3.1.0/src/video/x11/SDL_x11opengl.h | 96 + .../src/video/x11/SDL_x11opengles.c | 129 + .../src/video/x11/SDL_x11opengles.h | 55 + extern/SDL3-3.1.0/src/video/x11/SDL_x11pen.c | 696 + extern/SDL3-3.1.0/src/video/x11/SDL_x11pen.h | 54 + .../SDL3-3.1.0/src/video/x11/SDL_x11shape.c | 110 + .../SDL3-3.1.0/src/video/x11/SDL_x11shape.h | 28 + extern/SDL3-3.1.0/src/video/x11/SDL_x11sym.h | 344 + .../SDL3-3.1.0/src/video/x11/SDL_x11touch.c | 46 + .../SDL3-3.1.0/src/video/x11/SDL_x11touch.h | 30 + .../SDL3-3.1.0/src/video/x11/SDL_x11video.c | 474 + .../SDL3-3.1.0/src/video/x11/SDL_x11video.h | 139 + .../SDL3-3.1.0/src/video/x11/SDL_x11vulkan.c | 233 + .../SDL3-3.1.0/src/video/x11/SDL_x11vulkan.h | 45 + .../SDL3-3.1.0/src/video/x11/SDL_x11window.c | 2014 + .../SDL3-3.1.0/src/video/x11/SDL_x11window.h | 145 + .../SDL3-3.1.0/src/video/x11/SDL_x11xfixes.c | 214 + .../SDL3-3.1.0/src/video/x11/SDL_x11xfixes.h | 39 + .../SDL3-3.1.0/src/video/x11/SDL_x11xinput2.c | 701 + .../SDL3-3.1.0/src/video/x11/SDL_x11xinput2.h | 43 + extern/SDL3-3.1.0/src/video/x11/edid-parse.c | 753 + extern/SDL3-3.1.0/src/video/x11/edid.h | 167 + extern/SDL3-3.1.0/src/video/yuv2rgb/LICENSE | 27 + extern/SDL3-3.1.0/src/video/yuv2rgb/README.md | 63 + extern/SDL3-3.1.0/src/video/yuv2rgb/yuv_rgb.h | 33 + .../src/video/yuv2rgb/yuv_rgb_common.h | 14 + .../src/video/yuv2rgb/yuv_rgb_internal.h | 81 + .../src/video/yuv2rgb/yuv_rgb_lsx.c | 43 + .../src/video/yuv2rgb/yuv_rgb_lsx.h | 36 + .../src/video/yuv2rgb/yuv_rgb_lsx_func.h | 372 + .../src/video/yuv2rgb/yuv_rgb_sse.c | 460 + .../src/video/yuv2rgb/yuv_rgb_sse.h | 241 + .../src/video/yuv2rgb/yuv_rgb_sse_func.h | 529 + .../src/video/yuv2rgb/yuv_rgb_std.c | 200 + .../src/video/yuv2rgb/yuv_rgb_std.h | 143 + .../src/video/yuv2rgb/yuv_rgb_std_func.h | 271 + extern/SDL3-3.1.0/test/CMakeLists.txt | 788 + extern/SDL3-3.1.0/test/COPYING | 8 + extern/SDL3-3.1.0/test/README | 48 + .../android/cmake/AndroidManifest.xml.cmake | 70 + .../cmake/SDLEntryTestActivity.java.cmake | 121 + .../android/cmake/SDLTestActivity.java.cmake | 33 + .../cmake/res/values/strings.xml.cmake | 5 + .../android/cmake/res/xml/shortcuts.xml.cmake | 24 + .../res/drawable/sdl-test_foreground.xml | 102 + .../android/res/layout/arguments_layout.xml | 26 + .../res/mipmap-anydpi-v26/sdl-test.xml | 5 + .../res/mipmap-anydpi-v26/sdl-test_round.xml | 5 + .../test/android/res/mipmap-hdpi/sdl-test.png | Bin 0 -> 3041 bytes .../res/mipmap-hdpi/sdl-test_round.png | Bin 0 -> 5292 bytes .../test/android/res/mipmap-mdpi/sdl-test.png | Bin 0 -> 1881 bytes .../res/mipmap-mdpi/sdl-test_round.png | Bin 0 -> 3150 bytes .../android/res/mipmap-xhdpi/sdl-test.png | Bin 0 -> 4426 bytes .../res/mipmap-xhdpi/sdl-test_round.png | Bin 0 -> 7789 bytes .../android/res/mipmap-xxhdpi/sdl-test.png | Bin 0 -> 7389 bytes .../res/mipmap-xxhdpi/sdl-test_round.png | Bin 0 -> 13232 bytes .../android/res/mipmap-xxxhdpi/sdl-test.png | Bin 0 -> 11218 bytes .../res/mipmap-xxxhdpi/sdl-test_round.png | Bin 0 -> 19626 bytes .../test/android/res/values/arg_strings.xml | 7 + .../res/values/sdl-test_background.xml | 4 + extern/SDL3-3.1.0/test/audiofile.bmp | Bin 0 -> 65674 bytes extern/SDL3-3.1.0/test/checkkeys.c | 300 + extern/SDL3-3.1.0/test/checkkeysthreads.c | 313 + .../test/emscripten/joystick-pre.js | 25 + extern/SDL3-3.1.0/test/emscripten/server.py | 75 + extern/SDL3-3.1.0/test/gamepad_axis.bmp | Bin 0 -> 10122 bytes extern/SDL3-3.1.0/test/gamepad_axis.h | 847 + extern/SDL3-3.1.0/test/gamepad_axis_arrow.bmp | Bin 0 -> 410 bytes extern/SDL3-3.1.0/test/gamepad_axis_arrow.h | 38 + extern/SDL3-3.1.0/test/gamepad_back.bmp | Bin 0 -> 17952 bytes extern/SDL3-3.1.0/test/gamepad_back.h | 1499 + .../SDL3-3.1.0/test/gamepad_battery_empty.bmp | Bin 0 -> 2106 bytes .../SDL3-3.1.0/test/gamepad_battery_empty.h | 179 + .../SDL3-3.1.0/test/gamepad_battery_full.bmp | Bin 0 -> 2106 bytes extern/SDL3-3.1.0/test/gamepad_battery_full.h | 179 + .../SDL3-3.1.0/test/gamepad_battery_low.bmp | Bin 0 -> 2106 bytes extern/SDL3-3.1.0/test/gamepad_battery_low.h | 179 + .../test/gamepad_battery_medium.bmp | Bin 0 -> 2106 bytes .../SDL3-3.1.0/test/gamepad_battery_medium.h | 179 + .../test/gamepad_battery_unknown.bmp | Bin 0 -> 2106 bytes .../SDL3-3.1.0/test/gamepad_battery_unknown.h | 179 + .../SDL3-3.1.0/test/gamepad_battery_wired.bmp | Bin 0 -> 2106 bytes .../SDL3-3.1.0/test/gamepad_battery_wired.h | 179 + extern/SDL3-3.1.0/test/gamepad_button.bmp | Bin 0 -> 10122 bytes extern/SDL3-3.1.0/test/gamepad_button.h | 847 + .../test/gamepad_button_background.bmp | Bin 0 -> 8458 bytes .../test/gamepad_button_background.h | 708 + .../SDL3-3.1.0/test/gamepad_button_small.bmp | Bin 0 -> 714 bytes extern/SDL3-3.1.0/test/gamepad_button_small.h | 63 + extern/SDL3-3.1.0/test/gamepad_face_abxy.bmp | Bin 0 -> 33030 bytes extern/SDL3-3.1.0/test/gamepad_face_abxy.h | 2756 + extern/SDL3-3.1.0/test/gamepad_face_bayx.bmp | Bin 0 -> 33030 bytes extern/SDL3-3.1.0/test/gamepad_face_bayx.h | 2756 + extern/SDL3-3.1.0/test/gamepad_face_sony.bmp | Bin 0 -> 33030 bytes extern/SDL3-3.1.0/test/gamepad_face_sony.h | 2756 + extern/SDL3-3.1.0/test/gamepad_front.bmp | Bin 0 -> 33894 bytes extern/SDL3-3.1.0/test/gamepad_front.h | 2828 + extern/SDL3-3.1.0/test/gamepad_touchpad.bmp | Bin 0 -> 3724 bytes extern/SDL3-3.1.0/test/gamepad_touchpad.h | 314 + extern/SDL3-3.1.0/test/gamepadutils.c | 2928 + extern/SDL3-3.1.0/test/gamepadutils.h | 169 + extern/SDL3-3.1.0/test/glass.bmp | Bin 0 -> 1537738 bytes extern/SDL3-3.1.0/test/glass.h | 128148 +++++++++++++++ extern/SDL3-3.1.0/test/icon.bmp | Bin 0 -> 578 bytes extern/SDL3-3.1.0/test/icon.h | 52 + extern/SDL3-3.1.0/test/logaudiodev.bmp | Bin 0 -> 65674 bytes extern/SDL3-3.1.0/test/loopwave.c | 138 + extern/SDL3-3.1.0/test/main.cpp | 11 + extern/SDL3-3.1.0/test/moose.dat | Bin 0 -> 56320 bytes extern/SDL3-3.1.0/test/n3ds/logo48x48.png | Bin 0 -> 3069 bytes extern/SDL3-3.1.0/test/physaudiodev.bmp | Bin 0 -> 65674 bytes extern/SDL3-3.1.0/test/picture.xbm | 14 + extern/SDL3-3.1.0/test/pretest.c | 36 + extern/SDL3-3.1.0/test/relative_mode.markdown | 58 + extern/SDL3-3.1.0/test/sample.bmp | Bin 0 -> 69202 bytes extern/SDL3-3.1.0/test/sample.wav | Bin 0 -> 121946 bytes extern/SDL3-3.1.0/test/soundboard.bmp | Bin 0 -> 65674 bytes extern/SDL3-3.1.0/test/soundboard_levels.bmp | Bin 0 -> 2698 bytes extern/SDL3-3.1.0/test/speaker.bmp | Bin 0 -> 65674 bytes extern/SDL3-3.1.0/test/template.test.in | 3 + extern/SDL3-3.1.0/test/testatomic.c | 731 + extern/SDL3-3.1.0/test/testaudio-art.txt | 8 + extern/SDL3-3.1.0/test/testaudio.c | 1249 + extern/SDL3-3.1.0/test/testaudiocapture.c | 213 + extern/SDL3-3.1.0/test/testaudiohotplug.c | 213 + extern/SDL3-3.1.0/test/testaudioinfo.c | 122 + .../test/testaudiostreamdynamicresample.c | 449 + extern/SDL3-3.1.0/test/testautomation.c | 175 + extern/SDL3-3.1.0/test/testautomation_audio.c | 1359 + .../test/testautomation_clipboard.c | 567 + .../SDL3-3.1.0/test/testautomation_events.c | 204 + extern/SDL3-3.1.0/test/testautomation_guid.c | 172 + extern/SDL3-3.1.0/test/testautomation_hints.c | 254 + .../SDL3-3.1.0/test/testautomation_images.c | 5929 + .../SDL3-3.1.0/test/testautomation_images.h | 36 + .../test/testautomation_intrinsics.c | 690 + .../SDL3-3.1.0/test/testautomation_iostream.c | 701 + .../SDL3-3.1.0/test/testautomation_joystick.c | 149 + .../SDL3-3.1.0/test/testautomation_keyboard.c | 703 + extern/SDL3-3.1.0/test/testautomation_log.c | 209 + extern/SDL3-3.1.0/test/testautomation_main.c | 147 + extern/SDL3-3.1.0/test/testautomation_math.c | 3402 + extern/SDL3-3.1.0/test/testautomation_mouse.c | 661 + extern/SDL3-3.1.0/test/testautomation_pen.c | 1939 + .../SDL3-3.1.0/test/testautomation_pixels.c | 396 + .../SDL3-3.1.0/test/testautomation_platform.c | 592 + .../test/testautomation_properties.c | 419 + extern/SDL3-3.1.0/test/testautomation_rect.c | 1821 + .../SDL3-3.1.0/test/testautomation_render.c | 1399 + .../SDL3-3.1.0/test/testautomation_sdltest.c | 1299 + .../SDL3-3.1.0/test/testautomation_stdlib.c | 1085 + .../test/testautomation_subsystems.c | 239 + .../SDL3-3.1.0/test/testautomation_suites.h | 39 + .../SDL3-3.1.0/test/testautomation_surface.c | 934 + extern/SDL3-3.1.0/test/testautomation_time.c | 201 + extern/SDL3-3.1.0/test/testautomation_timer.c | 201 + extern/SDL3-3.1.0/test/testautomation_video.c | 2375 + extern/SDL3-3.1.0/test/testbounds.c | 56 + extern/SDL3-3.1.0/test/testcamera.c | 274 + extern/SDL3-3.1.0/test/testcolorspace.c | 651 + extern/SDL3-3.1.0/test/testcontroller.c | 2134 + extern/SDL3-3.1.0/test/testcustomcursor.c | 430 + extern/SDL3-3.1.0/test/testdialog.c | 161 + extern/SDL3-3.1.0/test/testdisplayinfo.c | 104 + extern/SDL3-3.1.0/test/testdraw.c | 314 + extern/SDL3-3.1.0/test/testdrawchessboard.c | 161 + extern/SDL3-3.1.0/test/testdropfile.c | 105 + extern/SDL3-3.1.0/test/testerror.c | 98 + extern/SDL3-3.1.0/test/testevdev.c | 1958 + extern/SDL3-3.1.0/test/testffmpeg.c | 1602 + extern/SDL3-3.1.0/test/testffmpeg_vulkan.c | 1004 + extern/SDL3-3.1.0/test/testffmpeg_vulkan.h | 25 + extern/SDL3-3.1.0/test/testfile.c | 375 + extern/SDL3-3.1.0/test/testfilesystem.c | 140 + extern/SDL3-3.1.0/test/testgeometry.c | 289 + extern/SDL3-3.1.0/test/testgl.c | 460 + extern/SDL3-3.1.0/test/testgles.c | 352 + extern/SDL3-3.1.0/test/testgles2.c | 968 + extern/SDL3-3.1.0/test/testgles2_sdf.c | 801 + .../test/testgles2_sdf_img_normal.bmp | Bin 0 -> 68122 bytes .../SDL3-3.1.0/test/testgles2_sdf_img_sdf.bmp | Bin 0 -> 72202 bytes extern/SDL3-3.1.0/test/testhaptic.c | 396 + extern/SDL3-3.1.0/test/testhittesting.c | 168 + extern/SDL3-3.1.0/test/testhotplug.c | 188 + extern/SDL3-3.1.0/test/testiconv.c | 126 + extern/SDL3-3.1.0/test/testime.c | 788 + extern/SDL3-3.1.0/test/testintersections.c | 392 + extern/SDL3-3.1.0/test/testkeys.c | 51 + extern/SDL3-3.1.0/test/testloadso.c | 115 + extern/SDL3-3.1.0/test/testlocale.c | 103 + extern/SDL3-3.1.0/test/testlock.c | 214 + extern/SDL3-3.1.0/test/testmanymouse.c | 368 + extern/SDL3-3.1.0/test/testmessage.c | 229 + extern/SDL3-3.1.0/test/testmouse.c | 314 + extern/SDL3-3.1.0/test/testmultiaudio.c | 206 + extern/SDL3-3.1.0/test/testnative.c | 234 + extern/SDL3-3.1.0/test/testnative.h | 52 + extern/SDL3-3.1.0/test/testnativecocoa.m | 58 + extern/SDL3-3.1.0/test/testnativew32.c | 88 + extern/SDL3-3.1.0/test/testnativewayland.c | 226 + extern/SDL3-3.1.0/test/testnativex11.c | 55 + extern/SDL3-3.1.0/test/testoffscreen.c | 175 + extern/SDL3-3.1.0/test/testoverlay.c | 545 + extern/SDL3-3.1.0/test/testpen.c | 526 + extern/SDL3-3.1.0/test/testplatform.c | 490 + extern/SDL3-3.1.0/test/testpopup.c | 282 + extern/SDL3-3.1.0/test/testpower.c | 93 + extern/SDL3-3.1.0/test/testqsort.c | 149 + extern/SDL3-3.1.0/test/testrelative.c | 138 + extern/SDL3-3.1.0/test/testrendercopyex.c | 177 + extern/SDL3-3.1.0/test/testrendertarget.c | 298 + extern/SDL3-3.1.0/test/testresample.c | 157 + extern/SDL3-3.1.0/test/testrumble.c | 170 + extern/SDL3-3.1.0/test/testrwlock.c | 178 + extern/SDL3-3.1.0/test/testscale.c | 169 + extern/SDL3-3.1.0/test/testsem.c | 321 + extern/SDL3-3.1.0/test/testsensor.c | 141 + extern/SDL3-3.1.0/test/testshader.c | 559 + extern/SDL3-3.1.0/test/testshape.c | 142 + extern/SDL3-3.1.0/test/testsprite.c | 583 + extern/SDL3-3.1.0/test/testspriteminimal.c | 173 + extern/SDL3-3.1.0/test/teststreaming.c | 210 + extern/SDL3-3.1.0/test/testsurround.c | 242 + extern/SDL3-3.1.0/test/testthread.c | 164 + extern/SDL3-3.1.0/test/testtime.c | 213 + extern/SDL3-3.1.0/test/testtimer.c | 205 + extern/SDL3-3.1.0/test/testurl.c | 43 + extern/SDL3-3.1.0/test/testutils.c | 151 + extern/SDL3-3.1.0/test/testutils.h | 24 + extern/SDL3-3.1.0/test/testver.c | 48 + extern/SDL3-3.1.0/test/testviewport.c | 239 + extern/SDL3-3.1.0/test/testvulkan.c | 1153 + extern/SDL3-3.1.0/test/testwaylandcustom.c | 334 + extern/SDL3-3.1.0/test/testwm.c | 306 + extern/SDL3-3.1.0/test/testyuv.bmp | Bin 0 -> 739398 bytes extern/SDL3-3.1.0/test/testyuv.c | 558 + extern/SDL3-3.1.0/test/testyuv_cvt.c | 556 + extern/SDL3-3.1.0/test/testyuv_cvt.h | 28 + extern/SDL3-3.1.0/test/torturethread.c | 128 + extern/SDL3-3.1.0/test/trashcan.bmp | Bin 0 -> 65674 bytes .../test/unifont-13.0.06-license.txt | 90 + extern/SDL3-3.1.0/test/unifont-13.0.06.hex | 57086 +++++++ extern/SDL3-3.1.0/test/utf8.txt | 287 + .../test/uwp/Package.appxmanifest.in | 52 + extern/SDL3-3.1.0/test/uwp/logo-50x50.png | Bin 0 -> 2421 bytes extern/SDL3-3.1.0/test/uwp/splash-620x300.png | Bin 0 -> 30918 bytes extern/SDL3-3.1.0/test/uwp/square-150x150.png | Bin 0 -> 10605 bytes extern/SDL3-3.1.0/test/uwp/square-44x44.png | Bin 0 -> 2082 bytes .../wayland-protocols/cursor-shape-v1.xml | 147 + .../wayland-protocols/fractional-scale-v1.xml | 102 + .../idle-inhibit-unstable-v1.xml | 83 + .../input-timestamps-unstable-v1.xml | 145 + .../wayland-protocols/kde-output-order-v1.xml | 33 + ...keyboard-shortcuts-inhibit-unstable-v1.xml | 143 + .../pointer-constraints-unstable-v1.xml | 339 + .../primary-selection-unstable-v1.xml | 225 + .../relative-pointer-unstable-v1.xml | 136 + .../wayland-protocols/tablet-unstable-v2.xml | 1178 + .../text-input-unstable-v3.xml | 452 + .../wayland-protocols/viewporter.xml | 186 + .../SDL3-3.1.0/wayland-protocols/wayland.xml | 3151 + .../wayland-protocols/xdg-activation-v1.xml | 186 + .../xdg-decoration-unstable-v1.xml | 156 + .../xdg-foreign-unstable-v2.xml | 200 + .../xdg-output-unstable-v1.xml | 220 + .../wayland-protocols/xdg-shell.xml | 1370 + 1779 files changed, 805649 insertions(+) create mode 100644 .gitignore create mode 100644 blooblib.sln create mode 100644 blooblib/blooblib.vcxproj create mode 100644 blooblib/blooblib.vcxproj.filters create mode 100644 blooblib/blooblib.vcxproj.user create mode 100644 blooblib/src/main.cpp create mode 100644 extern/SDL3-3.1.0/.clang-format create mode 100644 extern/SDL3-3.1.0/.clang-tidy create mode 100644 extern/SDL3-3.1.0/.editorconfig create mode 100644 extern/SDL3-3.1.0/.git-hash create mode 100644 extern/SDL3-3.1.0/.wikiheaders-options create mode 100644 extern/SDL3-3.1.0/Android.mk create mode 100644 extern/SDL3-3.1.0/BUGS.txt create mode 100644 extern/SDL3-3.1.0/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/CREDITS.md create mode 100644 extern/SDL3-3.1.0/INSTALL.md create mode 100644 extern/SDL3-3.1.0/LICENSE.txt create mode 100644 extern/SDL3-3.1.0/README-SDL.txt create mode 100644 extern/SDL3-3.1.0/README.md create mode 100644 extern/SDL3-3.1.0/VERSION.txt create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/SDL.sln create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/SDL/SDL.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/SDL/SDL.vcxproj.filters create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/SDL_test/SDL_test.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/clean.sh create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/logos/Logo100x100.png create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/logos/Logo150x150.png create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/logos/Logo44x44.png create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/logos/Logo480x480.png create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/logos/SplashScreenImage.png create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/PackageLayout.xml create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/testcontroller.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/testcontroller.vcxproj.filters create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/wingdk/MicrosoftGame.config create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/xboxone/MicrosoftGame.config create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/xboxseries/MicrosoftGame.config create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/PackageLayout.xml create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/src/testgdk.cpp create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/testgdk.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/testgdk.vcxproj.filters create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/wingdk/MicrosoftGame.config create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/xboxone/MicrosoftGame.config create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/xboxseries/MicrosoftGame.config create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/PackageLayout.xml create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/testsprite.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/testsprite.vcxproj.filters create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/wingdk/MicrosoftGame.config create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/xboxone/MicrosoftGame.config create mode 100644 extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/xboxseries/MicrosoftGame.config create mode 100644 extern/SDL3-3.1.0/VisualC-WinRT/SDL-UWP.sln create mode 100644 extern/SDL3-3.1.0/VisualC-WinRT/SDL-UWP.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC-WinRT/SDL-UWP.vcxproj.filters create mode 100644 extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/LockScreenLogo.scale-200.png create mode 100644 extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/SplashScreen.scale-200.png create mode 100644 extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/Square150x150Logo.scale-200.png create mode 100644 extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/Square44x44Logo.scale-200.png create mode 100644 extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/StoreLogo.png create mode 100644 extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/Wide310x150Logo.scale-200.png create mode 100644 extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Package.appxmanifest create mode 100644 extern/SDL3-3.1.0/VisualC-WinRT/testdraw/testdraw.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC-WinRT/testdraw/testdraw.vcxproj.filters create mode 100644 extern/SDL3-3.1.0/VisualC/SDL.sln create mode 100644 extern/SDL3-3.1.0/VisualC/SDL/SDL.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/SDL/SDL.vcxproj.filters create mode 100644 extern/SDL3-3.1.0/VisualC/SDL/SDL.vcxproj.user create mode 100644 extern/SDL3-3.1.0/VisualC/SDL_test/SDL_test.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/clean.sh create mode 100644 extern/SDL3-3.1.0/VisualC/pkg-support/cmake/sdl3-config-version.cmake create mode 100644 extern/SDL3-3.1.0/VisualC/pkg-support/cmake/sdl3-config.cmake create mode 100644 extern/SDL3-3.1.0/VisualC/tests/checkkeys/checkkeys.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/loopwave/loopwave.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/loopwave/sample.wav create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testatomic/testatomic.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testautomation/testautomation.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testcontroller/testcontroller.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testdraw/testdraw.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testfile/testfile.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testgl/testgl.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testgles2/testgles2.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testoverlay/moose.dat create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testoverlay/testoverlay.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testpen/testpen.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testplatform/testplatform.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testpower/testpower.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testrendertarget/icon.bmp create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testrendertarget/sample.bmp create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testrendertarget/testrendertarget.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testrumble/testrumble.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testscale/icon.bmp create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testscale/sample.bmp create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testscale/testscale.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testsensor/testsensor.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testshape/testshape.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testsprite/icon.bmp create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testsprite/testsprite.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testsurround/testsurround.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testvulkan/testvulkan.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testwm/testwm.vcxproj create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testyuv/testyuv.bmp create mode 100644 extern/SDL3-3.1.0/VisualC/tests/testyuv/testyuv.vcxproj create mode 100644 extern/SDL3-3.1.0/WhatsNew.txt create mode 100644 extern/SDL3-3.1.0/Xcode/SDL/Info-Framework.plist create mode 100644 extern/SDL3-3.1.0/Xcode/SDL/SDL.xcodeproj/project.pbxproj create mode 100644 extern/SDL3-3.1.0/Xcode/SDL/SDL3/Info.plist create mode 100644 extern/SDL3-3.1.0/Xcode/SDL/pkg-support/SDL.info create mode 100644 extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/CMake/sdl3-config-version.cmake create mode 100644 extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/CMake/sdl3-config.cmake create mode 100644 extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/License.txt create mode 100644 extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/ReadMe.txt create mode 100644 extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/SDL_DS_Store create mode 100644 extern/SDL3-3.1.0/Xcode/SDL/pkg-support/sdl_logo.pdf create mode 100644 extern/SDL3-3.1.0/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj create mode 100644 extern/SDL3-3.1.0/Xcode/SDLTest/config.xcconfig create mode 100644 extern/SDL3-3.1.0/Xcode/XcodeDocSet/Doxyfile create mode 100644 extern/SDL3-3.1.0/android-project/app/build.gradle create mode 100644 extern/SDL3-3.1.0/android-project/app/jni/Android.mk create mode 100644 extern/SDL3-3.1.0/android-project/app/jni/Application.mk create mode 100644 extern/SDL3-3.1.0/android-project/app/jni/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/android-project/app/jni/src/Android.mk create mode 100644 extern/SDL3-3.1.0/android-project/app/jni/src/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/android-project/app/proguard-rules.pro create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/AndroidManifest.xml create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDevice.java create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDeviceUSB.java create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/SDL.java create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/SDLAudioManager.java create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/SDLDummyEdit.java create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/SDLInputConnection.java create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/SDLSurface.java create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/res/values/colors.xml create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/res/values/strings.xml create mode 100644 extern/SDL3-3.1.0/android-project/app/src/main/res/values/styles.xml create mode 100644 extern/SDL3-3.1.0/android-project/build.gradle create mode 100644 extern/SDL3-3.1.0/android-project/gradle.properties create mode 100644 extern/SDL3-3.1.0/android-project/gradle/wrapper/gradle-wrapper.jar create mode 100644 extern/SDL3-3.1.0/android-project/gradle/wrapper/gradle-wrapper.properties create mode 100644 extern/SDL3-3.1.0/android-project/gradlew create mode 100644 extern/SDL3-3.1.0/android-project/gradlew.bat create mode 100644 extern/SDL3-3.1.0/android-project/settings.gradle create mode 100644 extern/SDL3-3.1.0/build-scripts/SDL_migration.cocci create mode 100644 extern/SDL3-3.1.0/build-scripts/add-source-to-projects.pl create mode 100644 extern/SDL3-3.1.0/build-scripts/android-prefab.sh create mode 100644 extern/SDL3-3.1.0/build-scripts/androidbuild.sh create mode 100644 extern/SDL3-3.1.0/build-scripts/androidbuildlibs.sh create mode 100644 extern/SDL3-3.1.0/build-scripts/build-release.py create mode 100644 extern/SDL3-3.1.0/build-scripts/check_stdlib_usage.py create mode 100644 extern/SDL3-3.1.0/build-scripts/clang-format-src.sh create mode 100644 extern/SDL3-3.1.0/build-scripts/cmake-toolchain-mingw64-i686.cmake create mode 100644 extern/SDL3-3.1.0/build-scripts/cmake-toolchain-mingw64-x86_64.cmake create mode 100644 extern/SDL3-3.1.0/build-scripts/cmake-toolchain-qnx-aarch64le.cmake create mode 100644 extern/SDL3-3.1.0/build-scripts/cmake-toolchain-qnx-x86_64.cmake create mode 100644 extern/SDL3-3.1.0/build-scripts/codechecker-buildbot.sh create mode 100644 extern/SDL3-3.1.0/build-scripts/fnsince.pl create mode 100644 extern/SDL3-3.1.0/build-scripts/gen_audio_channel_conversion.c create mode 100644 extern/SDL3-3.1.0/build-scripts/gen_audio_resampler_filter.c create mode 100644 extern/SDL3-3.1.0/build-scripts/git-pre-push-hook.pl create mode 100644 extern/SDL3-3.1.0/build-scripts/mkinstalldirs create mode 100644 extern/SDL3-3.1.0/build-scripts/rename_api.py create mode 100644 extern/SDL3-3.1.0/build-scripts/rename_headers.py create mode 100644 extern/SDL3-3.1.0/build-scripts/rename_macros.py create mode 100644 extern/SDL3-3.1.0/build-scripts/rename_symbols.py create mode 100644 extern/SDL3-3.1.0/build-scripts/showrev.sh create mode 100644 extern/SDL3-3.1.0/build-scripts/strip_fPIC.sh create mode 100644 extern/SDL3-3.1.0/build-scripts/test-versioning.sh create mode 100644 extern/SDL3-3.1.0/build-scripts/update-copyright.sh create mode 100644 extern/SDL3-3.1.0/build-scripts/update-version.sh create mode 100644 extern/SDL3-3.1.0/build-scripts/updaterev.sh create mode 100644 extern/SDL3-3.1.0/build-scripts/wikiheaders.pl create mode 100644 extern/SDL3-3.1.0/cmake/3rdparty.cmake create mode 100644 extern/SDL3-3.1.0/cmake/CPackProjectConfig.cmake.in create mode 100644 extern/SDL3-3.1.0/cmake/CheckCPUArchitecture.cmake create mode 100644 extern/SDL3-3.1.0/cmake/FindFFmpeg.cmake create mode 100644 extern/SDL3-3.1.0/cmake/FindLibUSB.cmake create mode 100644 extern/SDL3-3.1.0/cmake/GetGitRevisionDescription.cmake create mode 100644 extern/SDL3-3.1.0/cmake/GetGitRevisionDescription.cmake.in create mode 100644 extern/SDL3-3.1.0/cmake/PkgConfigHelper.cmake create mode 100644 extern/SDL3-3.1.0/cmake/SDL3Config.cmake.in create mode 100644 extern/SDL3-3.1.0/cmake/SDL3jarTargets.cmake.in create mode 100644 extern/SDL3-3.1.0/cmake/android/FindSdlAndroid.cmake create mode 100644 extern/SDL3-3.1.0/cmake/android/FindSdlAndroidBuildTools.cmake create mode 100644 extern/SDL3-3.1.0/cmake/android/FindSdlAndroidPlatform.cmake create mode 100644 extern/SDL3-3.1.0/cmake/android/SdlAndroidFunctions.cmake create mode 100644 extern/SDL3-3.1.0/cmake/android/SdlAndroidScript.cmake create mode 100644 extern/SDL3-3.1.0/cmake/cmake_uninstall.cmake.in create mode 100644 extern/SDL3-3.1.0/cmake/macros.cmake create mode 100644 extern/SDL3-3.1.0/cmake/sdl3.pc.in create mode 100644 extern/SDL3-3.1.0/cmake/sdlchecks.cmake create mode 100644 extern/SDL3-3.1.0/cmake/sdlcompilers.cmake create mode 100644 extern/SDL3-3.1.0/cmake/sdlmanpages.cmake create mode 100644 extern/SDL3-3.1.0/cmake/sdlplatform.cmake create mode 100644 extern/SDL3-3.1.0/cmake/sdltargets.cmake create mode 100644 extern/SDL3-3.1.0/cmake/test/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/cmake/test/inc_sdl_noslash.c create mode 100644 extern/SDL3-3.1.0/cmake/test/inc_sdl_slash.c create mode 100644 extern/SDL3-3.1.0/cmake/test/main_cli.c create mode 100644 extern/SDL3-3.1.0/cmake/test/main_gui.c create mode 100644 extern/SDL3-3.1.0/cmake/test/main_lib.c create mode 100644 extern/SDL3-3.1.0/cmake/test/sdltest.c create mode 100644 extern/SDL3-3.1.0/cmake/test/test_pkgconfig.sh create mode 100644 extern/SDL3-3.1.0/cmake/xxd.py create mode 100644 extern/SDL3-3.1.0/docs/README-android.md create mode 100644 extern/SDL3-3.1.0/docs/README-cmake.md create mode 100644 extern/SDL3-3.1.0/docs/README-contributing.md create mode 100644 extern/SDL3-3.1.0/docs/README-dynapi.md create mode 100644 extern/SDL3-3.1.0/docs/README-emscripten.md create mode 100644 extern/SDL3-3.1.0/docs/README-gdk.md create mode 100644 extern/SDL3-3.1.0/docs/README-highdpi.md create mode 100644 extern/SDL3-3.1.0/docs/README-ios.md create mode 100644 extern/SDL3-3.1.0/docs/README-kmsbsd.md create mode 100644 extern/SDL3-3.1.0/docs/README-linux.md create mode 100644 extern/SDL3-3.1.0/docs/README-macos.md create mode 100644 extern/SDL3-3.1.0/docs/README-main-functions.md create mode 100644 extern/SDL3-3.1.0/docs/README-migration.md create mode 100644 extern/SDL3-3.1.0/docs/README-n3ds.md create mode 100644 extern/SDL3-3.1.0/docs/README-ngage.md create mode 100644 extern/SDL3-3.1.0/docs/README-platforms.md create mode 100644 extern/SDL3-3.1.0/docs/README-porting.md create mode 100644 extern/SDL3-3.1.0/docs/README-ps2.md create mode 100644 extern/SDL3-3.1.0/docs/README-psp.md create mode 100644 extern/SDL3-3.1.0/docs/README-raspberrypi.md create mode 100644 extern/SDL3-3.1.0/docs/README-riscos.md create mode 100644 extern/SDL3-3.1.0/docs/README-touch.md create mode 100644 extern/SDL3-3.1.0/docs/README-versions.md create mode 100644 extern/SDL3-3.1.0/docs/README-visualc.md create mode 100644 extern/SDL3-3.1.0/docs/README-vita.md create mode 100644 extern/SDL3-3.1.0/docs/README-wayland.md create mode 100644 extern/SDL3-3.1.0/docs/README-windows.md create mode 100644 extern/SDL3-3.1.0/docs/README-winrt.md create mode 100644 extern/SDL3-3.1.0/docs/README.md create mode 100644 extern/SDL3-3.1.0/docs/doxyfile create mode 100644 extern/SDL3-3.1.0/docs/release_checklist.md create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_assert.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_atomic.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_audio.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_begin_code.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_bits.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_blendmode.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_camera.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_clipboard.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_close_code.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_copying.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_cpuinfo.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_dialog.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_egl.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_endian.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_error.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_events.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_filesystem.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_gamepad.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_guid.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_haptic.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_hidapi.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_hints.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_init.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_intrin.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_iostream.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_joystick.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_keyboard.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_keycode.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_loadso.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_locale.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_log.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_main.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_main_impl.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_messagebox.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_metal.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_misc.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_mouse.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_mutex.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_oldnames.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_opengl.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_opengl_glext.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_opengles.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_opengles2.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_opengles2_gl2.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_opengles2_gl2ext.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_opengles2_gl2platform.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_opengles2_khrplatform.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_pen.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_pixels.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_platform.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_platform_defines.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_power.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_properties.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_quit.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_rect.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_render.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_revision.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_scancode.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_sensor.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_stdinc.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_storage.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_surface.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_system.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_test.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_test_assert.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_test_common.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_test_compare.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_test_crc32.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_test_font.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_test_fuzzer.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_test_harness.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_test_log.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_test_md5.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_test_memory.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_test_random.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_thread.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_time.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_timer.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_touch.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_version.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_video.h create mode 100644 extern/SDL3-3.1.0/include/SDL3/SDL_vulkan.h create mode 100644 extern/SDL3-3.1.0/include/build_config/SDL_build_config.h create mode 100644 extern/SDL3-3.1.0/include/build_config/SDL_build_config.h.cmake create mode 100644 extern/SDL3-3.1.0/include/build_config/SDL_build_config_android.h create mode 100644 extern/SDL3-3.1.0/include/build_config/SDL_build_config_emscripten.h create mode 100644 extern/SDL3-3.1.0/include/build_config/SDL_build_config_ios.h create mode 100644 extern/SDL3-3.1.0/include/build_config/SDL_build_config_macos.h create mode 100644 extern/SDL3-3.1.0/include/build_config/SDL_build_config_minimal.h create mode 100644 extern/SDL3-3.1.0/include/build_config/SDL_build_config_ngage.h create mode 100644 extern/SDL3-3.1.0/include/build_config/SDL_build_config_windows.h create mode 100644 extern/SDL3-3.1.0/include/build_config/SDL_build_config_wingdk.h create mode 100644 extern/SDL3-3.1.0/include/build_config/SDL_build_config_winrt.h create mode 100644 extern/SDL3-3.1.0/include/build_config/SDL_build_config_xbox.h create mode 100644 extern/SDL3-3.1.0/include/build_config/SDL_revision.h.cmake create mode 100644 extern/SDL3-3.1.0/mingw/pkg-support/INSTALL.txt create mode 100644 extern/SDL3-3.1.0/mingw/pkg-support/Makefile create mode 100644 extern/SDL3-3.1.0/mingw/pkg-support/cmake/sdl3-config-version.cmake create mode 100644 extern/SDL3-3.1.0/mingw/pkg-support/cmake/sdl3-config.cmake create mode 100644 extern/SDL3-3.1.0/src/SDL.c create mode 100644 extern/SDL3-3.1.0/src/SDL_assert.c create mode 100644 extern/SDL3-3.1.0/src/SDL_assert_c.h create mode 100644 extern/SDL3-3.1.0/src/SDL_error.c create mode 100644 extern/SDL3-3.1.0/src/SDL_error_c.h create mode 100644 extern/SDL3-3.1.0/src/SDL_guid.c create mode 100644 extern/SDL3-3.1.0/src/SDL_hashtable.c create mode 100644 extern/SDL3-3.1.0/src/SDL_hashtable.h create mode 100644 extern/SDL3-3.1.0/src/SDL_hints.c create mode 100644 extern/SDL3-3.1.0/src/SDL_hints_c.h create mode 100644 extern/SDL3-3.1.0/src/SDL_internal.h create mode 100644 extern/SDL3-3.1.0/src/SDL_list.c create mode 100644 extern/SDL3-3.1.0/src/SDL_list.h create mode 100644 extern/SDL3-3.1.0/src/SDL_log.c create mode 100644 extern/SDL3-3.1.0/src/SDL_log_c.h create mode 100644 extern/SDL3-3.1.0/src/SDL_properties.c create mode 100644 extern/SDL3-3.1.0/src/SDL_properties_c.h create mode 100644 extern/SDL3-3.1.0/src/SDL_utils.c create mode 100644 extern/SDL3-3.1.0/src/SDL_utils_c.h create mode 100644 extern/SDL3-3.1.0/src/atomic/SDL_atomic.c create mode 100644 extern/SDL3-3.1.0/src/atomic/SDL_spinlock.c create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_audio.c create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_audio_c.h create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_audio_channel_converters.h create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_audio_resampler_filter.h create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_audiocvt.c create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_audiodev.c create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_audiodev_c.h create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_audioqueue.c create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_audioqueue.h create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_audioresample.c create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_audioresample.h create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_audiotypecvt.c create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_mixer.c create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_sysaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_wave.c create mode 100644 extern/SDL3-3.1.0/src/audio/SDL_wave.h create mode 100644 extern/SDL3-3.1.0/src/audio/aaudio/SDL_aaudio.c create mode 100644 extern/SDL3-3.1.0/src/audio/aaudio/SDL_aaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/aaudio/SDL_aaudiofuncs.h create mode 100644 extern/SDL3-3.1.0/src/audio/alsa/SDL_alsa_audio.c create mode 100644 extern/SDL3-3.1.0/src/audio/alsa/SDL_alsa_audio.h create mode 100644 extern/SDL3-3.1.0/src/audio/android/SDL_androidaudio.c create mode 100644 extern/SDL3-3.1.0/src/audio/android/SDL_androidaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/coreaudio/SDL_coreaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/coreaudio/SDL_coreaudio.m create mode 100644 extern/SDL3-3.1.0/src/audio/directsound/SDL_directsound.c create mode 100644 extern/SDL3-3.1.0/src/audio/directsound/SDL_directsound.h create mode 100644 extern/SDL3-3.1.0/src/audio/disk/SDL_diskaudio.c create mode 100644 extern/SDL3-3.1.0/src/audio/disk/SDL_diskaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/dsp/SDL_dspaudio.c create mode 100644 extern/SDL3-3.1.0/src/audio/dsp/SDL_dspaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/dummy/SDL_dummyaudio.c create mode 100644 extern/SDL3-3.1.0/src/audio/dummy/SDL_dummyaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/emscripten/SDL_emscriptenaudio.c create mode 100644 extern/SDL3-3.1.0/src/audio/emscripten/SDL_emscriptenaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/haiku/SDL_haikuaudio.cc create mode 100644 extern/SDL3-3.1.0/src/audio/haiku/SDL_haikuaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/jack/SDL_jackaudio.c create mode 100644 extern/SDL3-3.1.0/src/audio/jack/SDL_jackaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/n3ds/SDL_n3dsaudio.c create mode 100644 extern/SDL3-3.1.0/src/audio/n3ds/SDL_n3dsaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/netbsd/SDL_netbsdaudio.c create mode 100644 extern/SDL3-3.1.0/src/audio/netbsd/SDL_netbsdaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/openslES/SDL_openslES.c create mode 100644 extern/SDL3-3.1.0/src/audio/openslES/SDL_openslES.h create mode 100644 extern/SDL3-3.1.0/src/audio/pipewire/SDL_pipewire.c create mode 100644 extern/SDL3-3.1.0/src/audio/pipewire/SDL_pipewire.h create mode 100644 extern/SDL3-3.1.0/src/audio/ps2/SDL_ps2audio.c create mode 100644 extern/SDL3-3.1.0/src/audio/ps2/SDL_ps2audio.h create mode 100644 extern/SDL3-3.1.0/src/audio/psp/SDL_pspaudio.c create mode 100644 extern/SDL3-3.1.0/src/audio/psp/SDL_pspaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/pulseaudio/SDL_pulseaudio.c create mode 100644 extern/SDL3-3.1.0/src/audio/pulseaudio/SDL_pulseaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/qnx/SDL_qsa_audio.c create mode 100644 extern/SDL3-3.1.0/src/audio/qnx/SDL_qsa_audio.h create mode 100644 extern/SDL3-3.1.0/src/audio/sndio/SDL_sndioaudio.c create mode 100644 extern/SDL3-3.1.0/src/audio/sndio/SDL_sndioaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/vita/SDL_vitaaudio.c create mode 100644 extern/SDL3-3.1.0/src/audio/vita/SDL_vitaaudio.h create mode 100644 extern/SDL3-3.1.0/src/audio/wasapi/SDL_wasapi.c create mode 100644 extern/SDL3-3.1.0/src/audio/wasapi/SDL_wasapi.h create mode 100644 extern/SDL3-3.1.0/src/audio/wasapi/SDL_wasapi_win32.c create mode 100644 extern/SDL3-3.1.0/src/audio/wasapi/SDL_wasapi_winrt.cpp create mode 100644 extern/SDL3-3.1.0/src/camera/SDL_camera.c create mode 100644 extern/SDL3-3.1.0/src/camera/SDL_camera_c.h create mode 100644 extern/SDL3-3.1.0/src/camera/SDL_syscamera.h create mode 100644 extern/SDL3-3.1.0/src/camera/android/SDL_camera_android.c create mode 100644 extern/SDL3-3.1.0/src/camera/coremedia/SDL_camera_coremedia.m create mode 100644 extern/SDL3-3.1.0/src/camera/dummy/SDL_camera_dummy.c create mode 100644 extern/SDL3-3.1.0/src/camera/emscripten/SDL_camera_emscripten.c create mode 100644 extern/SDL3-3.1.0/src/camera/mediafoundation/SDL_camera_mediafoundation.c create mode 100644 extern/SDL3-3.1.0/src/camera/v4l2/SDL_camera_v4l2.c create mode 100644 extern/SDL3-3.1.0/src/core/SDL_core_unsupported.c create mode 100644 extern/SDL3-3.1.0/src/core/SDL_runapp.c create mode 100644 extern/SDL3-3.1.0/src/core/android/SDL_android.c create mode 100644 extern/SDL3-3.1.0/src/core/android/SDL_android.h create mode 100644 extern/SDL3-3.1.0/src/core/freebsd/SDL_evdev_kbd_default_keyaccmap.h create mode 100644 extern/SDL3-3.1.0/src/core/freebsd/SDL_evdev_kbd_freebsd.c create mode 100644 extern/SDL3-3.1.0/src/core/gdk/SDL_gdk.cpp create mode 100644 extern/SDL3-3.1.0/src/core/gdk/SDL_gdk.h create mode 100644 extern/SDL3-3.1.0/src/core/haiku/SDL_BApp.h create mode 100644 extern/SDL3-3.1.0/src/core/haiku/SDL_BeApp.cc create mode 100644 extern/SDL3-3.1.0/src/core/haiku/SDL_BeApp.h create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_dbus.c create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_dbus.h create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_evdev.c create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_evdev.h create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_evdev_capabilities.c create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_evdev_capabilities.h create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_evdev_kbd.c create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_evdev_kbd.h create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_evdev_kbd_default_accents.h create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_evdev_kbd_default_keymap.h create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_fcitx.c create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_fcitx.h create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_ibus.c create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_ibus.h create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_ime.c create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_ime.h create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_sandbox.c create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_sandbox.h create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_system_theme.c create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_system_theme.h create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_threadprio.c create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_udev.c create mode 100644 extern/SDL3-3.1.0/src/core/linux/SDL_udev.h create mode 100644 extern/SDL3-3.1.0/src/core/n3ds/SDL_n3ds.c create mode 100644 extern/SDL3-3.1.0/src/core/ngage/SDL_ngage_runapp.cpp create mode 100644 extern/SDL3-3.1.0/src/core/openbsd/SDL_wscons.h create mode 100644 extern/SDL3-3.1.0/src/core/openbsd/SDL_wscons_kbd.c create mode 100644 extern/SDL3-3.1.0/src/core/openbsd/SDL_wscons_mouse.c create mode 100644 extern/SDL3-3.1.0/src/core/ps2/SDL_ps2.c create mode 100644 extern/SDL3-3.1.0/src/core/psp/SDL_psp.c create mode 100644 extern/SDL3-3.1.0/src/core/unix/SDL_appid.c create mode 100644 extern/SDL3-3.1.0/src/core/unix/SDL_appid.h create mode 100644 extern/SDL3-3.1.0/src/core/unix/SDL_poll.c create mode 100644 extern/SDL3-3.1.0/src/core/unix/SDL_poll.h create mode 100644 extern/SDL3-3.1.0/src/core/windows/SDL_directx.h create mode 100644 extern/SDL3-3.1.0/src/core/windows/SDL_hid.c create mode 100644 extern/SDL3-3.1.0/src/core/windows/SDL_hid.h create mode 100644 extern/SDL3-3.1.0/src/core/windows/SDL_immdevice.c create mode 100644 extern/SDL3-3.1.0/src/core/windows/SDL_immdevice.h create mode 100644 extern/SDL3-3.1.0/src/core/windows/SDL_windows.c create mode 100644 extern/SDL3-3.1.0/src/core/windows/SDL_windows.h create mode 100644 extern/SDL3-3.1.0/src/core/windows/SDL_xinput.c create mode 100644 extern/SDL3-3.1.0/src/core/windows/SDL_xinput.h create mode 100644 extern/SDL3-3.1.0/src/core/windows/pch.c create mode 100644 extern/SDL3-3.1.0/src/core/windows/pch_cpp.cpp create mode 100644 extern/SDL3-3.1.0/src/core/windows/version.rc create mode 100644 extern/SDL3-3.1.0/src/core/winrt/SDL_winrtapp_common.cpp create mode 100644 extern/SDL3-3.1.0/src/core/winrt/SDL_winrtapp_common.h create mode 100644 extern/SDL3-3.1.0/src/core/winrt/SDL_winrtapp_direct3d.cpp create mode 100644 extern/SDL3-3.1.0/src/core/winrt/SDL_winrtapp_direct3d.h create mode 100644 extern/SDL3-3.1.0/src/core/winrt/SDL_winrtapp_xaml.cpp create mode 100644 extern/SDL3-3.1.0/src/core/winrt/SDL_winrtapp_xaml.h create mode 100644 extern/SDL3-3.1.0/src/cpuinfo/SDL_cpuinfo.c create mode 100644 extern/SDL3-3.1.0/src/cpuinfo/SDL_cpuinfo_c.h create mode 100644 extern/SDL3-3.1.0/src/dialog/cocoa/SDL_cocoadialog.m create mode 100644 extern/SDL3-3.1.0/src/dialog/dummy/SDL_dummydialog.c create mode 100644 extern/SDL3-3.1.0/src/dialog/haiku/SDL_haikudialog.cc create mode 100644 extern/SDL3-3.1.0/src/dialog/unix/SDL_portaldialog.c create mode 100644 extern/SDL3-3.1.0/src/dialog/unix/SDL_portaldialog.h create mode 100644 extern/SDL3-3.1.0/src/dialog/unix/SDL_unixdialog.c create mode 100644 extern/SDL3-3.1.0/src/dialog/unix/SDL_zenitydialog.c create mode 100644 extern/SDL3-3.1.0/src/dialog/unix/SDL_zenitydialog.h create mode 100644 extern/SDL3-3.1.0/src/dialog/windows/SDL_windowsdialog.c create mode 100644 extern/SDL3-3.1.0/src/dynapi/SDL_dynapi.c create mode 100644 extern/SDL3-3.1.0/src/dynapi/SDL_dynapi.h create mode 100644 extern/SDL3-3.1.0/src/dynapi/SDL_dynapi.sym create mode 100644 extern/SDL3-3.1.0/src/dynapi/SDL_dynapi_overrides.h create mode 100644 extern/SDL3-3.1.0/src/dynapi/SDL_dynapi_procs.h create mode 100644 extern/SDL3-3.1.0/src/dynapi/SDL_dynapi_unsupported.h create mode 100644 extern/SDL3-3.1.0/src/dynapi/gendynapi.py create mode 100644 extern/SDL3-3.1.0/src/events/SDL_clipboardevents.c create mode 100644 extern/SDL3-3.1.0/src/events/SDL_clipboardevents_c.h create mode 100644 extern/SDL3-3.1.0/src/events/SDL_displayevents.c create mode 100644 extern/SDL3-3.1.0/src/events/SDL_displayevents_c.h create mode 100644 extern/SDL3-3.1.0/src/events/SDL_dropevents.c create mode 100644 extern/SDL3-3.1.0/src/events/SDL_dropevents_c.h create mode 100644 extern/SDL3-3.1.0/src/events/SDL_events.c create mode 100644 extern/SDL3-3.1.0/src/events/SDL_events_c.h create mode 100644 extern/SDL3-3.1.0/src/events/SDL_keyboard.c create mode 100644 extern/SDL3-3.1.0/src/events/SDL_keyboard_c.h create mode 100644 extern/SDL3-3.1.0/src/events/SDL_keysym_to_scancode.c create mode 100644 extern/SDL3-3.1.0/src/events/SDL_keysym_to_scancode_c.h create mode 100644 extern/SDL3-3.1.0/src/events/SDL_mouse.c create mode 100644 extern/SDL3-3.1.0/src/events/SDL_mouse_c.h create mode 100644 extern/SDL3-3.1.0/src/events/SDL_pen.c create mode 100644 extern/SDL3-3.1.0/src/events/SDL_pen_c.h create mode 100644 extern/SDL3-3.1.0/src/events/SDL_quit.c create mode 100644 extern/SDL3-3.1.0/src/events/SDL_scancode_tables.c create mode 100644 extern/SDL3-3.1.0/src/events/SDL_scancode_tables_c.h create mode 100644 extern/SDL3-3.1.0/src/events/SDL_touch.c create mode 100644 extern/SDL3-3.1.0/src/events/SDL_touch_c.h create mode 100644 extern/SDL3-3.1.0/src/events/SDL_windowevents.c create mode 100644 extern/SDL3-3.1.0/src/events/SDL_windowevents_c.h create mode 100644 extern/SDL3-3.1.0/src/events/blank_cursor.h create mode 100644 extern/SDL3-3.1.0/src/events/default_cursor.h create mode 100644 extern/SDL3-3.1.0/src/events/imKStoUCS.c create mode 100644 extern/SDL3-3.1.0/src/events/imKStoUCS.h create mode 100644 extern/SDL3-3.1.0/src/events/scancodes_ascii.h create mode 100644 extern/SDL3-3.1.0/src/events/scancodes_darwin.h create mode 100644 extern/SDL3-3.1.0/src/events/scancodes_linux.h create mode 100644 extern/SDL3-3.1.0/src/events/scancodes_windows.h create mode 100644 extern/SDL3-3.1.0/src/events/scancodes_xfree86.h create mode 100644 extern/SDL3-3.1.0/src/file/SDL_iostream.c create mode 100644 extern/SDL3-3.1.0/src/file/cocoa/SDL_iostreambundlesupport.h create mode 100644 extern/SDL3-3.1.0/src/file/cocoa/SDL_iostreambundlesupport.m create mode 100644 extern/SDL3-3.1.0/src/file/n3ds/SDL_iostreamromfs.c create mode 100644 extern/SDL3-3.1.0/src/file/n3ds/SDL_iostreamromfs.h create mode 100644 extern/SDL3-3.1.0/src/filesystem/SDL_filesystem.c create mode 100644 extern/SDL3-3.1.0/src/filesystem/SDL_sysfilesystem.h create mode 100644 extern/SDL3-3.1.0/src/filesystem/android/SDL_sysfilesystem.c create mode 100644 extern/SDL3-3.1.0/src/filesystem/cocoa/SDL_sysfilesystem.m create mode 100644 extern/SDL3-3.1.0/src/filesystem/dummy/SDL_sysfilesystem.c create mode 100644 extern/SDL3-3.1.0/src/filesystem/dummy/SDL_sysfsops.c create mode 100644 extern/SDL3-3.1.0/src/filesystem/emscripten/SDL_sysfilesystem.c create mode 100644 extern/SDL3-3.1.0/src/filesystem/gdk/SDL_sysfilesystem.cpp create mode 100644 extern/SDL3-3.1.0/src/filesystem/haiku/SDL_sysfilesystem.cc create mode 100644 extern/SDL3-3.1.0/src/filesystem/n3ds/SDL_sysfilesystem.c create mode 100644 extern/SDL3-3.1.0/src/filesystem/posix/SDL_sysfsops.c create mode 100644 extern/SDL3-3.1.0/src/filesystem/ps2/SDL_sysfilesystem.c create mode 100644 extern/SDL3-3.1.0/src/filesystem/psp/SDL_sysfilesystem.c create mode 100644 extern/SDL3-3.1.0/src/filesystem/riscos/SDL_sysfilesystem.c create mode 100644 extern/SDL3-3.1.0/src/filesystem/unix/SDL_sysfilesystem.c create mode 100644 extern/SDL3-3.1.0/src/filesystem/vita/SDL_sysfilesystem.c create mode 100644 extern/SDL3-3.1.0/src/filesystem/windows/SDL_sysfilesystem.c create mode 100644 extern/SDL3-3.1.0/src/filesystem/windows/SDL_sysfsops.c create mode 100644 extern/SDL3-3.1.0/src/filesystem/winrt/SDL_sysfilesystem.cpp create mode 100644 extern/SDL3-3.1.0/src/haptic/SDL_haptic.c create mode 100644 extern/SDL3-3.1.0/src/haptic/SDL_haptic_c.h create mode 100644 extern/SDL3-3.1.0/src/haptic/SDL_syshaptic.h create mode 100644 extern/SDL3-3.1.0/src/haptic/android/SDL_syshaptic.c create mode 100644 extern/SDL3-3.1.0/src/haptic/android/SDL_syshaptic_c.h create mode 100644 extern/SDL3-3.1.0/src/haptic/darwin/SDL_syshaptic.c create mode 100644 extern/SDL3-3.1.0/src/haptic/darwin/SDL_syshaptic_c.h create mode 100644 extern/SDL3-3.1.0/src/haptic/dummy/SDL_syshaptic.c create mode 100644 extern/SDL3-3.1.0/src/haptic/linux/SDL_syshaptic.c create mode 100644 extern/SDL3-3.1.0/src/haptic/windows/SDL_dinputhaptic.c create mode 100644 extern/SDL3-3.1.0/src/haptic/windows/SDL_dinputhaptic_c.h create mode 100644 extern/SDL3-3.1.0/src/haptic/windows/SDL_windowshaptic.c create mode 100644 extern/SDL3-3.1.0/src/haptic/windows/SDL_windowshaptic_c.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/AUTHORS.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/BUILD.autotools.md create mode 100644 extern/SDL3-3.1.0/src/hidapi/BUILD.cmake.md create mode 100644 extern/SDL3-3.1.0/src/hidapi/BUILD.md create mode 100644 extern/SDL3-3.1.0/src/hidapi/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/HACKING.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/LICENSE-bsd.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/LICENSE-gpl3.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/LICENSE-orig.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/LICENSE.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/Makefile.am create mode 100644 extern/SDL3-3.1.0/src/hidapi/README.md create mode 100644 extern/SDL3-3.1.0/src/hidapi/SDL_hidapi.c create mode 100644 extern/SDL3-3.1.0/src/hidapi/SDL_hidapi_android.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/SDL_hidapi_c.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/SDL_hidapi_ios.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/SDL_hidapi_libusb.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/SDL_hidapi_linux.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/SDL_hidapi_mac.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/SDL_hidapi_netbsd.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/SDL_hidapi_steamxbox.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/SDL_hidapi_windows.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/VERSION create mode 100644 extern/SDL3-3.1.0/src/hidapi/android/hid.cpp create mode 100644 extern/SDL3-3.1.0/src/hidapi/android/hid.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/bootstrap create mode 100644 extern/SDL3-3.1.0/src/hidapi/configure.ac create mode 100644 extern/SDL3-3.1.0/src/hidapi/dist/hidapi.podspec create mode 100644 extern/SDL3-3.1.0/src/hidapi/documentation/cmake-gui-drop-down.png create mode 100644 extern/SDL3-3.1.0/src/hidapi/documentation/cmake-gui-highlights.png create mode 100644 extern/SDL3-3.1.0/src/hidapi/doxygen/Doxyfile create mode 100644 extern/SDL3-3.1.0/src/hidapi/doxygen/main_page.md create mode 100644 extern/SDL3-3.1.0/src/hidapi/hidapi/hidapi.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/hidtest/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/hidtest/Makefile.am create mode 100644 extern/SDL3-3.1.0/src/hidapi/hidtest/test.c create mode 100644 extern/SDL3-3.1.0/src/hidapi/ios/hid.m create mode 100644 extern/SDL3-3.1.0/src/hidapi/libusb/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/libusb/Makefile-manual create mode 100644 extern/SDL3-3.1.0/src/hidapi/libusb/Makefile.am create mode 100644 extern/SDL3-3.1.0/src/hidapi/libusb/Makefile.freebsd create mode 100644 extern/SDL3-3.1.0/src/hidapi/libusb/Makefile.haiku create mode 100644 extern/SDL3-3.1.0/src/hidapi/libusb/Makefile.linux create mode 100644 extern/SDL3-3.1.0/src/hidapi/libusb/hid.c create mode 100644 extern/SDL3-3.1.0/src/hidapi/libusb/hidapi_libusb.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/libusb/hidapi_thread_pthread.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/libusb/hidapi_thread_sdl.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/linux/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/linux/Makefile-manual create mode 100644 extern/SDL3-3.1.0/src/hidapi/linux/Makefile.am create mode 100644 extern/SDL3-3.1.0/src/hidapi/linux/hid.c create mode 100644 extern/SDL3-3.1.0/src/hidapi/m4/ax_pthread.m4 create mode 100644 extern/SDL3-3.1.0/src/hidapi/m4/pkg.m4 create mode 100644 extern/SDL3-3.1.0/src/hidapi/mac/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/mac/Makefile-manual create mode 100644 extern/SDL3-3.1.0/src/hidapi/mac/Makefile.am create mode 100644 extern/SDL3-3.1.0/src/hidapi/mac/hid.c create mode 100644 extern/SDL3-3.1.0/src/hidapi/mac/hidapi_darwin.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/meson.build create mode 100644 extern/SDL3-3.1.0/src/hidapi/netbsd/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/netbsd/README.md create mode 100644 extern/SDL3-3.1.0/src/hidapi/netbsd/hid.c create mode 100644 extern/SDL3-3.1.0/src/hidapi/pc/hidapi-hidraw.pc.in create mode 100644 extern/SDL3-3.1.0/src/hidapi/pc/hidapi-libusb.pc.in create mode 100644 extern/SDL3-3.1.0/src/hidapi/pc/hidapi-netbsd.pc.in create mode 100644 extern/SDL3-3.1.0/src/hidapi/pc/hidapi.pc.in create mode 100644 extern/SDL3-3.1.0/src/hidapi/src/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/src/cmake/hidapi-config.cmake.in create mode 100644 extern/SDL3-3.1.0/src/hidapi/subprojects/README.md create mode 100644 extern/SDL3-3.1.0/src/hidapi/subprojects/hidapi_build_cmake/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/Makefile-manual create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/Makefile.am create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/Makefile.freebsd create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/Makefile.linux create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/Makefile.mac create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/Makefile.mingw create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/TestGUI.app.in/Contents/Info.plist create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/TestGUI.app.in/Contents/PkgInfo create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/TestGUI.app.in/Contents/Resources/English.lproj/InfoPlist.strings create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/TestGUI.app.in/Contents/Resources/Signal11.icns create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/copy_to_bundle.sh create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/mac_support.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/mac_support_cocoa.m create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/test.cpp create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/testgui.sln create mode 100644 extern/SDL3-3.1.0/src/hidapi/testgui/testgui.vcproj create mode 100644 extern/SDL3-3.1.0/src/hidapi/udev/69-hid.rules create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/Makefile-manual create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/Makefile.am create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/Makefile.mingw create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/hid.c create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/hidapi.rc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/hidapi.sln create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/hidapi.vcproj create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/hidapi.vcxproj create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/hidapi_cfgmgr32.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/hidapi_descriptor_reconstruct.c create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/hidapi_descriptor_reconstruct.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/hidapi_hidclass.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/hidapi_hidpi.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/hidapi_hidsdi.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/hidapi_winapi.h create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/hidtest.vcproj create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/hidtest.vcxproj create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/pp_data_dump/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/pp_data_dump/README.md create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/pp_data_dump/pp_data_dump.c create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/045E_02FF_0005_0001.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/045E_02FF_0005_0001_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/045E_02FF_0005_0001_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046A_0011_0006_0001.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046A_0011_0006_0001_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046A_0011_0006_0001_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_0A37_0001_000C.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_0A37_0001_000C_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_0A37_0001_000C_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0001_000C.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0001_000C_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0001_000C_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0001_FF00.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0001_FF00_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0001_FF00_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0002_0001.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0002_0001_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0002_0001_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0002_FF00.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0002_FF00_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0002_FF00_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0006_0001.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0006_0001_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_B010_0006_0001_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C077_0002_0001.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C077_0002_0001_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C077_0002_0001_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C283_0004_0001.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C283_0004_0001_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C283_0004_0001_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C52F_0001_000C.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C52F_0001_000C_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C52F_0001_000C_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C52F_0001_FF00.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C52F_0001_FF00_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C52F_0001_FF00_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C52F_0002_0001.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C52F_0002_0001_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C52F_0002_0001_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C52F_0002_FF00.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C52F_0002_FF00_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C52F_0002_FF00_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0001_000C.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0001_000C_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0001_000C_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0001_FF00.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0001_FF00_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0001_FF00_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0002_0001.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0002_0001_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0002_0001_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0002_FF00.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0002_FF00_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0002_FF00_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0006_0001.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0006_0001_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0006_0001_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0080_0001.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0080_0001_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/046D_C534_0080_0001_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/047F_C056_0001_000C.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/047F_C056_0001_000C_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/047F_C056_0001_000C_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/047F_C056_0003_FFA0.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/047F_C056_0003_FFA0_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/047F_C056_0003_FFA0_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/047F_C056_0005_000B.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/047F_C056_0005_000B_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/047F_C056_0005_000B_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/17CC_1130_0000_FF01.pp_data create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/17CC_1130_0000_FF01_expected.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/data/17CC_1130_0000_FF01_real.rpt_desc create mode 100644 extern/SDL3-3.1.0/src/hidapi/windows/test/hid_report_reconstructor_test.c create mode 100644 extern/SDL3-3.1.0/src/joystick/SDL_gamepad.c create mode 100644 extern/SDL3-3.1.0/src/joystick/SDL_gamepad_c.h create mode 100644 extern/SDL3-3.1.0/src/joystick/SDL_gamepad_db.h create mode 100644 extern/SDL3-3.1.0/src/joystick/SDL_joystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/SDL_joystick_c.h create mode 100644 extern/SDL3-3.1.0/src/joystick/SDL_steam_virtual_gamepad.c create mode 100644 extern/SDL3-3.1.0/src/joystick/SDL_steam_virtual_gamepad.h create mode 100644 extern/SDL3-3.1.0/src/joystick/SDL_sysjoystick.h create mode 100644 extern/SDL3-3.1.0/src/joystick/android/SDL_sysjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/android/SDL_sysjoystick_c.h create mode 100644 extern/SDL3-3.1.0/src/joystick/apple/SDL_mfijoystick.m create mode 100644 extern/SDL3-3.1.0/src/joystick/apple/SDL_mfijoystick_c.h create mode 100644 extern/SDL3-3.1.0/src/joystick/bsd/SDL_bsdjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/check_8bitdo.sh create mode 100644 extern/SDL3-3.1.0/src/joystick/controller_list.h create mode 100644 extern/SDL3-3.1.0/src/joystick/controller_type.c create mode 100644 extern/SDL3-3.1.0/src/joystick/controller_type.h create mode 100644 extern/SDL3-3.1.0/src/joystick/darwin/SDL_iokitjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/darwin/SDL_iokitjoystick_c.h create mode 100644 extern/SDL3-3.1.0/src/joystick/dummy/SDL_sysjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/emscripten/SDL_sysjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/emscripten/SDL_sysjoystick_c.h create mode 100644 extern/SDL3-3.1.0/src/joystick/gdk/SDL_gameinputjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/haiku/SDL_haikujoystick.cc create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_combined.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_gamecube.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_luna.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_nintendo.h create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_ps3.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_ps4.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_ps5.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_rumble.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_rumble.h create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_shield.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_stadia.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_steam.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_steamdeck.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_switch.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_wii.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_xbox360.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_xbox360w.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapi_xboxone.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapijoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/SDL_hidapijoystick_c.h create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/steam/controller_constants.h create mode 100644 extern/SDL3-3.1.0/src/joystick/hidapi/steam/controller_structs.h create mode 100644 extern/SDL3-3.1.0/src/joystick/linux/SDL_sysjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/linux/SDL_sysjoystick_c.h create mode 100644 extern/SDL3-3.1.0/src/joystick/n3ds/SDL_sysjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/ps2/SDL_sysjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/psp/SDL_sysjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/sort_controllers.py create mode 100644 extern/SDL3-3.1.0/src/joystick/steam/SDL_steamcontroller.c create mode 100644 extern/SDL3-3.1.0/src/joystick/steam/SDL_steamcontroller.h create mode 100644 extern/SDL3-3.1.0/src/joystick/usb_ids.h create mode 100644 extern/SDL3-3.1.0/src/joystick/virtual/SDL_virtualjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/virtual/SDL_virtualjoystick_c.h create mode 100644 extern/SDL3-3.1.0/src/joystick/vita/SDL_sysjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/windows/SDL_dinputjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/windows/SDL_dinputjoystick_c.h create mode 100644 extern/SDL3-3.1.0/src/joystick/windows/SDL_rawinputjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/windows/SDL_rawinputjoystick_c.h create mode 100644 extern/SDL3-3.1.0/src/joystick/windows/SDL_windows_gaming_input.c create mode 100644 extern/SDL3-3.1.0/src/joystick/windows/SDL_windowsjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/windows/SDL_windowsjoystick_c.h create mode 100644 extern/SDL3-3.1.0/src/joystick/windows/SDL_xinputjoystick.c create mode 100644 extern/SDL3-3.1.0/src/joystick/windows/SDL_xinputjoystick_c.h create mode 100644 extern/SDL3-3.1.0/src/libm/e_atan2.c create mode 100644 extern/SDL3-3.1.0/src/libm/e_exp.c create mode 100644 extern/SDL3-3.1.0/src/libm/e_fmod.c create mode 100644 extern/SDL3-3.1.0/src/libm/e_log.c create mode 100644 extern/SDL3-3.1.0/src/libm/e_log10.c create mode 100644 extern/SDL3-3.1.0/src/libm/e_pow.c create mode 100644 extern/SDL3-3.1.0/src/libm/e_rem_pio2.c create mode 100644 extern/SDL3-3.1.0/src/libm/e_sqrt.c create mode 100644 extern/SDL3-3.1.0/src/libm/k_cos.c create mode 100644 extern/SDL3-3.1.0/src/libm/k_rem_pio2.c create mode 100644 extern/SDL3-3.1.0/src/libm/k_sin.c create mode 100644 extern/SDL3-3.1.0/src/libm/k_tan.c create mode 100644 extern/SDL3-3.1.0/src/libm/math_libm.h create mode 100644 extern/SDL3-3.1.0/src/libm/math_private.h create mode 100644 extern/SDL3-3.1.0/src/libm/s_atan.c create mode 100644 extern/SDL3-3.1.0/src/libm/s_copysign.c create mode 100644 extern/SDL3-3.1.0/src/libm/s_cos.c create mode 100644 extern/SDL3-3.1.0/src/libm/s_fabs.c create mode 100644 extern/SDL3-3.1.0/src/libm/s_floor.c create mode 100644 extern/SDL3-3.1.0/src/libm/s_modf.c create mode 100644 extern/SDL3-3.1.0/src/libm/s_scalbn.c create mode 100644 extern/SDL3-3.1.0/src/libm/s_sin.c create mode 100644 extern/SDL3-3.1.0/src/libm/s_tan.c create mode 100644 extern/SDL3-3.1.0/src/loadso/dlopen/SDL_sysloadso.c create mode 100644 extern/SDL3-3.1.0/src/loadso/dummy/SDL_sysloadso.c create mode 100644 extern/SDL3-3.1.0/src/loadso/windows/SDL_sysloadso.c create mode 100644 extern/SDL3-3.1.0/src/locale/SDL_locale.c create mode 100644 extern/SDL3-3.1.0/src/locale/SDL_syslocale.h create mode 100644 extern/SDL3-3.1.0/src/locale/android/SDL_syslocale.c create mode 100644 extern/SDL3-3.1.0/src/locale/dummy/SDL_syslocale.c create mode 100644 extern/SDL3-3.1.0/src/locale/emscripten/SDL_syslocale.c create mode 100644 extern/SDL3-3.1.0/src/locale/haiku/SDL_syslocale.cc create mode 100644 extern/SDL3-3.1.0/src/locale/macos/SDL_syslocale.m create mode 100644 extern/SDL3-3.1.0/src/locale/n3ds/SDL_syslocale.c create mode 100644 extern/SDL3-3.1.0/src/locale/unix/SDL_syslocale.c create mode 100644 extern/SDL3-3.1.0/src/locale/vita/SDL_syslocale.c create mode 100644 extern/SDL3-3.1.0/src/locale/windows/SDL_syslocale.c create mode 100644 extern/SDL3-3.1.0/src/locale/winrt/SDL_syslocale.c create mode 100644 extern/SDL3-3.1.0/src/main/SDL_main_callbacks.c create mode 100644 extern/SDL3-3.1.0/src/main/SDL_main_callbacks.h create mode 100644 extern/SDL3-3.1.0/src/main/emscripten/SDL_sysmain_callbacks.c create mode 100644 extern/SDL3-3.1.0/src/main/generic/SDL_sysmain_callbacks.c create mode 100644 extern/SDL3-3.1.0/src/main/ios/SDL_sysmain_callbacks.m create mode 100644 extern/SDL3-3.1.0/src/main/winrt/SDL3-WinRTResource_BlankCursor.cur create mode 100644 extern/SDL3-3.1.0/src/main/winrt/SDL3-WinRTResources.rc create mode 100644 extern/SDL3-3.1.0/src/misc/SDL_sysurl.h create mode 100644 extern/SDL3-3.1.0/src/misc/SDL_url.c create mode 100644 extern/SDL3-3.1.0/src/misc/android/SDL_sysurl.c create mode 100644 extern/SDL3-3.1.0/src/misc/dummy/SDL_sysurl.c create mode 100644 extern/SDL3-3.1.0/src/misc/emscripten/SDL_sysurl.c create mode 100644 extern/SDL3-3.1.0/src/misc/haiku/SDL_sysurl.cc create mode 100644 extern/SDL3-3.1.0/src/misc/ios/SDL_sysurl.m create mode 100644 extern/SDL3-3.1.0/src/misc/macos/SDL_sysurl.m create mode 100644 extern/SDL3-3.1.0/src/misc/riscos/SDL_sysurl.c create mode 100644 extern/SDL3-3.1.0/src/misc/unix/SDL_sysurl.c create mode 100644 extern/SDL3-3.1.0/src/misc/vita/SDL_sysurl.c create mode 100644 extern/SDL3-3.1.0/src/misc/windows/SDL_sysurl.c create mode 100644 extern/SDL3-3.1.0/src/misc/winrt/SDL_sysurl.cpp create mode 100644 extern/SDL3-3.1.0/src/power/SDL_power.c create mode 100644 extern/SDL3-3.1.0/src/power/SDL_syspower.h create mode 100644 extern/SDL3-3.1.0/src/power/android/SDL_syspower.c create mode 100644 extern/SDL3-3.1.0/src/power/emscripten/SDL_syspower.c create mode 100644 extern/SDL3-3.1.0/src/power/haiku/SDL_syspower.c create mode 100644 extern/SDL3-3.1.0/src/power/linux/SDL_syspower.c create mode 100644 extern/SDL3-3.1.0/src/power/macos/SDL_syspower.c create mode 100644 extern/SDL3-3.1.0/src/power/n3ds/SDL_syspower.c create mode 100644 extern/SDL3-3.1.0/src/power/psp/SDL_syspower.c create mode 100644 extern/SDL3-3.1.0/src/power/uikit/SDL_syspower.h create mode 100644 extern/SDL3-3.1.0/src/power/uikit/SDL_syspower.m create mode 100644 extern/SDL3-3.1.0/src/power/vita/SDL_syspower.c create mode 100644 extern/SDL3-3.1.0/src/power/windows/SDL_syspower.c create mode 100644 extern/SDL3-3.1.0/src/power/winrt/SDL_syspower.cpp create mode 100644 extern/SDL3-3.1.0/src/render/SDL_d3dmath.c create mode 100644 extern/SDL3-3.1.0/src/render/SDL_d3dmath.h create mode 100644 extern/SDL3-3.1.0/src/render/SDL_render.c create mode 100644 extern/SDL3-3.1.0/src/render/SDL_render_unsupported.c create mode 100644 extern/SDL3-3.1.0/src/render/SDL_sysrender.h create mode 100644 extern/SDL3-3.1.0/src/render/SDL_yuv_sw.c create mode 100644 extern/SDL3-3.1.0/src/render/SDL_yuv_sw_c.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d/D3D9_PixelShader_YUV.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d/D3D9_PixelShader_YUV.hlsl create mode 100644 extern/SDL3-3.1.0/src/render/direct3d/SDL_render_d3d.c create mode 100644 extern/SDL3-3.1.0/src/render/direct3d/SDL_shaders_d3d.c create mode 100644 extern/SDL3-3.1.0/src/render/direct3d/SDL_shaders_d3d.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d/compile_shaders.bat create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/D3D11_PixelShader_Advanced.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/D3D11_PixelShader_Advanced.hlsl create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/D3D11_PixelShader_Colors.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/D3D11_PixelShader_Colors.hlsl create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/D3D11_PixelShader_Common.hlsli create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/D3D11_PixelShader_Textures.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/D3D11_PixelShader_Textures.hlsl create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/D3D11_VertexShader.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/D3D11_VertexShader.hlsl create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/SDL_render_d3d11.c create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/SDL_render_winrt.cpp create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/SDL_render_winrt.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/SDL_shaders_d3d11.c create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/SDL_shaders_d3d11.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d11/compile_shaders.bat create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_PixelShader_Advanced.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_PixelShader_Advanced.hlsl create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_PixelShader_Colors.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_PixelShader_Colors.hlsl create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_PixelShader_Common.hlsli create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_PixelShader_Textures.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_PixelShader_Textures.hlsl create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_RootSig_Advanced.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_RootSig_Color.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_RootSig_Texture.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_Shader_Common.hlsli create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_VertexShader.hlsl create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_VertexShader_Advanced.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_VertexShader_Color.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/D3D12_VertexShader_Texture.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/SDL_render_d3d12.c create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/SDL_render_d3d12_xbox.cpp create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/SDL_render_d3d12_xbox.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/SDL_shaders_d3d12.c create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/SDL_shaders_d3d12.h create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/SDL_shaders_d3d12_xboxone.cpp create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/SDL_shaders_d3d12_xboxseries.cpp create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/compile_shaders.bat create mode 100644 extern/SDL3-3.1.0/src/render/direct3d12/compile_shaders_xbox.bat create mode 100644 extern/SDL3-3.1.0/src/render/metal/SDL_render_metal.m create mode 100644 extern/SDL3-3.1.0/src/render/metal/SDL_shaders_metal.metal create mode 100644 extern/SDL3-3.1.0/src/render/metal/SDL_shaders_metal_ios.h create mode 100644 extern/SDL3-3.1.0/src/render/metal/SDL_shaders_metal_iphonesimulator.h create mode 100644 extern/SDL3-3.1.0/src/render/metal/SDL_shaders_metal_macos.h create mode 100644 extern/SDL3-3.1.0/src/render/metal/SDL_shaders_metal_tvos.h create mode 100644 extern/SDL3-3.1.0/src/render/metal/SDL_shaders_metal_tvsimulator.h create mode 100644 extern/SDL3-3.1.0/src/render/metal/build-metal-shaders.sh create mode 100644 extern/SDL3-3.1.0/src/render/opengl/SDL_glfuncs.h create mode 100644 extern/SDL3-3.1.0/src/render/opengl/SDL_render_gl.c create mode 100644 extern/SDL3-3.1.0/src/render/opengl/SDL_shaders_gl.c create mode 100644 extern/SDL3-3.1.0/src/render/opengl/SDL_shaders_gl.h create mode 100644 extern/SDL3-3.1.0/src/render/opengles2/SDL_gles2funcs.h create mode 100644 extern/SDL3-3.1.0/src/render/opengles2/SDL_render_gles2.c create mode 100644 extern/SDL3-3.1.0/src/render/opengles2/SDL_shaders_gles2.c create mode 100644 extern/SDL3-3.1.0/src/render/opengles2/SDL_shaders_gles2.h create mode 100644 extern/SDL3-3.1.0/src/render/ps2/SDL_render_ps2.c create mode 100644 extern/SDL3-3.1.0/src/render/psp/SDL_render_psp.c create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_blendfillrect.c create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_blendfillrect.h create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_blendline.c create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_blendline.h create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_blendpoint.c create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_blendpoint.h create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_draw.h create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_drawline.c create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_drawline.h create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_drawpoint.c create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_drawpoint.h create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_render_sw.c create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_render_sw_c.h create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_rotate.c create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_rotate.h create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_triangle.c create mode 100644 extern/SDL3-3.1.0/src/render/software/SDL_triangle.h create mode 100644 extern/SDL3-3.1.0/src/render/vitagxm/SDL_render_vita_gxm.c create mode 100644 extern/SDL3-3.1.0/src/render/vitagxm/SDL_render_vita_gxm_memory.c create mode 100644 extern/SDL3-3.1.0/src/render/vitagxm/SDL_render_vita_gxm_memory.h create mode 100644 extern/SDL3-3.1.0/src/render/vitagxm/SDL_render_vita_gxm_shaders.h create mode 100644 extern/SDL3-3.1.0/src/render/vitagxm/SDL_render_vita_gxm_tools.c create mode 100644 extern/SDL3-3.1.0/src/render/vitagxm/SDL_render_vita_gxm_tools.h create mode 100644 extern/SDL3-3.1.0/src/render/vitagxm/SDL_render_vita_gxm_types.h create mode 100644 extern/SDL3-3.1.0/src/render/vitagxm/shader_src/clear_f.cg create mode 100644 extern/SDL3-3.1.0/src/render/vitagxm/shader_src/clear_v.cg create mode 100644 extern/SDL3-3.1.0/src/render/vitagxm/shader_src/color_f.cg create mode 100644 extern/SDL3-3.1.0/src/render/vitagxm/shader_src/color_v.cg create mode 100644 extern/SDL3-3.1.0/src/render/vitagxm/shader_src/texture_f.cg create mode 100644 extern/SDL3-3.1.0/src/render/vitagxm/shader_src/texture_v.cg create mode 100644 extern/SDL3-3.1.0/src/render/vulkan/SDL_render_vulkan.c create mode 100644 extern/SDL3-3.1.0/src/render/vulkan/SDL_shaders_vulkan.c create mode 100644 extern/SDL3-3.1.0/src/render/vulkan/SDL_shaders_vulkan.h create mode 100644 extern/SDL3-3.1.0/src/render/vulkan/VULKAN_PixelShader_Advanced.h create mode 100644 extern/SDL3-3.1.0/src/render/vulkan/VULKAN_PixelShader_Advanced.hlsl create mode 100644 extern/SDL3-3.1.0/src/render/vulkan/VULKAN_PixelShader_Colors.h create mode 100644 extern/SDL3-3.1.0/src/render/vulkan/VULKAN_PixelShader_Colors.hlsl create mode 100644 extern/SDL3-3.1.0/src/render/vulkan/VULKAN_PixelShader_Common.hlsli create mode 100644 extern/SDL3-3.1.0/src/render/vulkan/VULKAN_PixelShader_Textures.h create mode 100644 extern/SDL3-3.1.0/src/render/vulkan/VULKAN_PixelShader_Textures.hlsl create mode 100644 extern/SDL3-3.1.0/src/render/vulkan/VULKAN_VertexShader.h create mode 100644 extern/SDL3-3.1.0/src/render/vulkan/VULKAN_VertexShader.hlsl create mode 100644 extern/SDL3-3.1.0/src/render/vulkan/compile_shaders.bat create mode 100644 extern/SDL3-3.1.0/src/sensor/SDL_sensor.c create mode 100644 extern/SDL3-3.1.0/src/sensor/SDL_sensor_c.h create mode 100644 extern/SDL3-3.1.0/src/sensor/SDL_syssensor.h create mode 100644 extern/SDL3-3.1.0/src/sensor/android/SDL_androidsensor.c create mode 100644 extern/SDL3-3.1.0/src/sensor/android/SDL_androidsensor.h create mode 100644 extern/SDL3-3.1.0/src/sensor/coremotion/SDL_coremotionsensor.h create mode 100644 extern/SDL3-3.1.0/src/sensor/coremotion/SDL_coremotionsensor.m create mode 100644 extern/SDL3-3.1.0/src/sensor/dummy/SDL_dummysensor.c create mode 100644 extern/SDL3-3.1.0/src/sensor/dummy/SDL_dummysensor.h create mode 100644 extern/SDL3-3.1.0/src/sensor/n3ds/SDL_n3dssensor.c create mode 100644 extern/SDL3-3.1.0/src/sensor/vita/SDL_vitasensor.c create mode 100644 extern/SDL3-3.1.0/src/sensor/vita/SDL_vitasensor.h create mode 100644 extern/SDL3-3.1.0/src/sensor/windows/SDL_windowssensor.c create mode 100644 extern/SDL3-3.1.0/src/sensor/windows/SDL_windowssensor.h create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_crc16.c create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_crc32.c create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_getenv.c create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_iconv.c create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_malloc.c create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_memcpy.c create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_memmove.c create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_memset.c create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_mslibc.c create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_mslibc_x64.masm create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_qsort.c create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_stdlib.c create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_string.c create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_strtokr.c create mode 100644 extern/SDL3-3.1.0/src/stdlib/SDL_vacopy.h create mode 100644 extern/SDL3-3.1.0/src/storage/SDL_storage.c create mode 100644 extern/SDL3-3.1.0/src/storage/SDL_sysstorage.h create mode 100644 extern/SDL3-3.1.0/src/storage/generic/SDL_genericstorage.c create mode 100644 extern/SDL3-3.1.0/src/storage/steam/SDL_steamstorage.c create mode 100644 extern/SDL3-3.1.0/src/storage/steam/SDL_steamstorage_proc.h create mode 100644 extern/SDL3-3.1.0/src/test/SDL_test_assert.c create mode 100644 extern/SDL3-3.1.0/src/test/SDL_test_common.c create mode 100644 extern/SDL3-3.1.0/src/test/SDL_test_compare.c create mode 100644 extern/SDL3-3.1.0/src/test/SDL_test_crc32.c create mode 100644 extern/SDL3-3.1.0/src/test/SDL_test_font.c create mode 100644 extern/SDL3-3.1.0/src/test/SDL_test_fuzzer.c create mode 100644 extern/SDL3-3.1.0/src/test/SDL_test_harness.c create mode 100644 extern/SDL3-3.1.0/src/test/SDL_test_log.c create mode 100644 extern/SDL3-3.1.0/src/test/SDL_test_md5.c create mode 100644 extern/SDL3-3.1.0/src/test/SDL_test_memory.c create mode 100644 extern/SDL3-3.1.0/src/test/SDL_test_random.c create mode 100644 extern/SDL3-3.1.0/src/thread/SDL_systhread.h create mode 100644 extern/SDL3-3.1.0/src/thread/SDL_thread.c create mode 100644 extern/SDL3-3.1.0/src/thread/SDL_thread_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/generic/SDL_syscond.c create mode 100644 extern/SDL3-3.1.0/src/thread/generic/SDL_syscond_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/generic/SDL_sysmutex.c create mode 100644 extern/SDL3-3.1.0/src/thread/generic/SDL_sysmutex_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/generic/SDL_sysrwlock.c create mode 100644 extern/SDL3-3.1.0/src/thread/generic/SDL_sysrwlock_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/generic/SDL_syssem.c create mode 100644 extern/SDL3-3.1.0/src/thread/generic/SDL_systhread.c create mode 100644 extern/SDL3-3.1.0/src/thread/generic/SDL_systhread_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/generic/SDL_systls.c create mode 100644 extern/SDL3-3.1.0/src/thread/n3ds/SDL_syscond.c create mode 100644 extern/SDL3-3.1.0/src/thread/n3ds/SDL_sysmutex.c create mode 100644 extern/SDL3-3.1.0/src/thread/n3ds/SDL_sysmutex_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/n3ds/SDL_syssem.c create mode 100644 extern/SDL3-3.1.0/src/thread/n3ds/SDL_systhread.c create mode 100644 extern/SDL3-3.1.0/src/thread/n3ds/SDL_systhread_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/ngage/SDL_sysmutex.cpp create mode 100644 extern/SDL3-3.1.0/src/thread/ngage/SDL_syssem.cpp create mode 100644 extern/SDL3-3.1.0/src/thread/ngage/SDL_systhread.cpp create mode 100644 extern/SDL3-3.1.0/src/thread/ngage/SDL_systhread_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/ps2/SDL_syssem.c create mode 100644 extern/SDL3-3.1.0/src/thread/ps2/SDL_systhread.c create mode 100644 extern/SDL3-3.1.0/src/thread/ps2/SDL_systhread_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/psp/SDL_sysmutex.c create mode 100644 extern/SDL3-3.1.0/src/thread/psp/SDL_sysmutex_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/psp/SDL_syssem.c create mode 100644 extern/SDL3-3.1.0/src/thread/psp/SDL_systhread.c create mode 100644 extern/SDL3-3.1.0/src/thread/psp/SDL_systhread_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/pthread/SDL_syscond.c create mode 100644 extern/SDL3-3.1.0/src/thread/pthread/SDL_sysmutex.c create mode 100644 extern/SDL3-3.1.0/src/thread/pthread/SDL_sysmutex_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/pthread/SDL_sysrwlock.c create mode 100644 extern/SDL3-3.1.0/src/thread/pthread/SDL_syssem.c create mode 100644 extern/SDL3-3.1.0/src/thread/pthread/SDL_systhread.c create mode 100644 extern/SDL3-3.1.0/src/thread/pthread/SDL_systhread_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/pthread/SDL_systls.c create mode 100644 extern/SDL3-3.1.0/src/thread/stdcpp/SDL_syscond.cpp create mode 100644 extern/SDL3-3.1.0/src/thread/stdcpp/SDL_sysmutex.cpp create mode 100644 extern/SDL3-3.1.0/src/thread/stdcpp/SDL_sysmutex_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/stdcpp/SDL_sysrwlock.cpp create mode 100644 extern/SDL3-3.1.0/src/thread/stdcpp/SDL_systhread.cpp create mode 100644 extern/SDL3-3.1.0/src/thread/stdcpp/SDL_systhread_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/vita/SDL_sysmutex.c create mode 100644 extern/SDL3-3.1.0/src/thread/vita/SDL_sysmutex_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/vita/SDL_syssem.c create mode 100644 extern/SDL3-3.1.0/src/thread/vita/SDL_systhread.c create mode 100644 extern/SDL3-3.1.0/src/thread/vita/SDL_systhread_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/windows/SDL_syscond_cv.c create mode 100644 extern/SDL3-3.1.0/src/thread/windows/SDL_sysmutex.c create mode 100644 extern/SDL3-3.1.0/src/thread/windows/SDL_sysmutex_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/windows/SDL_sysrwlock_srw.c create mode 100644 extern/SDL3-3.1.0/src/thread/windows/SDL_syssem.c create mode 100644 extern/SDL3-3.1.0/src/thread/windows/SDL_systhread.c create mode 100644 extern/SDL3-3.1.0/src/thread/windows/SDL_systhread_c.h create mode 100644 extern/SDL3-3.1.0/src/thread/windows/SDL_systls.c create mode 100644 extern/SDL3-3.1.0/src/time/SDL_time.c create mode 100644 extern/SDL3-3.1.0/src/time/SDL_time_c.h create mode 100644 extern/SDL3-3.1.0/src/time/n3ds/SDL_systime.c create mode 100644 extern/SDL3-3.1.0/src/time/ps2/SDL_systime.c create mode 100644 extern/SDL3-3.1.0/src/time/psp/SDL_systime.c create mode 100644 extern/SDL3-3.1.0/src/time/unix/SDL_systime.c create mode 100644 extern/SDL3-3.1.0/src/time/vita/SDL_systime.c create mode 100644 extern/SDL3-3.1.0/src/time/windows/SDL_systime.c create mode 100644 extern/SDL3-3.1.0/src/timer/SDL_timer.c create mode 100644 extern/SDL3-3.1.0/src/timer/SDL_timer_c.h create mode 100644 extern/SDL3-3.1.0/src/timer/haiku/SDL_systimer.c create mode 100644 extern/SDL3-3.1.0/src/timer/n3ds/SDL_systimer.c create mode 100644 extern/SDL3-3.1.0/src/timer/ngage/SDL_systimer.cpp create mode 100644 extern/SDL3-3.1.0/src/timer/ps2/SDL_systimer.c create mode 100644 extern/SDL3-3.1.0/src/timer/psp/SDL_systimer.c create mode 100644 extern/SDL3-3.1.0/src/timer/unix/SDL_systimer.c create mode 100644 extern/SDL3-3.1.0/src/timer/vita/SDL_systimer.c create mode 100644 extern/SDL3-3.1.0/src/timer/windows/SDL_systimer.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_RLEaccel.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_RLEaccel_c.h create mode 100644 extern/SDL3-3.1.0/src/video/SDL_blit.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_blit.h create mode 100644 extern/SDL3-3.1.0/src/video/SDL_blit_0.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_blit_1.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_blit_A.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_blit_N.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_blit_auto.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_blit_auto.h create mode 100644 extern/SDL3-3.1.0/src/video/SDL_blit_copy.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_blit_copy.h create mode 100644 extern/SDL3-3.1.0/src/video/SDL_blit_slow.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_blit_slow.h create mode 100644 extern/SDL3-3.1.0/src/video/SDL_bmp.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_clipboard.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_clipboard_c.h create mode 100644 extern/SDL3-3.1.0/src/video/SDL_egl.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_egl_c.h create mode 100644 extern/SDL3-3.1.0/src/video/SDL_fillrect.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_pixels.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_pixels_c.h create mode 100644 extern/SDL3-3.1.0/src/video/SDL_rect.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_rect_c.h create mode 100644 extern/SDL3-3.1.0/src/video/SDL_rect_impl.h create mode 100644 extern/SDL3-3.1.0/src/video/SDL_stretch.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_surface.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_sysvideo.h create mode 100644 extern/SDL3-3.1.0/src/video/SDL_video.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_video_c.h create mode 100644 extern/SDL3-3.1.0/src/video/SDL_video_unsupported.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_vulkan_internal.h create mode 100644 extern/SDL3-3.1.0/src/video/SDL_vulkan_utils.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_yuv.c create mode 100644 extern/SDL3-3.1.0/src/video/SDL_yuv_c.h create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidclipboard.c create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidclipboard.h create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidevents.c create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidevents.h create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidgl.c create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidgl.h create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidkeyboard.c create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidkeyboard.h create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidmessagebox.c create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidmessagebox.h create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidmouse.c create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidmouse.h create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidtouch.c create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidtouch.h create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidvideo.c create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidvideo.h create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidvulkan.c create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidvulkan.h create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidwindow.c create mode 100644 extern/SDL3-3.1.0/src/video/android/SDL_androidwindow.h create mode 100644 extern/SDL3-3.1.0/src/video/arm/pixman-arm-asm.h create mode 100644 extern/SDL3-3.1.0/src/video/arm/pixman-arm-neon-asm.S create mode 100644 extern/SDL3-3.1.0/src/video/arm/pixman-arm-neon-asm.h create mode 100644 extern/SDL3-3.1.0/src/video/arm/pixman-arm-simd-asm.S create mode 100644 extern/SDL3-3.1.0/src/video/arm/pixman-arm-simd-asm.h create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoaclipboard.h create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoaclipboard.m create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoaevents.h create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoaevents.m create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoakeyboard.h create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoakeyboard.m create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoamessagebox.h create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoamessagebox.m create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoametalview.h create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoametalview.m create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoamodes.h create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoamodes.m create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoamouse.h create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoamouse.m create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoaopengl.h create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoaopengl.m create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoaopengles.h create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoaopengles.m create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoashape.h create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoashape.m create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoavideo.h create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoavideo.m create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoavulkan.h create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoavulkan.m create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoawindow.h create mode 100644 extern/SDL3-3.1.0/src/video/cocoa/SDL_cocoawindow.m create mode 100644 extern/SDL3-3.1.0/src/video/dummy/SDL_nullevents.c create mode 100644 extern/SDL3-3.1.0/src/video/dummy/SDL_nullevents_c.h create mode 100644 extern/SDL3-3.1.0/src/video/dummy/SDL_nullframebuffer.c create mode 100644 extern/SDL3-3.1.0/src/video/dummy/SDL_nullframebuffer_c.h create mode 100644 extern/SDL3-3.1.0/src/video/dummy/SDL_nullvideo.c create mode 100644 extern/SDL3-3.1.0/src/video/dummy/SDL_nullvideo.h create mode 100644 extern/SDL3-3.1.0/src/video/emscripten/SDL_emscriptenevents.c create mode 100644 extern/SDL3-3.1.0/src/video/emscripten/SDL_emscriptenevents.h create mode 100644 extern/SDL3-3.1.0/src/video/emscripten/SDL_emscriptenframebuffer.c create mode 100644 extern/SDL3-3.1.0/src/video/emscripten/SDL_emscriptenframebuffer.h create mode 100644 extern/SDL3-3.1.0/src/video/emscripten/SDL_emscriptenmouse.c create mode 100644 extern/SDL3-3.1.0/src/video/emscripten/SDL_emscriptenmouse.h create mode 100644 extern/SDL3-3.1.0/src/video/emscripten/SDL_emscriptenopengles.c create mode 100644 extern/SDL3-3.1.0/src/video/emscripten/SDL_emscriptenopengles.h create mode 100644 extern/SDL3-3.1.0/src/video/emscripten/SDL_emscriptenvideo.c create mode 100644 extern/SDL3-3.1.0/src/video/emscripten/SDL_emscriptenvideo.h create mode 100644 extern/SDL3-3.1.0/src/video/gdk/SDL_gdktextinput.cpp create mode 100644 extern/SDL3-3.1.0/src/video/gdk/SDL_gdktextinput.h create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_BWin.h create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bclipboard.cc create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bclipboard.h create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bevents.cc create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bevents.h create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bframebuffer.cc create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bframebuffer.h create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bkeyboard.cc create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bkeyboard.h create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bmessagebox.cc create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bmessagebox.h create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bmodes.cc create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bmodes.h create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bopengl.cc create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bopengl.h create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bvideo.cc create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bvideo.h create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bwindow.cc create mode 100644 extern/SDL3-3.1.0/src/video/haiku/SDL_bwindow.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/EGL/egl.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/EGL/eglext.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/EGL/eglplatform.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/GLES2/gl2.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/GLES2/gl2ext.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/GLES2/gl2platform.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/KHR/khrplatform.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vk_video/vulkan_video_codec_h264std.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vk_video/vulkan_video_codec_h264std_decode.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vk_video/vulkan_video_codec_h264std_encode.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vk_video/vulkan_video_codec_h265std.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vk_video/vulkan_video_codec_h265std_decode.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vk_video/vulkan_video_codec_h265std_encode.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vk_video/vulkan_video_codecs_common.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vk_icd.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vk_layer.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vk_platform.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vk_sdk_platform.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_android.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_beta.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_core.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_directfb.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_fuchsia.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_ggp.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_ios.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_macos.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_metal.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_screen.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_vi.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_wayland.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_win32.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_xcb.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_xlib.h create mode 100644 extern/SDL3-3.1.0/src/video/khronos/vulkan/vulkan_xlib_xrandr.h create mode 100644 extern/SDL3-3.1.0/src/video/kmsdrm/SDL_kmsdrmdyn.c create mode 100644 extern/SDL3-3.1.0/src/video/kmsdrm/SDL_kmsdrmdyn.h create mode 100644 extern/SDL3-3.1.0/src/video/kmsdrm/SDL_kmsdrmevents.c create mode 100644 extern/SDL3-3.1.0/src/video/kmsdrm/SDL_kmsdrmevents.h create mode 100644 extern/SDL3-3.1.0/src/video/kmsdrm/SDL_kmsdrmmouse.c create mode 100644 extern/SDL3-3.1.0/src/video/kmsdrm/SDL_kmsdrmmouse.h create mode 100644 extern/SDL3-3.1.0/src/video/kmsdrm/SDL_kmsdrmopengles.c create mode 100644 extern/SDL3-3.1.0/src/video/kmsdrm/SDL_kmsdrmopengles.h create mode 100644 extern/SDL3-3.1.0/src/video/kmsdrm/SDL_kmsdrmsym.h create mode 100644 extern/SDL3-3.1.0/src/video/kmsdrm/SDL_kmsdrmvideo.c create mode 100644 extern/SDL3-3.1.0/src/video/kmsdrm/SDL_kmsdrmvideo.h create mode 100644 extern/SDL3-3.1.0/src/video/kmsdrm/SDL_kmsdrmvulkan.c create mode 100644 extern/SDL3-3.1.0/src/video/kmsdrm/SDL_kmsdrmvulkan.h create mode 100644 extern/SDL3-3.1.0/src/video/n3ds/SDL_n3dsevents.c create mode 100644 extern/SDL3-3.1.0/src/video/n3ds/SDL_n3dsevents_c.h create mode 100644 extern/SDL3-3.1.0/src/video/n3ds/SDL_n3dsframebuffer.c create mode 100644 extern/SDL3-3.1.0/src/video/n3ds/SDL_n3dsframebuffer_c.h create mode 100644 extern/SDL3-3.1.0/src/video/n3ds/SDL_n3dsswkb.c create mode 100644 extern/SDL3-3.1.0/src/video/n3ds/SDL_n3dsswkb.h create mode 100644 extern/SDL3-3.1.0/src/video/n3ds/SDL_n3dstouch.c create mode 100644 extern/SDL3-3.1.0/src/video/n3ds/SDL_n3dstouch.h create mode 100644 extern/SDL3-3.1.0/src/video/n3ds/SDL_n3dsvideo.c create mode 100644 extern/SDL3-3.1.0/src/video/n3ds/SDL_n3dsvideo.h create mode 100644 extern/SDL3-3.1.0/src/video/ngage/SDL_ngageevents.cpp create mode 100644 extern/SDL3-3.1.0/src/video/ngage/SDL_ngageevents_c.h create mode 100644 extern/SDL3-3.1.0/src/video/ngage/SDL_ngageframebuffer.cpp create mode 100644 extern/SDL3-3.1.0/src/video/ngage/SDL_ngageframebuffer_c.h create mode 100644 extern/SDL3-3.1.0/src/video/ngage/SDL_ngagevideo.cpp create mode 100644 extern/SDL3-3.1.0/src/video/ngage/SDL_ngagevideo.h create mode 100644 extern/SDL3-3.1.0/src/video/ngage/SDL_ngagewindow.cpp create mode 100644 extern/SDL3-3.1.0/src/video/ngage/SDL_ngagewindow.h create mode 100644 extern/SDL3-3.1.0/src/video/offscreen/SDL_offscreenevents.c create mode 100644 extern/SDL3-3.1.0/src/video/offscreen/SDL_offscreenevents_c.h create mode 100644 extern/SDL3-3.1.0/src/video/offscreen/SDL_offscreenframebuffer.c create mode 100644 extern/SDL3-3.1.0/src/video/offscreen/SDL_offscreenframebuffer_c.h create mode 100644 extern/SDL3-3.1.0/src/video/offscreen/SDL_offscreenopengles.c create mode 100644 extern/SDL3-3.1.0/src/video/offscreen/SDL_offscreenopengles.h create mode 100644 extern/SDL3-3.1.0/src/video/offscreen/SDL_offscreenvideo.c create mode 100644 extern/SDL3-3.1.0/src/video/offscreen/SDL_offscreenvideo.h create mode 100644 extern/SDL3-3.1.0/src/video/offscreen/SDL_offscreenwindow.c create mode 100644 extern/SDL3-3.1.0/src/video/offscreen/SDL_offscreenwindow.h create mode 100644 extern/SDL3-3.1.0/src/video/ps2/SDL_ps2video.c create mode 100644 extern/SDL3-3.1.0/src/video/ps2/SDL_ps2video.h create mode 100644 extern/SDL3-3.1.0/src/video/psp/SDL_pspevents.c create mode 100644 extern/SDL3-3.1.0/src/video/psp/SDL_pspevents_c.h create mode 100644 extern/SDL3-3.1.0/src/video/psp/SDL_pspgl.c create mode 100644 extern/SDL3-3.1.0/src/video/psp/SDL_pspgl_c.h create mode 100644 extern/SDL3-3.1.0/src/video/psp/SDL_pspmouse.c create mode 100644 extern/SDL3-3.1.0/src/video/psp/SDL_pspmouse_c.h create mode 100644 extern/SDL3-3.1.0/src/video/psp/SDL_pspvideo.c create mode 100644 extern/SDL3-3.1.0/src/video/psp/SDL_pspvideo.h create mode 100644 extern/SDL3-3.1.0/src/video/qnx/SDL_qnx.h create mode 100644 extern/SDL3-3.1.0/src/video/qnx/SDL_qnxgl.c create mode 100644 extern/SDL3-3.1.0/src/video/qnx/SDL_qnxkeyboard.c create mode 100644 extern/SDL3-3.1.0/src/video/qnx/SDL_qnxvideo.c create mode 100644 extern/SDL3-3.1.0/src/video/raspberry/SDL_rpievents.c create mode 100644 extern/SDL3-3.1.0/src/video/raspberry/SDL_rpievents_c.h create mode 100644 extern/SDL3-3.1.0/src/video/raspberry/SDL_rpimouse.c create mode 100644 extern/SDL3-3.1.0/src/video/raspberry/SDL_rpimouse.h create mode 100644 extern/SDL3-3.1.0/src/video/raspberry/SDL_rpiopengles.c create mode 100644 extern/SDL3-3.1.0/src/video/raspberry/SDL_rpiopengles.h create mode 100644 extern/SDL3-3.1.0/src/video/raspberry/SDL_rpivideo.c create mode 100644 extern/SDL3-3.1.0/src/video/raspberry/SDL_rpivideo.h create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscosdefs.h create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscosevents.c create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscosevents_c.h create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscosframebuffer.c create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscosframebuffer_c.h create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscosmessagebox.c create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscosmessagebox.h create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscosmodes.c create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscosmodes.h create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscosmouse.c create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscosmouse.h create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscosvideo.c create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscosvideo.h create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscoswindow.c create mode 100644 extern/SDL3-3.1.0/src/video/riscos/SDL_riscoswindow.h create mode 100644 extern/SDL3-3.1.0/src/video/riscos/scancodes_riscos.h create mode 100644 extern/SDL3-3.1.0/src/video/sdlgenblit.pl create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitappdelegate.h create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitappdelegate.m create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitclipboard.h create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitclipboard.m create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitevents.h create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitevents.m create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitmessagebox.h create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitmessagebox.m create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitmetalview.h create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitmetalview.m create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitmodes.h create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitmodes.m create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitopengles.h create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitopengles.m create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitopenglview.h create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitopenglview.m create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitvideo.h create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitvideo.m create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitview.h create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitview.m create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitviewcontroller.h create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitviewcontroller.m create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitvulkan.h create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitvulkan.m create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitwindow.h create mode 100644 extern/SDL3-3.1.0/src/video/uikit/SDL_uikitwindow.m create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitaframebuffer.c create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitaframebuffer.h create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitagl_pvr.c create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitagl_pvr_c.h create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitagles.c create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitagles_c.h create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitagles_pvr.c create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitagles_pvr_c.h create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitakeyboard.c create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitakeyboard.h create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitamessagebox.c create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitamessagebox.h create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitamouse.c create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitamouse_c.h create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitatouch.c create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitatouch.h create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitavideo.c create mode 100644 extern/SDL3-3.1.0/src/video/vita/SDL_vitavideo.h create mode 100644 extern/SDL3-3.1.0/src/video/vivante/SDL_vivanteopengles.c create mode 100644 extern/SDL3-3.1.0/src/video/vivante/SDL_vivanteopengles.h create mode 100644 extern/SDL3-3.1.0/src/video/vivante/SDL_vivanteplatform.c create mode 100644 extern/SDL3-3.1.0/src/video/vivante/SDL_vivanteplatform.h create mode 100644 extern/SDL3-3.1.0/src/video/vivante/SDL_vivantevideo.c create mode 100644 extern/SDL3-3.1.0/src/video/vivante/SDL_vivantevideo.h create mode 100644 extern/SDL3-3.1.0/src/video/vivante/SDL_vivantevulkan.c create mode 100644 extern/SDL3-3.1.0/src/video/vivante/SDL_vivantevulkan.h create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandclipboard.c create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandclipboard.h create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylanddatamanager.c create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylanddatamanager.h create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylanddyn.c create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylanddyn.h create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandevents.c create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandevents_c.h create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandkeyboard.c create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandkeyboard.h create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandmessagebox.c create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandmessagebox.h create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandmouse.c create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandmouse.h create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandopengles.c create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandopengles.h create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandshmbuffer.c create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandshmbuffer.h create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandsym.h create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandvideo.c create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandvideo.h create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandvulkan.c create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandvulkan.h create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandwindow.c create mode 100644 extern/SDL3-3.1.0/src/video/wayland/SDL_waylandwindow.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_msctf.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsclipboard.c create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsclipboard.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsevents.c create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsevents.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsframebuffer.c create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsframebuffer.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowskeyboard.c create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowskeyboard.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsmessagebox.c create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsmessagebox.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsmodes.c create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsmodes.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsmouse.c create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsmouse.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsopengl.c create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsopengl.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsopengles.c create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsopengles.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsshape.c create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsshape.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsvideo.c create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsvideo.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsvulkan.c create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowsvulkan.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowswindow.c create mode 100644 extern/SDL3-3.1.0/src/video/windows/SDL_windowswindow.h create mode 100644 extern/SDL3-3.1.0/src/video/windows/wmmsg.h create mode 100644 extern/SDL3-3.1.0/src/video/winrt/SDL_winrtevents.cpp create mode 100644 extern/SDL3-3.1.0/src/video/winrt/SDL_winrtevents_c.h create mode 100644 extern/SDL3-3.1.0/src/video/winrt/SDL_winrtgamebar.cpp create mode 100644 extern/SDL3-3.1.0/src/video/winrt/SDL_winrtgamebar_cpp.h create mode 100644 extern/SDL3-3.1.0/src/video/winrt/SDL_winrtkeyboard.cpp create mode 100644 extern/SDL3-3.1.0/src/video/winrt/SDL_winrtmessagebox.cpp create mode 100644 extern/SDL3-3.1.0/src/video/winrt/SDL_winrtmessagebox.h create mode 100644 extern/SDL3-3.1.0/src/video/winrt/SDL_winrtmouse.cpp create mode 100644 extern/SDL3-3.1.0/src/video/winrt/SDL_winrtmouse_c.h create mode 100644 extern/SDL3-3.1.0/src/video/winrt/SDL_winrtopengles.cpp create mode 100644 extern/SDL3-3.1.0/src/video/winrt/SDL_winrtopengles.h create mode 100644 extern/SDL3-3.1.0/src/video/winrt/SDL_winrtpointerinput.cpp create mode 100644 extern/SDL3-3.1.0/src/video/winrt/SDL_winrtvideo.cpp create mode 100644 extern/SDL3-3.1.0/src/video/winrt/SDL_winrtvideo_cpp.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11clipboard.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11clipboard.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11dyn.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11dyn.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11events.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11events.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11framebuffer.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11framebuffer.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11keyboard.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11keyboard.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11messagebox.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11messagebox.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11modes.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11modes.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11mouse.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11mouse.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11opengl.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11opengl.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11opengles.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11opengles.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11pen.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11pen.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11shape.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11shape.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11sym.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11touch.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11touch.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11video.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11video.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11vulkan.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11vulkan.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11window.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11window.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11xfixes.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11xfixes.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11xinput2.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/SDL_x11xinput2.h create mode 100644 extern/SDL3-3.1.0/src/video/x11/edid-parse.c create mode 100644 extern/SDL3-3.1.0/src/video/x11/edid.h create mode 100644 extern/SDL3-3.1.0/src/video/yuv2rgb/LICENSE create mode 100644 extern/SDL3-3.1.0/src/video/yuv2rgb/README.md create mode 100644 extern/SDL3-3.1.0/src/video/yuv2rgb/yuv_rgb.h create mode 100644 extern/SDL3-3.1.0/src/video/yuv2rgb/yuv_rgb_common.h create mode 100644 extern/SDL3-3.1.0/src/video/yuv2rgb/yuv_rgb_internal.h create mode 100644 extern/SDL3-3.1.0/src/video/yuv2rgb/yuv_rgb_lsx.c create mode 100644 extern/SDL3-3.1.0/src/video/yuv2rgb/yuv_rgb_lsx.h create mode 100644 extern/SDL3-3.1.0/src/video/yuv2rgb/yuv_rgb_lsx_func.h create mode 100644 extern/SDL3-3.1.0/src/video/yuv2rgb/yuv_rgb_sse.c create mode 100644 extern/SDL3-3.1.0/src/video/yuv2rgb/yuv_rgb_sse.h create mode 100644 extern/SDL3-3.1.0/src/video/yuv2rgb/yuv_rgb_sse_func.h create mode 100644 extern/SDL3-3.1.0/src/video/yuv2rgb/yuv_rgb_std.c create mode 100644 extern/SDL3-3.1.0/src/video/yuv2rgb/yuv_rgb_std.h create mode 100644 extern/SDL3-3.1.0/src/video/yuv2rgb/yuv_rgb_std_func.h create mode 100644 extern/SDL3-3.1.0/test/CMakeLists.txt create mode 100644 extern/SDL3-3.1.0/test/COPYING create mode 100644 extern/SDL3-3.1.0/test/README create mode 100644 extern/SDL3-3.1.0/test/android/cmake/AndroidManifest.xml.cmake create mode 100644 extern/SDL3-3.1.0/test/android/cmake/SDLEntryTestActivity.java.cmake create mode 100644 extern/SDL3-3.1.0/test/android/cmake/SDLTestActivity.java.cmake create mode 100644 extern/SDL3-3.1.0/test/android/cmake/res/values/strings.xml.cmake create mode 100644 extern/SDL3-3.1.0/test/android/cmake/res/xml/shortcuts.xml.cmake create mode 100644 extern/SDL3-3.1.0/test/android/res/drawable/sdl-test_foreground.xml create mode 100644 extern/SDL3-3.1.0/test/android/res/layout/arguments_layout.xml create mode 100644 extern/SDL3-3.1.0/test/android/res/mipmap-anydpi-v26/sdl-test.xml create mode 100644 extern/SDL3-3.1.0/test/android/res/mipmap-anydpi-v26/sdl-test_round.xml create mode 100644 extern/SDL3-3.1.0/test/android/res/mipmap-hdpi/sdl-test.png create mode 100644 extern/SDL3-3.1.0/test/android/res/mipmap-hdpi/sdl-test_round.png create mode 100644 extern/SDL3-3.1.0/test/android/res/mipmap-mdpi/sdl-test.png create mode 100644 extern/SDL3-3.1.0/test/android/res/mipmap-mdpi/sdl-test_round.png create mode 100644 extern/SDL3-3.1.0/test/android/res/mipmap-xhdpi/sdl-test.png create mode 100644 extern/SDL3-3.1.0/test/android/res/mipmap-xhdpi/sdl-test_round.png create mode 100644 extern/SDL3-3.1.0/test/android/res/mipmap-xxhdpi/sdl-test.png create mode 100644 extern/SDL3-3.1.0/test/android/res/mipmap-xxhdpi/sdl-test_round.png create mode 100644 extern/SDL3-3.1.0/test/android/res/mipmap-xxxhdpi/sdl-test.png create mode 100644 extern/SDL3-3.1.0/test/android/res/mipmap-xxxhdpi/sdl-test_round.png create mode 100644 extern/SDL3-3.1.0/test/android/res/values/arg_strings.xml create mode 100644 extern/SDL3-3.1.0/test/android/res/values/sdl-test_background.xml create mode 100644 extern/SDL3-3.1.0/test/audiofile.bmp create mode 100644 extern/SDL3-3.1.0/test/checkkeys.c create mode 100644 extern/SDL3-3.1.0/test/checkkeysthreads.c create mode 100644 extern/SDL3-3.1.0/test/emscripten/joystick-pre.js create mode 100644 extern/SDL3-3.1.0/test/emscripten/server.py create mode 100644 extern/SDL3-3.1.0/test/gamepad_axis.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_axis.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_axis_arrow.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_axis_arrow.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_back.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_back.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_battery_empty.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_battery_empty.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_battery_full.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_battery_full.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_battery_low.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_battery_low.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_battery_medium.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_battery_medium.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_battery_unknown.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_battery_unknown.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_battery_wired.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_battery_wired.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_button.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_button.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_button_background.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_button_background.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_button_small.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_button_small.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_face_abxy.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_face_abxy.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_face_bayx.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_face_bayx.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_face_sony.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_face_sony.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_front.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_front.h create mode 100644 extern/SDL3-3.1.0/test/gamepad_touchpad.bmp create mode 100644 extern/SDL3-3.1.0/test/gamepad_touchpad.h create mode 100644 extern/SDL3-3.1.0/test/gamepadutils.c create mode 100644 extern/SDL3-3.1.0/test/gamepadutils.h create mode 100644 extern/SDL3-3.1.0/test/glass.bmp create mode 100644 extern/SDL3-3.1.0/test/glass.h create mode 100644 extern/SDL3-3.1.0/test/icon.bmp create mode 100644 extern/SDL3-3.1.0/test/icon.h create mode 100644 extern/SDL3-3.1.0/test/logaudiodev.bmp create mode 100644 extern/SDL3-3.1.0/test/loopwave.c create mode 100644 extern/SDL3-3.1.0/test/main.cpp create mode 100644 extern/SDL3-3.1.0/test/moose.dat create mode 100644 extern/SDL3-3.1.0/test/n3ds/logo48x48.png create mode 100644 extern/SDL3-3.1.0/test/physaudiodev.bmp create mode 100644 extern/SDL3-3.1.0/test/picture.xbm create mode 100644 extern/SDL3-3.1.0/test/pretest.c create mode 100644 extern/SDL3-3.1.0/test/relative_mode.markdown create mode 100644 extern/SDL3-3.1.0/test/sample.bmp create mode 100644 extern/SDL3-3.1.0/test/sample.wav create mode 100644 extern/SDL3-3.1.0/test/soundboard.bmp create mode 100644 extern/SDL3-3.1.0/test/soundboard_levels.bmp create mode 100644 extern/SDL3-3.1.0/test/speaker.bmp create mode 100644 extern/SDL3-3.1.0/test/template.test.in create mode 100644 extern/SDL3-3.1.0/test/testatomic.c create mode 100644 extern/SDL3-3.1.0/test/testaudio-art.txt create mode 100644 extern/SDL3-3.1.0/test/testaudio.c create mode 100644 extern/SDL3-3.1.0/test/testaudiocapture.c create mode 100644 extern/SDL3-3.1.0/test/testaudiohotplug.c create mode 100644 extern/SDL3-3.1.0/test/testaudioinfo.c create mode 100644 extern/SDL3-3.1.0/test/testaudiostreamdynamicresample.c create mode 100644 extern/SDL3-3.1.0/test/testautomation.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_audio.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_clipboard.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_events.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_guid.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_hints.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_images.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_images.h create mode 100644 extern/SDL3-3.1.0/test/testautomation_intrinsics.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_iostream.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_joystick.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_keyboard.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_log.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_main.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_math.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_mouse.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_pen.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_pixels.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_platform.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_properties.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_rect.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_render.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_sdltest.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_stdlib.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_subsystems.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_suites.h create mode 100644 extern/SDL3-3.1.0/test/testautomation_surface.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_time.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_timer.c create mode 100644 extern/SDL3-3.1.0/test/testautomation_video.c create mode 100644 extern/SDL3-3.1.0/test/testbounds.c create mode 100644 extern/SDL3-3.1.0/test/testcamera.c create mode 100644 extern/SDL3-3.1.0/test/testcolorspace.c create mode 100644 extern/SDL3-3.1.0/test/testcontroller.c create mode 100644 extern/SDL3-3.1.0/test/testcustomcursor.c create mode 100644 extern/SDL3-3.1.0/test/testdialog.c create mode 100644 extern/SDL3-3.1.0/test/testdisplayinfo.c create mode 100644 extern/SDL3-3.1.0/test/testdraw.c create mode 100644 extern/SDL3-3.1.0/test/testdrawchessboard.c create mode 100644 extern/SDL3-3.1.0/test/testdropfile.c create mode 100644 extern/SDL3-3.1.0/test/testerror.c create mode 100644 extern/SDL3-3.1.0/test/testevdev.c create mode 100644 extern/SDL3-3.1.0/test/testffmpeg.c create mode 100644 extern/SDL3-3.1.0/test/testffmpeg_vulkan.c create mode 100644 extern/SDL3-3.1.0/test/testffmpeg_vulkan.h create mode 100644 extern/SDL3-3.1.0/test/testfile.c create mode 100644 extern/SDL3-3.1.0/test/testfilesystem.c create mode 100644 extern/SDL3-3.1.0/test/testgeometry.c create mode 100644 extern/SDL3-3.1.0/test/testgl.c create mode 100644 extern/SDL3-3.1.0/test/testgles.c create mode 100644 extern/SDL3-3.1.0/test/testgles2.c create mode 100644 extern/SDL3-3.1.0/test/testgles2_sdf.c create mode 100644 extern/SDL3-3.1.0/test/testgles2_sdf_img_normal.bmp create mode 100644 extern/SDL3-3.1.0/test/testgles2_sdf_img_sdf.bmp create mode 100644 extern/SDL3-3.1.0/test/testhaptic.c create mode 100644 extern/SDL3-3.1.0/test/testhittesting.c create mode 100644 extern/SDL3-3.1.0/test/testhotplug.c create mode 100644 extern/SDL3-3.1.0/test/testiconv.c create mode 100644 extern/SDL3-3.1.0/test/testime.c create mode 100644 extern/SDL3-3.1.0/test/testintersections.c create mode 100644 extern/SDL3-3.1.0/test/testkeys.c create mode 100644 extern/SDL3-3.1.0/test/testloadso.c create mode 100644 extern/SDL3-3.1.0/test/testlocale.c create mode 100644 extern/SDL3-3.1.0/test/testlock.c create mode 100644 extern/SDL3-3.1.0/test/testmanymouse.c create mode 100644 extern/SDL3-3.1.0/test/testmessage.c create mode 100644 extern/SDL3-3.1.0/test/testmouse.c create mode 100644 extern/SDL3-3.1.0/test/testmultiaudio.c create mode 100644 extern/SDL3-3.1.0/test/testnative.c create mode 100644 extern/SDL3-3.1.0/test/testnative.h create mode 100644 extern/SDL3-3.1.0/test/testnativecocoa.m create mode 100644 extern/SDL3-3.1.0/test/testnativew32.c create mode 100644 extern/SDL3-3.1.0/test/testnativewayland.c create mode 100644 extern/SDL3-3.1.0/test/testnativex11.c create mode 100644 extern/SDL3-3.1.0/test/testoffscreen.c create mode 100644 extern/SDL3-3.1.0/test/testoverlay.c create mode 100644 extern/SDL3-3.1.0/test/testpen.c create mode 100644 extern/SDL3-3.1.0/test/testplatform.c create mode 100644 extern/SDL3-3.1.0/test/testpopup.c create mode 100644 extern/SDL3-3.1.0/test/testpower.c create mode 100644 extern/SDL3-3.1.0/test/testqsort.c create mode 100644 extern/SDL3-3.1.0/test/testrelative.c create mode 100644 extern/SDL3-3.1.0/test/testrendercopyex.c create mode 100644 extern/SDL3-3.1.0/test/testrendertarget.c create mode 100644 extern/SDL3-3.1.0/test/testresample.c create mode 100644 extern/SDL3-3.1.0/test/testrumble.c create mode 100644 extern/SDL3-3.1.0/test/testrwlock.c create mode 100644 extern/SDL3-3.1.0/test/testscale.c create mode 100644 extern/SDL3-3.1.0/test/testsem.c create mode 100644 extern/SDL3-3.1.0/test/testsensor.c create mode 100644 extern/SDL3-3.1.0/test/testshader.c create mode 100644 extern/SDL3-3.1.0/test/testshape.c create mode 100644 extern/SDL3-3.1.0/test/testsprite.c create mode 100644 extern/SDL3-3.1.0/test/testspriteminimal.c create mode 100644 extern/SDL3-3.1.0/test/teststreaming.c create mode 100644 extern/SDL3-3.1.0/test/testsurround.c create mode 100644 extern/SDL3-3.1.0/test/testthread.c create mode 100644 extern/SDL3-3.1.0/test/testtime.c create mode 100644 extern/SDL3-3.1.0/test/testtimer.c create mode 100644 extern/SDL3-3.1.0/test/testurl.c create mode 100644 extern/SDL3-3.1.0/test/testutils.c create mode 100644 extern/SDL3-3.1.0/test/testutils.h create mode 100644 extern/SDL3-3.1.0/test/testver.c create mode 100644 extern/SDL3-3.1.0/test/testviewport.c create mode 100644 extern/SDL3-3.1.0/test/testvulkan.c create mode 100644 extern/SDL3-3.1.0/test/testwaylandcustom.c create mode 100644 extern/SDL3-3.1.0/test/testwm.c create mode 100644 extern/SDL3-3.1.0/test/testyuv.bmp create mode 100644 extern/SDL3-3.1.0/test/testyuv.c create mode 100644 extern/SDL3-3.1.0/test/testyuv_cvt.c create mode 100644 extern/SDL3-3.1.0/test/testyuv_cvt.h create mode 100644 extern/SDL3-3.1.0/test/torturethread.c create mode 100644 extern/SDL3-3.1.0/test/trashcan.bmp create mode 100644 extern/SDL3-3.1.0/test/unifont-13.0.06-license.txt create mode 100644 extern/SDL3-3.1.0/test/unifont-13.0.06.hex create mode 100644 extern/SDL3-3.1.0/test/utf8.txt create mode 100644 extern/SDL3-3.1.0/test/uwp/Package.appxmanifest.in create mode 100644 extern/SDL3-3.1.0/test/uwp/logo-50x50.png create mode 100644 extern/SDL3-3.1.0/test/uwp/splash-620x300.png create mode 100644 extern/SDL3-3.1.0/test/uwp/square-150x150.png create mode 100644 extern/SDL3-3.1.0/test/uwp/square-44x44.png create mode 100644 extern/SDL3-3.1.0/wayland-protocols/cursor-shape-v1.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/fractional-scale-v1.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/idle-inhibit-unstable-v1.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/input-timestamps-unstable-v1.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/kde-output-order-v1.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/keyboard-shortcuts-inhibit-unstable-v1.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/pointer-constraints-unstable-v1.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/primary-selection-unstable-v1.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/relative-pointer-unstable-v1.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/tablet-unstable-v2.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/text-input-unstable-v3.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/viewporter.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/wayland.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/xdg-activation-v1.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/xdg-decoration-unstable-v1.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/xdg-foreign-unstable-v2.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/xdg-output-unstable-v1.xml create mode 100644 extern/SDL3-3.1.0/wayland-protocols/xdg-shell.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c9ce556 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +################################################################################ +# This .gitignore file was automatically created by Microsoft(R) Visual Studio. +################################################################################ + +.vs +x64 diff --git a/blooblib.sln b/blooblib.sln new file mode 100644 index 0000000..7e754c1 --- /dev/null +++ b/blooblib.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.8.34330.188 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blooblib", "blooblib\blooblib.vcxproj", "{CF7A4698-9135-4200-9E68-B8D4F53275D7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CF7A4698-9135-4200-9E68-B8D4F53275D7}.Debug|x64.ActiveCfg = Debug|x64 + {CF7A4698-9135-4200-9E68-B8D4F53275D7}.Debug|x64.Build.0 = Debug|x64 + {CF7A4698-9135-4200-9E68-B8D4F53275D7}.Debug|x86.ActiveCfg = Debug|Win32 + {CF7A4698-9135-4200-9E68-B8D4F53275D7}.Debug|x86.Build.0 = Debug|Win32 + {CF7A4698-9135-4200-9E68-B8D4F53275D7}.Release|x64.ActiveCfg = Release|x64 + {CF7A4698-9135-4200-9E68-B8D4F53275D7}.Release|x64.Build.0 = Release|x64 + {CF7A4698-9135-4200-9E68-B8D4F53275D7}.Release|x86.ActiveCfg = Release|Win32 + {CF7A4698-9135-4200-9E68-B8D4F53275D7}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FFE4497E-9892-4D9E-8F2A-C7C3FA9B95DA} + EndGlobalSection +EndGlobal diff --git a/blooblib/blooblib.vcxproj b/blooblib/blooblib.vcxproj new file mode 100644 index 0000000..f55d83c --- /dev/null +++ b/blooblib/blooblib.vcxproj @@ -0,0 +1,141 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + + + 17.0 + Win32Proj + {cf7a4698-9135-4200-9e68-b8d4f53275d7} + blooblib + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(SolutionDir)extern\SDL3-3.1.0\include + MultiThreadedDebug + + + Console + true + $(SolutionDir)extern\SDL3-3.1.0\VisualC\x64\Release\SDL3.lib;%(AdditionalDependencies) + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + $(SolutionDir)extern\SDL3-3.1.0\include + MultiThreaded + + + Console + true + true + true + $(SolutionDir)extern\SDL3-3.1.0\VisualC\x64\Release\SDL3.lib;%(AdditionalDependencies) + + + + + + \ No newline at end of file diff --git a/blooblib/blooblib.vcxproj.filters b/blooblib/blooblib.vcxproj.filters new file mode 100644 index 0000000..a12df58 --- /dev/null +++ b/blooblib/blooblib.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + \ No newline at end of file diff --git a/blooblib/blooblib.vcxproj.user b/blooblib/blooblib.vcxproj.user new file mode 100644 index 0000000..966b4ff --- /dev/null +++ b/blooblib/blooblib.vcxproj.user @@ -0,0 +1,6 @@ + + + + true + + \ No newline at end of file diff --git a/blooblib/src/main.cpp b/blooblib/src/main.cpp new file mode 100644 index 0000000..c94df01 --- /dev/null +++ b/blooblib/src/main.cpp @@ -0,0 +1,8 @@ +#include +#include + +int main(int argc, char* argv[]) { + SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS); + std::cout << "Hello World" << std::endl; + return 0; +} diff --git a/extern/SDL3-3.1.0/.clang-format b/extern/SDL3-3.1.0/.clang-format new file mode 100644 index 0000000..4e932d0 --- /dev/null +++ b/extern/SDL3-3.1.0/.clang-format @@ -0,0 +1,91 @@ +--- +AlignConsecutiveMacros: Consecutive +AlignConsecutiveAssignments: None +AlignConsecutiveBitFields: None +AlignConsecutiveDeclarations: None +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: true + +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortEnumsOnASingleLine: true +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLoopsOnASingleLine: false + +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine + +# Custom brace breaking +BreakBeforeBraces: Custom +BraceWrapping: + AfterCaseLabel: true + AfterClass: true + AfterControlStatement: Never + AfterEnum: true + AfterFunction: true + AfterNamespace: true + AfterObjCDeclaration: true + AfterStruct: true + AfterUnion: true + AfterExternBlock: false + BeforeElse: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + +# Make the closing brace of container literals go to a new line +Cpp11BracedListStyle: false + +# Never format includes +IncludeBlocks: Preserve +# clang-format version 4.0 through 12.0: +#SortIncludes: false +# clang-format version 13.0+: +#SortIncludes: Never + +# No length limit, in case it breaks macros, you can +# disable it with /* clang-format off/on */ comments +ColumnLimit: 0 + +IndentWidth: 4 +ContinuationIndentWidth: 4 +IndentCaseLabels: false +IndentCaseBlocks: false +IndentGotoLabels: true +IndentPPDirectives: None +IndentExternBlock: NoIndent + +PointerAlignment: Right +SpaceAfterCStyleCast: false +SpacesInCStyleCastParentheses: false +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeParens: ControlStatements +SpaceAroundPointerQualifiers: Default +SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false + +UseCRLF: false +UseTab: Never + +ForEachMacros: + [ + "spa_list_for_each", + "spa_list_for_each_safe", + "wl_list_for_each", + "wl_list_for_each_safe", + "wl_array_for_each", + "udev_list_entry_foreach", + ] + +--- + diff --git a/extern/SDL3-3.1.0/.clang-tidy b/extern/SDL3-3.1.0/.clang-tidy new file mode 100644 index 0000000..b46d0de --- /dev/null +++ b/extern/SDL3-3.1.0/.clang-tidy @@ -0,0 +1,59 @@ +--- +Checks: > + -*, + bugprone-assert-side-effect, + bugprone-assignment-in-if-condition, + bugprone-bool-pointer-implicit-conversion, + bugprone-dangling-handle, + bugprone-dynamic-static-initializers, + bugprone-infinite-loop, + bugprone-integer-division, + bugprone-macro-repeated-side-effects, + bugprone-misplaced-operator-in-strlen-in-alloc, + bugprone-misplaced-pointer-arithmetic-in-alloc, + bugprone-misplaced-widening-cast, + bugprone-not-null-terminated-result, + bugprone-posix-return, + bugprone-redundant-branch-condition, + bugprone-string-literal-with-embedded-nul, + bugprone-suspicious-memset-usage, + bugprone-suspicious-semicolon, + bugprone-suspicious-string-compare, + bugprone-too-small-loop-variable, + bugprone-unused-return-value, + cert-err33-c, + clang-analyzer-core.*, + clang-analyzer-valist.*, + clang-analyzer-unix.Malloc, + clang-diagnostic-*, + google-readability-casting, + misc-misleading-bidirectional, + misc-misleading-identifier, + misc-misplaced-const, + misc-redundant-expression, + objc-*, + performance-type-promotion-in-math-fn, + readability-avoid-const-params-in-decls, + readability-braces-around-statements, + readability-const-return-type, + readability-duplicate-include, + readability-inconsistent-declaration-parameter-name, + readability-misplaced-array-index, + readability-non-const-parameter, + readability-redundant-control-flow, + readability-redundant-declaration, + readability-redundant-function-ptr-dereference, + readability-redundant-preprocessor, + readability-simplify-boolean-expr + +CheckOptions: + - key: bugprone-assert-side-effect.AssertMacros + value: "SDL_assert, SDL_assert_release, SDL_assert_paranoid, SDL_assert_always, SDL_COMPILE_TIME_ASSERT" + - key: bugprone-misplaced-widening-cast.CheckImplicitCasts + value: true + - key: bugprone-not-null-terminated-result.WantToUseSafeFunctions + value: false # Do not recommend _s functions + +FormatStyle: "file" +HeaderFilterRegex: "*.h$" +WarningsAsErrors: "" diff --git a/extern/SDL3-3.1.0/.editorconfig b/extern/SDL3-3.1.0/.editorconfig new file mode 100644 index 0000000..de2d6de --- /dev/null +++ b/extern/SDL3-3.1.0/.editorconfig @@ -0,0 +1,69 @@ +# For format see editorconfig.org +# Copyright 2022 Collabora Ltd. +# SPDX-License-Identifier: Zlib + +root = true + +[*.{c,cc,cg,cpp,gradle,h,java,m,metal,pl,py,S,sh,txt}] +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.{html,js,json,m4,yml,yaml,vcxproj,vcxproj.filters}] +indent_size = 2 +indent_style = space +trim_tailing_whitespace = true + +[*.xml] +indent_size = 4 +indent_style = space + +[{CMakeLists.txt,cmake/*.cmake}] +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[{cmake/cmake_uninstall.cmake.in,test/CMakeLists.txt,cmake/SDL3Config.cmake.in}] +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[{Makefile.*,*.mk,*.sln,*.pbxproj,*.plist}] +indent_size = 8 +indent_style = tab +tab_width = 8 + +[src/joystick/controller_type.*] +indent_style = tab + +[src/joystick/hidapi/steam/*.h] +indent_style = tab + +[src/libm/*.c] +indent_style = tab + +[src/test/SDL_test_{crc32,md5,random}.c] +indent_size = 2 +indent_style = space + +[src/video/yuv2rgb/*.{c,h}] +indent_style = tab + +[wayland-protocols/*.xml] +indent_size = 2 +indent_style = space + +[*.{markdown,md}] +indent_size = 4 +indent_style = space +# Markdown syntax treats tabs as 4 spaces +tab_width = 4 + +[{*.bat,*.rc}] +end_of_line = crlf + +[*.cocci]' +insert_final_newline = true diff --git a/extern/SDL3-3.1.0/.git-hash b/extern/SDL3-3.1.0/.git-hash new file mode 100644 index 0000000..dd35623 --- /dev/null +++ b/extern/SDL3-3.1.0/.git-hash @@ -0,0 +1 @@ +36e73bdda4471b303d06f215ce054270ac55c284 diff --git a/extern/SDL3-3.1.0/.wikiheaders-options b/extern/SDL3-3.1.0/.wikiheaders-options new file mode 100644 index 0000000..e11b0a7 --- /dev/null +++ b/extern/SDL3-3.1.0/.wikiheaders-options @@ -0,0 +1,17 @@ +projectfullname = SDL +projectshortname = SDL +incsubdir = include/SDL3 +wikisubdir = +readmesubdir = docs +apiprefixregex = (SDL_|SDLK_|KMOD_|AUDIO_) +mainincludefname = SDL3/SDL.h +versionfname = include/SDL3/SDL_version.h +versionmajorregex = \A\#define\s+SDL_MAJOR_VERSION\s+(\d+)\Z +versionminorregex = \A\#define\s+SDL_MINOR_VERSION\s+(\d+)\Z +versionpatchregex = \A\#define\s+SDL_PATCHLEVEL\s+(\d+)\Z +selectheaderregex = \ASDL.*?\.h\Z +projecturl = https://libsdl.org/ +wikiurl = https://wiki.libsdl.org +bugreporturl = https://github.com/libsdl-org/sdlwiki/issues/new +warn_about_missing = 0 +wikipreamble = (This is the documentation for SDL3, which is under heavy development and the API is changing! [SDL2](https://wiki.libsdl.org/SDL2/) is the current stable version!) diff --git a/extern/SDL3-3.1.0/Android.mk b/extern/SDL3-3.1.0/Android.mk new file mode 100644 index 0000000..a60a0d3 --- /dev/null +++ b/extern/SDL3-3.1.0/Android.mk @@ -0,0 +1,145 @@ +LOCAL_PATH := $(call my-dir) + +########################### +# +# SDL shared library +# +########################### + +include $(CLEAR_VARS) + +LOCAL_MODULE := SDL3 + +LOCAL_C_INCLUDES := $(LOCAL_PATH)/include $(LOCAL_PATH)/src + +LOCAL_EXPORT_C_INCLUDES := $(LOCAL_C_INCLUDES) + +LOCAL_SRC_FILES := \ + $(subst $(LOCAL_PATH)/,, \ + $(wildcard $(LOCAL_PATH)/src/*.c) \ + $(wildcard $(LOCAL_PATH)/src/audio/*.c) \ + $(wildcard $(LOCAL_PATH)/src/audio/android/*.c) \ + $(wildcard $(LOCAL_PATH)/src/audio/dummy/*.c) \ + $(wildcard $(LOCAL_PATH)/src/audio/aaudio/*.c) \ + $(wildcard $(LOCAL_PATH)/src/audio/openslES/*.c) \ + $(LOCAL_PATH)/src/atomic/SDL_atomic.c.arm \ + $(LOCAL_PATH)/src/atomic/SDL_spinlock.c.arm \ + $(wildcard $(LOCAL_PATH)/src/camera/*.c) \ + $(wildcard $(LOCAL_PATH)/src/camera/android/*.c) \ + $(wildcard $(LOCAL_PATH)/src/camera/dummy/*.c) \ + $(wildcard $(LOCAL_PATH)/src/core/*.c) \ + $(wildcard $(LOCAL_PATH)/src/core/android/*.c) \ + $(wildcard $(LOCAL_PATH)/src/cpuinfo/*.c) \ + $(wildcard $(LOCAL_PATH)/src/dynapi/*.c) \ + $(wildcard $(LOCAL_PATH)/src/events/*.c) \ + $(wildcard $(LOCAL_PATH)/src/file/*.c) \ + $(wildcard $(LOCAL_PATH)/src/haptic/*.c) \ + $(wildcard $(LOCAL_PATH)/src/haptic/android/*.c) \ + $(wildcard $(LOCAL_PATH)/src/hidapi/*.c) \ + $(wildcard $(LOCAL_PATH)/src/hidapi/android/*.cpp) \ + $(wildcard $(LOCAL_PATH)/src/joystick/*.c) \ + $(wildcard $(LOCAL_PATH)/src/joystick/android/*.c) \ + $(wildcard $(LOCAL_PATH)/src/joystick/hidapi/*.c) \ + $(wildcard $(LOCAL_PATH)/src/joystick/virtual/*.c) \ + $(wildcard $(LOCAL_PATH)/src/loadso/dlopen/*.c) \ + $(wildcard $(LOCAL_PATH)/src/locale/*.c) \ + $(wildcard $(LOCAL_PATH)/src/locale/android/*.c) \ + $(wildcard $(LOCAL_PATH)/src/main/*.c) \ + $(wildcard $(LOCAL_PATH)/src/main/generic/*.c) \ + $(wildcard $(LOCAL_PATH)/src/misc/*.c) \ + $(wildcard $(LOCAL_PATH)/src/misc/android/*.c) \ + $(wildcard $(LOCAL_PATH)/src/power/*.c) \ + $(wildcard $(LOCAL_PATH)/src/power/android/*.c) \ + $(wildcard $(LOCAL_PATH)/src/filesystem/*.c) \ + $(wildcard $(LOCAL_PATH)/src/filesystem/android/*.c) \ + $(wildcard $(LOCAL_PATH)/src/filesystem/posix/*.c) \ + $(wildcard $(LOCAL_PATH)/src/sensor/*.c) \ + $(wildcard $(LOCAL_PATH)/src/sensor/android/*.c) \ + $(wildcard $(LOCAL_PATH)/src/render/*.c) \ + $(wildcard $(LOCAL_PATH)/src/render/*/*.c) \ + $(wildcard $(LOCAL_PATH)/src/stdlib/*.c) \ + $(wildcard $(LOCAL_PATH)/src/thread/*.c) \ + $(wildcard $(LOCAL_PATH)/src/thread/pthread/*.c) \ + $(wildcard $(LOCAL_PATH)/src/time/*.c) \ + $(wildcard $(LOCAL_PATH)/src/time/unix/*.c) \ + $(wildcard $(LOCAL_PATH)/src/timer/*.c) \ + $(wildcard $(LOCAL_PATH)/src/timer/unix/*.c) \ + $(wildcard $(LOCAL_PATH)/src/video/*.c) \ + $(wildcard $(LOCAL_PATH)/src/video/android/*.c) \ + $(wildcard $(LOCAL_PATH)/src/video/yuv2rgb/*.c)) + +LOCAL_CFLAGS += -DGL_GLEXT_PROTOTYPES +LOCAL_CFLAGS += \ + -Wall -Wextra \ + -Wmissing-prototypes \ + -Wunreachable-code-break \ + -Wunneeded-internal-declaration \ + -Wmissing-variable-declarations \ + -Wfloat-conversion \ + -Wshorten-64-to-32 \ + -Wunreachable-code-return \ + -Wshift-sign-overflow \ + -Wstrict-prototypes \ + -Wkeyword-macro \ + +# Warnings we haven't fixed (yet) +LOCAL_CFLAGS += -Wno-unused-parameter -Wno-sign-compare + +LOCAL_CXXFLAGS += -std=gnu++11 + +LOCAL_LDLIBS := -ldl -lGLESv1_CM -lGLESv2 -lOpenSLES -llog -landroid + +LOCAL_LDFLAGS := -Wl,--no-undefined -Wl,--version-script=$(LOCAL_PATH)/src/dynapi/SDL_dynapi.sym + +ifeq ($(NDK_DEBUG),1) + cmd-strip := +endif + +LOCAL_STATIC_LIBRARIES := cpufeatures + +include $(BUILD_SHARED_LIBRARY) + + +########################### +# +# SDL_test static library +# +########################### + +LOCAL_MODULE := SDL3_test + +LOCAL_MODULE_FILENAME := libSDL3_test + +LOCAL_SRC_FILES := \ + $(subst $(LOCAL_PATH)/,, \ + $(wildcard $(LOCAL_PATH)/src/test/*.c)) + +LOCAL_LDLIBS := + +LOCAL_LDFLAGS := + +LOCAL_EXPORT_LDLIBS := + +include $(BUILD_STATIC_LIBRARY) + + +########################### +# +# SDL static library +# +########################### + +LOCAL_MODULE := SDL3_static + +LOCAL_MODULE_FILENAME := libSDL3 + +LOCAL_LDLIBS := + +LOCAL_LDFLAGS := + +LOCAL_EXPORT_LDLIBS := -ldl -lGLESv1_CM -lGLESv2 -llog -landroid + +include $(BUILD_STATIC_LIBRARY) + +$(call import-module,android/cpufeatures) + diff --git a/extern/SDL3-3.1.0/BUGS.txt b/extern/SDL3-3.1.0/BUGS.txt new file mode 100644 index 0000000..b1463e7 --- /dev/null +++ b/extern/SDL3-3.1.0/BUGS.txt @@ -0,0 +1,16 @@ + +Bugs are now managed in the SDL issue tracker, here: + + https://github.com/libsdl-org/SDL/issues + +You may report bugs there, and search to see if a given issue has already + been reported, discussed, and maybe even fixed. + + +You may also find help at the SDL forums/mailing list: + + https://discourse.libsdl.org/ + +Bug reports are welcome here, but we really appreciate if you use the issue + tracker, as bugs discussed on the mailing list may be forgotten or missed. + diff --git a/extern/SDL3-3.1.0/CMakeLists.txt b/extern/SDL3-3.1.0/CMakeLists.txt new file mode 100644 index 0000000..ce02257 --- /dev/null +++ b/extern/SDL3-3.1.0/CMakeLists.txt @@ -0,0 +1,3643 @@ +cmake_minimum_required(VERSION 3.16) + +if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR) + message(FATAL_ERROR "Prevented in-tree build. Please create a build directory outside of the SDL source code and run \"cmake -S ${CMAKE_SOURCE_DIR} -B .\" from there") +endif() + +# MSVC runtime library flags are selected by an abstraction. +set(CMAKE_POLICY_DEFAULT_CMP0091 NEW) + +# See docs/release_checklist.md +project(SDL3 LANGUAGES C VERSION "3.1.0") + +if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) + set(SDL3_SUBPROJECT OFF) +else() + set(SDL3_SUBPROJECT ON) +endif() + +# CMake 3.0 expands the "if(${A})" in "set(OFF 1);set(A OFF);if(${A})" to "if(1)" +# CMake 3.24+ emits a warning when not set. +unset(OFF) +unset(ON) +if(POLICY CMP0054) + cmake_policy(SET CMP0054 NEW) +endif() + +include(CheckLibraryExists) +include(CheckIncludeFile) +include(CheckLanguage) +include(CheckSymbolExists) +include(CheckCSourceCompiles) +include(CheckCSourceRuns) +include(CheckCCompilerFlag) +include(CheckCXXCompilerFlag) +include(CheckStructHasMember) +include(CMakeDependentOption) +include(CMakeParseArguments) +include(CMakePushCheckState) +include(GNUInstallDirs) + +if(NOT DEFINED OpenGL_GL_PREFERENCE) + set(OpenGL_GL_PREFERENCE GLVND) +endif() + +find_package(PkgConfig) + +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/sdlcompilers.cmake") +include("${SDL3_SOURCE_DIR}/cmake/sdlmanpages.cmake") +include("${SDL3_SOURCE_DIR}/cmake/sdlplatform.cmake") +include("${SDL3_SOURCE_DIR}/cmake/sdltargets.cmake") +include("${SDL3_SOURCE_DIR}/cmake/CheckCPUArchitecture.cmake") +include("${SDL3_SOURCE_DIR}/cmake/GetGitRevisionDescription.cmake") +include("${SDL3_SOURCE_DIR}/cmake/3rdparty.cmake") + +SDL_DetectCompiler() +SDL_DetectCPUArchitecture() + +# Increment this if there is an incompatible change - but if that happens, +# we should rename the library from SDL3 to SDL4, at which point this would +# reset to 0 anyway. +set(SDL_SO_VERSION_MAJOR "0") +set(SDL_SO_VERSION_MINOR "${PROJECT_VERSION_MINOR}") +set(SDL_SO_VERSION_PATCH "${PROJECT_VERSION_PATCH}") +set(SDL_SO_VERSION "${SDL_SO_VERSION_MAJOR}.${SDL_SO_VERSION_MINOR}.${SDL_SO_VERSION_PATCH}") + +if(PROJECT_VERSION_MINOR MATCHES "[02468]$") + math(EXPR SDL_DYLIB_COMPAT_VERSION_MAJOR "100 * ${PROJECT_VERSION_MINOR} + 1") + set(SDL_DYLIB_COMPAT_VERSION_MINOR "0") + math(EXPR SDL_DYLIB_CURRENT_VERSION_MAJOR "${SDL_DYLIB_COMPAT_VERSION_MAJOR}") + set(SDL_DYLIB_CURRENT_VERSION_MINOR "${PROJECT_VERSION_PATCH}") +else() + math(EXPR SDL_DYLIB_COMPAT_VERSION_MAJOR "100 * ${PROJECT_VERSION_MINOR} + ${PROJECT_VERSION_PATCH} + 1") + set(SDL_DYLIB_COMPAT_VERSION_MINOR "0") + math(EXPR SDL_DYLIB_CURRENT_VERSION_MAJOR "${SDL_DYLIB_COMPAT_VERSION_MAJOR}") + set(SDL_DYLIB_CURRENT_VERSION_MINOR "0") +endif() +set(SDL_DYLIB_CURRENT_VERSION_PATCH "0") +set(SDL_DYLIB_COMPAT_VERSION_PATCH "0") + +set(SDL_DYLIB_CURRENT_VERSION "${SDL_DYLIB_CURRENT_VERSION_MAJOR}.${SDL_DYLIB_CURRENT_VERSION_MINOR}.${SDL_DYLIB_CURRENT_VERSION_PATCH}") +set(SDL_DYLIB_COMPAT_VERSION "${SDL_DYLIB_COMPAT_VERSION_MAJOR}.${SDL_DYLIB_COMPAT_VERSION_MINOR}.${SDL_DYLIB_COMPAT_VERSION_PATCH}") + +message(DEBUG "SDL_SO_VERSION=${SDL_SO_VERSION} SDL_DYLIB_CURRENT_VERSION=${SDL_DYLIB_CURRENT_VERSION} SDL_DYLIB_COMPAT_VERSION=${SDL_DYLIB_COMPAT_VERSION}") + +set(SDL_FRAMEWORK_VERSION "A") + +set(SDL_CHECK_REQUIRED_INCLUDES "" CACHE STRING "Extra includes (for CMAKE_REQUIRED_INCLUDES)") +set(SDL_CHECK_REQUIRED_LINK_OPTIONS "" CACHE STRING "Extra link options (for CMAKE_REQUIRED_LINK_OPTIONS)") +mark_as_advanced(SDL_CHECK_REQUIRED_INCLUDES SDL_CHECK_REQUIRED_LINK_OPTIONS) + +string(APPEND CMAKE_REQUIRED_FLAGS " -D_GNU_SOURCE=1") +list(APPEND CMAKE_REQUIRED_INCLUDES ${SDL_CHECK_REQUIRED_INCLUDES}) +list(APPEND CMAKE_REQUIRED_LINK_OPTIONS ${SDL_CHECK_REQUIRED_LINK_OPTIONS}) + +# Get the platform +SDL_DetectCMakePlatform() + +# Don't mistake macOS for unix +if(UNIX AND NOT ANDROID AND NOT APPLE AND NOT RISCOS) + set(UNIX_SYS ON) +else() + set(UNIX_SYS OFF) +endif() + +if(UNIX OR APPLE) + set(UNIX_OR_MAC_SYS ON) +else() + set(UNIX_OR_MAC_SYS OFF) +endif() + +# Emscripten pthreads work, but you need to have a non-pthread fallback build +# for systems without support. It's not currently enough to not use +# pthread functions in a pthread-build; it won't start up on unsupported +# browsers. As such, you have to explicitly enable it on Emscripten builds +# for the time being. This default will change to ON once this becomes +# commonly supported in browsers or the Emscripten team makes a single +# binary work everywhere. +if (UNIX_OR_MAC_SYS AND NOT EMSCRIPTEN) + set(SDL_PTHREADS_DEFAULT ON) +else() + set(SDL_PTHREADS_DEFAULT OFF) +endif() + +if(UNIX_SYS OR ANDROID) + set(SDL_CLOCK_GETTIME_DEFAULT ON) +else() + set(SDL_CLOCK_GETTIME_DEFAULT OFF) +endif() + +# The hidraw support doesn't catch Xbox, PS4 and Nintendo controllers, +# so we'll just use libusb when it's available. libusb does not support iOS, +# so we default to yes on iOS. +if(IOS OR TVOS OR VISIONOS OR ANDROID) + set(SDL_HIDAPI_LIBUSB_AVAILABLE FALSE) +else() + set(SDL_HIDAPI_LIBUSB_AVAILABLE TRUE) +endif() + +set(SDL_ASSEMBLY_DEFAULT OFF) +if(USE_CLANG OR USE_GCC OR USE_INTELCC OR MSVC_VERSION GREATER 1400) + set(SDL_ASSEMBLY_DEFAULT ON) +endif() + +set(SDL_GCC_ATOMICS_DEFAULT OFF) +if(USE_GCC OR USE_CLANG OR USE_INTELCC OR USE_QCC) + set(SDL_GCC_ATOMICS_DEFAULT ON) +endif() + +# Default option knobs +set(SDL_LIBC_DEFAULT ON) +set(SDL_SYSTEM_ICONV_DEFAULT ON) +if(WINDOWS OR IOS OR TVOS OR VISIONOS) + set(SDL_SYSTEM_ICONV_DEFAULT OFF) +endif() + +if(MSVC) + dep_option(SDL_STATIC_VCRT "Use /MT for static VC runtimes" ON "NOT WINDOWS_STORE" OFF) + if(SDL_STATIC_VCRT) + if(NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") + endif() + foreach(flag_var + CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO) + if(${flag_var} MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + endif() + endforeach() + endif() + + if(NOT SDL_LIBC) + # Make sure /RTC1 is disabled, otherwise it will use functions from the CRT + foreach(flag_var + CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO) + string(REGEX REPLACE "/RTC(su|[1su])" "" ${flag_var} "${${flag_var}}") + endforeach(flag_var) + endif() + + if(MSVC_CLANG) + # clang-cl treats /W4 as '-Wall -Wextra' -- we don't need -Wextra + foreach(flag_var + CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO) + string(REGEX REPLACE "/W4" "/W3" ${flag_var} "${${flag_var}}") + endforeach(flag_var) + endif() +endif() + +set(SDL_SHARED_DEFAULT ON) +set(SDL_STATIC_DEFAULT ON) + +set(SDL_SHARED_AVAILABLE ON) +set(SDL_STATIC_AVAILABLE ON) + +# All these *_DEFAULT vars will default to ON if not specified, +# so you only need to override them if they need to be disabled. +if(EMSCRIPTEN) + # Set up default values for the currently supported set of subsystems: + # Emscripten/Javascript does not have assembly support, a dynamic library + # loading architecture, or low-level CPU inspection. + set(SDL_ASSEMBLY_DEFAULT OFF) + set(SDL_SHARED_AVAILABLE OFF) +endif() + +if(VITA OR PSP OR PS2 OR N3DS OR RISCOS) + set(SDL_SHARED_AVAILABLE OFF) +endif() + +if((RISCOS OR UNIX_SYS) AND NOT (LINUX OR NETBSD OR OPENBSD)) + set(SDL_OSS_DEFAULT ON) +else() + set(SDL_OSS_DEFAULT OFF) +endif() + +if(SDL_SHARED_DEFAULT AND SDL_STATIC_DEFAULT AND SDL_SHARED_AVAILABLE) + if(DEFINED BUILD_SHARED_LIBS) + # When defined, use BUILD_SHARED_LIBS as default + if(BUILD_SHARED_LIBS) + set(SDL_STATIC_DEFAULT OFF) + else() + set(SDL_SHARED_DEFAULT OFF) + endif() + else() + # Default to just building the shared library + set(SDL_STATIC_DEFAULT OFF) + endif() +endif() + +set(SDL_SUBSYSTEMS ) + +macro(define_sdl_subsystem _name) + cmake_parse_arguments("_ds" "" "" "DEPS" ${ARGN}) + string(TOUPPER ${_name} _uname) + if(NOT DEFINED SDL_${_uname}_DEFAULT) + set(SDL_${_uname}_DEFAULT ON) + endif() + if(_ds_DEPS) + cmake_dependent_option(SDL_${_uname} "Enable the ${_name} subsystem" "${SDL_${_uname}_DEFAULT}" "${_ds_DEPS}" OFF) + else() + option(SDL_${_uname} "Enable the ${_name} subsystem" "${SDL_${_uname}_DEFAULT}") + endif() + list(APPEND SDL_SUBSYSTEMS "${_name}") +endmacro() + +define_sdl_subsystem(Audio) +define_sdl_subsystem(Video) +define_sdl_subsystem(Render DEPS SDL_VIDEO) +define_sdl_subsystem(Camera DEPS SDL_VIDEO) +define_sdl_subsystem(Joystick) +define_sdl_subsystem(Haptic) +define_sdl_subsystem(Hidapi) +define_sdl_subsystem(Power) +define_sdl_subsystem(Sensor) +define_sdl_subsystem(Dialog) + +cmake_dependent_option(SDL_FRAMEWORK "Build SDL libraries as Apple Framework" OFF "APPLE" OFF) +if(SDL_FRAMEWORK) + set(SDL_STATIC_AVAILABLE FALSE) +endif() + +if(UNIX AND NOT ANDROID AND NOT RISCOS AND NOT SDL_FRAMEWORK) + set(SDL_RPATH_DEFAULT ON) +else() + set(SDL_RPATH_DEFAULT OFF) +endif() + +# Allow some projects to be built conditionally. +set_option(SDL_DISABLE_INSTALL "Disable installation of SDL3" ${SDL3_SUBPROJECT}) +cmake_dependent_option(SDL_DISABLE_INSTALL_CPACK "Create binary SDL3 archive using CPack" ${SDL3_SUBPROJECT} "NOT SDL_DISABLE_INSTALL" ON) +cmake_dependent_option(SDL_DISABLE_INSTALL_DOCS "Install docs for SDL3" ${SDL3_SUBPROJECT} "NOT SDL_DISABLE_INSTALL;NOT SDL_FRAMEWORK" ON) +set_option(SDL_DISABLE_UNINSTALL "Disable uninstallation of SDL3" OFF) + +cmake_dependent_option(SDL_DISABLE_ANDROID_JAR "Disable creation of SDL3.jar" ${SDL3_SUBPROJECT} "ANDROID" ON) + +option_string(SDL_ASSERTIONS "Enable internal sanity checks (auto/disabled/release/enabled/paranoid)" "auto") +set_option(SDL_ASSEMBLY "Enable assembly routines" ${SDL_ASSEMBLY_DEFAULT}) +dep_option(SDL_AVX "Use AVX assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF) +dep_option(SDL_AVX2 "Use AVX2 assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF) +dep_option(SDL_AVX512F "Use AVX512F assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF) +dep_option(SDL_SSE "Use SSE assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF) +dep_option(SDL_SSE2 "Use SSE2 assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF) +dep_option(SDL_SSE3 "Use SSE3 assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF) +dep_option(SDL_SSE4_1 "Use SSE4.1 assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF) +dep_option(SDL_SSE4_2 "Use SSE4.2 assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF) +dep_option(SDL_MMX "Use MMX assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_X86 OR SDL_CPU_X64" OFF) +dep_option(SDL_ALTIVEC "Use Altivec assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_POWERPC32 OR SDL_CPU_POWERPC64" OFF) +dep_option(SDL_ARMSIMD "Use SIMD assembly blitters on ARM" OFF "SDL_ASSEMBLY;SDL_CPU_ARM32" OFF) +dep_option(SDL_ARMNEON "Use NEON assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_ARM32 OR SDL_CPU_ARM64" OFF) +dep_option(SDL_ARMNEON_BLITTERS "Use NEON assembly blitters on ARM32" OFF "SDL_VIDEO;SDL_ASSEMBLY;SDL_ARMNEON;SDL_CPU_ARM32" OFF) +dep_option(SDL_LSX "Use LSX assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_LOONGARCH64" OFF) +dep_option(SDL_LASX "Use LASX assembly routines" ON "SDL_ASSEMBLY;SDL_CPU_LOONGARCH64" OFF) + +set_option(SDL_LIBC "Use the system C library" ${SDL_LIBC_DEFAULT}) +set_option(SDL_SYSTEM_ICONV "Use iconv() from system-installed libraries" ${SDL_SYSTEM_ICONV_DEFAULT}) +set_option(SDL_LIBICONV "Prefer iconv() from libiconv, if available, over libc version" OFF) +set_option(SDL_GCC_ATOMICS "Use gcc builtin atomics" ${SDL_GCC_ATOMICS_DEFAULT}) +dep_option(SDL_DBUS "Enable D-Bus support" ON "${UNIX_SYS}" OFF) +dep_option(SDL_DISKAUDIO "Support the disk writer audio driver" ON "SDL_AUDIO" OFF) +dep_option(SDL_DUMMYAUDIO "Support the dummy audio driver" ON "SDL_AUDIO" OFF) +dep_option(SDL_DUMMYVIDEO "Use dummy video driver" ON "SDL_VIDEO" OFF) +dep_option(SDL_IBUS "Enable IBus support" ON "${UNIX_SYS}" OFF) +dep_option(SDL_OPENGL "Include OpenGL support" ON "SDL_VIDEO;NOT VISIONOS" OFF) +dep_option(SDL_OPENGLES "Include OpenGL ES support" ON "SDL_VIDEO;NOT VISIONOS" OFF) +set_option(SDL_PTHREADS "Use POSIX threads for multi-threading" ${SDL_PTHREADS_DEFAULT}) +dep_option(SDL_PTHREADS_SEM "Use pthread semaphores" ON "SDL_PTHREADS" OFF) +dep_option(SDL_OSS "Support the OSS audio API" ${SDL_OSS_DEFAULT} "UNIX_SYS OR RISCOS;SDL_AUDIO" OFF) +dep_option(SDL_ALSA "Support the ALSA audio API" ${UNIX_SYS} "SDL_AUDIO" OFF) +dep_option(SDL_ALSA_SHARED "Dynamically load ALSA audio support" ON "SDL_ALSA" OFF) +dep_option(SDL_JACK "Support the JACK audio API" ${UNIX_SYS} "SDL_AUDIO" OFF) +dep_option(SDL_JACK_SHARED "Dynamically load JACK audio support" ON "SDL_JACK" OFF) +set_option(SDL_PIPEWIRE "Use Pipewire audio" ${UNIX_SYS}) +dep_option(SDL_PIPEWIRE_SHARED "Dynamically load Pipewire support" ON "SDL_PIPEWIRE" OFF) +dep_option(SDL_PULSEAUDIO "Use PulseAudio" ${UNIX_SYS} "SDL_AUDIO" OFF) +dep_option(SDL_PULSEAUDIO_SHARED "Dynamically load PulseAudio support" ON "SDL_PULSEAUDIO" OFF) +dep_option(SDL_SNDIO "Support the sndio audio API" ${UNIX_SYS} "SDL_AUDIO" OFF) +dep_option(SDL_SNDIO_SHARED "Dynamically load the sndio audio API" ON "SDL_SNDIO" OFF) +set_option(SDL_RPATH "Use an rpath when linking SDL" ${SDL_RPATH_DEFAULT}) +set_option(SDL_CLOCK_GETTIME "Use clock_gettime() instead of gettimeofday()" ${SDL_CLOCK_GETTIME_DEFAULT}) +dep_option(SDL_X11 "Use X11 video driver" ${UNIX_SYS} "SDL_VIDEO" OFF) +dep_option(SDL_X11_SHARED "Dynamically load X11 support" ON "SDL_X11" OFF) +set(SDL_X11_OPTIONS Xcursor Xdbe XInput Xfixes Xrandr Xscrnsaver XShape) +foreach(_SUB ${SDL_X11_OPTIONS}) + string(TOUPPER "SDL_X11_${_SUB}" _OPT) + dep_option(${_OPT} "Enable ${_SUB} support" ON "SDL_X11" OFF) +endforeach() +dep_option(SDL_WAYLAND "Use Wayland video driver" ${UNIX_SYS} "SDL_VIDEO" OFF) +dep_option(SDL_WAYLAND_SHARED "Dynamically load Wayland support" ON "SDL_WAYLAND" OFF) +dep_option(SDL_WAYLAND_LIBDECOR "Use client-side window decorations on Wayland" ON "SDL_WAYLAND" OFF) +dep_option(SDL_WAYLAND_LIBDECOR_SHARED "Dynamically load libdecor support" ON "SDL_WAYLAND_LIBDECOR;SDL_WAYLAND_SHARED" OFF) +dep_option(SDL_RPI "Use Raspberry Pi video driver" ON "SDL_VIDEO;UNIX_SYS;SDL_CPU_ARM32 OR SDL_CPU_ARM64" OFF) +dep_option(SDL_ROCKCHIP "Use ROCKCHIP Hardware Acceleration video driver" ON "SDL_VIDEO;UNIX_SYS;SDL_CPU_ARM32 OR SDL_CPU_ARM64" OFF) +dep_option(SDL_COCOA "Use Cocoa video driver" ON "APPLE" OFF) +dep_option(SDL_DIRECTX "Use DirectX for Windows audio/video" ON "SDL_AUDIO OR SDL_VIDEO;WINDOWS" OFF) +dep_option(SDL_XINPUT "Use Xinput for Windows" ON "WINDOWS" OFF) +dep_option(SDL_WASAPI "Use the Windows WASAPI audio driver" ON "WINDOWS;SDL_AUDIO" OFF) +dep_option(SDL_RENDER_D3D "Enable the Direct3D render driver" ON "SDL_RENDER" OFF) +dep_option(SDL_RENDER_METAL "Enable the Metal render driver" ON "SDL_RENDER;${APPLE}" OFF) +dep_option(SDL_VIVANTE "Use Vivante EGL video driver" ON "${UNIX_SYS};SDL_CPU_ARM32" OFF) +dep_option(SDL_VULKAN "Enable Vulkan support" ON "SDL_VIDEO;ANDROID OR APPLE OR LINUX OR WINDOWS" OFF) +dep_option(SDL_RENDER_VULKAN "Enable the Vulkan render driver" ON "SDL_RENDER;SDL_VULKAN;ANDROID OR APPLE OR LINUX OR WINDOWS" OFF) +dep_option(SDL_METAL "Enable Metal support" ON "APPLE" OFF) +dep_option(SDL_KMSDRM "Use KMS DRM video driver" ${UNIX_SYS} "SDL_VIDEO" OFF) +dep_option(SDL_KMSDRM_SHARED "Dynamically load KMS DRM support" ON "SDL_KMSDRM" OFF) +set_option(SDL_OFFSCREEN "Use offscreen video driver" ON) +dep_option(SDL_DUMMYCAMERA "Support the dummy camera driver" ON SDL_CAMERA OFF) +option_string(SDL_BACKGROUNDING_SIGNAL "number to use for magic backgrounding signal or 'OFF'" OFF) +option_string(SDL_FOREGROUNDING_SIGNAL "number to use for magic foregrounding signal or 'OFF'" OFF) +dep_option(SDL_HIDAPI "Enable the HIDAPI subsystem" ON "NOT VISIONOS" OFF) +dep_option(SDL_HIDAPI_LIBUSB "Use libusb for low level joystick drivers" ON SDL_HIDAPI_LIBUSB_AVAILABLE OFF) +dep_option(SDL_HIDAPI_LIBUSB_SHARED "Dynamically load libusb support" ON SDL_HIDAPI_LIBUSB OFF) +dep_option(SDL_HIDAPI_JOYSTICK "Use HIDAPI for low level joystick drivers" ON SDL_HIDAPI OFF) +dep_option(SDL_VIRTUAL_JOYSTICK "Enable the virtual-joystick driver" ON SDL_HIDAPI OFF) +set_option(SDL_LIBUDEV "Enable libudev support" ON) +set_option(SDL_ASAN "Use AddressSanitizer to detect memory errors" OFF) +set_option(SDL_CCACHE "Use Ccache to speed up build" OFF) +set_option(SDL_CLANG_TIDY "Run clang-tidy static analysis" OFF) + +set(SDL_VENDOR_INFO "" CACHE STRING "Vendor name and/or version to add to SDL_REVISION") + +cmake_dependent_option(SDL_SHARED "Build a shared version of the library" ${SDL_SHARED_DEFAULT} ${SDL_SHARED_AVAILABLE} OFF) +cmake_dependent_option(SDL_STATIC "Build a static version of the library" ${SDL_STATIC_DEFAULT} ${SDL_STATIC_AVAILABLE} OFF) +option(SDL_TEST_LIBRARY "Build the SDL3_test library" ON) + +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_LIBRARY OFF) +dep_option(SDL_INSTALL_TESTS "Install test-cases" OFF "NOT SDL_DISABLE_INSTALL;NOT SDL_FRAMEWORK;NOT WINDOWS_STORE" OFF) +dep_option(SDL_TESTS_LINK_SHARED "link tests to shared SDL library" "${SDL_SHARED}" "SDL_SHARED;SDL_STATIC" "${SDL_SHARED}") +set(SDL_TESTS_TIMEOUT_MULTIPLIER "1" CACHE STRING "Timeout multiplier to account for really slow machines") + +if(VITA) + set_option(VIDEO_VITA_PIB "Build with PSVita piglet gles2 support" OFF) + set_option(VIDEO_VITA_PVR "Build with PSVita PVR gles/gles2 support" OFF) +endif() + +set(HAVE_STATIC_PIC "${SDL_STATIC_PIC}") + +if(NOT (SDL_SHARED OR SDL_STATIC)) + message(FATAL_ERROR "SDL_SHARED and SDL_STATIC cannot both be disabled") +endif() + +if(SDL_SHARED) + add_library(SDL3-shared SHARED) + add_library(SDL3::SDL3-shared ALIAS SDL3-shared) + SDL_AddCommonCompilerFlags(SDL3-shared) + if ("c_std_99" IN_LIST CMAKE_C_COMPILE_FEATURES) + target_compile_features(SDL3-shared PRIVATE c_std_99) + else() + message(WARNING "target_compile_features does not know c_std_99 for C compiler") + endif() +endif() + +if(SDL_STATIC) + add_library(SDL3-static STATIC) + add_library(SDL3::SDL3-static ALIAS SDL3-static) + SDL_AddCommonCompilerFlags(SDL3-static) + if ("c_std_99" IN_LIST CMAKE_C_COMPILE_FEATURES) + target_compile_features(SDL3-static PRIVATE c_std_99) + else() + message(WARNING "target_compile_features does not know c_std_99 for C compiler") + endif() +endif() + +if(SDL_TEST_LIBRARY) + add_library(SDL3_test STATIC) + add_library(SDL3::SDL3_test ALIAS SDL3_test) + SDL_AddCommonCompilerFlags(SDL3_test) +endif() + +# Make sure SDL3::SDL3 always exists +if(TARGET SDL3::SDL3-shared) + add_library(SDL3::SDL3 ALIAS SDL3-shared) +else() + add_library(SDL3::SDL3 ALIAS SDL3-static) +endif() + +sdl_pc_link_options("-lSDL3") + +# Enable large file support on 32-bit glibc, so that we can access files +# with large inode numbers +check_symbol_exists("__GLIBC__" "stdlib.h" LIBC_IS_GLIBC) +if (LIBC_IS_GLIBC AND CMAKE_SIZEOF_VOID_P EQUAL 4) + # Enable large file support on 32-bit glibc, so that we can access files with large inode numbers + sdl_compile_definitions(PRIVATE "_FILE_OFFSET_BITS=64") + # Enable 64-bit time_t on 32-bit glibc, so that time stamps remain correct beyond January 2038 + sdl_compile_definitions(PRIVATE "_TIME_BITS=64") +endif() + +if(WINDOWS_STORE) + sdl_compile_definitions(PRIVATE "SDL_BUILDING_WINRT=1") + sdl_compile_options(PRIVATE "-ZW") +endif() + +check_linker_supports_version_file(HAVE_WL_VERSION_SCRIPT) +if(HAVE_WL_VERSION_SCRIPT) + sdl_shared_link_options("-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/src/dynapi/SDL_dynapi.sym") +else() + if((LINUX AND LIBC_IS_GLIBC) OR ANDROID) + message(FATAL_ERROR "Linker does not support '-Wl,--version-script=xxx.sym'. This is required on the current host platform (${SDL_CMAKE_PLATFORM}).") + endif() +endif() + +if(CYGWIN) + # We build SDL on cygwin without the UNIX emulation layer + sdl_include_directories(PUBLIC SYSTEM "/usr/include/mingw") + cmake_push_check_state() + string(APPEND CMAKE_REQUIRED_FLAGS " -mno-cygwin") + check_c_source_compiles("int main(int argc, char **argv) { return 0; }" + HAVE_GCC_NO_CYGWIN) + cmake_pop_check_state() + if(HAVE_GCC_NO_CYGWIN) + sdl_shared_link_options("-mno-cygwin") + endif() +endif() + +# General includes +sdl_compile_definitions(PRIVATE "USING_GENERATED_CONFIG_H") +sdl_include_directories( + PRIVATE + "${SDL3_BINARY_DIR}/include-config-$>" + "${SDL3_BINARY_DIR}/include" + "${SDL3_SOURCE_DIR}/include" +) +# Note: The clang toolset for Visual Studio does not support the '-idirafter' option. +if(USE_GCC OR USE_INTELCC OR (USE_CLANG AND NOT MSVC_CLANG)) + sdl_compile_options(NO_EXPORT PUBLIC "$") +else() + sdl_include_directories(NO_EXPORT SYSTEM PUBLIC "$") +endif() + +# General source files +sdl_glob_sources( + "${SDL3_SOURCE_DIR}/src/*.c" + "${SDL3_SOURCE_DIR}/src/atomic/*.c" + "${SDL3_SOURCE_DIR}/src/audio/*.c" + "${SDL3_SOURCE_DIR}/src/camera/*.c" + "${SDL3_SOURCE_DIR}/src/core/*.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/filesystem/*.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/main/*.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/storage/*.c" + "${SDL3_SOURCE_DIR}/src/thread/*.c" + "${SDL3_SOURCE_DIR}/src/time/*.c" + "${SDL3_SOURCE_DIR}/src/timer/*.c" + "${SDL3_SOURCE_DIR}/src/video/*.c" + "${SDL3_SOURCE_DIR}/src/video/yuv2rgb/*.c" +) +if(MSVC AND TARGET SDL3-shared) + if(SDL_CPU_X64) + enable_language(ASM_MASM) + set(asm_src "${SDL3_SOURCE_DIR}/src/stdlib/SDL_mslibc_x64.masm") + target_compile_options(SDL3-shared PRIVATE "$<$:/nologo>") + set_property(SOURCE "${asm_src}" PROPERTY LANGUAGE "ASM_MASM") + target_sources(SDL3-shared PRIVATE "${asm_src}") + elseif(SDL_CPU_ARM32 OR SDL_CPU_ARM64) + # FIXME: ARM assembler (armasm.exe/armasm64.exe) is NOT ASM_MASM, and does currently not work with CMake + # (https://gitlab.kitware.com/cmake/cmake/-/issues/18912) + endif() +endif() + +if(USE_INTELCC) + # warning #39: division by zero + # warning #239: floating point underflow + # warning #264: floating-point value does not fit in required floating-point type + set_property(SOURCE "${SDL3_SOURCE_DIR}/src/libm/e_exp.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -wd239 -wd264") + set_property(SOURCE "${SDL3_SOURCE_DIR}/src/libm/e_log.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -wd39") + set_property(SOURCE "${SDL3_SOURCE_DIR}/src/libm/e_log10.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -wd39") + set_property(SOURCE + "${SDL3_SOURCE_DIR}/src/libm/e_exp.c" + "${SDL3_SOURCE_DIR}/src/libm/e_log.c" + "${SDL3_SOURCE_DIR}/src/libm/e_log10.c" + PROPERTY SKIP_PRECOMPILE_HEADERS 1) +endif() + +set(SDL_DEFAULT_ASSERT_LEVEL_CONFIGURED 1) +if(SDL_ASSERTIONS MATCHES "^(auto|)$") + # Do nada - use optimization settings to determine the assertion level + set(SDL_DEFAULT_ASSERT_LEVEL ) + set(SDL_DEFAULT_ASSERT_LEVEL_CONFIGURED 0) +elseif(SDL_ASSERTIONS MATCHES "^(disabled|0)$") + set(SDL_DEFAULT_ASSERT_LEVEL 0) +elseif(SDL_ASSERTIONS MATCHES "^(release|1)$") + set(SDL_DEFAULT_ASSERT_LEVEL 1) +elseif(SDL_ASSERTIONS MATCHES "^(enabled|2)$") + set(SDL_DEFAULT_ASSERT_LEVEL 2) +elseif(SDL_ASSERTIONS MATCHES "^(paranoid|3)$") + set(SDL_DEFAULT_ASSERT_LEVEL 3) +else() + message(FATAL_ERROR "unknown assertion level") +endif() +set(HAVE_ASSERTIONS ${SDL_ASSERTIONS}) + +if(NOT SDL_BACKGROUNDING_SIGNAL STREQUAL "OFF") + sdl_compile_definitions(PRIVATE "SDL_BACKGROUNDING_SIGNAL=${SDL_BACKGROUNDING_SIGNAL}") +endif() + +if(NOT SDL_FOREGROUNDING_SIGNAL STREQUAL "OFF") + sdl_compile_definitions(PRIVATE "SDL_FOREGROUNDING_SIGNAL=${SDL_FOREGROUNDING_SIGNAL}") +endif() + +# Compiler option evaluation +if(USE_GCC OR USE_CLANG OR USE_INTELCC OR USE_QCC) + if(SDL_GCC_ATOMICS) + check_c_source_compiles("int main(int argc, char **argv) { + int a; + void *x, *y, *z; + __sync_lock_test_and_set(&a, 4); + __sync_lock_test_and_set(&x, y); + __sync_fetch_and_add(&a, 1); + __sync_bool_compare_and_swap(&a, 5, 10); + __sync_bool_compare_and_swap(&x, y, z); + return 0; }" COMPILER_SUPPORTS_GCC_ATOMICS) + set(HAVE_GCC_ATOMICS ${COMPILER_SUPPORTS_GCC_ATOMICS}) + if(NOT HAVE_GCC_ATOMICS) + check_c_source_compiles("int main(int argc, char **argv) { + int a; + __sync_lock_test_and_set(&a, 1); + __sync_lock_release(&a); + return 0; }" COMPILER_SUPPORTS_SYNC_LOCK_TEST_AND_SET) + set(HAVE_GCC_SYNC_LOCK_TEST_AND_SET ${COMPILER_SUPPORTS_SYNC_LOCK_TEST_AND_SET}) + endif() + endif() + + cmake_push_check_state() + string(APPEND CMAKE_REQUIRED_FLAGS " -fvisibility=hidden -Werror") + check_c_source_compiles(" + #if !defined(__GNUC__) || __GNUC__ < 4 + #error SDL only uses visibility attributes in GCC 4 or newer + #endif + __attribute__((visibility(\"default\"))) int foo(void); + __attribute__((visibility(\"hidden\"))) int bar(void); + int foo(void) { return 0; } + int bar(void) { return 1; } + int main(void) { return 0; }" HAVE_GCC_FVISIBILITY) + cmake_pop_check_state() + + if(APPLE) + check_c_compiler_flag(-Wno-error=deprecated-declarations COMPILER_SUPPORTS_WNO_ERROR_DEPRECATED_DECLARATIONS) + if(COMPILER_SUPPORTS_WNO_ERROR_DEPRECATED_DECLARATIONS) + sdl_compile_options(PRIVATE "-Wno-error=deprecated-declarations") + endif() + endif() + + if(APPLE) + check_linker_flag(C "-Wl,-undefined,error" LINKER_SUPPORTS_WL_UNDEFINED_ERROR) + if(LINKER_SUPPORTS_WL_UNDEFINED_ERROR) + sdl_shared_link_options("-Wl,-undefined,error") + endif() + elseif(NOT OPENBSD) + cmake_push_check_state() + check_linker_flag(C "-Wl,--no-undefined" LINKER_SUPPORTS_WL_NO_UNDEFINED) + #FIXME: originally this if had an additional "AND NOT (USE_CLANG AND WINDOWS)" + if(LINKER_SUPPORTS_WL_NO_UNDEFINED) + sdl_shared_link_options("-Wl,--no-undefined") + endif() + endif() +endif() + +if(MSVC) + sdl_compile_definitions( + PRIVATE + "_CRT_SECURE_NO_DEPRECATE" + "_CRT_NONSTDC_NO_DEPRECATE" + "_CRT_SECURE_NO_WARNINGS" + ) + + # CET support was added in VS 2019 16.7 + if(MSVC_VERSION GREATER 1926 AND CMAKE_GENERATOR_PLATFORM MATCHES "Win32|x64") + # Mark SDL3.dll as compatible with Control-flow Enforcement Technology (CET) + sdl_shared_link_options("-CETCOMPAT") + endif() +endif() + +if(CMAKE_C_COMPILER_ID STREQUAL "MSVC") + # Due to a limitation of Microsoft's LTO implementation, LTO must be disabled for memcpy and memset. + # The same applies to various functions normally belonging in the C library (for x86 architecture). + set_property(SOURCE "${SDL3_SOURCE_DIR}/src/stdlib/SDL_mslibc.c" APPEND_STRING PROPERTY COMPILE_FLAGS " /GL-") +endif() + +if(SDL_ASSEMBLY) + set(HAVE_ASSEMBLY TRUE) + + if(SDL_MMX) + cmake_push_check_state() + if(USE_GCC OR USE_CLANG OR USE_INTELCC) + string(APPEND CMAKE_REQUIRED_FLAGS " -mmmx") + endif() + check_c_source_compiles(" + #include + void ints_add(int *dest, int *a, int *b, unsigned size) { + for (; size >= 2; size -= 2, dest += 2, a += 2, b += 2) { + *(__m64*)dest = _mm_add_pi32(*(__m64*)a, *(__m64*)b); + } + } + int main(int argc, char *argv[]) { + ints_add((int*)0, (int*)0, (int*)0, 0); + return 0; + }" COMPILER_SUPPORTS_MMX) + cmake_pop_check_state() + if(COMPILER_SUPPORTS_MMX) + set(HAVE_MMX TRUE) + endif() + endif() + if(SDL_SSE) + cmake_push_check_state() + if(USE_GCC OR USE_CLANG OR USE_INTELCC) + string(APPEND CMAKE_REQUIRED_FLAGS " -msse") + endif() + check_c_source_compiles(" + #include + void floats_add(float *dest, float *a, float *b, unsigned size) { + for (; size >= 4; size -= 4, dest += 4, a += 4, b += 4) { + _mm_storeu_ps(dest, _mm_add_ps(_mm_loadu_ps(a), _mm_loadu_ps (b))); + } + } + int main(int argc, char **argv) { + floats_add((float*)0, (float*)0, (float*)0, 0); + return 0; + }" COMPILER_SUPPORTS_SSE) + cmake_pop_check_state() + if(COMPILER_SUPPORTS_SSE) + set(HAVE_SSE TRUE) + endif() + endif() + if(SDL_SSE2) + cmake_push_check_state() + if(USE_GCC OR USE_CLANG OR USE_INTELCC) + string(APPEND CMAKE_REQUIRED_FLAGS " -msse2") + endif() + check_c_source_compiles(" + #include + void doubles_add(double *dest, double *a, double *b, unsigned size) { + for (; size >= 4; size -= 4, dest += 4, a += 4, b += 4) { + _mm_store_pd(dest, _mm_add_pd(_mm_loadu_pd(a), _mm_loadu_pd(b))); + } + } + int main(int argc, char **argv) { + doubles_add((double*)0, (double*)0, (double*)0, 0); + return 0; + }" COMPILER_SUPPORTS_SSE2) + cmake_pop_check_state() + if(COMPILER_SUPPORTS_SSE2) + set(HAVE_SSE2 TRUE) + endif() + endif() + if(SDL_SSE3) + cmake_push_check_state() + if(USE_GCC OR USE_CLANG OR USE_INTELCC) + string(APPEND CMAKE_REQUIRED_FLAGS " -msse3") + endif() + check_c_source_compiles(" + #include + void ints_add(int *dest, int *a, int *b, unsigned size) { + for (; size >= 4; size -= 4, dest += 4, a += 4, b += 4) { + _mm_storeu_si128((__m128i*)dest, _mm_add_epi32(_mm_lddqu_si128((__m128i*)a), _mm_lddqu_si128((__m128i*)b))); + } + } + int main(int argc, char **argv) { + ints_add((int*)0, (int*)0, (int*)0, 0); + return 0; + }" COMPILER_SUPPORTS_SSE3) + cmake_pop_check_state() + if(COMPILER_SUPPORTS_SSE3) + set(HAVE_SSE3 TRUE) + endif() + endif() + if(SDL_SSE4_1) + cmake_push_check_state() + if(USE_GCC OR USE_CLANG OR USE_INTELCC) + string(APPEND CMAKE_REQUIRED_FLAGS " -msse4.1") + endif() + check_c_source_compiles(" + #include + void ints_mul(int *dest, int *a, int *b, unsigned size) { + for (; size >= 4; size -= 4, dest += 4, a += 4, b += 4) { + _mm_storeu_si128((__m128i*)dest, _mm_mullo_epi32(_mm_lddqu_si128((__m128i*)a), _mm_lddqu_si128((__m128i*)b))); + } + } + int main(int argc, char **argv) { + ints_mul((int*)0, (int*)0, (int*)0, 0); + return 0; + }" COMPILER_SUPPORTS_SSE4_1) + cmake_pop_check_state() + if(COMPILER_SUPPORTS_SSE4_1) + set(HAVE_SSE4_1 TRUE) + endif() + endif() + if(SDL_SSE4_2) + cmake_push_check_state() + if(USE_GCC OR USE_CLANG OR USE_INTELCC) + string(APPEND CMAKE_REQUIRED_FLAGS " -msse4.2") + endif() + check_c_source_compiles(" + #include + unsigned calc_crc32c(const char *text, unsigned len) { + unsigned crc32c = ~0; + for (; len >= 4; len -= 4, text += 4) { + crc32c = (unsigned)_mm_crc32_u32(crc32c, *(unsigned*)text); + } + return crc32c; + } + int main(int argc, char **argv) { + calc_crc32c(\"SDL_SSE4\",8); + return 0; + }" COMPILER_SUPPORTS_SSE4_2) + cmake_pop_check_state() + if(COMPILER_SUPPORTS_SSE4_2) + set(HAVE_SSE4_2 TRUE) + endif() + endif() + if(SDL_AVX) + cmake_push_check_state() + if(USE_GCC OR USE_CLANG OR USE_INTELCC) + string(APPEND CMAKE_REQUIRED_FLAGS " -mavx") + endif() + check_c_source_compiles(" + #include + void floats_add(float *dest, float *a, float *b, unsigned size) { + for (; size >= 8; size -= 8, dest += 8, a += 8, b += 8) { + _mm256_storeu_ps(dest, _mm256_add_ps(_mm256_loadu_ps(a), _mm256_loadu_ps(b))); + } + } + int main(int argc, char **argv) { + floats_add((float*)0, (float*)0, (float*)0, 0); + return 0; + }" COMPILER_SUPPORTS_AVX) + cmake_pop_check_state() + if(COMPILER_SUPPORTS_AVX) + set(HAVE_AVX TRUE) + endif() + endif() + if(SDL_AVX2) + cmake_push_check_state() + if(USE_GCC OR USE_CLANG OR USE_INTELCC) + string(APPEND CMAKE_REQUIRED_FLAGS " -mavx2") + endif() + check_c_source_compiles(" + #include + void ints_add(int *dest, int *a, int *b, unsigned size) { + for (; size >= 8; size -= 8, dest += 8, a += 8, b += 8) { + _mm256_storeu_si256((__m256i*)dest, _mm256_add_epi32(_mm256_loadu_si256((__m256i*)a), _mm256_loadu_si256((__m256i*)b))); + } + } + int main(int argc, char **argv) { + ints_add((int*)0, (int*)0, (int*)0, 0); + return 0; + }" COMPILER_SUPPORTS_AVX2) + cmake_pop_check_state() + if(COMPILER_SUPPORTS_AVX2) + set(HAVE_AVX2 TRUE) + endif() + endif() + if(SDL_AVX512F) + cmake_push_check_state() + if(USE_GCC OR USE_CLANG OR USE_INTELCC) + string(APPEND CMAKE_REQUIRED_FLAGS " -mavx512f") + endif() + check_c_source_compiles(" + #include + void floats_add(float *dest, float *a, float *b, unsigned size) { + for (; size >= 16; size -= 16, dest += 16, a += 16, b += 16) { + _mm512_storeu_ps(dest, _mm512_add_ps(_mm512_loadu_ps(a), _mm512_loadu_ps(b))); + } + } + int main(int argc, char **argv) { + floats_add((float*)0, (float*)0, (float*)0, 0); + return 0; + }" COMPILER_SUPPORTS_AVX512F) + cmake_pop_check_state() + if(COMPILER_SUPPORTS_AVX512F) + set(HAVE_AVX512F TRUE) + endif() + endif() + + if(USE_GCC OR USE_CLANG) + # TODO: Those all seem to be quite GCC specific - needs to be + # reworked for better compiler support + + if(SDL_ALTIVEC) + cmake_push_check_state() + string(APPEND CMAKE_REQUIRED_FLAGS " -maltivec") + check_c_source_compiles(" + #include + vector unsigned int vzero() { + return vec_splat_u32(0); + } + int main(int argc, char **argv) { return 0; }" COMPILER_SUPPORTS_ALTIVEC) + cmake_pop_check_state() + if(COMPILER_SUPPORTS_ALTIVEC) + set(HAVE_ALTIVEC TRUE) + set(SDL_ALTIVEC_BLITTERS 1) + sdl_compile_options(PRIVATE "-maltivec") + set_property(SOURCE "${SDL3_SOURCE_DIR}/src/video/SDL_blit_N.c" APPEND PROPERTY COMPILE_DEFINITIONS "SDL_ENABLE_ALTIVEC") + set_property(SOURCE "${SDL3_SOURCE_DIR}/src/video/SDL_blit_N.c" PROPERTY SKIP_PRECOMPILE_HEADERS 1) + endif() + endif() + + if(SDL_LSX) + cmake_push_check_state() + string(APPEND CMAKE_REQUIRED_FLAGS " -mlsx") + check_c_source_compiles(" + #ifndef __loongarch_sx + #error Assembler CPP flag not enabled + #endif + int main(int argc, char **argv) { return 0; }" COMPILER_SUPPORTS_LSX) + check_include_file("lsxintrin.h" HAVE_LSXINTRIN_H) + cmake_pop_check_state() + + if(COMPILER_SUPPORTS_LSX AND HAVE_LSXINTRIN_H) + set_property(SOURCE "${SDL3_SOURCE_DIR}/src/video/yuv2rgb/yuv_rgb_lsx.c" APPEND PROPERTY COMPILE_OPTIONS "-mlsx") + set(HAVE_LSX TRUE) + endif() + endif() + + if(SDL_LASX) + cmake_push_check_state() + string(APPEND CMAKE_REQUIRED_FLAGS " -mlasx") + check_c_source_compiles(" + #ifndef __loongarch_asx + #error Assembler CPP flag not enabled + #endif + int main(int argc, char **argv) { return 0; }" COMPILER_SUPPORTS_LASX) + check_include_file("lasxintrin.h" HAVE_LASXINTRIN_H) + cmake_pop_check_state() + if(COMPILER_SUPPORTS_LASX AND HAVE_LASXINTRIN_H) + set(HAVE_LASX TRUE) + endif() + endif() + + if(SDL_ARMSIMD) + cmake_push_check_state() + string(APPEND CMAKE_REQUIRED_FLAGS " -x assembler-with-cpp") + list(APPEND CMAKE_REQUIRED_LINK_OPTIONS -x none) + check_c_source_compiles(" + .text + .arch armv6 + .object_arch armv4 + .arm + .altmacro + #ifndef __ARM_EABI__ + #error EABI is required (to be sure that calling conventions are compatible) + #endif + main: + .global main + pld [r0] + uqadd8 r0, r0, r0 + " ARMSIMD_FOUND) + cmake_pop_check_state() + + if(ARMSIMD_FOUND) + set(HAVE_ARMSIMD TRUE) + set(SDL_ARM_SIMD_BLITTERS 1) + enable_language(ASM) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/arm/pixman-arm-simd*.S") + set_property(SOURCE ${ARMSIMD_SOURCES} APPEND PROPERTY COMPILE_OPTIONS -x assembler-with-cpp) + set(WARN_ABOUT_ARM_SIMD_ASM_MIT TRUE) + endif() + endif() + + if(SDL_ARMNEON_BLITTERS) + cmake_push_check_state() + string(APPEND CMAKE_REQUIRED_FLAGS " -x assembler-with-cpp") + list(APPEND CMAKE_REQUIRED_LINK_OPTIONS -x none) + check_c_source_compiles(" + .text + .fpu neon + .arch armv7a + .object_arch armv4 + .eabi_attribute 10, 0 + .arm + .altmacro + #ifndef __ARM_EABI__ + #error EABI is required (to be sure that calling conventions are compatible) + #endif + main: + .global main + pld [r0] + vmovn.u16 d0, q0 + " COMPILER_SUPPORTS_ARMNEON_ASSEMBLY) + cmake_pop_check_state() + if(COMPILER_SUPPORTS_ARMNEON_ASSEMBLY) + set(HAVE_ARMNEON_BLITTERS TRUE) + set(SDL_ARM_NEON_BLITTERS 1) + enable_language(ASM) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/arm/pixman-arm-neon*.S") + set_property(SOURCE ${ARMNEON_SOURCES} APPEND PROPERTY COMPILE_OPTIONS -x assembler-with-cpp) + set(WARN_ABOUT_ARM_NEON_ASM_MIT TRUE) + endif() + endif() + + if(SDL_ARMNEON) + check_c_source_compiles(" + #include + void floats_add(float *dest, float *a, float *b, unsigned size) { + for (; size >= 4; size -= 4, dest += 4, a += 4, b += 4) { + vst1q_f32(dest, vaddq_f32(vld1q_f32(a), vld1q_f32(b))); + } + } + int main(int argc, char *argv[]) { + floats_add((float*)0, (float*)0, (float*)0, 0); + return 0; + }" COMPILER_SUPPORTS_ARMNEON) + + if(COMPILER_SUPPORTS_ARMNEON) + set(HAVE_ARMNEON TRUE) + endif() + endif() + endif() +endif() + +if(NOT HAVE_MMX) + set(SDL_DISABLE_MMX 1) +endif() + +if(NOT HAVE_SSE) + set(SDL_DISABLE_SSE 1) +endif() + +if(NOT HAVE_SSE2) + set(SDL_DISABLE_SSE2 1) +endif() + +if(NOT HAVE_SSE3) + set(SDL_DISABLE_SSE3 1) +endif() + +if(NOT HAVE_SSE4_1) + set(SDL_DISABLE_SSE4_1 1) +endif() + +if(NOT HAVE_SSE4_2) + set(SDL_DISABLE_SSE4_2 1) +endif() + +if(NOT HAVE_AVX) + set(SDL_DISABLE_AVX 1) +endif() + +if(NOT HAVE_AVX2) + set(SDL_DISABLE_AVX2 1) +endif() + +if(NOT HAVE_AVX512F) + set(SDL_DISABLE_AVX512F 1) +endif() + +if(NOT HAVE_LSX) + set(SDL_DISABLE_LSX 1) +endif() + +if(NOT HAVE_LASX) + set(SDL_DISABLE_LASX 1) +endif() + +if(NOT HAVE_ARMNEON) + set(SDL_DISABLE_NEON 1) +endif() + +set(SDL_DISABLE_ALLOCA 0) +check_include_file("alloca.h" "HAVE_ALLOCA_H") +if(MSVC) + check_include_file("malloc.h" "HAVE_MALLOC") + check_symbol_exists("_alloca" "malloc.h" _ALLOCA_IN_MALLOC_H) + if(NOT HAVE_ALLOCA_H AND NOT _ALLOCA_IN_MALLOC_H) + set(SDL_DISABLE_ALLOCA 1) + endif() +endif() + +# TODO: Can't deactivate on FreeBSD? w/o LIBC, SDL_stdinc.h can't define anything. +if(SDL_LIBC) + set(available_headers) + set(HAVE_LIBC TRUE) + set(headers_to_check + ctype.h + float.h + iconv.h + inttypes.h + limits.h + malloc.h + math.h + memory.h + signal.h + stdarg.h + stddef.h + stdint.h + stdio.h + stdlib.h + string.h + strings.h + sys/types.h + time.h + wchar.h + ) + foreach(_HEADER IN LISTS headers_to_check) + string(TOUPPER "${_HEADER}" HEADER_IDENTIFIER) + string(REGEX REPLACE "[./]" "_" HEADER_IDENTIFIER "${HEADER_IDENTIFIER}") + set(LIBC_HAS_VAR "LIBC_HAS_${HEADER_IDENTIFIER}") + check_include_file("${_HEADER}" "${LIBC_HAS_VAR}") + set(HAVE_${HEADER_IDENTIFIER} ${${LIBC_HAS_VAR}}) + if(HAVE_${HEADER_IDENTIFIER}) + list(APPEND available_headers "${_HEADER}") + endif() + endforeach() + + set(symbols_to_check + abs acos acosf asin asinf atan atan2 atan2f atanf atof atoi + bcopy + calloc ceil ceilf copysign copysignf cos cosf + _Exit exp expf + fabs fabsf floor floorf fmod fmodf fopen64 free fseeko fseeko64 + getenv + _i64toa index itoa + log log10 log10f logf lround lroundf _ltoa + malloc memcmp memcpy memmove memset modf modff + pow powf putenv + realloc rindex round roundf + scalbn scalbnf setenv sin sinf sqr sqrt sqrtf sscanf strchr + strcmp strlcat strlcpy strlen strncmp strnlen + strrchr strstr strnstr strtod strtok_r strtol strtoll strtoul strtoull + tan tanf trunc truncf + unsetenv + vsnprintf vsscanf + wcsnlen wcscmp wcsdup wcslcat wcslcpy wcslen wcsncmp wcsstr wcstol + ) + if(WINDOWS) + list(APPEND symbols_to_check + _stricmp _strlwr _strnicmp _strrev _strupr _ui64toa _uitoa _ultoa _wcsdup _wcsicmp _wcsnicmp + ) + else() + list(APPEND symbols_to_check + strcasecmp strcasestr strncasecmp wcscasecmp wcsncasecmp + ) + endif() + check_library_exists(m pow "" HAVE_LIBM) + cmake_push_check_state() + if(HAVE_LIBM) + sdl_link_dependency(math LIBS m) + list(APPEND CMAKE_REQUIRED_LIBRARIES m) + endif() + foreach(_FN IN LISTS symbols_to_check) + string(TOUPPER ${_FN} _UPPER) + set(LIBC_HAS_VAR "LIBC_HAS_${_UPPER}") + check_symbol_exists("${_FN}" "${available_headers}" ${LIBC_HAS_VAR}) + set(HAVE_${_UPPER} ${${LIBC_HAS_VAR}}) + endforeach() + cmake_pop_check_state() + + if(NOT WINDOWS) + check_symbol_exists(getpagesize "unistd.h" HAVE_GETPAGESIZE) + check_symbol_exists(sigaction "signal.h" HAVE_SIGACTION) + check_symbol_exists(setjmp "setjmp.h" HAVE_SETJMP) + check_symbol_exists(nanosleep "time.h" HAVE_NANOSLEEP) + check_symbol_exists(gmtime_r "time.h" HAVE_GMTIME_R) + check_symbol_exists(localtime_r "time.h" HAVE_LOCALTIME_R) + check_symbol_exists(nl_langinfo "langinfo.h" HAVE_NL_LANGINFO) + check_symbol_exists(sysconf "unistd.h" HAVE_SYSCONF) + check_symbol_exists(sysctlbyname "sys/types.h;sys/sysctl.h" HAVE_SYSCTLBYNAME) + check_symbol_exists(getauxval "sys/auxv.h" HAVE_GETAUXVAL) + check_symbol_exists(elf_aux_info "sys/auxv.h" HAVE_ELF_AUX_INFO) + check_symbol_exists(poll "poll.h" HAVE_POLL) + check_symbol_exists(memfd_create "sys/mman.h" HAVE_MEMFD_CREATE) + check_symbol_exists(posix_fallocate "fcntl.h" HAVE_POSIX_FALLOCATE) + + if(SDL_SYSTEM_ICONV) + check_c_source_compiles(" + #define LIBICONV_PLUG 1 /* in case libiconv header is in include path */ + #include + #include + int main(int argc, char **argv) { + return !iconv_open(NULL,NULL); + }" ICONV_IN_LIBC) + + cmake_push_check_state() + list(APPEND CMAKE_REQUIRED_LIBRARIES iconv) + check_c_source_compiles(" + #include + #include + int main(int argc, char **argv) { + return !iconv_open(NULL,NULL); + }" ICONV_IN_LIBICONV) + cmake_pop_check_state() + + if(ICONV_IN_LIBC OR ICONV_IN_LIBICONV) + set(HAVE_ICONV 1) + set(HAVE_SYSTEM_ICONV TRUE) + if(ICONV_IN_LIBICONV AND (SDL_LIBICONV OR (NOT ICONV_IN_LIBC))) + sdl_link_dependency(iconv LIBS iconv) + set(SDL_USE_LIBICONV 1) + set(HAVE_LIBICONV TRUE) + endif() + endif() + endif() + + check_struct_has_member("struct sigaction" "sa_sigaction" "signal.h" HAVE_SA_SIGACTION) + check_struct_has_member("struct stat" "st_mtim" "sys/stat.h" HAVE_ST_MTIM) + endif() +else() + set(headers + stdarg.h + stddef.h + stdint.h + ) + foreach(_HEADER ${headers}) + string(TOUPPER "${_HEADER}" HEADER_IDENTIFIER) + string(REGEX REPLACE "[./]" "_" HEADER_IDENTIFIER "${HEADER_IDENTIFIER}") + set(LIBC_HAS_VAR "LIBC_HAS_${HEADER_IDENTIFIER}") + check_include_file("${_HEADER}" "${LIBC_HAS_VAR}") + set(HAVE_${HEADER_IDENTIFIER} ${${LIBC_HAS_VAR}}) + endforeach() + + if(MSVC AND USE_CLANG) + check_c_compiler_flag("/Q_no-use-libirc" HAS_Q_NO_USE_LIBIRC) + endif() +endif() + + +# Enable/disable various subsystems of the SDL library +foreach(_SUB ${SDL_SUBSYSTEMS}) + string(TOUPPER ${_SUB} _OPT) + if(NOT SDL_${_OPT}) + set(SDL_${_OPT}_DISABLED 1) + endif() +endforeach() +if(SDL_HAPTIC) + if(NOT SDL_JOYSTICK) + # Haptic requires some private functions from the joystick subsystem. + message(FATAL_ERROR "SDL_HAPTIC requires SDL_JOYSTICK, which is not enabled") + endif() +endif() + + +# General SDL subsystem options, valid for all platforms +if(SDL_AUDIO) + # CheckDummyAudio/CheckDiskAudio - valid for all platforms + if(SDL_DUMMYAUDIO) + set(SDL_AUDIO_DRIVER_DUMMY 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/dummy/*.c") + set(HAVE_DUMMYAUDIO TRUE) + set(HAVE_SDL_AUDIO TRUE) + endif() + if(SDL_DISKAUDIO) + set(SDL_AUDIO_DRIVER_DISK 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/disk/*.c") + set(HAVE_DISKAUDIO TRUE) + set(HAVE_SDL_AUDIO TRUE) + endif() +endif() + +if(SDL_CAMERA) + # CheckDummyCamera/CheckDiskCamera - valid for all platforms + if(SDL_DUMMYCAMERA) + set(SDL_CAMERA_DRIVER_DUMMY 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/dummy/*.c") + set(HAVE_DUMMYCAMERA TRUE) + set(HAVE_SDL_CAMERA TRUE) + endif() + # !!! FIXME: for later. + #if(SDL_DISKCAMERA) + # set(SDL_CAMERA_DRIVER_DISK 1) + # sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/disk/*.c") + # set(HAVE_DISKCAMERA TRUE) + # set(HAVE_SDL_CAMERA TRUE) + #endif() +endif() + +if(UNIX OR APPLE) + # Relevant for Unix/Darwin only + set(DYNAPI_NEEDS_DLOPEN 1) + CheckDLOPEN() + if(HAVE_DLOPEN) + set(SDL_LOADSO_DLOPEN 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/loadso/dlopen/*.c") + set(HAVE_SDL_LOADSO TRUE) + endif() +endif() + +if(UNIX OR APPLE OR HAIKU OR RISCOS) + CheckO_CLOEXEC() +endif() + +if(SDL_JOYSTICK) + if(SDL_VIRTUAL_JOYSTICK) + set(HAVE_VIRTUAL_JOYSTICK TRUE) + set(SDL_JOYSTICK_VIRTUAL 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/joystick/virtual/*.c") + endif() +endif() + +if(SDL_VIDEO) + if(SDL_DUMMYVIDEO) + set(SDL_VIDEO_DRIVER_DUMMY 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/dummy/*.c") + set(HAVE_DUMMYVIDEO TRUE) + set(HAVE_SDL_VIDEO TRUE) + endif() +endif() + +# Platform-specific options and settings +if(ANDROID) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/android") + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/core/android/*.c") + sdl_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") + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/misc/android/*.c") + set(HAVE_SDL_MISC TRUE) + + # SDL_spinlock.c Needs to be compiled in ARM mode. + # There seems to be no better way currently to set the ARM mode. + # see: https://issuetracker.google.com/issues/62264618 + # Another option would be to set ARM mode to all compiled files + cmake_push_check_state() + string(APPEND CMAKE_REQUIRED_FLAGS " -Werror=unused-command-line-argument") + check_c_compiler_flag(-marm HAVE_ARM_MODE) + cmake_pop_check_state() + if(HAVE_ARM_MODE) + set_property(SOURCE "${SDL3_SOURCE_DIR}/src/atomic/SDL_spinlock.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -marm") + set_source_files_properties(src/atomic/SDL_spinlock.c PROPERTIES SKIP_PRECOMPILE_HEADERS 1) + endif() + + if(SDL_AUDIO) + set(SDL_AUDIO_DRIVER_ANDROID 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/android/*.c") + + set(SDL_AUDIO_DRIVER_OPENSLES 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/openslES/*.c") + + sdl_link_dependency(opensles LIBS ${ANDROID_DL_LIBRARY} OpenSLES) + + set(SDL_AUDIO_DRIVER_AAUDIO 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/aaudio/*.c") + + set(HAVE_SDL_AUDIO TRUE) + endif() + + set(SDL_FILESYSTEM_ANDROID 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/filesystem/android/*.c") + set(HAVE_SDL_FILESYSTEM TRUE) + + set(SDL_FSOPS_POSIX 1) # !!! FIXME: this might need something else for .apk data? + sdl_sources("${SDL3_SOURCE_DIR}/src/filesystem/posix/SDL_sysfsops.c") + set(HAVE_SDL_FSOPS TRUE) + + if(SDL_HAPTIC) + set(SDL_HAPTIC_ANDROID 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/haptic/android/*.c") + set(HAVE_SDL_HAPTIC TRUE) + endif() + + if(SDL_HIDAPI) + CheckHIDAPI() + endif() + + if(SDL_JOYSTICK) + set(SDL_JOYSTICK_ANDROID 1) + sdl_glob_sources( + "${SDL3_SOURCE_DIR}/src/joystick/android/*.c" + "${SDL3_SOURCE_DIR}/src/joystick/steam/*.c" + ) + set(HAVE_SDL_JOYSTICK TRUE) + endif() + + set(SDL_LOADSO_DLOPEN 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/loadso/dlopen/*.c") + set(HAVE_SDL_LOADSO TRUE) + + if(SDL_POWER) + set(SDL_POWER_ANDROID 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/power/android/*.c") + set(HAVE_SDL_POWER TRUE) + endif() + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/locale/android/*.c") + set(HAVE_SDL_LOCALE TRUE) + + set(SDL_TIME_UNIX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/time/unix/*.c") + set(HAVE_SDL_TIME TRUE) + + set(SDL_TIMER_UNIX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/timer/unix/*.c") + set(HAVE_SDL_TIMERS TRUE) + + if(SDL_SENSOR) + set(SDL_SENSOR_ANDROID 1) + set(HAVE_SDL_SENSORS TRUE) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/sensor/android/*.c") + endif() + + if(SDL_CAMERA) + set(SDL_CAMERA_DRIVER_ANDROID 1) + set(HAVE_CAMERA TRUE) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/android/*.c") + endif() + + if(SDL_VIDEO) + set(SDL_VIDEO_DRIVER_ANDROID 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/android/*.c") + set(HAVE_SDL_VIDEO TRUE) + + # Core stuff + # find_library(ANDROID_DL_LIBRARY dl) + # FIXME failing dlopen https://github.com/android-ndk/ndk/issues/929 + sdl_link_dependency(android_video LIBS dl log android) + sdl_compile_definitions(PRIVATE "GL_GLEXT_PROTOTYPES") + + #enable gles + if(SDL_OPENGLES) + set(SDL_VIDEO_OPENGL_EGL 1) + set(HAVE_OPENGLES TRUE) + set(SDL_VIDEO_OPENGL_ES 1) + set(SDL_VIDEO_OPENGL_ES2 1) + set(SDL_VIDEO_RENDER_OGL_ES2 1) + + sdl_link_dependency(opengles LIBS GLESv1_CM GLESv2) + endif() + + if(SDL_VULKAN) + check_c_source_compiles(" + #if defined(__ARM_ARCH) && __ARM_ARCH < 7 + #error Vulkan doesn't work on this configuration + #endif + int main(int argc, char **argv) { return 0; } + " VULKAN_PASSED_ANDROID_CHECKS) + if(VULKAN_PASSED_ANDROID_CHECKS) + set(SDL_VIDEO_VULKAN 1) + set(HAVE_VULKAN TRUE) + endif() + endif() + endif() + + CheckPTHREAD() + if(SDL_CLOCK_GETTIME) + set(HAVE_CLOCK_GETTIME 1) + endif() + + if(NOT SDL_DISABLE_ANDROID_JAR) + find_package(Java) + find_package(SdlAndroidPlatform MODULE) + + if(Java_FOUND AND SdlAndroidPlatform_FOUND) + include(UseJava) + set(path_android_jar "${SDL_ANDROID_PLATFORM_ROOT}/android.jar") + set(android_java_sources_root "${SDL3_SOURCE_DIR}/android-project/app/src/main/java") + file(GLOB SDL_JAVA_SOURCES "${android_java_sources_root}/org/libsdl/app/*.java") + set(CMAKE_JAVA_COMPILE_FLAGS "-encoding;utf-8") + add_jar(SDL3-jar + SOURCES ${SDL_JAVA_SOURCES} + INCLUDE_JARS "${path_android_jar}" + OUTPUT_NAME "SDL3" + VERSION "${SDL3_VERSION}" + ) + set_property(TARGET SDL3-jar PROPERTY OUTPUT "${SDL3_BINARY_DIR}/SDL3-${SDL3_VERSION}.jar") + add_library(SDL3__Jar INTERFACE) + add_library(SDL3::Jar ALIAS SDL3__Jar) + get_property(sdl3_jar_location TARGET SDL3-jar PROPERTY JAR_FILE) + set_property(TARGET SDL3__Jar PROPERTY JAR_FILE "${sdl3_jar_location}") + set(javasourcesjar "${SDL3_BINARY_DIR}/SDL3-${SDL3_VERSION}-sources.jar") + string(REGEX REPLACE "${android_java_sources_root}/" "" sdl_relative_java_sources "${SDL_JAVA_SOURCES}") + add_custom_command( + OUTPUT "${javasourcesjar}" + COMMAND ${Java_JAR_EXECUTABLE} cf "${javasourcesjar}" ${sdl_relative_java_sources} + WORKING_DIRECTORY "${android_java_sources_root}" + DEPENDS ${SDL_JAVA_SOURCES} + ) + add_custom_target(SDL3-javasources ALL DEPENDS "${javasourcesjar}") + if(NOT SDL_DISABLE_INSTALL_DOCS) + set(javadocdir "${SDL3_BINARY_DIR}/docs/javadoc") + set(javadocjar "${SDL3_BINARY_DIR}/SDL3-${SDL3_VERSION}-javadoc.jar") + set(javadoc_index_html "${javadocdir}/index.html") + add_custom_command( + OUTPUT "${javadoc_index_html}" + COMMAND ${CMAKE_COMMAND} -E rm -rf "${javadocdir}" + COMMAND ${Java_JAVADOC_EXECUTABLE} -encoding utf8 -d "${javadocdir}" + -classpath "${path_android_jar}" + -author -use -version ${SDL_JAVA_SOURCES} + DEPENDS ${SDL_JAVA_SOURCES} "${path_android_jar}" + ) + add_custom_target(SDL3-javadoc ALL DEPENDS "${javadoc_index_html}") + set_property(TARGET SDL3-javadoc PROPERTY OUTPUT_DIR "${javadocdir}") + endif() + endif() + endif() + +elseif(EMSCRIPTEN) + # Hide noisy warnings that intend to aid mostly during initial stages of porting a new + # project. Uncomment at will for verbose cross-compiling -I/../ path info. + sdl_compile_options(PRIVATE "-Wno-warn-absolute-paths") + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/main/emscripten/*.c") + set(HAVE_SDL_MAIN_CALLBACKS TRUE) + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/misc/emscripten/*.c") + set(HAVE_SDL_MISC TRUE) + + if(SDL_AUDIO) + set(SDL_AUDIO_DRIVER_EMSCRIPTEN 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/emscripten/*.c") + set(HAVE_SDL_AUDIO TRUE) + endif() + + set(SDL_FILESYSTEM_EMSCRIPTEN 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/filesystem/emscripten/*.c") + set(HAVE_SDL_FILESYSTEM TRUE) + + set(SDL_FSOPS_POSIX 1) + sdl_sources("${SDL3_SOURCE_DIR}/src/filesystem/posix/SDL_sysfsops.c") + set(HAVE_SDL_FSOPS TRUE) + + if(SDL_CAMERA) + set(SDL_CAMERA_DRIVER_EMSCRIPTEN 1) + set(HAVE_CAMERA TRUE) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/emscripten/*.c") + endif() + + if(SDL_JOYSTICK) + set(SDL_JOYSTICK_EMSCRIPTEN 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/joystick/emscripten/*.c") + set(HAVE_SDL_JOYSTICK TRUE) + endif() + + if(SDL_POWER) + set(SDL_POWER_EMSCRIPTEN 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/power/emscripten/*.c") + set(HAVE_SDL_POWER TRUE) + endif() + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/locale/emscripten/*.c") + set(HAVE_SDL_LOCALE TRUE) + + set(SDL_TIME_UNIX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/time/unix/*.c") + set(HAVE_SDL_TIME TRUE) + + set(SDL_TIMER_UNIX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/timer/unix/*.c") + set(HAVE_SDL_TIMERS TRUE) + + if(SDL_CLOCK_GETTIME) + set(HAVE_CLOCK_GETTIME 1) + endif() + + if(SDL_VIDEO) + set(SDL_VIDEO_DRIVER_EMSCRIPTEN 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/emscripten/*.c") + set(HAVE_SDL_VIDEO TRUE) + + #enable gles + if(SDL_OPENGLES) + set(SDL_VIDEO_OPENGL_EGL 1) + set(HAVE_OPENGLES TRUE) + set(SDL_VIDEO_OPENGL_ES2 1) + set(SDL_VIDEO_RENDER_OGL_ES2 1) + endif() + endif() + + CheckPTHREAD() + CheckLibUnwind() + +elseif(UNIX AND NOT APPLE AND NOT RISCOS AND NOT HAIKU) + if(SDL_AUDIO) + if(NETBSD) + set(SDL_AUDIO_DRIVER_NETBSD 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/netbsd/*.c") + set(HAVE_SDL_AUDIO TRUE) + elseif(QNX) + set(SDL_AUDIO_DRIVER_QNX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/qnx/*.c") + sdl_link_dependency(asound LIBS asound) + set(HAVE_SDL_AUDIO TRUE) + endif() + CheckOSS() + CheckALSA() + CheckJACK() + CheckPipewire() + CheckPulseAudio() + CheckSNDIO() + endif() + + if(SDL_VIDEO) + # Need to check for Raspberry PI first and add platform specific compiler flags, otherwise the test for GLES fails! + CheckRPI() + # Need to check for ROCKCHIP platform and get rid of "Can't window GBM/EGL surfaces on window creation." + CheckROCKCHIP() + CheckX11() + # Need to check for EGL first because KMSDRM and Wayland depend on it. + CheckEGL() + CheckKMSDRM() + CheckGLX() + CheckOpenGL() + CheckOpenGLES() + CheckWayland() + CheckVivante() + CheckVulkan() + CheckQNXScreen() + endif() + + if(UNIX) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/core/unix/*.c") + + check_c_source_compiles(" + #include + #ifndef EVIOCGNAME + #error EVIOCGNAME() ioctl not available + #endif + int main(int argc, char** argv) { return 0; }" HAVE_LINUX_INPUT_H) + + if(LINUX) + check_c_source_compiles(" + #include + #include + #include + int main(int argc, char **argv) { + struct kbentry kbe; + kbe.kb_table = KG_CTRL; + ioctl(0, KDGKBENT, &kbe); + return 0; + }" HAVE_INPUT_KD) + check_c_source_compiles(" + #include + int main(int argc, char** argv) { return 0; }" HAVE_LINUX_VIDEODEV2_H) + elseif(FREEBSD) + check_c_source_compiles(" + #include + #include + int main(int argc, char **argv) { + accentmap_t accTable; + ioctl(0, KDENABIO, 1); + return 0; + }" HAVE_INPUT_KBIO) + elseif(OPENBSD OR NETBSD) + check_c_source_compiles(" + #include + #include + #include + #include + #include + int main(int argc, char **argv) { + struct wskbd_map_data data; + ioctl(0, WSKBDIO_GETMAP, &data); + return 0; + }" HAVE_INPUT_WSCONS) + endif() + + if(SDL_CAMERA AND HAVE_LINUX_VIDEODEV2_H) + set(SDL_CAMERA_DRIVER_V4L2 1) + set(HAVE_CAMERA TRUE) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/v4l2/*.c") + endif() + + if(HAVE_LINUX_INPUT_H) + set(SDL_INPUT_LINUXEV 1) + endif() + + if(SDL_HAPTIC AND HAVE_LINUX_INPUT_H) + set(SDL_HAPTIC_LINUX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/haptic/linux/*.c") + set(HAVE_SDL_HAPTIC TRUE) + endif() + + if(HAVE_INPUT_KD) + set(SDL_INPUT_LINUXKD 1) + endif() + + if(HAVE_INPUT_KBIO) + set(SDL_INPUT_FBSDKBIO 1) + endif() + + if(HAVE_INPUT_WSCONS) + set(SDL_INPUT_WSCONS 1) + endif() + + CheckLibUDev() + check_include_file("sys/inotify.h" HAVE_SYS_INOTIFY_H) + check_symbol_exists(inotify_init "sys/inotify.h" HAVE_INOTIFY_INIT) + check_symbol_exists(inotify_init1 "sys/inotify.h" HAVE_INOTIFY_INIT1) + + if(HAVE_SYS_INOTIFY_H AND HAVE_INOTIFY_INIT) + set(HAVE_INOTIFY 1) + endif() + + if(PKG_CONFIG_FOUND) + if(SDL_DBUS) + pkg_search_module(DBUS dbus-1 dbus) + if(DBUS_FOUND) + set(HAVE_DBUS_DBUS_H TRUE) + sdl_include_directories(PRIVATE SYSTEM ${DBUS_INCLUDE_DIRS}) + # Fcitx need only dbus. + set(HAVE_FCITX TRUE) + set(HAVE_DBUS TRUE) + endif() + endif() + + if(SDL_IBUS) + pkg_search_module(IBUS ibus-1.0 ibus) + find_path(HAVE_SYS_INOTIFY_H NAMES sys/inotify.h) + if(IBUS_FOUND AND HAVE_SYS_INOTIFY_H) + set(HAVE_IBUS_IBUS_H TRUE) + sdl_include_directories(PRIVATE SYSTEM ${IBUS_INCLUDE_DIRS}) + set(HAVE_IBUS TRUE) + endif() + endif() + + if (HAVE_IBUS_IBUS_H OR HAVE_FCITX) + set(SDL_USE_IME 1) + endif() + + if((FREEBSD OR NETBSD) AND NOT HAVE_INOTIFY) + set(LibInotify_PKG_CONFIG_SPEC libinotify) + pkg_check_modules(PC_LIBINOTIFY IMPORTED_TARGET ${LibInotify_PKG_CONFIG_SPEC}) + if(PC_LIBINOTIFY_FOUND) + set(HAVE_INOTIFY 1) + sdl_link_dependency(libinotify LIBS PkgConfig::PC_LIBINOTIFY PKG_CONFIG_PREFIX PC_LIBINOTIFY PKG_CONFIG_SPECS ${LibInotify_PKG_CONFIG_SPEC}) + endif() + endif() + + CheckLibUnwind() + endif() + + if(HAVE_DBUS_DBUS_H) + sdl_sources( + "${SDL3_SOURCE_DIR}/src/core/linux/SDL_dbus.c" + "${SDL3_SOURCE_DIR}/src/core/linux/SDL_system_theme.c" + ) + endif() + + if(SDL_USE_IME) + sdl_sources("${SDL3_SOURCE_DIR}/src/core/linux/SDL_ime.c") + endif() + + if(HAVE_IBUS_IBUS_H) + sdl_sources("${SDL3_SOURCE_DIR}/src/core/linux/SDL_ibus.c") + endif() + + if(HAVE_FCITX) + sdl_sources("${SDL3_SOURCE_DIR}/src/core/linux/SDL_fcitx.c") + endif() + + if(HAVE_LIBUDEV_H) + sdl_sources("${SDL3_SOURCE_DIR}/src/core/linux/SDL_udev.c") + endif() + + if(HAVE_LINUX_INPUT_H) + sdl_sources( + "${SDL3_SOURCE_DIR}/src/core/linux/SDL_evdev.c" + "${SDL3_SOURCE_DIR}/src/core/linux/SDL_evdev_kbd.c" + ) + endif() + + if(HAVE_INPUT_KBIO) + sdl_sources("${SDL3_SOURCE_DIR}/src/core/freebsd/SDL_evdev_kbd_freebsd.c") + endif() + + if(HAVE_INPUT_WSCONS) + sdl_sources( + "${SDL3_SOURCE_DIR}/src/core/openbsd/SDL_wscons_kbd.c" + "${SDL3_SOURCE_DIR}/src/core/openbsd/SDL_wscons_mouse.c" + ) + endif() + + # Always compiled for Linux, unconditionally: + sdl_sources( + "${SDL3_SOURCE_DIR}/src/core/linux/SDL_evdev_capabilities.c" + "${SDL3_SOURCE_DIR}/src/core/linux/SDL_threadprio.c" + "${SDL3_SOURCE_DIR}/src/core/linux/SDL_sandbox.c" + ) + + # src/core/unix/*.c is included in a generic if(UNIX) section, elsewhere. + endif() + + if(SDL_HIDAPI) + CheckHIDAPI() + endif() + + if(SDL_JOYSTICK) + if(FREEBSD OR NETBSD OR OPENBSD OR BSDI) + CheckUSBHID() + endif() + if(LINUX AND HAVE_LINUX_INPUT_H AND NOT ANDROID) + set(SDL_JOYSTICK_LINUX 1) + sdl_glob_sources( + "${SDL3_SOURCE_DIR}/src/joystick/linux/*.c" + "${SDL3_SOURCE_DIR}/src/joystick/steam/*.c" + ) + set(HAVE_SDL_JOYSTICK TRUE) + endif() + endif() + + CheckPTHREAD() + + if(SDL_CLOCK_GETTIME) + check_library_exists(c clock_gettime "" FOUND_CLOCK_GETTIME_LIBC) + if(FOUND_CLOCK_GETTIME_LIBC) + set(HAVE_CLOCK_GETTIME 1) + else() + check_library_exists(rt clock_gettime "" FOUND_CLOCK_GETTIME_LIBRT) + if(FOUND_CLOCK_GETTIME_LIBRT) + set(HAVE_CLOCK_GETTIME 1) + sdl_link_dependency(clock LIBS rt) + endif() + endif() + endif() + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/misc/unix/*.c") + set(HAVE_SDL_MISC TRUE) + + if(SDL_POWER) + if(LINUX) + set(SDL_POWER_LINUX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/power/linux/*.c") + set(HAVE_SDL_POWER TRUE) + endif() + endif() + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/locale/unix/*.c") + set(HAVE_SDL_LOCALE TRUE) + + set(SDL_FILESYSTEM_UNIX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/filesystem/unix/*.c") + set(HAVE_SDL_FILESYSTEM TRUE) + + set(SDL_STORAGE_GENERIC 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/storage/generic/*.c") + if(LINUX) + set(SDL_STORAGE_STEAM 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/storage/steam/*.c") + endif() + set(HAVE_SDL_STORAGE 1) + + set(SDL_FSOPS_POSIX 1) + sdl_sources("${SDL3_SOURCE_DIR}/src/filesystem/posix/SDL_sysfsops.c") + set(HAVE_SDL_FSOPS TRUE) + + set(SDL_TIME_UNIX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/time/unix/*.c") + set(HAVE_SDL_TIME TRUE) + + set(SDL_TIMER_UNIX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/timer/unix/*.c") + set(HAVE_SDL_TIMERS TRUE) + + set(SDL_RLD_FLAGS "") + if(SDL_RPATH AND SDL_SHARED) + if(BSDI OR FREEBSD OR LINUX OR NETBSD) + cmake_push_check_state() + string(APPEND CMAKE_REQUIRED_FLAGS " -Wl,--enable-new-dtags") + check_c_compiler_flag("" HAVE_ENABLE_NEW_DTAGS) + cmake_pop_check_state() + if(HAVE_ENABLE_NEW_DTAGS) + set(SDL_RLD_FLAGS "-Wl,-rpath,\${libdir} -Wl,--enable-new-dtags") + else() + set(SDL_RLD_FLAGS "-Wl,-rpath,\${libdir}") + endif() + set(HAVE_RPATH TRUE) + elseif(SOLARIS) + set(SDL_RLD_FLAGS "-R\${libdir}") + set(HAVE_RPATH TRUE) + endif() + endif() + + if(QNX) + # QNX's *printf() family generates a SIGSEGV if NULL is passed for a string + # specifier (on purpose), but SDL expects "(null)". Use the built-in + # implementation. + set (HAVE_VSNPRINTF 0) + set (USE_POSIX_SPAWN 1) + endif() +elseif(WINDOWS) + check_c_source_compiles(" + #include + int main(int argc, char **argv) { return 0; }" HAVE_WIN32_CC) + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/core/windows/*.c") + + if(WINDOWS_STORE) + enable_language(CXX) + sdl_glob_sources( + "${SDL3_SOURCE_DIR}/src/core/winrt/*.c" + "${SDL3_SOURCE_DIR}/src/core/winrt/*.cpp" + ) + endif() + + if(TARGET SDL3-shared AND MSVC AND NOT SDL_LIBC) + # Prevent codegen that would use the VC runtime libraries. + target_compile_options(SDL3-shared PRIVATE $<$:/GS-> $<$:/Gs1048576>) + if(SDL_CPU_X86) + target_compile_options(SDL3-shared PRIVATE "/arch:SSE") + endif() + endif() + + if(WINDOWS_STORE) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/misc/winrt/*.cpp") + else() + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/misc/windows/*.c") + endif() + set(HAVE_SDL_MISC TRUE) + + # Check for DirectX + if(SDL_DIRECTX) + cmake_push_check_state() + if(DEFINED MSVC_VERSION AND NOT ${MSVC_VERSION} LESS 1700) + set(USE_WINSDK_DIRECTX TRUE) + endif() + if(NOT MINGW AND NOT USE_WINSDK_DIRECTX) + if("$ENV{DXSDK_DIR}" STREQUAL "") + message(FATAL_ERROR "DIRECTX requires the \$DXSDK_DIR environment variable to be set") + endif() + string(APPEND CMAKE_REQUIRED_FLAGS " /I\"$ENV{DXSDK_DIR}\\Include\"") + endif() + + check_include_file(d3d9.h HAVE_D3D_H) + check_include_file(d3d11_1.h HAVE_D3D11_H) + check_c_source_compiles(" + #include + #include + #include + ID3D12Device1 *device; + #if WDK_NTDDI_VERSION > 0x0A000008 + int main(int argc, char **argv) { return 0; } + #endif" HAVE_D3D12_H) + check_include_file(ddraw.h HAVE_DDRAW_H) + check_include_file(dsound.h HAVE_DSOUND_H) + check_include_file(dinput.h HAVE_DINPUT_H) + if(WINDOWS_STORE OR SDL_CPU_ARM32) + set(HAVE_DINPUT_H 0) + endif() + check_include_file(dxgi.h HAVE_DXGI_H) + cmake_pop_check_state() + if(HAVE_D3D_H OR HAVE_D3D11_H OR HAVE_D3D12_H OR HAVE_DDRAW_H OR HAVE_DSOUND_H OR HAVE_DINPUT_H) + set(HAVE_DIRECTX TRUE) + if(NOT MINGW AND NOT USE_WINSDK_DIRECTX) + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(PROCESSOR_ARCH "x64") + else() + set(PROCESSOR_ARCH "x86") + endif() + sdl_link_directories("$") + sdl_include_directories(PRIVATE SYSTEM "$") + endif() + endif() + endif() + + if(SDL_XINPUT) + # xinput.h may need windows.h, but does not include it itself. + check_c_source_compiles(" + #include + #include + int main(int argc, char **argv) { return 0; }" HAVE_XINPUT_H) + check_c_source_compiles(" + #define COBJMACROS + #include + __x_ABI_CWindows_CGaming_CInput_CIGamepadStatics2 *s2; + int main(int argc, char **argv) { return 0; }" HAVE_WINDOWS_GAMING_INPUT_H) + endif() + + # headers needed elsewhere + check_include_file(tpcshrd.h HAVE_TPCSHRD_H) + check_include_file(roapi.h HAVE_ROAPI_H) + check_include_file(mmdeviceapi.h HAVE_MMDEVICEAPI_H) + check_include_file(audioclient.h HAVE_AUDIOCLIENT_H) + check_include_file(sensorsapi.h HAVE_SENSORSAPI_H) + check_include_file(shellscalingapi.h HAVE_SHELLSCALINGAPI_H) + + if(SDL_AUDIO) + if(HAVE_DSOUND_H AND NOT WINDOWS_STORE) + set(SDL_AUDIO_DRIVER_DSOUND 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/directsound/*.c") + set(HAVE_SDL_AUDIO TRUE) + endif() + + if(SDL_WASAPI AND HAVE_AUDIOCLIENT_H AND HAVE_MMDEVICEAPI_H) + set(SDL_AUDIO_DRIVER_WASAPI 1) + set(HAVE_WASAPI TRUE) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/wasapi/*.c") + if(WINDOWS_STORE) + sdl_sources("${SDL3_SOURCE_DIR}/src/audio/wasapi/SDL_wasapi_winrt.cpp") + endif() + set(HAVE_SDL_AUDIO TRUE) + endif() + endif() + + if(SDL_VIDEO) + if(WINDOWS_STORE) + set(SDL_VIDEO_DRIVER_WINRT 1) + sdl_glob_sources( + "${SDL3_SOURCE_DIR}/src/video/winrt/*.c" + "${SDL3_SOURCE_DIR}/src/video/winrt/*.cpp" + "${SDL3_SOURCE_DIR}/src/render/direct3d11/*.cpp" + ) + else() + set(SDL_VIDEO_DRIVER_WINDOWS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/windows/*.c") + endif() + + if(SDL_RENDER_D3D AND HAVE_D3D_H AND NOT WINDOWS_STORE) + set(SDL_VIDEO_RENDER_D3D 1) + set(HAVE_RENDER_D3D TRUE) + endif() + if(SDL_RENDER_D3D AND HAVE_D3D11_H) + set(SDL_VIDEO_RENDER_D3D11 1) + set(HAVE_RENDER_D3D TRUE) + endif() + if(SDL_RENDER_D3D AND HAVE_D3D12_H AND NOT WINDOWS_STORE) + set(SDL_VIDEO_RENDER_D3D12 1) + set(HAVE_RENDER_D3D TRUE) + endif() + set(HAVE_SDL_VIDEO TRUE) + endif() + + set(SDL_THREAD_GENERIC_COND_SUFFIX 1) + set(SDL_THREAD_GENERIC_RWLOCK_SUFFIX 1) + set(SDL_THREAD_WINDOWS 1) + sdl_sources( + "${SDL3_SOURCE_DIR}/src/thread/generic/SDL_syscond.c" + "${SDL3_SOURCE_DIR}/src/thread/generic/SDL_sysrwlock.c" + "${SDL3_SOURCE_DIR}/src/thread/windows/SDL_syscond_cv.c" + "${SDL3_SOURCE_DIR}/src/thread/windows/SDL_sysmutex.c" + "${SDL3_SOURCE_DIR}/src/thread/windows/SDL_sysrwlock_srw.c" + "${SDL3_SOURCE_DIR}/src/thread/windows/SDL_syssem.c" + "${SDL3_SOURCE_DIR}/src/thread/windows/SDL_systhread.c" + "${SDL3_SOURCE_DIR}/src/thread/windows/SDL_systls.c" + ) + set(HAVE_SDL_THREADS TRUE) + + if(SDL_SENSOR AND HAVE_SENSORSAPI_H AND NOT WINDOWS_STORE) + set(SDL_SENSOR_WINDOWS 1) + set(HAVE_SDL_SENSORS TRUE) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/sensor/windows/*.c") + endif() + + if(SDL_POWER) + if(WINDOWS_STORE) + set(SDL_POWER_WINRT 1) + sdl_sources("${SDL3_SOURCE_DIR}/src/power/winrt/SDL_syspower.cpp") + else() + set(SDL_POWER_WINDOWS 1) + sdl_sources("${SDL3_SOURCE_DIR}/src/power/windows/SDL_syspower.c") + set(HAVE_SDL_POWER TRUE) + endif() + endif() + + if(WINDOWS_STORE) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/locale/winrt/*.c") + else() + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/locale/windows/*.c") + endif() + set(HAVE_SDL_LOCALE TRUE) + + set(SDL_FILESYSTEM_WINDOWS 1) + if(WINDOWS_STORE) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/filesystem/winrt/*.cpp") + sdl_sources("${SDL3_SOURCE_DIR}/src/filesystem/windows/SDL_sysfsops.c") + else() + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/filesystem/windows/*.c") + endif() + set(HAVE_SDL_FILESYSTEM TRUE) + + set(SDL_FSOPS_WINDOWS 1) + set(HAVE_SDL_FSOPS TRUE) + + set(SDL_STORAGE_GENERIC 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/storage/generic/*.c") + if(NOT WINDOWS_STORE) + set(SDL_STORAGE_STEAM 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/storage/steam/*.c") + endif() + set(HAVE_SDL_STORAGE 1) + + # Libraries for Win32 native and MinGW + if(NOT WINDOWS_STORE) + sdl_link_dependency(base LIBS kernel32 user32 gdi32 winmm imm32 ole32 oleaut32 version uuid advapi32 setupapi shell32) + endif() + + if(WINDOWS_STORE) + sdl_link_dependency(windows + LIBS + vccorlib$<$:d>.lib + msvcrt$<$:d>.lib + LINK_OPTIONS + /nodefaultlib:vccorlib$<$:d> + /nodefaultlib:msvcrt$<$:d> + ) + endif() + + set(SDL_TIME_WINDOWS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/time/windows/*.c") + set(HAVE_SDL_TIME TRUE) + + set(SDL_TIMER_WINDOWS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/timer/windows/*.c") + set(HAVE_SDL_TIMERS TRUE) + + set(SDL_LOADSO_WINDOWS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/loadso/windows/*.c") + set(HAVE_SDL_LOADSO TRUE) + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/core/windows/*.c") + + if(SDL_VIDEO) + if(SDL_OPENGL AND NOT WINDOWS_STORE) + set(SDL_VIDEO_OPENGL 1) + set(SDL_VIDEO_OPENGL_WGL 1) + set(SDL_VIDEO_RENDER_OGL 1) + set(HAVE_OPENGL TRUE) + endif() + + if(SDL_OPENGLES) + set(SDL_VIDEO_OPENGL_EGL 1) + set(SDL_VIDEO_OPENGL_ES2 1) + set(SDL_VIDEO_RENDER_OGL_ES2 1) + set(HAVE_OPENGLES TRUE) + endif() + + if(SDL_VULKAN) + set(SDL_VIDEO_VULKAN 1) + set(HAVE_VULKAN TRUE) + if(SDL_RENDER_VULKAN) + set(SDL_VIDEO_RENDER_VULKAN 1) + set(HAVE_RENDER_VULKAN TRUE) + endif() + endif() + endif() + + if(SDL_HIDAPI) + CheckHIDAPI() + endif() + + if(SDL_JOYSTICK) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/joystick/windows/*.c") + + if(NOT WINDOWS_STORE) + set(SDL_JOYSTICK_RAWINPUT 1) + endif() + if(HAVE_DINPUT_H) + set(SDL_JOYSTICK_DINPUT 1) + sdl_link_dependency(joystick LIBS dinput8) + endif() + if(HAVE_XINPUT_H) + if(NOT WINDOWS_STORE) + set(SDL_JOYSTICK_XINPUT 1) + set(HAVE_XINPUT TRUE) + endif() + if(HAVE_WINDOWS_GAMING_INPUT_H) + set(SDL_JOYSTICK_WGI 1) + endif() + endif() + set(HAVE_SDL_JOYSTICK TRUE) + + if(SDL_HAPTIC) + if(HAVE_DINPUT_H AND NOT WINDOWS_STORE) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/haptic/windows/*.c") + set(SDL_HAPTIC_DINPUT 1) + set(HAVE_SDL_HAPTIC TRUE) + endif() + endif() + endif() + + if(SDL_CAMERA) + if(NOT WINDOWS_STORE) + set(HAVE_CAMERA TRUE) + set(SDL_CAMERA_DRIVER_MEDIAFOUNDATION 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/mediafoundation/*.c") + endif() + endif() + + sdl_glob_sources(SHARED "${SDL3_SOURCE_DIR}/src/core/windows/*.rc") + if(MINGW OR CYGWIN) + sdl_pc_link_options("-mwindows") + endif() + +elseif(APPLE) + # TODO: rework this all for proper macOS, iOS and Darwin support + + # !!! FIXME: all the `if(IOS OR TVOS OR VISIONOS)` checks should get merged into one variable, so we're ready for the next platform (or just WatchOS). + + # We always need these libs on macOS at the moment. + # !!! FIXME: we need Carbon for some very old API calls in + # !!! FIXME: src/video/cocoa/SDL_cocoakeyboard.c, but we should figure out + # !!! FIXME: how to dump those. + if(DARWIN OR MACOSX) + set(SDL_FRAMEWORK_COCOA 1) + set(SDL_FRAMEWORK_CARBON 1) + endif() + set(SDL_FRAMEWORK_FOUNDATION 1) + set(SDL_FRAMEWORK_COREVIDEO 1) + + # iOS can use a CADisplayLink for main callbacks. macOS just uses the generic one atm. + if(IOS OR TVOS OR VISIONOS) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/main/ios/*.m") + set(HAVE_SDL_MAIN_CALLBACKS TRUE) + endif() + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/file/cocoa/*.m") + + if(SDL_CAMERA) + if(IOS OR TVOS OR MACOSX OR DARWIN) + set(SDL_CAMERA_DRIVER_COREMEDIA 1) + set(HAVE_CAMERA TRUE) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/coremedia/*.m") + endif() + endif() + + if(IOS OR TVOS OR VISIONOS) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/misc/ios/*.m") + else() + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/misc/macos/*.m") + endif() + set(HAVE_SDL_MISC TRUE) + + if(SDL_AUDIO) + set(SDL_AUDIO_DRIVER_COREAUDIO 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/coreaudio/*.m") + set(HAVE_SDL_AUDIO TRUE) + set(SDL_FRAMEWORK_COREAUDIO 1) + set(SDL_FRAMEWORK_AUDIOTOOLBOX 1) + set(SDL_FRAMEWORK_AVFOUNDATION 1) + endif() + + if(SDL_HIDAPI) + CheckHIDAPI() + endif() + + if(SDL_JOYSTICK) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/joystick/apple/*.m") + if(IOS OR TVOS OR VISIONOS) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/joystick/steam/*.c") + set(SDL_JOYSTICK_MFI 1) + if(IOS OR VISIONOS) + set(SDL_FRAMEWORK_COREMOTION 1) + endif() + set(SDL_FRAMEWORK_GAMECONTROLLER 1) + set(SDL_FRAMEWORK_COREHAPTICS 1) + else() + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/joystick/darwin/*.c") + set_property(SOURCE ${MFI_JOYSTICK_SOURCES} APPEND_STRING PROPERTY COMPILE_FLAGS " -fobjc-weak") + check_objc_source_compiles(" + #include + #include + #import + #import + #if MAC_OS_X_VERSION_MIN_REQUIRED < 1080 + #error GameController framework doesn't work on this configuration + #endif + #if TARGET_CPU_X86 + #error GameController framework doesn't work on this configuration + #endif + int main() { return 0; }" HAVE_FRAMEWORK_GAMECONTROLLER) + check_objc_source_compiles(" + #include + #include + #import + #import + int main() { return 0; }" HAVE_FRAMEWORK_COREHAPTICS) + if(HAVE_FRAMEWORK_GAMECONTROLLER AND HAVE_FRAMEWORK_COREHAPTICS) + # Only enable MFI if we also have CoreHaptics to ensure rumble works + set(SDL_JOYSTICK_MFI 1) + set(SDL_FRAMEWORK_GAMECONTROLLER 1) + set(SDL_FRAMEWORK_COREHAPTICS 1) + endif() + if(NOT VISIONOS) + set(SDL_JOYSTICK_IOKIT 1) + set(SDL_FRAMEWORK_IOKIT 1) + endif() + set(SDL_FRAMEWORK_FF 1) + endif() + set(HAVE_SDL_JOYSTICK TRUE) + endif() + + if(SDL_HAPTIC) + if (IOS OR TVOS OR VISIONOS) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/haptic/dummy/*.c") + set(SDL_HAPTIC_DUMMY 1) + else() + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/haptic/darwin/*.c") + set(SDL_HAPTIC_IOKIT 1) + set(SDL_FRAMEWORK_IOKIT 1) + set(SDL_FRAMEWORK_FF 1) + endif() + set(HAVE_SDL_HAPTIC TRUE) + endif() + + if(SDL_POWER) + if (IOS OR TVOS OR VISIONOS) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/power/uikit/*.m") + set(SDL_POWER_UIKIT 1) + else() + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/power/macos/*.c") + set(SDL_POWER_MACOSX 1) + set(SDL_FRAMEWORK_IOKIT 1) + endif() + set(HAVE_SDL_POWER TRUE) + endif() + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/locale/macos/*.m") + set(HAVE_SDL_LOCALE TRUE) + + set(SDL_TIME_UNIX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/time/unix/*.c") + set(HAVE_SDL_TIME TRUE) + + set(SDL_TIMER_UNIX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/timer/unix/*.c") + set(HAVE_SDL_TIMERS TRUE) + + set(SDL_FILESYSTEM_COCOA 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/filesystem/cocoa/*.m") + set(HAVE_SDL_FILESYSTEM TRUE) + + # TODO: SDL_STORAGE_ICLOUD + set(SDL_STORAGE_GENERIC 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/storage/generic/*.c") + if(DARWIN OR MACOSX) + set(SDL_STORAGE_STEAM 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/storage/steam/*.c") + endif() + set(HAVE_SDL_STORAGE 1) + + set(SDL_FSOPS_POSIX 1) + sdl_sources("${SDL3_SOURCE_DIR}/src/filesystem/posix/SDL_sysfsops.c") + set(HAVE_SDL_FSOPS TRUE) + + if(SDL_SENSOR) + if(IOS OR VISIONOS) + set(SDL_SENSOR_COREMOTION 1) + set(HAVE_SDL_SENSORS TRUE) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/sensor/coremotion/*.m") + endif() + endif() + + # iOS hack needed - http://code.google.com/p/ios-cmake/ ? + if(SDL_VIDEO) + if (IOS OR TVOS OR VISIONOS) + set(SDL_VIDEO_DRIVER_UIKIT 1) + set(SDL_FRAMEWORK_COREGRAPHICS 1) + set(SDL_FRAMEWORK_QUARTZCORE 1) + set(SDL_FRAMEWORK_UIKIT 1) + set(SDL_IPHONE_KEYBOARD 1) + set(SDL_IPHONE_LAUNCHSCREEN 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/uikit/*.m") + set(HAVE_SDL_VIDEO TRUE) + else() + CheckCOCOA() + if(SDL_OPENGL) + set(SDL_VIDEO_OPENGL 1) + set(SDL_VIDEO_OPENGL_CGL 1) + set(SDL_VIDEO_RENDER_OGL 1) + set(HAVE_OPENGL TRUE) + endif() + endif() + + if(SDL_OPENGLES) + if(IOS OR TVOS OR VISIONOS) + set(SDL_FRAMEWORK_OPENGLES 1) + set(SDL_VIDEO_OPENGL_ES 1) + else() + set(SDL_VIDEO_OPENGL_EGL 1) + endif() + set(SDL_VIDEO_OPENGL_ES2 1) + set(SDL_VIDEO_RENDER_OGL_ES2 1) + set(HAVE_OPENGLES TRUE) + endif() + + if(SDL_VULKAN OR SDL_METAL OR SDL_RENDER_METAL) + check_objc_source_compiles(" + #include + #import + #import + + #if (!TARGET_CPU_X86_64 && !TARGET_CPU_ARM64) + #error Metal doesn't work on this configuration + #endif + int main(int argc, char **argv) { return 0; }" HAVE_FRAMEWORK_METAL) + if(HAVE_FRAMEWORK_METAL) + set(SDL_FRAMEWORK_METAL 1) + set(SDL_FRAMEWORK_QUARTZCORE 1) + if(SDL_VULKAN) + set(SDL_VIDEO_VULKAN 1) + set(HAVE_VULKAN TRUE) + if(SDL_RENDER_VULKAN) + set(SDL_VIDEO_RENDER_VULKAN 1) + set(HAVE_RENDER_VULKAN TRUE) + endif() + endif() + if(SDL_METAL) + set(SDL_VIDEO_METAL 1) + set(HAVE_METAL TRUE) + endif() + if(SDL_RENDER_METAL) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/render/metal/*.m") + set(SDL_VIDEO_RENDER_METAL 1) + set(HAVE_RENDER_METAL TRUE) + endif() + endif() + endif() + endif() + + # Actually load the frameworks at the end so we don't duplicate include. + if(SDL_FRAMEWORK_COREVIDEO) + find_library(COREMEDIA CoreMedia) + if(COREMEDIA) + sdl_link_dependency(corevideo LINK_OPTIONS "-Wl,-framework,CoreMedia") + endif() + sdl_link_dependency(corevideo LINK_OPTIONS "-Wl,-framework,CoreVideo") + endif() + if(SDL_FRAMEWORK_COCOA) + sdl_link_dependency(cocoa LINK_OPTIONS "-Wl,-framework,Cocoa") + endif() + if(SDL_FRAMEWORK_IOKIT) + sdl_link_dependency(iokit LINK_OPTIONS "-Wl,-framework,IOKit") + endif() + if(SDL_FRAMEWORK_FF) + sdl_link_dependency(ff LINK_OPTIONS "-Wl,-framework,ForceFeedback") + endif() + if(SDL_FRAMEWORK_CARBON) + sdl_link_dependency(carbon LINK_OPTIONS "-Wl,-framework,Carbon") + endif() + if(SDL_FRAMEWORK_COREAUDIO) + sdl_link_dependency(core_audio LINK_OPTIONS "-Wl,-framework,CoreAudio") + endif() + if(SDL_FRAMEWORK_AUDIOTOOLBOX) + sdl_link_dependency(audio_toolbox LINK_OPTIONS "-Wl,-framework,AudioToolbox") + endif() + if(SDL_FRAMEWORK_AVFOUNDATION) + sdl_link_dependency(av_foundation LINK_OPTIONS "-Wl,-framework,AVFoundation") + endif() + if(SDL_FRAMEWORK_COREBLUETOOTH) + sdl_link_dependency(core_bluetooth LINK_OPTIONS "-Wl,-framework,CoreBluetooth") + endif() + if(SDL_FRAMEWORK_COREGRAPHICS) + sdl_link_dependency(core_graphics LINK_OPTIONS "-Wl,-framework,CoreGraphics") + endif() + if(SDL_FRAMEWORK_COREMOTION) + sdl_link_dependency(core_motion LINK_OPTIONS "-Wl,-framework,CoreMotion") + endif() + if(SDL_FRAMEWORK_FOUNDATION) + sdl_link_dependency(foundation LINK_OPTIONS "-Wl,-framework,Foundation") + endif() + if(SDL_FRAMEWORK_GAMECONTROLLER) + find_library(GAMECONTROLLER GameController) + if(GAMECONTROLLER) + sdl_link_dependency(game_controller LINK_OPTIONS "-Wl,-weak_framework,GameController") + endif() + endif() + if(SDL_FRAMEWORK_METAL) + if(IOS OR TVOS OR VISIONOS) + sdl_link_dependency(metal LINK_OPTIONS "-Wl,-framework,Metal") + else() + sdl_link_dependency(metal LINK_OPTIONS "-Wl,-weak_framework,Metal") + endif() + endif() + if(SDL_FRAMEWORK_OPENGLES) + sdl_link_dependency(opengles LINK_OPTIONS "-Wl,-framework,OpenGLES") + endif() + if(SDL_FRAMEWORK_QUARTZCORE) + if(IOS OR TVOS OR VISIONOS) + sdl_link_dependency(quartz_core LINK_OPTIONS "-Wl,-framework,QuartzCore") + else() + sdl_link_dependency(metal LINK_OPTIONS "-Wl,-weak_framework,QuartzCore") + endif() + endif() + if(SDL_FRAMEWORK_UIKIT) + sdl_link_dependency(ui_kit LINK_OPTIONS "-Wl,-framework,UIKit") + endif() + if(SDL_FRAMEWORK_COREHAPTICS) + find_library(COREHAPTICS CoreHaptics) + if(COREHAPTICS) + sdl_link_dependency(core_haptics LINK_OPTIONS "-Wl,-framework,CoreHaptics") + endif() + endif() + + CheckPTHREAD() + + if(SDL_RPATH AND SDL_SHARED) + set(SDL_RLD_FLAGS "-Wl,-rpath,\${libdir}") + set(HAVE_RPATH TRUE) + endif() + +elseif(HAIKU) + enable_language(CXX) + if(SDL_AUDIO) + set(SDL_AUDIO_DRIVER_HAIKU 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/haiku/*.cc") + set(HAVE_SDL_AUDIO TRUE) + endif() + + if(SDL_JOYSTICK) + set(SDL_JOYSTICK_HAIKU 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/joystick/haiku/*.cc") + set(HAVE_SDL_JOYSTICK TRUE) + endif() + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/misc/haiku/*.cc") + set(HAVE_SDL_MISC TRUE) + + if(SDL_VIDEO) + set(SDL_VIDEO_DRIVER_HAIKU 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/haiku/*.cc") + set(HAVE_SDL_VIDEO TRUE) + + if(SDL_OPENGL) + # TODO: Use FIND_PACKAGE(OpenGL) instead + set(SDL_VIDEO_OPENGL 1) + set(SDL_VIDEO_OPENGL_HAIKU 1) + set(SDL_VIDEO_RENDER_OGL 1) + sdl_link_dependency(opengl LIBS GL) + set(HAVE_OPENGL TRUE) + endif() + endif() + + set(SDL_FILESYSTEM_HAIKU 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/filesystem/haiku/*.cc") + set(HAVE_SDL_FILESYSTEM TRUE) + + set(SDL_FSOPS_POSIX 1) + sdl_sources("${SDL3_SOURCE_DIR}/src/filesystem/posix/SDL_sysfsops.c") + set(HAVE_SDL_FSOPS TRUE) + + set(SDL_TIME_UNIX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/time/unix/*.c") + set(HAVE_SDL_TIME TRUE) + + set(SDL_TIMER_HAIKU 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/timer/haiku/*.c") + set(HAVE_SDL_TIMERS TRUE) + + if(SDL_POWER) + set(SDL_POWER_HAIKU 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/power/haiku/*.c") + set(HAVE_SDL_POWER TRUE) + endif() + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/locale/haiku/*.cc") + set(HAVE_SDL_LOCALE TRUE) + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/core/haiku/*.cc") + + CheckPTHREAD() + sdl_link_dependency(base LIBS root be media game device textencoding tracker) + +elseif(RISCOS) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/misc/riscos/*.c") + set(HAVE_SDL_MISC TRUE) + + if(SDL_VIDEO) + set(SDL_VIDEO_DRIVER_RISCOS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/riscos/*.c") + set(HAVE_SDL_VIDEO TRUE) + endif() + + set(SDL_FILESYSTEM_RISCOS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/filesystem/riscos/*.c") + set(HAVE_SDL_FILESYSTEM TRUE) + + set(SDL_FSOPS_POSIX 1) + sdl_sources("${SDL3_SOURCE_DIR}/src/filesystem/posix/SDL_sysfsops.c") + set(HAVE_SDL_FSOPS TRUE) + + set(SDL_TIME_UNIX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/time/unix/*.c") + set(HAVE_SDL_TIME TRUE) + + set(SDL_TIMER_UNIX 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/timer/unix/*.c") + set(HAVE_SDL_TIMERS TRUE) + + if(SDL_CLOCK_GETTIME) + set(HAVE_CLOCK_GETTIME 1) + endif() + + CheckPTHREAD() + + if(SDL_AUDIO) + CheckOSS() + endif() + +elseif(VITA) + # SDL_spinlock.c Needs to be compiled in ARM mode. + cmake_push_check_state() + string(APPEND CMAKE_REQUIRED_FLAGS " -Werror=unused-command-line-argument") + check_c_compiler_flag(-marm HAVE_ARM_MODE) + cmake_pop_check_state() + if(HAVE_ARM_MODE) + set_property(SOURCE "${SDL3_SOURCE_DIR}/src/atomic/SDL_spinlock.c" APPEND_STRING PROPERTY COMPILE_FLAGS " -marm") + endif() + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/misc/vita/*.c") + set(HAVE_SDL_MISC TRUE) + + if(SDL_AUDIO) + set(SDL_AUDIO_DRIVER_VITA 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/vita/*.c") + set(HAVE_SDL_AUDIO TRUE) + endif() + + set(SDL_FILESYSTEM_VITA 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/filesystem/vita/*.c") + set(HAVE_SDL_FILESYSTEM TRUE) + + # !!! FIXME: do we need a FSops implementation for this? + + if(SDL_JOYSTICK) + set(SDL_JOYSTICK_VITA 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/joystick/vita/*.c") + set(HAVE_SDL_JOYSTICK TRUE) + endif() + + if(SDL_POWER) + set(SDL_POWER_VITA 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/power/vita/*.c") + set(HAVE_SDL_POWER TRUE) + endif() + + set(SDL_THREAD_VITA 1) + sdl_sources( + "${SDL3_SOURCE_DIR}/src/thread/vita/SDL_sysmutex.c" + "${SDL3_SOURCE_DIR}/src/thread/vita/SDL_syssem.c" + "${SDL3_SOURCE_DIR}/src/thread/vita/SDL_systhread.c" + "${SDL3_SOURCE_DIR}/src/thread/generic/SDL_syscond.c" + "${SDL3_SOURCE_DIR}/src/thread/generic/SDL_sysrwlock.c" + "${SDL3_SOURCE_DIR}/src/thread/generic/SDL_systls.c" + ) + set(HAVE_SDL_THREADS TRUE) + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/locale/vita/*.c") + set(HAVE_SDL_LOCALE TRUE) + + set(SDL_TIME_VITA 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/time/vita/*.c") + set(HAVE_SDL_TIME TRUE) + + set(SDL_TIMER_VITA 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/timer/vita/*.c") + set(HAVE_SDL_TIMERS TRUE) + + if(SDL_SENSOR) + set(SDL_SENSOR_VITA 1) + set(HAVE_SDL_SENSORS TRUE) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/sensor/vita/*.c") + endif() + + if(SDL_VIDEO) + set(SDL_VIDEO_DRIVER_VITA 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/vita/*.c") + set(HAVE_SDL_VIDEO TRUE) + + if(VIDEO_VITA_PIB) + check_include_file(pib.h HAVE_PIGS_IN_BLANKET_H) + + if(HAVE_PIGS_IN_BLANKET_H) + set(SDL_VIDEO_OPENGL_ES2 1) + sdl_link_dependency(pib + LIBS + pib + libScePiglet_stub_weak + taihen_stub_weak + SceShaccCg_stub_weak + ) + set(HAVE_VIDEO_VITA_PIB ON) + set(SDL_VIDEO_VITA_PIB 1) + else() + set(HAVE_VIDEO_VITA_PIB OFF) + endif() + endif() + + if(VIDEO_VITA_PVR) + check_include_file(gpu_es4/psp2_pvr_hint.h HAVE_PVR_H) + if(HAVE_PVR_H) + sdl_compile_definitions(PRIVATE "__psp2__") + set(SDL_VIDEO_OPENGL_EGL 1) + set(HAVE_OPENGLES TRUE) + set(SDL_VIDEO_OPENGL_ES 1) + set(SDL_VIDEO_OPENGL_ES2 1) + set(SDL_VIDEO_RENDER_OGL_ES2 1) + + sdl_link_dependency(pvr + LIBS + libgpu_es4_ext_stub_weak + libIMGEGL_stub_weak + SceIme_stub + ) + + set(HAVE_VIDEO_VITA_PVR ON) + set(SDL_VIDEO_VITA_PVR 1) + + if(SDL_OPENGL) + check_include_file(gl4esinit.h HAVE_GL4ES_H) + if(HAVE_GL4ES_H) + set(HAVE_OPENGL TRUE) + set(SDL_VIDEO_OPENGL 1) + set(SDL_VIDEO_RENDER_OGL 1) + sdl_link_dependency(opengl LIBS libGL_stub) + set(SDL_VIDEO_VITA_PVR_OGL 1) + endif() + endif() + + else() + set(HAVE_VIDEO_VITA_PVR OFF) + endif() + endif() + + set(SDL_VIDEO_RENDER_VITA_GXM 1) + sdl_link_dependency(base + LIBS + SceGxm_stub + SceDisplay_stub + SceCtrl_stub + SceAppMgr_stub + SceAppUtil_stub + SceAudio_stub + SceAudioIn_stub + SceSysmodule_stub + SceDisplay_stub + SceCtrl_stub + SceIofilemgr_stub + SceCommonDialog_stub + SceTouch_stub + SceHid_stub + SceMotion_stub + ScePower_stub + SceProcessmgr_stub + ) + endif() + + sdl_compile_definitions(PRIVATE "__VITA__") + +elseif(PSP) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/core/psp/*.c") + + if(SDL_AUDIO) + set(SDL_AUDIO_DRIVER_PSP 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/psp/*.c") + set(HAVE_SDL_AUDIO TRUE) + endif() + + set(SDL_FILESYSTEM_PSP 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/filesystem/psp/*.c") + set(HAVE_SDL_FILESYSTEM TRUE) + + # !!! FIXME: do we need a FSops implementation for this? + + if(SDL_JOYSTICK) + set(SDL_JOYSTICK_PSP 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/joystick/psp/*.c") + set(HAVE_SDL_JOYSTICK TRUE) + endif() + + if(SDL_POWER) + set(SDL_POWER_PSP 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/power/psp/*.c") + set(HAVE_SDL_POWER TRUE) + endif() + + set(SDL_THREAD_PSP 1) + sdl_glob_sources( + "${SDL3_SOURCE_DIR}/src/thread/generic/SDL_syscond.c" + "${SDL3_SOURCE_DIR}/src/thread/generic/SDL_systls.c" + "${SDL3_SOURCE_DIR}/src/thread/generic/SDL_sysrwlock.c" + "${SDL3_SOURCE_DIR}/src/thread/psp/*.c" + ) + set(HAVE_SDL_THREADS TRUE) + + set(SDL_TIME_PSP 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/time/psp/*.c") + set(HAVE_SDL_TIME TRUE) + + set(SDL_TIMER_PSP 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/timer/psp/*.c") + set(HAVE_SDL_TIMERS TRUE) + + if(SDL_VIDEO) + set(SDL_VIDEO_DRIVER_PSP 1) + set(SDL_VIDEO_RENDER_PSP 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/psp/*.c") + set(SDL_VIDEO_OPENGL 1) + set(HAVE_SDL_VIDEO TRUE) + endif() + + sdl_link_dependency(base + LIBS + GL + pspvram + pspaudio + pspvfpu + pspdisplay + pspgu + pspge + psphprm + pspctrl + psppower + ) + +elseif(PS2) + sdl_compile_definitions(PRIVATE "PS2" "__PS2__") + sdl_include_directories(PRIVATE SYSTEM "$ENV{PS2SDK}/ports/include" "$ENV{PS2DEV}/gsKit/include") + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/core/ps2/*.c") + + if(SDL_AUDIO) + set(SDL_AUDIO_DRIVER_PS2 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/ps2/*.c") + set(HAVE_SDL_AUDIO TRUE) + endif() + + set(SDL_FILESYSTEM_PS2 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/filesystem/ps2/*.c") + set(HAVE_SDL_FILESYSTEM TRUE) + + # !!! FIXME: do we need a FSops implementation for this? + + if(SDL_JOYSTICK) + set(SDL_JOYSTICK_PS2 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/joystick/ps2/*.c") + set(HAVE_SDL_JOYSTICK TRUE) + endif() + + set(SDL_THREAD_PS2 1) + sdl_glob_sources( + "${SDL3_SOURCE_DIR}/src/thread/generic/SDL_syscond.c" + "${SDL3_SOURCE_DIR}/src/thread/generic/SDL_sysmutex.c" + "${SDL3_SOURCE_DIR}/src/thread/generic/SDL_sysrwlock.c" + "${SDL3_SOURCE_DIR}/src/thread/generic/SDL_systls.c" + "${SDL3_SOURCE_DIR}/src/thread/ps2/*.c" + ) + set(HAVE_SDL_THREADS TRUE) + + set(SDL_TIME_PS2 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/time/ps2/*.c") + set(HAVE_SDL_TIME TRUE) + + set(SDL_TIMER_PS2 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/timer/ps2/*.c") + set(HAVE_SDL_TIMERS TRUE) + + if(SDL_VIDEO) + set(SDL_VIDEO_DRIVER_PS2 1) + set(SDL_VIDEO_RENDER_PS2 1) + sdl_glob_sources( + "${SDL3_SOURCE_DIR}/src/video/ps2/*.c" + "${SDL3_SOURCE_DIR}/src/render/ps2/*.c" + ) + set(SDL_VIDEO_OPENGL 0) + set(HAVE_SDL_VIDEO TRUE) + endif() + + sdl_link_dependency(base + LIBS + patches + gskit + dmakit + ps2_drivers + ) +elseif(N3DS) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/core/n3ds/*.c") + + if(SDL_AUDIO) + set(SDL_AUDIO_DRIVER_N3DS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/n3ds/*.c") + set(HAVE_SDL_AUDIO TRUE) + endif() + + set(SDL_FILESYSTEM_N3DS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/filesystem/n3ds/*.c") + set(HAVE_SDL_FILESYSTEM TRUE) + + # !!! FIXME: do we need a FSops implementation for this? + + if(SDL_JOYSTICK) + set(SDL_JOYSTICK_N3DS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/joystick/n3ds/*.c") + set(HAVE_SDL_JOYSTICK TRUE) + endif() + + if(SDL_POWER) + set(SDL_POWER_N3DS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/power/n3ds/*.c") + set(HAVE_SDL_POWER TRUE) + endif() + + set(SDL_THREAD_N3DS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/thread/n3ds/*.c") + sdl_sources( + "${SDL3_SOURCE_DIR}/src/thread/generic/SDL_systls.c" + "${SDL3_SOURCE_DIR}/src/thread/generic/SDL_sysrwlock.c" + ) + set(HAVE_SDL_THREADS TRUE) + + set(SDL_TIME_N3DS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/time/n3ds/*.c") + set(HAVE_SDL_TIME TRUE) + + set(SDL_TIMER_N3DS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/timer/n3ds/*.c") + set(HAVE_SDL_TIMERS TRUE) + + set(SDL_FSOPS_POSIX 1) + sdl_sources("${SDL3_SOURCE_DIR}/src/filesystem/posix/SDL_sysfsops.c") + set(HAVE_SDL_FSOPS TRUE) + + if(SDL_SENSOR) + set(SDL_SENSOR_N3DS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/sensor/n3ds/*.c") + set(HAVE_SDL_SENSORS TRUE) + endif() + + if(SDL_VIDEO) + set(SDL_VIDEO_DRIVER_N3DS 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/n3ds/*.c") + set(HAVE_SDL_VIDEO TRUE) + endif() + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/locale/n3ds/*.c") + set(HAVE_SDL_LOCALE TRUE) + + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/file/n3ds/*.c") +endif() + +if (SDL_DIALOG) + if(UNIX AND NOT APPLE AND NOT RISCOS AND NOT HAIKU) + sdl_sources(${SDL3_SOURCE_DIR}/src/dialog/unix/SDL_unixdialog.c) + sdl_sources(${SDL3_SOURCE_DIR}/src/dialog/unix/SDL_portaldialog.c) + sdl_sources(${SDL3_SOURCE_DIR}/src/dialog/unix/SDL_zenitydialog.c) + set(HAVE_SDL_DIALOG TRUE) + elseif(HAIKU) + sdl_sources(${SDL3_SOURCE_DIR}/src/dialog/haiku/SDL_haikudialog.cc) + set(HAVE_SDL_DIALOG TRUE) + elseif(WINDOWS AND NOT WINDOWS_STORE) + sdl_sources(${SDL3_SOURCE_DIR}/src/dialog/windows/SDL_windowsdialog.c) + set(HAVE_SDL_DIALOG TRUE) + elseif(APPLE) + sdl_sources(${SDL3_SOURCE_DIR}/src/dialog/cocoa/SDL_cocoadialog.m) + set(HAVE_SDL_DIALOG TRUE) + endif() +endif() + +# Platform-independent options + +if(SDL_VIDEO) + if(SDL_OFFSCREEN AND SDL_VIDEO_OPENGL_EGL) + set(SDL_VIDEO_DRIVER_OFFSCREEN 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/offscreen/*.c") + set(HAVE_OFFSCREEN TRUE) + set(HAVE_SDL_VIDEO TRUE) + endif() +endif() + +# Dummies +# configure.ac does it differently: +# if not have X +# if enable_X { SDL_X_DISABLED = 1 } +# [add dummy sources] +# so it always adds a dummy, without checking, if it was actually requested. +# This leads to missing internal references on building, since the +# src/X/*.c does not get included. +if(NOT HAVE_SDL_AUDIO) + set(SDL_AUDIO_DRIVER_DUMMY 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/audio/dummy/*.c") +endif() +if(NOT HAVE_SDL_VIDEO) + set(SDL_VIDEO_DRIVER_DUMMY 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/video/dummy/*.c") +endif() +if(NOT HAVE_SDL_JOYSTICK) + set(SDL_JOYSTICK_DUMMY 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/joystick/dummy/*.c") +endif() +if(NOT HAVE_SDL_HAPTIC) + set(SDL_HAPTIC_DUMMY 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/haptic/dummy/*.c") +endif() +if(NOT HAVE_SDL_SENSORS) + set(SDL_SENSOR_DUMMY 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/sensor/dummy/*.c") +endif() +if(NOT HAVE_SDL_LOADSO) + set(SDL_LOADSO_DUMMY 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/loadso/dummy/*.c") +endif() +if(NOT HAVE_SDL_FILESYSTEM) + set(SDL_FILESYSTEM_DUMMY 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/filesystem/dummy/*.c") +endif() +if(NOT HAVE_SDL_STORAGE) + set(SDL_STORAGE_GENERIC 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/storage/generic/*.c") +endif() +if(NOT HAVE_SDL_FSOPS) + set(SDL_FSOPS_DUMMY 1) + sdl_sources("${SDL3_SOURCE_DIR}/src/filesystem/dummy/SDL_sysfsops.c") +endif() +if(NOT HAVE_SDL_LOCALE) + set(SDL_LOCALE_DUMMY 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/locale/dummy/*.c") +endif() +if(NOT HAVE_SDL_MISC) + set(SDL_MISC_DUMMY 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/misc/dummy/*.c") +endif() +if(NOT HAVE_SDL_DIALOG) + set(SDL_DIALOG_DUMMY 1) + sdl_sources(${SDL3_SOURCE_DIR}/src/dialog/dummy/SDL_dummydialog.c) +endif() +if(NOT HAVE_CAMERA) + set(SDL_CAMERA_DRIVER_DUMMY 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/camera/dummy/*.c") +endif() + +# We always need to have threads and timers around +if(NOT HAVE_SDL_THREADS) + # The emscripten platform has been carefully vetted to work without threads + if(EMSCRIPTEN) + set(SDL_THREADS_DISABLED 1) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/thread/generic/*.c") + else() + message(FATAL_ERROR "Threads are needed by many SDL subsystems and may not be disabled") + endif() +endif() +if(NOT HAVE_SDL_TIMERS) + message(FATAL_ERROR "Timers are needed by many SDL subsystems and may not be disabled") +endif() + +# Most platforms use this. +if(NOT HAVE_SDL_MAIN_CALLBACKS) + sdl_glob_sources("${SDL3_SOURCE_DIR}/src/main/generic/*.c") +endif() + +# config variables may contain generator expression, so we need to generate SDL_build_config.h in 2 steps: +# 1. replace all `#cmakedefine`'s and `@abc@` +configure_file("${SDL3_SOURCE_DIR}/include/build_config/SDL_build_config.h.cmake" + "${SDL3_BINARY_DIR}/SDL_build_config.h.intermediate") +# 2. generate SDL_build_config.h in an build_type-dependent folder (which should be first in the include search path) +file(GENERATE + OUTPUT "${SDL3_BINARY_DIR}/include-config-$>/build_config/SDL_build_config.h" + INPUT "${SDL3_BINARY_DIR}/SDL_build_config.h.intermediate" +) + +file(GLOB SDL3_INCLUDE_FILES "${SDL3_SOURCE_DIR}/include/SDL3/*.h") +file(GLOB SDL3_TEST_INCLUDE_FILES "${SDL3_SOURCE_DIR}/include/SDL3/SDL_test*.h") +foreach(_hdr IN LISTS SDL3_INCLUDE_FILES) + if(_hdr MATCHES ".*SDL_revision\\.h" OR _hdr MATCHES ".*SDL_test.*\\.h") + list(REMOVE_ITEM SDL3_INCLUDE_FILES "${_hdr}") + endif() +endforeach() + +set(SDL_REVISION "" CACHE STRING "Custom SDL revision (overrides SDL_REVISION_SUFFIX)") +if(NOT SDL_REVISION) + set(SDL_REVISION_SUFFIX "" CACHE STRING "Suffix for the SDL revision") + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/VERSION.txt") + # If VERSION.txt exists, it contains the SDL version + file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION.txt" SDL_REVISION_CENTER) + string(STRIP "${SDL_REVISION_CENTER}" SDL_REVISION_CENTER) + else() + # If VERSION does not exist, use git to calculate a version + git_describe(SDL_REVISION_CENTER) + if(NOT SDL_REVISION_CENTER) + set(SDL_REVISION_CENTER "${SDL3_VERSION}-no-vcs") + endif() + endif() + set(SDL_REVISION "SDL-${SDL_REVISION_CENTER}${SDL_REVISION_SUFFIX}") +endif() + +execute_process(COMMAND "${CMAKE_COMMAND}" -E make_directory "${SDL3_BINARY_DIR}/include/SDL3") +configure_file(include/build_config/SDL_revision.h.cmake include/SDL3/SDL_revision.h @ONLY) +list(APPEND SDL3_INCLUDE_FILES "${SDL3_BINARY_DIR}/include/SDL3/SDL_revision.h") + +if(SDL_FRAMEWORK) + # With Apple frameworks, headers in the PUBLIC_HEADER property also need to be added as sources + list(APPEND SDL3_INCLUDE_FILES ${SDL3_TEST_INCLUDE_FILES}) + sdl_sources(${SDL3_INCLUDE_FILES}) +endif() + +if((CMAKE_STATIC_LIBRARY_PREFIX STREQUAL "" AND CMAKE_STATIC_LIBRARY_SUFFIX STREQUAL ".lib") OR SDL_FRAMEWORK) + # - Avoid conflict between the dll import library and the static library + # - Create SDL3-static Apple Framework + set(sdl_static_libname "SDL3-static") +else() + set(sdl_static_libname "SDL3") +endif() + +macro(check_add_debug_flag FLAG SUFFIX) + check_c_compiler_flag(${FLAG} HAS_C_FLAG_${SUFFIX}) + if(HAS_C_FLAG_${SUFFIX}) + string(APPEND CMAKE_C_FLAGS_DEBUG " ${FLAG}") + endif() + + check_cxx_compiler_flag(${FLAG} HAS_CXX_${SUFFIX}) + if(HAS_CXX_${SUFFIX}) + string(APPEND CMAKE_CXX_FLAGS_DEBUG " ${FLAG}") + endif() +endmacro() + +macro(asan_check_add_debug_flag ASAN_FLAG) + check_add_debug_flag("-fsanitize=${ASAN_FLAG}" "${ASAN_FLAG}") + if(HAS_C_${ASAN_FLAG} OR HAS_CXX_${ASAN_FLAG}) + set(HAVE_ASAN ON) + endif() +endmacro() + +macro(asan_check_add_debug_flag2 ASAN_FLAG) + # for some sanitize flags we have to manipulate the CMAKE_REQUIRED_LIBRARIES: + # http://cmake.3232098.n2.nabble.com/CHECK-CXX-COMPILER-FLAG-doesn-t-give-correct-result-for-fsanitize-address-tp7600216p7600217.html + + set(FLAG "-fsanitize=${ASAN_FLAG}") + + cmake_push_check_state() + list(APPEND CMAKE_REQUIRED_LIBRARIES ${FLAG} asan) + check_c_compiler_flag (${FLAG} HAS_C_FLAG_${ASAN_FLAG}) + check_cxx_compiler_flag (${FLAG} HAS_CXX_FLAG_${ASAN_FLAG}) + cmake_pop_check_state() + + if (HAS_C_FLAG_${ASAN_FLAG}) + string(APPEND CMAKE_C_FLAGS_DEBUG " ${FLAG}") + endif() + + if (HAS_CXX_${ASAN_FLAG}) + string(APPEND CMAKE_CXX_FLAGS_DEBUG " ${FLAG}") + endif() + + if(HAS_C_${ASAN_FLAG} OR HAS_CXX_${ASAN_FLAG}) + set(HAVE_ASAN ON) + endif() +endmacro() + +# enable AddressSanitizer if supported +if(SDL_ASAN) + asan_check_add_debug_flag2("address") + asan_check_add_debug_flag("bool") + asan_check_add_debug_flag("bounds") + asan_check_add_debug_flag("enum") + asan_check_add_debug_flag("float-cast-overflow") + asan_check_add_debug_flag("float-divide-by-zero") + asan_check_add_debug_flag("nonnull-attribute") + asan_check_add_debug_flag("returns-nonnull-attribute") + asan_check_add_debug_flag("signed-integer-overflow") + asan_check_add_debug_flag("undefined") + asan_check_add_debug_flag("vla-bound") + asan_check_add_debug_flag("leak") + # The object size sanitizer has no effect on unoptimized builds on Clang, + # but causes warnings. + if(NOT USE_CLANG OR CMAKE_BUILD_TYPE STREQUAL "") + asan_check_add_debug_flag("object-size") + endif() +endif() + +if(SDL_CCACHE) + find_program(CCACHE_BINARY ccache) + if(CCACHE_BINARY) + set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_BINARY}) + set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_BINARY}) + set(CMAKE_OBJC_COMPILER_LAUNCHER ${CCACHE_BINARY}) + set(HAVE_CCACHE ON) + else() + set(HAVE_CCACHE OFF) + endif() +else() + set(HAVE_CCACHE OFF) +endif() + +if(SDL_CLANG_TIDY) + cmake_minimum_required(VERSION 3.6) + find_program(CLANG_TIDY_BINARY clang-tidy) + + if(CLANG_TIDY_BINARY) + set(HAVE_CLANG_TIDY ON) + get_clang_tidy_ignored_files(CLANG_TIDY_IGNORED_FILES) + set(CLANG_TIDY_COMMAND "${CLANG_TIDY_BINARY}" "-extra-arg=-Wno-unknown-warning-option" "--line-filter=[${CLANG_TIDY_IGNORED_FILES}]") + if(SDL_WERROR) + list(APPEND CLANG_TIDY_COMMAND "--warnings-as-errors=*") + endif() + set(CMAKE_C_CLANG_TIDY ${CLANG_TIDY_COMMAND}) + set(CMAKE_CXX_CLANG_TIDY ${CLANG_TIDY_COMMAND}) + set(CMAKE_OBJC_CLANG_TIDY ${CLANG_TIDY_COMMAND}) + get_property(shared_sources TARGET SDL3-collector PROPERTY INTERFACE_SOURCES) + set_source_files_properties(${shared_sources} PROPERTIES SKIP_PRECOMPILE_HEADERS TRUE) + file(GLOB STDLIB_SOURCES "${SDL3_SOURCE_DIR}/src/stdlib/*.c") + set_property(SOURCE ${STDLIB_SOURCES} APPEND PROPERTY COMPILE_DEFINITIONS "SDL_DISABLE_ANALYZE_MACROS") + else() + set(HAVE_CLANG_TIDY OFF) + endif() +endif() + +if(SDL_TESTS) + set(HAVE_TESTS ON) +endif() + +if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(ARCH_64 TRUE) +else() + set(ARCH_64 FALSE) +endif() + +if(ANDROID) + sdl_include_directories(PRIVATE SYSTEM "${ANDROID_NDK}/sources/android/cpufeatures") +endif() + +if(APPLE) + cmake_push_check_state(RESET) + check_c_compiler_flag(-fobjc-arc COMPILER_SUPPORTS_FOBJC_ARC) + cmake_pop_check_state() + if(NOT COMPILER_SUPPORTS_FOBJC_ARC) + message(FATAL_ERROR "Compiler does not support -fobjc-arc: this is required on Apple platforms") + endif() + sdl_compile_options(PRIVATE "-fobjc-arc") +endif() + +if(PS2) + sdl_compile_options(PRIVATE "-Wno-error=declaration-after-statement") +endif() + +if(NOT SDL_LIBC) + if(MSVC) + set(saved_CMAKE_TRY_COMPILE_TARGET_TYPE "${CMAKE_TRY_COMPILE_TARGET_TYPE}") + cmake_push_check_state(RESET) + set(CMAKE_TRY_COMPILE_TARGET_TYPE "STATIC_LIBRARY") + check_c_compiler_flag("/Zl" COMPILER_SUPPORTS_Zl) + cmake_pop_check_state() + set(CMAKE_TRY_COMPILE_TARGET_TYPE "${saved_CMAKE_TRY_COMPILE_TARGET_TYPE}") + if(COMPILER_SUPPORTS_Zl) + # /Zl omits the default C runtime library name from the .obj file. + sdl_compile_options(PRIVATE "$<$,$>:/Zl>") + if(TARGET SDL3_test) + target_compile_options(SDL3_test PRIVATE "/Zl") + endif() + endif() + endif() +endif() + +if(APPLE) + get_property(sources TARGET SDL3-collector PROPERTY INTERFACE_SOURCES) + foreach(SOURCE_FILE IN LISTS sources) + get_filename_component(FILE_EXTENSION ${SOURCE_FILE} EXT) + if(FILE_EXTENSION STREQUAL ".m") + set_property(SOURCE ${SOURCE_FILE} APPEND_STRING PROPERTY COMPILE_FLAGS " -x objective-c") + endif() + if(NOT FILE_EXTENSION STREQUAL ".c" AND NOT FILE_EXTENSION STREQUAL ".cpp") + set_property(SOURCE ${SOURCE_FILE} PROPERTY SKIP_PRECOMPILE_HEADERS 1) + endif() + endforeach() +endif() + +# Disable precompiled headers on SDL_dynapi.c to avoid applying dynapi overrides +set_source_files_properties(src/dynapi/SDL_dynapi.c PROPERTIES SKIP_PRECOMPILE_HEADERS 1) + +set(SDL_FRAMEWORK_RESOURCES + Xcode/SDL/pkg-support/resources/ReadMe.txt + LICENSE.txt +) +if(SDL_FRAMEWORK) + sdl_sources(${SDL_FRAMEWORK_RESOURCES}) +endif() + +add_library(SDL3_Headers INTERFACE) +add_library(SDL3::Headers ALIAS SDL3_Headers) +set_target_properties(SDL3_Headers PROPERTIES + EXPORT_NAME "Headers" +) +target_include_directories(SDL3_Headers + INTERFACE + "$" + "$" + "$" +) +if(SDL_FRAMEWORK) + target_include_directories(SDL3_Headers + INTERFACE + "$/SDL3.framework/Headers>" + ) + # Add `-F ` to make sure `#include "SDL3/..."` works. + target_compile_options(SDL3_Headers + INTERFACE + "$>" + ) +else() + target_include_directories(SDL3_Headers + INTERFACE + "$" + "$" + ) +endif() + +if(SDL_SHARED) + set_target_properties(SDL3-shared PROPERTIES + OUTPUT_NAME "SDL3" + POSITION_INDEPENDENT_CODE TRUE + LINK_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/src/dynapi/SDL_dynapi.sym" + INTERFACE_LINK_DEPENDS "$" + WINDOWS_EXPORT_ALL_SYMBOLS FALSE + DEFINE_SYMBOL "DLL_EXPORT" + ) + if(HAVE_GCC_FVISIBILITY) + set_target_properties(SDL3-shared PROPERTIES + C_VISIBILITY_PRESET "hidden" + CXX_VISIBILITY_PRESET "hidden" + OBJC_VISIBILITY_PRESET "hidden" + ) + endif() + if(NOT SDL_LIBC) + if(MSVC AND (NOT MSVC_CLANG AND NOT WINDOWS_STORE)) + # Don't try to link with the default set of libraries. + # Note: The clang toolset for Visual Studio does not support /NODEFAULTLIB. + target_link_options(SDL3-shared PRIVATE "/NODEFAULTLIB") + if(SDL_CPU_ARM32) + # linking to msvcrt.lib avoid unresolved external symbols + # (__rt_sdiv, __rt_udiv, __rt_sdiv64, _rt_udiv64, __dtou64, __u64tod, __i64tos) + target_link_libraries(SDL3-shared PRIVATE msvcrt.lib) + endif() + endif() + if(HAS_Q_NO_USE_LIBIRC) + target_compile_options(SDL3-shared PRIVATE /Q_no-use-libirc) + endif() + endif() + if(APPLE) + set_target_properties(SDL3-shared PROPERTIES + MACOSX_RPATH TRUE + FRAMEWORK "${SDL_FRAMEWORK}" + ) + if(SDL_FRAMEWORK) + set_target_properties(SDL3-shared PROPERTIES + PUBLIC_HEADER "${SDL3_INCLUDE_FILES}" + FRAMEWORK_VERSION "${SDL_FRAMEWORK_VERSION}" + MACOSX_FRAMEWORK_IDENTIFIER "org.libsdl.SDL3" + RESOURCE "${SDL_FRAMEWORK_RESOURCES}" + ) + endif() + set_target_properties(SDL3-shared PROPERTIES + SOVERSION "${SDL_DYLIB_COMPAT_VERSION}" # SOVERSION corresponds to compatibility version + VERSION "${SDL_DYLIB_CURRENT_VERSION}" # VERSION corresponds to the current version + ) + elseif(UNIX AND NOT ANDROID) + set_target_properties(SDL3-shared PROPERTIES + VERSION "${SDL_SO_VERSION}" + SOVERSION "${SDL_SO_VERSION_MAJOR}" + ) + else() + if(WINDOWS OR CYGWIN) + set_target_properties(SDL3-shared PROPERTIES + PREFIX "" + ) + endif() + endif() + target_link_libraries(SDL3-shared PRIVATE ${SDL_CMAKE_DEPENDS}) + target_include_directories(SDL3-shared + PRIVATE + "$>>" + "$" + ) + target_link_libraries(SDL3-shared PUBLIC $) + if(MINGW OR CYGWIN) + target_link_options(SDL3-shared PRIVATE -static-libgcc) + endif() + # Use `Compatible Interface Properties` to: + # - allow consumers to enforce a shared/static library + # - block linking to SDL libraries of different major version + set_property(TARGET SDL3-shared APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL SDL3_SHARED) + set_property(TARGET SDL3-shared PROPERTY INTERFACE_SDL3_SHARED TRUE) + set_property(TARGET SDL3-shared APPEND PROPERTY COMPATIBLE_INTERFACE_STRING "SDL_VERSION") + set_property(TARGET SDL3-shared PROPERTY INTERFACE_SDL_VERSION "SDL${SDL3_VERSION_MAJOR}") + if(NOT CMAKE_VERSION VERSION_LESS "3.16") + target_precompile_headers(SDL3-shared PRIVATE "$<$,$>:${PROJECT_SOURCE_DIR}/src/SDL_internal.h>") + endif() +endif() + +if(SDL_STATIC) + set_target_properties(SDL3-static PROPERTIES + OUTPUT_NAME "${sdl_static_libname}" + POSITION_INDEPENDENT_CODE "${SDL_STATIC_PIC}" + ) + target_compile_definitions(SDL3-static PRIVATE SDL_STATIC_LIB) + target_link_libraries(SDL3-static PRIVATE ${SDL_CMAKE_DEPENDS}) + target_include_directories(SDL3-static + PRIVATE + "$>>" + "$" + ) + target_link_libraries(SDL3-static PUBLIC $) + # Use `Compatible Interface Properties` to: + # - allow consumers to enforce a shared/static library + # - block linking to SDL libraries of different major version + set_property(TARGET SDL3-static APPEND PROPERTY COMPATIBLE_INTERFACE_BOOL SDL3_SHARED) + set_property(TARGET SDL3-static PROPERTY INTERFACE_SDL3_SHARED FALSE) + set_property(TARGET SDL3-static APPEND PROPERTY COMPATIBLE_INTERFACE_STRING "SDL_VERSION") + set_property(TARGET SDL3-static PROPERTY INTERFACE_SDL_VERSION "SDL${SDL3_VERSION_MAJOR}") + if(NOT CMAKE_VERSION VERSION_LESS "3.16") + target_precompile_headers(SDL3-static PRIVATE "$<$,$>:${PROJECT_SOURCE_DIR}/src/SDL_internal.h>") + endif() +endif() + +sdl_compile_definitions( + PRIVATE + "SDL_BUILD_MAJOR_VERSION=${PROJECT_VERSION_MAJOR}" + "SDL_BUILD_MINOR_VERSION=${PROJECT_VERSION_MINOR}" + "SDL_BUILD_MICRO_VERSION=${PROJECT_VERSION_PATCH}" +) + +##### Tests ##### + +if(SDL_TEST_LIBRARY) + file(GLOB TEST_SOURCES "${SDL3_SOURCE_DIR}/src/test/*.c") + target_sources(SDL3_test PRIVATE ${TEST_SOURCES}) + if(APPLE) + set_target_properties(SDL3_test PROPERTIES + FRAMEWORK "${SDL_FRAMEWORK}" + ) + if(SDL_FRAMEWORK) + set_target_properties(SDL3_test PROPERTIES + FRAMEWORK_VERSION "${SDL_FRAMEWORK_VERSION}" + MACOSX_FRAMEWORK_IDENTIFIER "org.libsdl.SDL3_test" + RESOURCE "${SDL_FRAMEWORK_RESOURCES}" + ) + endif() + endif() + target_link_libraries(SDL3_test PUBLIC $) + # FIXME: get rid of EXTRA_TEST_LIBS variable + target_link_libraries(SDL3_test PRIVATE ${EXTRA_TEST_LIBS}) + set_property(TARGET SDL3_test APPEND PROPERTY COMPATIBLE_INTERFACE_STRING "SDL_VERSION") + set_property(TARGET SDL3_test PROPERTY INTERFACE_SDL_VERSION "SDL${SDL3_VERSION_MAJOR}") +endif() + +##### Configure installation folders ##### + +if(WINDOWS AND NOT MINGW) + set(SDL_INSTALL_CMAKEDIR_ROOT_DEFAULT "cmake") +else() + set(SDL_INSTALL_CMAKEDIR_ROOT_DEFAULT "${CMAKE_INSTALL_LIBDIR}/cmake") +endif() +set(SDL_INSTALL_CMAKEDIR_ROOT "${SDL_INSTALL_CMAKEDIR_ROOT_DEFAULT}" CACHE STRING "Root folder where to install SDL3Config.cmake related files (SDL3 subfolder for MSVC projects)") + +if(FREEBSD) + # FreeBSD uses ${PREFIX}/libdata/pkgconfig + set(SDL_PKGCONFIG_INSTALLDIR "libdata/pkgconfig") +else() + set(SDL_PKGCONFIG_INSTALLDIR "${CMAKE_INSTALL_LIBDIR}/pkgconfig") +endif() + +if(WINDOWS AND NOT MINGW) + set(SDL_INSTALL_CMAKEDIR "${SDL_INSTALL_CMAKEDIR_ROOT}") + set(SDL_INSTALL_LICENSEDIR "licenses/SDL3") + set(SDL_INSTALL_HEADERSDIR "${CMAKE_INSTALL_INCLUDEDIR}/SDL3") +elseif(SDL_FRAMEWORK) + set(SDL_INSTALL_CMAKEDIR "SDL3.framework/Versions/${SDL_FRAMEWORK_VERSION}/Resources/CMake") + set(SDL_INSTALL_LICENSEDIR "Resources") + set(SDL_INSTALL_HEADERSDIR "Headers") +else() + set(SDL_INSTALL_CMAKEDIR "${SDL_INSTALL_CMAKEDIR_ROOT}/SDL3") + set(SDL_INSTALL_LICENSEDIR "${CMAKE_INSTALL_DATAROOTDIR}/licenses/${PROJECT_NAME}") + set(SDL_INSTALL_HEADERSDIR "${CMAKE_INSTALL_INCLUDEDIR}/SDL3") +endif() + +if(SDL_FRAMEWORK) + set(SDL_SDL_INSTALL_RESOURCEDIR "SDL3.framework/Resources") + set(SDL_SDL_INSTALL_CMAKEDIR "${SDL_SDL_INSTALL_RESOURCEDIR}/CMake") + set(SDL_SDL_INSTALL_REAL_RESOURCEDIR "SDL3.framework/Versions/${SDL_FRAMEWORK_VERSION}/Resources") + set(SDL_SDL_INSTALL_REAL_CMAKEDIR "${SDL_SDL_INSTALL_REAL_RESOURCEDIR}/CMake") + + set(SDL_SDLtest_INSTALL_RESOURCEDIR "SDL3_test.framework/Resources") + set(SDL_SDLtest_INSTALL_CMAKEDIR "${SDL_SDLtest_INSTALL_RESOURCEDIR}/CMake") + set(SDL_SDLtest_INSTALL_CMAKEFILENAME "SDL3_testConfig.cmake") +else() + set(SDL_SDL_INSTALL_RESOURCEDIR ".") + set(SDL_SDL_INSTALL_CMAKEDIR ${SDL_INSTALL_CMAKEDIR}) + set(SDL_SDL_INSTALL_REAL_CMAKEDIR ${SDL_INSTALL_CMAKEDIR}) + + # Install SDL3*Targets.cmake files in lib/cmake/SDL3 + set(SDL_SDLstatic_INSTALL_RESOURCEDIR ".") + set(SDL_SDLstatic_INSTALL_CMAKEDIR "${SDL_SDL_INSTALL_CMAKEDIR}") + set(SDL_SDLstatic_INSTALL_CMAKEFILENAME "SDL3staticTargets.cmake") + + set(SDL_SDLtest_INSTALL_RESOURCEDIR ".") + set(SDL_SDLtest_INSTALL_CMAKEDIR "${SDL_SDL_INSTALL_CMAKEDIR}") + set(SDL_SDLtest_INSTALL_CMAKEFILENAME "SDL3testTargets.cmake") +endif() + +export(TARGETS SDL3_Headers NAMESPACE "SDL3::" FILE "SDL3headersTargets.cmake") + +if(SDL_SHARED) + export(TARGETS SDL3-shared NAMESPACE "SDL3::" FILE "SDL3sharedTargets.cmake") +endif() + +if(SDL_STATIC) + export(TARGETS SDL3-static NAMESPACE "SDL3::" FILE "SDL3staticTargets.cmake") +endif() + +if(SDL_TEST_LIBRARY) + export(TARGETS SDL3_test NAMESPACE "SDL3::" FILE "SDL3testTargets.cmake") +endif() + +sdl_cmake_config_find_pkg_config_commands(SDL_FIND_PKG_CONFIG_COMMANDS + COLLECTOR SDL3-collector + CONFIG_COMPONENT_FOUND_NAME SDL3_SDL3-static_FOUND +) +sdl_cmake_config_find_pkg_config_commands(SDL_TEST_FIND_PKG_CONFIG_COMMANDS + COLLECTOR SDL3_test-collector + CONFIG_COMPONENT_FOUND_NAME SDL3_SDL3_test_FOUND +) + +include(CMakePackageConfigHelpers) +configure_package_config_file(cmake/SDL3Config.cmake.in SDL3Config.cmake + NO_SET_AND_CHECK_MACRO + PATH_VARS CMAKE_INSTALL_PREFIX + INSTALL_DESTINATION "${SDL_SDL_INSTALL_CMAKEDIR}" +) +write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/SDL3ConfigVersion.cmake" + COMPATIBILITY AnyNewerVersion +) + +sdl_cmake_config_required_modules(sdl_cmake_modules) +if(sdl_cmake_modules) + execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different ${sdl_cmake_modules} "${SDL3_BINARY_DIR}") +endif() + +if(NOT SDL_DISABLE_INSTALL) + + ##### sdl3.pc ##### + configure_sdl3_pc() + if(NOT SDL_FRAMEWORK) + install(FILES ${SDL3_BINARY_DIR}/sdl3.pc DESTINATION "${SDL_PKGCONFIG_INSTALLDIR}") + endif() + + ##### Installation targets #####() + + install(TARGETS SDL3_Headers EXPORT SDL3headersTargets) + + if(SDL_SHARED) + install(TARGETS SDL3-shared EXPORT SDL3sharedTargets + PUBLIC_HEADER DESTINATION "${SDL_INSTALL_HEADERSDIR}" + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + FRAMEWORK DESTINATION "." + RESOURCE DESTINATION "${SDL_SDL_INSTALL_RESOURCEDIR}" + ) + if(MSVC) + SDL_install_pdb(SDL3-shared "${CMAKE_INSTALL_BINDIR}") + endif() + endif() + + if(SDL_STATIC) + install(TARGETS SDL3-static EXPORT SDL3staticTargets + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + FRAMEWORK DESTINATION "." + RESOURCE DESTINATION "${SDL_SDLstatic_INSTALL_RESOURCEDIR}" + ) + if(MSVC) + SDL_install_pdb(SDL3-static "${CMAKE_INSTALL_LIBDIR}") + endif() + endif() + + if(SDL_TEST_LIBRARY) + install(TARGETS SDL3_test EXPORT SDL3testTargets + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" + FRAMEWORK DESTINATION "." + RESOURCE DESTINATION "${SDL_SDLtest_INSTALL_RESOURCEDIR}" + ) + if(MSVC) + SDL_install_pdb(SDL3_test "${CMAKE_INSTALL_LIBDIR}") + endif() + endif() + + ##### Install CMake Targets ##### + + install(EXPORT SDL3headersTargets + FILE "SDL3headersTargets.cmake" + NAMESPACE SDL3:: + DESTINATION "${SDL_SDL_INSTALL_CMAKEDIR}" + ) + + if(SDL_SHARED) + install(EXPORT SDL3sharedTargets + FILE "SDL3sharedTargets.cmake" + NAMESPACE SDL3:: + DESTINATION "${SDL_SDL_INSTALL_CMAKEDIR}" + ) + endif() + + if(SDL_STATIC) + install(EXPORT SDL3staticTargets + FILE "${SDL_SDLstatic_INSTALL_CMAKEFILENAME}" + NAMESPACE SDL3:: + DESTINATION "${SDL_SDLstatic_INSTALL_CMAKEDIR}" + ) + endif() + + if(SDL_TEST_LIBRARY) + install(EXPORT SDL3testTargets + FILE "${SDL_SDLtest_INSTALL_CMAKEFILENAME}" + NAMESPACE SDL3:: + DESTINATION "${SDL_SDLtest_INSTALL_CMAKEDIR}" + ) + endif() + + install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/SDL3Config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/SDL3ConfigVersion.cmake + ${sdl_cmake_modules} + DESTINATION "${SDL_SDL_INSTALL_REAL_CMAKEDIR}" + ) + + if(NOT SDL_FRAMEWORK) + install(FILES ${SDL3_INCLUDE_FILES} + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/SDL3" + ) + if(SDL_TEST_LIBRARY) + install(FILES ${SDL3_TEST_INCLUDE_FILES} + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/SDL3" + ) + endif() + + install(FILES "LICENSE.txt" DESTINATION "${SDL_INSTALL_LICENSEDIR}") + endif() + + if(NOT SDL_DISABLE_INSTALL_CPACK) + if(SDL_FRAMEWORK) + set(CPACK_GENERATOR "DragNDrop") + elseif(MSVC) + set(CPACK_GENERATOR "ZIP") + else() + set(CPACK_GENERATOR "TGZ") + endif() + configure_file(cmake/CPackProjectConfig.cmake.in CPackProjectConfig.cmake @ONLY) + set(CPACK_PROJECT_CONFIG_FILE "${SDL3_BINARY_DIR}/CPackProjectConfig.cmake") + # CPACK_SOURCE_PACKAGE_FILE_NAME must end with "-src" (so we can block creating a source archive) + set(CPACK_SOURCE_PACKAGE_FILE_NAME "SDL${PROJECT_VERSION_MAJOR}-${PROJECT_VERSION}-src") + set(CPACK_PACKAGE_DIRECTORY "${CMAKE_BINARY_DIR}/dist") + include(CPack) + endif() + + if(ANDROID) + if(TARGET SDL3-jar) + set(SDL_INSTALL_JAVADIR "${CMAKE_INSTALL_DATAROOTDIR}/java" CACHE PATH "Path where to install java clases + java sources") + install(FILES $ + DESTINATION "${SDL_INSTALL_JAVADIR}/SDL3") + configure_package_config_file(cmake/SDL3jarTargets.cmake.in SDL3jarTargets.cmake + INSTALL_DESTINATION "${SDL_SDL_INSTALL_CMAKEDIR}" + PATH_VARS SDL_INSTALL_JAVADIR + NO_CHECK_REQUIRED_COMPONENTS_MACRO + INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" + ) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SDL3jarTargets.cmake" + DESTINATION "${SDL_SDL_INSTALL_CMAKEDIR}" + ) + endif() + if(TARGET SDL3-javasources) + install(FILES "${SDL3_BINARY_DIR}/SDL3-${SDL3_VERSION}-sources.jar" + DESTINATION "${SDL_INSTALL_JAVADIR}/SDL3") + endif() + endif() + + if(NOT SDL_DISABLE_INSTALL_DOCS) + SDL_generate_manpages( + HEADERS_DIR "${PROJECT_SOURCE_DIR}/include/SDL3" + SYMBOL "SDL_Init" + WIKIHEADERS_PL_PATH "${CMAKE_CURRENT_SOURCE_DIR}/build-scripts/wikiheaders.pl" + REVISION "${SDL_REVISION}" + ) + if(TARGET SDL3-javadoc) + set(SDL_INSTALL_JAVADOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/javadoc" CACHE PATH "Path where to install SDL3 javadoc") + install(DIRECTORY "${SDL3_BINARY_DIR}/docs/javadoc/" + DESTINATION "${SDL_INSTALL_JAVADOCDIR}/SDL3") + endif() + endif() +endif() + +##### Uninstall target ##### + +if(NOT SDL_DISABLE_UNINSTALL) + if(NOT TARGET uninstall) + configure_file(cmake/cmake_uninstall.cmake.in cmake_uninstall.cmake IMMEDIATE @ONLY) + + add_custom_target(uninstall + COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") + endif() +endif() + +##### Tests subproject (must appear after the install/uninstall targets) ##### + +if(SDL_TESTS) + set(HAVE_TESTS ON) + enable_testing() + add_subdirectory(test) +endif() + +##### Fix Objective C builds ##### +string(APPEND CMAKE_OBJC_FLAGS " ${CMAKE_C_FLAGS}") + +SDL_PrintSummary() +debug_show_sdl_deps() diff --git a/extern/SDL3-3.1.0/CREDITS.md b/extern/SDL3-3.1.0/CREDITS.md new file mode 100644 index 0000000..370bcec --- /dev/null +++ b/extern/SDL3-3.1.0/CREDITS.md @@ -0,0 +1,34 @@ +# Simple DirectMedia Layer CREDITS + +Thanks to everyone who made this possible, including: + +- Cliff Matthews, for giving me a reason to start this project. :) -- Executor rocks! *grin* +- Ryan Gordon for helping everybody out and keeping the dream alive. :) +- Gabriel Jacobo for his work on the Android port and generally helping out all around. +- Philipp Wiesemann for his attention to detail reviewing the entire SDL code base and proposes patches. +- Andreas Schiffler for his dedication to unit tests, Visual Studio projects, and managing the Google Summer of Code. +- Mike Sartain for incorporating SDL into Team Fortress 2 and cheering me on at Valve. +- Alfred Reynolds for the game controller API and general (in)sanity +- Jørgen Tjernø¸ for numerous magical macOS fixes. +- Pierre-Loup Griffais for his deep knowledge of OpenGL drivers. +- Julian Winter for the SDL 2.0 website. +- Sheena Smith for many months of great work on the SDL wiki creating the API documentation and style guides. +- Paul Hunkin for his port of SDL to Android during the Google Summer of Code 2010. +- Eli Gottlieb for his work on shaped windows during the Google Summer of Code 2010. +- Jim Grandpre for his work on multi-touch and gesture recognition during + the Google Summer of Code 2010. +- Edgar "bobbens" Simo for his force feedback API development during the + Google Summer of Code 2008. +- Aaron Wishnick for his work on audio resampling and pitch shifting during + the Google Summer of Code 2008. +- Holmes Futrell for his port of SDL to the iPhone and iPod Touch during the + Google Summer of Code 2008. +- Jon Atkins for SDL_image, SDL_mixer and SDL_net documentation. +- Everybody at Loki Software, Inc. for their great contributions! + + And a big hand to everyone else who has contributed over the years. + +THANKS! :) + + -- Sam Lantinga + diff --git a/extern/SDL3-3.1.0/INSTALL.md b/extern/SDL3-3.1.0/INSTALL.md new file mode 100644 index 0000000..f071eab --- /dev/null +++ b/extern/SDL3-3.1.0/INSTALL.md @@ -0,0 +1,64 @@ +# To compile and install SDL: + +## Windows with Visual Studio: + +Read ./docs/README-visualc.md + +## Windows building with mingw-w64 for x86: + +Run: `cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=build-scripts/cmake-toolchain-mingw64-i686.cmake && cmake --build build && cmake --install build` + +## Windows building with mingw-w64 for x64: + +Run: `cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=build-scripts/cmake-toolchain-mingw64-x86_64.cmake && cmake --build build && cmake --install build` + +## macOS with Xcode: + +Read docs/README-macos.md + +## macOS from the command line: + +Run: `cmake -S . -B build && cmake --build build && cmake --install build` + +## Linux and other UNIX systems: + +Run: `cmake -S . -B build && cmake --build build && cmake --install build` + +## Android: + +Read docs/README-android.md + +## iOS: + +Read docs/README-ios.md + +## Using CMake: + +Read docs/README-cmake.md + +# Example code + +Look at the example programs in ./test, and check out the online +documentation at https://wiki.libsdl.org/SDL3/ + +# Discussion + +## Forums/mailing lists + +Join the SDL developer discussions, sign up on + +https://discourse.libsdl.org/ + +and go to the development forum + +https://discourse.libsdl.org/c/sdl-development/6 + +Once you sign up, you can use the forum through the website, or as a mailing +list from your email client. + +## Announcement list + +Sign up for the announcement list through the web interface: + +https://www.libsdl.org/mailing-list.php + diff --git a/extern/SDL3-3.1.0/LICENSE.txt b/extern/SDL3-3.1.0/LICENSE.txt new file mode 100644 index 0000000..74bb56c --- /dev/null +++ b/extern/SDL3-3.1.0/LICENSE.txt @@ -0,0 +1,18 @@ +Copyright (C) 1997-2024 Sam Lantinga + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + diff --git a/extern/SDL3-3.1.0/README-SDL.txt b/extern/SDL3-3.1.0/README-SDL.txt new file mode 100644 index 0000000..8d92955 --- /dev/null +++ b/extern/SDL3-3.1.0/README-SDL.txt @@ -0,0 +1,13 @@ + +Please distribute this file with the SDL runtime environment: + +The Simple DirectMedia Layer (SDL for short) is a cross-platform library +designed to make it easy to write multi-media software, such as games +and emulators. + +The Simple DirectMedia Layer library source code is available from: +https://www.libsdl.org/ + +This library is distributed under the terms of the zlib license: +http://www.zlib.net/zlib_license.html + diff --git a/extern/SDL3-3.1.0/README.md b/extern/SDL3-3.1.0/README.md new file mode 100644 index 0000000..c4861c7 --- /dev/null +++ b/extern/SDL3-3.1.0/README.md @@ -0,0 +1,17 @@ + +# Simple DirectMedia Layer (SDL) Version 3.0 + +https://www.libsdl.org/ + +Simple DirectMedia Layer is a cross-platform development library designed +to provide low level access to audio, keyboard, mouse, joystick, and graphics +hardware. It is used by video playback software, emulators, and popular games +including Valve's award winning catalog and many Humble Bundle games. + +More extensive documentation is available in the docs directory, starting +with [README.md](docs/README.md). If you are migrating to SDL 3.0 from SDL 2.0, +the changes are extensively documented in [README-migration.md](docs/README-migration.md). + +Enjoy! + +Sam Lantinga (slouken@libsdl.org) diff --git a/extern/SDL3-3.1.0/VERSION.txt b/extern/SDL3-3.1.0/VERSION.txt new file mode 100644 index 0000000..fd2a018 --- /dev/null +++ b/extern/SDL3-3.1.0/VERSION.txt @@ -0,0 +1 @@ +3.1.0 diff --git a/extern/SDL3-3.1.0/VisualC-GDK/SDL.sln b/extern/SDL3-3.1.0/VisualC-GDK/SDL.sln new file mode 100644 index 0000000..14289c2 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/SDL.sln @@ -0,0 +1,120 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.1.32414.318 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{D69D5741-611F-4E14-8541-1FEE94F50B5A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL3", "SDL\SDL.vcxproj", "{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsprite", "tests\testsprite\testsprite.vcxproj", "{40FB7794-D3C3-4CFE-BCF4-A80C96635682}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL3_test", "SDL_test\SDL_test.vcxproj", "{DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testcontroller", "tests\testcontroller\testcontroller.vcxproj", "{55812185-D13C-4022-9C81-32E0F4A08305}" + ProjectSection(ProjectDependencies) = postProject + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} = {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgdk", "tests\testgdk\testgdk.vcxproj", "{1C9A3F71-35A5-4C56-B292-F4375B3C3649}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Gaming.Desktop.x64 = Debug|Gaming.Desktop.x64 + Debug|Gaming.Xbox.Scarlett.x64 = Debug|Gaming.Xbox.Scarlett.x64 + Debug|Gaming.Xbox.XboxOne.x64 = Debug|Gaming.Xbox.XboxOne.x64 + Release|Gaming.Desktop.x64 = Release|Gaming.Desktop.x64 + Release|Gaming.Xbox.Scarlett.x64 = Release|Gaming.Xbox.Scarlett.x64 + Release|Gaming.Xbox.XboxOne.x64 = Release|Gaming.Xbox.XboxOne.x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|Gaming.Desktop.x64.ActiveCfg = Debug|Gaming.Desktop.x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|Gaming.Desktop.x64.Build.0 = Debug|Gaming.Desktop.x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|Gaming.Xbox.Scarlett.x64.ActiveCfg = Debug|Gaming.Xbox.Scarlett.x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|Gaming.Xbox.Scarlett.x64.Build.0 = Debug|Gaming.Xbox.Scarlett.x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|Gaming.Xbox.XboxOne.x64.ActiveCfg = Debug|Gaming.Xbox.XboxOne.x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|Gaming.Xbox.XboxOne.x64.Build.0 = Debug|Gaming.Xbox.XboxOne.x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|Gaming.Desktop.x64.ActiveCfg = Release|Gaming.Desktop.x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|Gaming.Desktop.x64.Build.0 = Release|Gaming.Desktop.x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|Gaming.Xbox.Scarlett.x64.ActiveCfg = Release|Gaming.Xbox.Scarlett.x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|Gaming.Xbox.Scarlett.x64.Build.0 = Release|Gaming.Xbox.Scarlett.x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|Gaming.Xbox.XboxOne.x64.ActiveCfg = Release|Gaming.Xbox.XboxOne.x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|Gaming.Xbox.XboxOne.x64.Build.0 = Release|Gaming.Xbox.XboxOne.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Gaming.Desktop.x64.ActiveCfg = Debug|Gaming.Desktop.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Gaming.Desktop.x64.Build.0 = Debug|Gaming.Desktop.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Gaming.Desktop.x64.Deploy.0 = Debug|Gaming.Desktop.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Gaming.Xbox.Scarlett.x64.ActiveCfg = Debug|Gaming.Xbox.Scarlett.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Gaming.Xbox.Scarlett.x64.Build.0 = Debug|Gaming.Xbox.Scarlett.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Gaming.Xbox.Scarlett.x64.Deploy.0 = Debug|Gaming.Xbox.Scarlett.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Gaming.Xbox.XboxOne.x64.ActiveCfg = Debug|Gaming.Xbox.XboxOne.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Gaming.Xbox.XboxOne.x64.Build.0 = Debug|Gaming.Xbox.XboxOne.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Gaming.Xbox.XboxOne.x64.Deploy.0 = Debug|Gaming.Xbox.XboxOne.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Gaming.Desktop.x64.ActiveCfg = Release|Gaming.Desktop.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Gaming.Desktop.x64.Build.0 = Release|Gaming.Desktop.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Gaming.Desktop.x64.Deploy.0 = Release|Gaming.Desktop.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Gaming.Xbox.Scarlett.x64.ActiveCfg = Release|Gaming.Xbox.Scarlett.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Gaming.Xbox.Scarlett.x64.Build.0 = Release|Gaming.Xbox.Scarlett.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Gaming.Xbox.Scarlett.x64.Deploy.0 = Release|Gaming.Xbox.Scarlett.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Gaming.Xbox.XboxOne.x64.ActiveCfg = Release|Gaming.Xbox.XboxOne.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Gaming.Xbox.XboxOne.x64.Build.0 = Release|Gaming.Xbox.XboxOne.x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Gaming.Xbox.XboxOne.x64.Deploy.0 = Release|Gaming.Xbox.XboxOne.x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|Gaming.Desktop.x64.ActiveCfg = Debug|Gaming.Desktop.x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|Gaming.Desktop.x64.Build.0 = Debug|Gaming.Desktop.x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|Gaming.Xbox.Scarlett.x64.ActiveCfg = Debug|Gaming.Xbox.Scarlett.x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|Gaming.Xbox.Scarlett.x64.Build.0 = Debug|Gaming.Xbox.Scarlett.x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|Gaming.Xbox.XboxOne.x64.ActiveCfg = Debug|Gaming.Xbox.XboxOne.x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|Gaming.Xbox.XboxOne.x64.Build.0 = Debug|Gaming.Xbox.XboxOne.x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Release|Gaming.Desktop.x64.ActiveCfg = Release|Gaming.Desktop.x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Release|Gaming.Desktop.x64.Build.0 = Release|Gaming.Desktop.x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Release|Gaming.Xbox.Scarlett.x64.ActiveCfg = Release|Gaming.Xbox.Scarlett.x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Release|Gaming.Xbox.Scarlett.x64.Build.0 = Release|Gaming.Xbox.Scarlett.x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Release|Gaming.Xbox.XboxOne.x64.ActiveCfg = Release|Gaming.Xbox.XboxOne.x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Release|Gaming.Xbox.XboxOne.x64.Build.0 = Release|Gaming.Xbox.XboxOne.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Debug|Gaming.Desktop.x64.ActiveCfg = Debug|Gaming.Desktop.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Debug|Gaming.Desktop.x64.Build.0 = Debug|Gaming.Desktop.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Debug|Gaming.Desktop.x64.Deploy.0 = Debug|Gaming.Desktop.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Debug|Gaming.Xbox.Scarlett.x64.ActiveCfg = Debug|Gaming.Xbox.Scarlett.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Debug|Gaming.Xbox.Scarlett.x64.Build.0 = Debug|Gaming.Xbox.Scarlett.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Debug|Gaming.Xbox.Scarlett.x64.Deploy.0 = Debug|Gaming.Xbox.Scarlett.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Debug|Gaming.Xbox.XboxOne.x64.ActiveCfg = Debug|Gaming.Xbox.XboxOne.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Debug|Gaming.Xbox.XboxOne.x64.Build.0 = Debug|Gaming.Xbox.XboxOne.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Debug|Gaming.Xbox.XboxOne.x64.Deploy.0 = Debug|Gaming.Xbox.XboxOne.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Release|Gaming.Desktop.x64.ActiveCfg = Release|Gaming.Desktop.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Release|Gaming.Desktop.x64.Build.0 = Release|Gaming.Desktop.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Release|Gaming.Desktop.x64.Deploy.0 = Release|Gaming.Desktop.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Release|Gaming.Xbox.Scarlett.x64.ActiveCfg = Release|Gaming.Xbox.Scarlett.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Release|Gaming.Xbox.Scarlett.x64.Build.0 = Release|Gaming.Xbox.Scarlett.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Release|Gaming.Xbox.Scarlett.x64.Deploy.0 = Release|Gaming.Xbox.Scarlett.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Release|Gaming.Xbox.XboxOne.x64.ActiveCfg = Release|Gaming.Xbox.XboxOne.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Release|Gaming.Xbox.XboxOne.x64.Build.0 = Release|Gaming.Xbox.XboxOne.x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Release|Gaming.Xbox.XboxOne.x64.Deploy.0 = Release|Gaming.Xbox.XboxOne.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Debug|Gaming.Desktop.x64.ActiveCfg = Debug|Gaming.Desktop.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Debug|Gaming.Desktop.x64.Build.0 = Debug|Gaming.Desktop.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Debug|Gaming.Desktop.x64.Deploy.0 = Debug|Gaming.Desktop.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Debug|Gaming.Xbox.Scarlett.x64.ActiveCfg = Debug|Gaming.Xbox.Scarlett.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Debug|Gaming.Xbox.Scarlett.x64.Build.0 = Debug|Gaming.Xbox.Scarlett.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Debug|Gaming.Xbox.Scarlett.x64.Deploy.0 = Debug|Gaming.Xbox.Scarlett.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Debug|Gaming.Xbox.XboxOne.x64.ActiveCfg = Debug|Gaming.Xbox.XboxOne.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Debug|Gaming.Xbox.XboxOne.x64.Build.0 = Debug|Gaming.Xbox.XboxOne.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Debug|Gaming.Xbox.XboxOne.x64.Deploy.0 = Debug|Gaming.Xbox.XboxOne.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Release|Gaming.Desktop.x64.ActiveCfg = Release|Gaming.Desktop.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Release|Gaming.Desktop.x64.Build.0 = Release|Gaming.Desktop.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Release|Gaming.Desktop.x64.Deploy.0 = Release|Gaming.Desktop.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Release|Gaming.Xbox.Scarlett.x64.ActiveCfg = Release|Gaming.Xbox.Scarlett.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Release|Gaming.Xbox.Scarlett.x64.Build.0 = Release|Gaming.Xbox.Scarlett.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Release|Gaming.Xbox.Scarlett.x64.Deploy.0 = Release|Gaming.Xbox.Scarlett.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Release|Gaming.Xbox.XboxOne.x64.ActiveCfg = Release|Gaming.Xbox.XboxOne.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Release|Gaming.Xbox.XboxOne.x64.Build.0 = Release|Gaming.Xbox.XboxOne.x64 + {1C9A3F71-35A5-4C56-B292-F4375B3C3649}.Release|Gaming.Xbox.XboxOne.x64.Deploy.0 = Release|Gaming.Xbox.XboxOne.x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {40FB7794-D3C3-4CFE-BCF4-A80C96635682} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {55812185-D13C-4022-9C81-32E0F4A08305} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {1C9A3F71-35A5-4C56-B292-F4375B3C3649} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C320C9F2-1A8F-41D7-B02B-6338F872BCAD} + EndGlobalSection +EndGlobal diff --git a/extern/SDL3-3.1.0/VisualC-GDK/SDL/SDL.vcxproj b/extern/SDL3-3.1.0/VisualC-GDK/SDL/SDL.vcxproj new file mode 100644 index 0000000..f254aaa --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/SDL/SDL.vcxproj @@ -0,0 +1,854 @@ + + + + + Debug + Gaming.Desktop.x64 + + + Debug + Gaming.Xbox.Scarlett.x64 + + + Debug + Gaming.Xbox.XboxOne.x64 + + + Release + Gaming.Desktop.x64 + + + Release + Gaming.Xbox.Scarlett.x64 + + + Release + Gaming.Xbox.XboxOne.x64 + + + + SDL3 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + SDL + 10.0 + + + + DynamicLibrary + $(DefaultPlatformToolset) + + + DynamicLibrary + $(DefaultPlatformToolset) + + + DynamicLibrary + $(DefaultPlatformToolset) + + + DynamicLibrary + $(DefaultPlatformToolset) + + + DynamicLibrary + $(DefaultPlatformToolset) + + + DynamicLibrary + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + $(SolutionDir)/../src;$(IncludePath) + + + $(SolutionDir)/../src;$(IncludePath) + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + .\Debug/SDL.tlb + + + Disabled + $(ProjectDir)\..\..\include;$(ProjectDir)\..\..\src;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + DLL_EXPORT;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + false + Level3 + OldStyle + OnlyExplicitInline + true + NotUsing + SDL_internal.h + + + _DEBUG;%(PreprocessorDefinitions) + + + setupapi.lib;winmm.lib;imm32.lib;version.lib;xgameruntime.lib;vcruntimed.lib;msvcrtd.lib;ucrtd.lib;msvcprtd.lib;%(AdditionalDependencies) + true + Windows + true + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + .\Debug/SDL.tlb + + + Disabled + $(ProjectDir)\..\..\include;$(ProjectDir)\..\..\src;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + DLL_EXPORT;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + false + Level3 + OldStyle + OnlyExplicitInline + true + + + _DEBUG;%(PreprocessorDefinitions) + + + setupapi.lib;winmm.lib;imm32.lib;version.lib;xgameruntime.lib;d3d12_xs.lib;uuid.lib;vcruntimed.lib;msvcrtd.lib;ucrtd.lib;msvcprtd.lib;%(AdditionalDependencies) + true + Windows + true + + + $(SolutionDir)..\src\render\direct3d12\compile_shaders_xbox.bat $(SolutionDir) + + + Building shader blobs (Xbox Series) + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + .\Debug/SDL.tlb + + + Disabled + $(ProjectDir)\..\..\include;$(ProjectDir)\..\..\src;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + DLL_EXPORT;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + false + Level3 + OldStyle + OnlyExplicitInline + true + + + _DEBUG;%(PreprocessorDefinitions) + + + setupapi.lib;winmm.lib;imm32.lib;version.lib;xgameruntime.lib;d3d12_x.lib;uuid.lib;vcruntimed.lib;msvcrtd.lib;ucrtd.lib;msvcprtd.lib;%(AdditionalDependencies) + true + Windows + true + + + $(SolutionDir)..\src\render\direct3d12\compile_shaders_xbox.bat $(SolutionDir) one + + + Building shader blobs (Xbox One) + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + .\Release/SDL.tlb + + + $(ProjectDir)\..\..\include;$(ProjectDir)\..\..\src;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + DLL_EXPORT;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + false + Level3 + ProgramDatabase + OnlyExplicitInline + true + NotUsing + SDL_internal.h + + + NDEBUG;%(PreprocessorDefinitions) + + + setupapi.lib;winmm.lib;imm32.lib;version.lib;xgameruntime.lib;vcruntime.lib;msvcrt.lib;ucrt.lib;msvcprt.lib;%(AdditionalDependencies) + true + Windows + true + true + true + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + .\Release/SDL.tlb + + + $(ProjectDir)\..\..\include;$(ProjectDir)\..\..\src;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + DLL_EXPORT;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + false + Level3 + ProgramDatabase + OnlyExplicitInline + true + + + NDEBUG;%(PreprocessorDefinitions) + + + setupapi.lib;winmm.lib;imm32.lib;version.lib;xgameruntime.lib;d3d12_xs.lib;uuid.lib;vcruntime.lib;msvcrt.lib;ucrt.lib;msvcprt.lib;%(AdditionalDependencies) + true + Windows + true + true + true + + + $(SolutionDir)..\src\render\direct3d12\compile_shaders_xbox.bat $(SolutionDir) + + + Building shader blobs (Xbox Series) + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + .\Release/SDL.tlb + + + $(ProjectDir)\..\..\include;$(ProjectDir)\..\..\src;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + DLL_EXPORT;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + false + Level3 + ProgramDatabase + OnlyExplicitInline + true + + + NDEBUG;%(PreprocessorDefinitions) + + + setupapi.lib;winmm.lib;imm32.lib;version.lib;xgameruntime.lib;d3d12_x.lib;uuid.lib;vcruntime.lib;msvcrt.lib;ucrt.lib;msvcprt.lib;%(AdditionalDependencies) + true + Windows + true + true + true + + + $(SolutionDir)..\src\render\direct3d12\compile_shaders_xbox.bat $(SolutionDir) one + + + Building shader blobs (Xbox One) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + Create + Create + + + Create + $(IntDir)$(TargetName)_cpp.pch + Create + $(IntDir)$(TargetName)_cpp.pch + + + true + true + true + true + + + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CompileAsCpp + CompileAsCpp + CompileAsCpp + CompileAsCpp + stdcpp17 + stdcpp17 + stdcpp17 + stdcpp17 + + + + NotUsing + NotUsing + + + + + + + + + + + + + + true + true + + + + + + CompileAsCpp + CompileAsCpp + CompileAsCpp + CompileAsCpp + stdcpp17 + stdcpp17 + stdcpp17 + stdcpp17 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CompileAsCpp + CompileAsCpp + CompileAsCpp + CompileAsCpp + stdcpp17 + stdcpp17 + stdcpp17 + stdcpp17 + + + + stdcpp17 + stdcpp17 + stdcpp17 + stdcpp17 + CompileAsCpp + CompileAsCpp + CompileAsCpp + CompileAsCpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CompileAsCpp + CompileAsCpp + CompileAsCpp + CompileAsCpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NotUsing + + + + + + + + + + + + + + + + + + + + + + + + + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extern/SDL3-3.1.0/VisualC-GDK/SDL/SDL.vcxproj.filters b/extern/SDL3-3.1.0/VisualC-GDK/SDL/SDL.vcxproj.filters new file mode 100644 index 0000000..ee31cee --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/SDL/SDL.vcxproj.filters @@ -0,0 +1,456 @@ + + + + + + + + filesystem + + + filesystem\windows + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + time + + + time\windows + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + filesystem + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extern/SDL3-3.1.0/VisualC-GDK/SDL_test/SDL_test.vcxproj b/extern/SDL3-3.1.0/VisualC-GDK/SDL_test/SDL_test.vcxproj new file mode 100644 index 0000000..136a461 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/SDL_test/SDL_test.vcxproj @@ -0,0 +1,209 @@ + + + + + Debug + Gaming.Desktop.x64 + + + Debug + Gaming.Xbox.Scarlett.x64 + + + Debug + Gaming.Xbox.XboxOne.x64 + + + Release + Gaming.Desktop.x64 + + + Release + Gaming.Xbox.Scarlett.x64 + + + Release + Gaming.Xbox.XboxOne.x64 + + + + SDL3_test + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} + SDL_test + 10.0 + + + + StaticLibrary + $(DefaultPlatformToolset) + + + StaticLibrary + $(DefaultPlatformToolset) + + + StaticLibrary + $(DefaultPlatformToolset) + + + StaticLibrary + $(DefaultPlatformToolset) + + + StaticLibrary + $(DefaultPlatformToolset) + + + StaticLibrary + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + + + $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + Level3 + OldStyle + true + + + + + + $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + Level3 + OldStyle + true + + + + + + $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + Level3 + OldStyle + true + + + + + + Disabled + $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + false + Level3 + OldStyle + true + + + + + + Disabled + $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + false + Level3 + OldStyle + true + + + + + + Disabled + $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + false + Level3 + OldStyle + true + + + + + + + + + + + + + + + + + + + diff --git a/extern/SDL3-3.1.0/VisualC-GDK/clean.sh b/extern/SDL3-3.1.0/VisualC-GDK/clean.sh new file mode 100644 index 0000000..235b79c --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/clean.sh @@ -0,0 +1,7 @@ +#!/bin/sh +find . -type f \( -name '*.user' -o -name '*.sdf' -o -name '*.ncb' -o -name '*.suo' \) -print -delete +find . -type f \( -name '*.bmp' -o -name '*.wav' -o -name '*.dat' \) -print -delete +find . -depth -type d \( -name Gaming.Desktop.x64 \) -exec rm -rv {} \; +find . -depth -type d \( -name Gaming.Xbox.Scarlett.x64 \) -exec rm -rv {} \; +find . -depth -type d \( -name Gaming.Xbox.XboxOne.x64 \) -exec rm -rv {} \; +rm shaders/*.h diff --git a/extern/SDL3-3.1.0/VisualC-GDK/logos/Logo100x100.png b/extern/SDL3-3.1.0/VisualC-GDK/logos/Logo100x100.png new file mode 100644 index 0000000000000000000000000000000000000000..2d0333dbd273699a1513b8d2afaa40555bff986b GIT binary patch literal 10832 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 literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC-GDK/logos/Logo150x150.png b/extern/SDL3-3.1.0/VisualC-GDK/logos/Logo150x150.png new file mode 100644 index 0000000000000000000000000000000000000000..046a8fb142c1bd3c161f5640e534c3215a348103 GIT binary patch literal 12709 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 literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC-GDK/logos/Logo44x44.png b/extern/SDL3-3.1.0/VisualC-GDK/logos/Logo44x44.png new file mode 100644 index 0000000000000000000000000000000000000000..3ca25b565e0073f90af055eb44e449cf42aec262 GIT binary patch literal 7460 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 iL=s6Pkwg-oUHli9?UpW?NmoYz0000 literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC-GDK/logos/Logo480x480.png b/extern/SDL3-3.1.0/VisualC-GDK/logos/Logo480x480.png new file mode 100644 index 0000000000000000000000000000000000000000..11231500eb28e235b4b344ef60b4080c6bd38a52 GIT binary patch literal 28677 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 literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC-GDK/logos/SplashScreenImage.png b/extern/SDL3-3.1.0/VisualC-GDK/logos/SplashScreenImage.png new file mode 100644 index 0000000000000000000000000000000000000000..def578f665e3ae62954bc864dd7f564641866681 GIT binary patch literal 6599 zcmeAS@N?(olHy`uVBq!ia0y~yU~gbxV6os}0*a(>3=?5sU~J8Fb`J1#c2+1T%1_J8 zNo8Qrm{>c}*5h!1NUMKvwyPGOn4sXvfVnyyT^3%V-3be~h(?tfRKD!Lutd?buuvq1 zo9~}am~70P($WG^mV@#F?&|8U;+h}#ExDj{jD7m|!h6>3zuz&pRLxwOcHCk?*0hOT z$B*RXx$^8=Bz!o8@r(DFE5a{Zd2Fst!-~CDFeRcghIn{il1L{KOjqYyfxZb(k zTzBqgyTTb$Ra$?{sW`KMty6xd-tIrgcD~qf!1%D6nyI^tnpk(P&UQm>Nv)3}g)V`n zr^GkuY0ueivHGc2_P3Mq5~s3HXRZt8RqS(Bnb5)^8Je?zhdc0=X^_v77dFox%9s4{ zEIRq*7K8F}8?69E%eoKtKWw8n8(2P6YfW-^aCDo!Tf+mr3oCAZ`@S*P+>hbEalz89 zf2LX)eD;a={8N4u7utUmCR&)~xn@3to%by^Dp819{aF}uj&zV3y+ugeuddDee=qagdv@!uMH9a^ec20)7tR8Y$YKTtJ!KGP ztXOJa1{7p3@$_|Nf5s-q#>Oe(@?EZzkx!g~L41R!i(^Q|tv3f58G%|FCj49fjsuh&M!{$ZjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz_1R1hTF}|LLeVH{*V8z95Sr^I_kO65Eu=C(GVC7fzc2c c3L&tA^Xo1KMnOeOSCDHxUHx3vIVCg!0PLmbtpET3 literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/PackageLayout.xml b/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/PackageLayout.xml new file mode 100644 index 0000000..2fc9a76 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/PackageLayout.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/testcontroller.vcxproj b/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/testcontroller.vcxproj new file mode 100644 index 0000000..3972bcd --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/testcontroller.vcxproj @@ -0,0 +1,339 @@ + + + + + Debug + Gaming.Desktop.x64 + + + Debug + Gaming.Xbox.Scarlett.x64 + + + Debug + Gaming.Xbox.XboxOne.x64 + + + Release + Gaming.Desktop.x64 + + + Release + Gaming.Xbox.Scarlett.x64 + + + Release + Gaming.Xbox.XboxOne.x64 + + + + {55812185-D13C-4022-9C81-32E0F4A08305} + testcontroller + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + true + + + Application + $(DefaultPlatformToolset) + true + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + .\Release/testcontroller.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + xgameruntime.lib;../Microsoft.Xbox.Services.GDK.C.Thunks.lib;%(AdditionalDependencies) + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + .\Release/testcontroller.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + xgameruntime.lib;%(AdditionalDependencies) + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + .\Release/testcontroller.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + xgameruntime.lib;%(AdditionalDependencies) + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + .\Debug/testcontroller.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + xgameruntime.lib;../Microsoft.Xbox.Services.GDK.C.Thunks.lib;%(AdditionalDependencies) + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + .\Debug/testcontroller.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + xgameruntime.lib;%(AdditionalDependencies) + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + .\Debug/testcontroller.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + xgameruntime.lib;%(AdditionalDependencies) + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + + Document + true + true + true + true + + + + + + + + + + + + + + Document + true + true + true + true + + + + + Document + true + true + true + true + + + + + Document + true + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/testcontroller.vcxproj.filters b/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/testcontroller.vcxproj.filters new file mode 100644 index 0000000..cce3334 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/testcontroller.vcxproj.filters @@ -0,0 +1,52 @@ + + + + + + + + + + logos + + + logos + + + logos + + + logos + + + wingdk + + + xboxseries + + + xboxone + + + logos + + + + wingdk + + + + + {5e858cf0-6fba-498d-b33d-11c8ecbb79c7} + + + {5790a250-283e-4f51-8f28-6a977d3c7a6c} + + + {a4d235e4-4017-4193-af62-ecb2ac249be4} + + + {e704dcb9-c83c-4c94-a139-b0f3e3f428f2} + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/wingdk/MicrosoftGame.config b/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/wingdk/MicrosoftGame.config new file mode 100644 index 0000000..162624a --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/wingdk/MicrosoftGame.config @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + PleaseChangeMe + FFFFFFFF + + + diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/xboxone/MicrosoftGame.config b/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/xboxone/MicrosoftGame.config new file mode 100644 index 0000000..9d908c9 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/xboxone/MicrosoftGame.config @@ -0,0 +1,29 @@ + + + + + + + + + + + + PleaseChangeMe + FFFFFFFF + + + diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/xboxseries/MicrosoftGame.config b/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/xboxseries/MicrosoftGame.config new file mode 100644 index 0000000..6d1829b --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testcontroller/xboxseries/MicrosoftGame.config @@ -0,0 +1,29 @@ + + + + + + + + + + + + PleaseChangeMe + FFFFFFFF + + + diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/PackageLayout.xml b/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/PackageLayout.xml new file mode 100644 index 0000000..abee981 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/PackageLayout.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/src/testgdk.cpp b/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/src/testgdk.cpp new file mode 100644 index 0000000..bddecf3 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/src/testgdk.cpp @@ -0,0 +1,462 @@ +/* + Copyright (C) 1997-2024 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely. +*/ +/* testgdk: Basic tests of using task queue/xbl (with simple drawing) in GDK. + * NOTE: As of June 2022 GDK, login will only work if MicrosoftGame.config is + * configured properly. See README-gdk.md. + */ + +#include +#include +#include + +#include +#include +#include "../src/core/windows/SDL_windows.h" +#include + +extern "C" { +#include "../test/testutils.h" +} + +#include + +#define NUM_SPRITES 100 +#define MAX_SPEED 1 + +static SDLTest_CommonState *state; +static int num_sprites; +static SDL_Texture **sprites; +static SDL_bool cycle_color; +static SDL_bool cycle_alpha; +static int cycle_direction = 1; +static int current_alpha = 0; +static int current_color = 0; +static int sprite_w, sprite_h; +static SDL_BlendMode blendMode = SDL_BLENDMODE_BLEND; + +int done; + +static struct +{ + SDL_AudioSpec spec; + Uint8 *sound; /* Pointer to wave data */ + Uint32 soundlen; /* Length of wave data */ + int soundpos; /* Current play position */ +} wave; + +static SDL_AudioStream *stream; + +/* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ +static void +quit(int rc) +{ + SDL_free(sprites); + SDL_DestroyAudioStream(stream); + SDL_free(wave.sound); + SDLTest_CommonQuit(state); + /* If rc is 0, just let main return normally rather than calling exit. + * This allows testing of platforms where SDL_main is required and does meaningful cleanup. + */ + if (rc != 0) { + exit(rc); + } +} + +static int fillerup(void) +{ + const int minimum = (wave.soundlen / SDL_AUDIO_FRAMESIZE(wave.spec)) / 2; + if (SDL_GetAudioStreamQueued(stream) < minimum) { + SDL_PutAudioStreamData(stream, wave.sound, wave.soundlen); + } + return 0; +} + +void +UserLoggedIn(XUserHandle user) +{ + HRESULT hr; + char gamertag[128]; + hr = XUserGetGamertag(user, XUserGamertagComponent::UniqueModern, sizeof(gamertag), gamertag, NULL); + + if (SUCCEEDED(hr)) { + SDL_Log("User logged in: %s", gamertag); + } else { + SDL_Log("[GDK] UserLoggedIn -- XUserGetGamertag failed: 0x%08x.", hr); + } + + XUserCloseHandle(user); +} + +void +AddUserUICallback(XAsyncBlock *asyncBlock) +{ + HRESULT hr; + XUserHandle user = NULL; + + hr = XUserAddResult(asyncBlock, &user); + if (SUCCEEDED(hr)) { + uint64_t userId; + + hr = XUserGetId(user, &userId); + if (FAILED(hr)) { + /* If unable to get the user ID, it means the account is banned, etc. */ + SDL_Log("[GDK] AddUserSilentCallback -- XUserGetId failed: 0x%08x.", hr); + XUserCloseHandle(user); + + /* Per the docs, likely should call XUserResolveIssueWithUiAsync here. */ + } else { + UserLoggedIn(user); + } + } else { + SDL_Log("[GDK] AddUserUICallback -- XUserAddAsync failed: 0x%08x.", hr); + } + + delete asyncBlock; +} + +void +AddUserUI() +{ + HRESULT hr; + XAsyncBlock *asyncBlock = new XAsyncBlock; + + asyncBlock->context = NULL; + asyncBlock->queue = NULL; /* A null queue will use the global process task queue */ + asyncBlock->callback = &AddUserUICallback; + + hr = XUserAddAsync(XUserAddOptions::None, asyncBlock); + + if (FAILED(hr)) { + delete asyncBlock; + SDL_Log("[GDK] AddUserSilent -- failed: 0x%08x", hr); + } +} + +void +AddUserSilentCallback(XAsyncBlock *asyncBlock) +{ + HRESULT hr; + XUserHandle user = NULL; + + hr = XUserAddResult(asyncBlock, &user); + if (SUCCEEDED(hr)) { + uint64_t userId; + + hr = XUserGetId(user, &userId); + if (FAILED(hr)) { + /* If unable to get the user ID, it means the account is banned, etc. */ + SDL_Log("[GDK] AddUserSilentCallback -- XUserGetId failed: 0x%08x. Trying with UI.", hr); + XUserCloseHandle(user); + AddUserUI(); + } else { + UserLoggedIn(user); + } + } else { + SDL_Log("[GDK] AddUserSilentCallback -- XUserAddAsync failed: 0x%08x. Trying with UI.", hr); + AddUserUI(); + } + + delete asyncBlock; +} + +void +AddUserSilent() +{ + HRESULT hr; + XAsyncBlock *asyncBlock = new XAsyncBlock; + + asyncBlock->context = NULL; + asyncBlock->queue = NULL; /* A null queue will use the global process task queue */ + asyncBlock->callback = &AddUserSilentCallback; + + hr = XUserAddAsync(XUserAddOptions::AddDefaultUserSilently, asyncBlock); + + if (FAILED(hr)) { + delete asyncBlock; + SDL_Log("[GDK] AddUserSilent -- failed: 0x%08x", hr); + } +} + +int +LoadSprite(const char *file) +{ + int i; + + for (i = 0; i < state->num_windows; ++i) { + /* This does the SDL_LoadBMP step repeatedly, but that's OK for test code. */ + sprites[i] = LoadTexture(state->renderers[i], file, SDL_TRUE, &sprite_w, &sprite_h); + if (!sprites[i]) { + return -1; + } + if (SDL_SetTextureBlendMode(sprites[i], blendMode) < 0) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't set blend mode: %s\n", SDL_GetError()); + SDL_DestroyTexture(sprites[i]); + return -1; + } + } + + /* We're ready to roll. :) */ + return 0; +} + +void +DrawSprites(SDL_Renderer * renderer, SDL_Texture * sprite) +{ + SDL_Rect viewport; + SDL_FRect temp; + + /* Query the sizes */ + SDL_GetRenderViewport(renderer, &viewport); + + /* Cycle the color and alpha, if desired */ + if (cycle_color) { + current_color += cycle_direction; + if (current_color < 0) { + current_color = 0; + cycle_direction = -cycle_direction; + } + if (current_color > 255) { + current_color = 255; + cycle_direction = -cycle_direction; + } + SDL_SetTextureColorMod(sprite, 255, (Uint8) current_color, + (Uint8) current_color); + } + if (cycle_alpha) { + current_alpha += cycle_direction; + if (current_alpha < 0) { + current_alpha = 0; + cycle_direction = -cycle_direction; + } + if (current_alpha > 255) { + current_alpha = 255; + cycle_direction = -cycle_direction; + } + SDL_SetTextureAlphaMod(sprite, (Uint8) current_alpha); + } + + /* Draw a gray background */ + SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF); + SDL_RenderClear(renderer); + + /* Test points */ + SDL_SetRenderDrawColor(renderer, 0xFF, 0x00, 0x00, 0xFF); + SDL_RenderPoint(renderer, 0.0f, 0.0f); + SDL_RenderPoint(renderer, (float)(viewport.w - 1), 0.0f); + SDL_RenderPoint(renderer, 0.0f, (float)(viewport.h - 1)); + SDL_RenderPoint(renderer, (float)(viewport.w - 1), (float)(viewport.h - 1)); + + /* Test horizontal and vertical lines */ + SDL_SetRenderDrawColor(renderer, 0x00, 0xFF, 0x00, 0xFF); + SDL_RenderLine(renderer, 1.0f, 0.0f, (float)(viewport.w - 2), 0.0f); + SDL_RenderLine(renderer, 1.0f, (float)(viewport.h - 1), (float)(viewport.w - 2), (float)(viewport.h - 1)); + SDL_RenderLine(renderer, 0.0f, 1.0f, 0.0f, (float)(viewport.h - 2)); + SDL_RenderLine(renderer, (float)(viewport.w - 1), 1, (float)(viewport.w - 1), (float)(viewport.h - 2)); + + /* Test fill and copy */ + SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF); + temp.x = 1.0f; + temp.y = 1.0f; + temp.w = (float)sprite_w; + temp.h = (float)sprite_h; + SDL_RenderFillRect(renderer, &temp); + SDL_RenderTexture(renderer, sprite, NULL, &temp); + temp.x = (float)(viewport.w-sprite_w-1); + temp.y = 1.0f; + temp.w = (float)sprite_w; + temp.h = (float)sprite_h; + SDL_RenderFillRect(renderer, &temp); + SDL_RenderTexture(renderer, sprite, NULL, &temp); + temp.x = 1.0f; + temp.y = (float)(viewport.h-sprite_h-1); + temp.w = (float)sprite_w; + temp.h = (float)sprite_h; + SDL_RenderFillRect(renderer, &temp); + SDL_RenderTexture(renderer, sprite, NULL, &temp); + temp.x = (float)(viewport.w-sprite_w-1); + temp.y = (float)(viewport.h-sprite_h-1); + temp.w = (float)(sprite_w); + temp.h = (float)(sprite_h); + SDL_RenderFillRect(renderer, &temp); + SDL_RenderTexture(renderer, sprite, NULL, &temp); + + /* Test diagonal lines */ + SDL_SetRenderDrawColor(renderer, 0x00, 0xFF, 0x00, 0xFF); + SDL_RenderLine(renderer, (float)sprite_w, (float)sprite_h, + (float)(viewport.w-sprite_w-2), (float)(viewport.h-sprite_h-2)); + SDL_RenderLine(renderer, (float)(viewport.w-sprite_w-2), (float)sprite_h, + (float)sprite_w, (float)(viewport.h-sprite_h-2)); + + /* Update the screen! */ + SDL_RenderPresent(renderer); +} + +void +loop() +{ + int i; + SDL_Event event; + + /* Check for events */ + while (SDL_PollEvent(&event)) { + if (event.type == SDL_EVENT_KEY_DOWN && !event.key.repeat) { + SDL_Log("Initial SDL_EVENT_KEY_DOWN: %s", SDL_GetScancodeName(event.key.keysym.scancode)); + } +#if defined(SDL_PLATFORM_XBOXONE) || defined(SDL_PLATFORM_XBOXSERIES) + /* On Xbox, ignore the keydown event because the features aren't supported */ + if (event.type != SDL_EVENT_KEY_DOWN) { + SDLTest_CommonEvent(state, &event, &done); + } +#else + SDLTest_CommonEvent(state, &event, &done); +#endif + } + for (i = 0; i < state->num_windows; ++i) { + if (state->windows[i] == NULL) { + continue; + } + DrawSprites(state->renderers[i], sprites[i]); + } + fillerup(); +} + +int +main(int argc, char *argv[]) +{ + int i; + const char *icon = "icon.bmp"; + char *soundname = NULL; + + /* Initialize parameters */ + num_sprites = NUM_SPRITES; + + /* Initialize test framework */ + state = SDLTest_CommonCreateState(argv, SDL_INIT_VIDEO | SDL_INIT_AUDIO); + if (!state) { + return 1; + } + + for (i = 1; i < argc;) { + int consumed; + + consumed = SDLTest_CommonArg(state, i); + if (consumed == 0) { + consumed = -1; + if (SDL_strcasecmp(argv[i], "--blend") == 0) { + if (argv[i + 1]) { + if (SDL_strcasecmp(argv[i + 1], "none") == 0) { + blendMode = SDL_BLENDMODE_NONE; + consumed = 2; + } else if (SDL_strcasecmp(argv[i + 1], "blend") == 0) { + blendMode = SDL_BLENDMODE_BLEND; + consumed = 2; + } else if (SDL_strcasecmp(argv[i + 1], "add") == 0) { + blendMode = SDL_BLENDMODE_ADD; + consumed = 2; + } else if (SDL_strcasecmp(argv[i + 1], "mod") == 0) { + blendMode = SDL_BLENDMODE_MOD; + consumed = 2; + } else if (SDL_strcasecmp(argv[i + 1], "sub") == 0) { + blendMode = SDL_ComposeCustomBlendMode(SDL_BLENDFACTOR_SRC_ALPHA, SDL_BLENDFACTOR_ONE, SDL_BLENDOPERATION_SUBTRACT, SDL_BLENDFACTOR_ZERO, SDL_BLENDFACTOR_ONE, SDL_BLENDOPERATION_SUBTRACT); + consumed = 2; + } + } + } else if (SDL_strcasecmp(argv[i], "--cyclecolor") == 0) { + cycle_color = SDL_TRUE; + consumed = 1; + } else if (SDL_strcasecmp(argv[i], "--cyclealpha") == 0) { + cycle_alpha = SDL_TRUE; + consumed = 1; + } else if (SDL_isdigit(*argv[i])) { + num_sprites = SDL_atoi(argv[i]); + consumed = 1; + } else if (argv[i][0] != '-') { + icon = argv[i]; + consumed = 1; + } + } + if (consumed < 0) { + static const char *options[] = { + "[--blend none|blend|add|mod]", + "[--cyclecolor]", + "[--cyclealpha]", + "[num_sprites]", + "[icon.bmp]", + NULL }; + SDLTest_CommonLogUsage(state, argv[0], options); + quit(1); + } + i += consumed; + } + if (!SDLTest_CommonInit(state)) { + quit(2); + } + + /* Create the windows, initialize the renderers, and load the textures */ + sprites = + (SDL_Texture **) SDL_malloc(state->num_windows * sizeof(*sprites)); + if (!sprites) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Out of memory!\n"); + quit(2); + } + for (i = 0; i < state->num_windows; ++i) { + SDL_Renderer *renderer = state->renderers[i]; + SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF); + SDL_RenderClear(renderer); + } + if (LoadSprite(icon) < 0) { + quit(2); + } + + soundname = GetResourceFilename(argc > 1 ? argv[1] : NULL, "sample.wav"); + + if (!soundname) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "%s\n", SDL_GetError()); + quit(1); + } + + /* Load the wave file into memory */ + if (SDL_LoadWAV(soundname, &wave.spec, &wave.sound, &wave.soundlen) == -1) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't load %s: %s\n", soundname, SDL_GetError()); + quit(1); + } + + /* Show the list of available drivers */ + SDL_Log("Available audio drivers:"); + for (i = 0; i < SDL_GetNumAudioDrivers(); ++i) { + SDL_Log("%i: %s", i, SDL_GetAudioDriver(i)); + } + + SDL_Log("Using audio driver: %s\n", SDL_GetCurrentAudioDriver()); + + stream = SDL_OpenAudioDeviceStream(SDL_AUDIO_DEVICE_DEFAULT_OUTPUT, &wave.spec, NULL, NULL); + if (!stream) { + SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't create audio stream: %s\n", SDL_GetError()); + return -1; + } + SDL_ResumeAudioDevice(SDL_GetAudioStreamDevice(stream)); + + /* Main render loop */ + done = 0; + + /* Try to add the default user silently */ + AddUserSilent(); + + while (!done) { + loop(); + } + + quit(0); + + SDL_free(soundname); + return 0; +} diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/testgdk.vcxproj b/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/testgdk.vcxproj new file mode 100644 index 0000000..c43e5f4 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/testgdk.vcxproj @@ -0,0 +1,395 @@ + + + + + Debug + Gaming.Desktop.x64 + + + Debug + Gaming.Xbox.Scarlett.x64 + + + Debug + Gaming.Xbox.XboxOne.x64 + + + Release + Gaming.Desktop.x64 + + + Release + Gaming.Xbox.Scarlett.x64 + + + Release + Gaming.Xbox.XboxOne.x64 + + + + {1C9A3F71-35A5-4C56-B292-F4375B3C3649} + testsprite + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + true + + + Application + $(DefaultPlatformToolset) + true + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + .\Release/testsprite.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + xgameruntime.lib;../Microsoft.Xbox.Services.GDK.C.Thunks.lib;%(AdditionalDependencies) + + + + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + .\Release/testsprite.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + xgameruntime.lib;%(AdditionalDependencies) + + + + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + .\Release/testsprite.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + xgameruntime.lib;%(AdditionalDependencies) + + + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + .\Debug/testsprite.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + xgameruntime.lib;../Microsoft.Xbox.Services.GDK.C.Thunks.lib;%(AdditionalDependencies) + + + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + .\Debug/testsprite.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + xgameruntime.lib;%(AdditionalDependencies) + + + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + .\Debug/testsprite.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + xgameruntime.lib;%(AdditionalDependencies) + + + + + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + Copying %(Filename)%(Extension) + Copying %(Filename)%(Extension) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" +copy "%(FullPath)" "$(OutDir)\" + copy "%(FullPath)" "$(ProjectDir)\" +copy "%(FullPath)" "$(OutDir)\" + copy "%(FullPath)" "$(ProjectDir)\" +copy "%(FullPath)" "$(OutDir)\" + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + Copying %(Filename)%(Extension) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" +copy "%(FullPath)" "$(OutDir)\" + copy "%(FullPath)" "$(ProjectDir)\" +copy "%(FullPath)" "$(OutDir)\" + copy "%(FullPath)" "$(ProjectDir)\" +copy "%(FullPath)" "$(OutDir)\" + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + + + + + + + + + Document + true + true + true + true + + + + + Document + true + true + true + true + + + + + + + + + + + + + + Document + true + true + true + true + + + + + Document + + + + + Document + true + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/testgdk.vcxproj.filters b/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/testgdk.vcxproj.filters new file mode 100644 index 0000000..1cbae86 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/testgdk.vcxproj.filters @@ -0,0 +1,53 @@ + + + + + + + + + + logos + + + logos + + + logos + + + logos + + + wingdk + + + xboxseries + + + + xboxone + + + logos + + + + wingdk + + + + + {c3c871f2-c7b7-4025-8ba4-037dde717fe1} + + + {1678a80d-0ee8-4f48-bf89-9462d82dd98a} + + + {1b47b96b-507e-40ec-9c25-99b1a4d5b575} + + + {ac7aa2d5-f0f7-46eb-a548-5b6316f3b63b} + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/wingdk/MicrosoftGame.config b/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/wingdk/MicrosoftGame.config new file mode 100644 index 0000000..afd57d6 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/wingdk/MicrosoftGame.config @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + PleaseChangeMe + FFFFFFFF + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/xboxone/MicrosoftGame.config b/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/xboxone/MicrosoftGame.config new file mode 100644 index 0000000..a593bd1 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/xboxone/MicrosoftGame.config @@ -0,0 +1,29 @@ + + + + + + + + + + + + PleaseChangeMe + FFFFFFFF + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/xboxseries/MicrosoftGame.config b/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/xboxseries/MicrosoftGame.config new file mode 100644 index 0000000..1ab7c17 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testgdk/xboxseries/MicrosoftGame.config @@ -0,0 +1,29 @@ + + + + + + + + + + + + PleaseChangeMe + FFFFFFFF + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/PackageLayout.xml b/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/PackageLayout.xml new file mode 100644 index 0000000..60a8378 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/PackageLayout.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/testsprite.vcxproj b/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/testsprite.vcxproj new file mode 100644 index 0000000..9534f5b --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/testsprite.vcxproj @@ -0,0 +1,389 @@ + + + + + Debug + Gaming.Desktop.x64 + + + Debug + Gaming.Xbox.Scarlett.x64 + + + Debug + Gaming.Xbox.XboxOne.x64 + + + Release + Gaming.Desktop.x64 + + + Release + Gaming.Xbox.Scarlett.x64 + + + Release + Gaming.Xbox.XboxOne.x64 + + + + {40FB7794-D3C3-4CFE-BCF4-A80C96635682} + testsprite + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + true + + + Application + $(DefaultPlatformToolset) + true + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + AllRules.ruleset + AllRules.ruleset + AllRules.ruleset + + + + + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + .\Release/testsprite.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + xgameruntime.lib;../Microsoft.Xbox.Services.GDK.C.Thunks.lib;%(AdditionalDependencies) + + + + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + .\Release/testsprite.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + xgameruntime.lib;%(AdditionalDependencies) + + + + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + .\Release/testsprite.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + xgameruntime.lib;%(AdditionalDependencies) + + + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + .\Debug/testsprite.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + xgameruntime.lib;../Microsoft.Xbox.Services.GDK.C.Thunks.lib;%(AdditionalDependencies) + + + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + .\Debug/testsprite.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + xgameruntime.lib;%(AdditionalDependencies) + + + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + .\Debug/testsprite.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + xgameruntime.lib;%(AdditionalDependencies) + + + + + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + Copying %(Filename)%(Extension) + Copying %(Filename)%(Extension) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" +copy "%(FullPath)" "$(OutDir)\" + copy "%(FullPath)" "$(ProjectDir)\" +copy "%(FullPath)" "$(OutDir)\" + copy "%(FullPath)" "$(ProjectDir)\" +copy "%(FullPath)" "$(OutDir)\" + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + Copying %(Filename)%(Extension) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" +copy "%(FullPath)" "$(OutDir)\" + copy "%(FullPath)" "$(ProjectDir)\" +copy "%(FullPath)" "$(OutDir)\" + copy "%(FullPath)" "$(ProjectDir)\" +copy "%(FullPath)" "$(OutDir)\" + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + + + + + + + + + Document + true + true + true + true + + + + + Document + true + true + true + true + + + + + + + + + + + + + + Document + true + true + true + true + + + + + true + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/testsprite.vcxproj.filters b/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/testsprite.vcxproj.filters new file mode 100644 index 0000000..ac1cda6 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/testsprite.vcxproj.filters @@ -0,0 +1,52 @@ + + + + + + + + + + logos + + + logos + + + logos + + + logos + + + xboxseries + + + xboxone + + + wingdk + + + logos + + + + wingdk + + + + + {c3c871f2-c7b7-4025-8ba4-037dde717fe1} + + + {c862dfc3-7803-4359-a31e-9dcda37e641a} + + + {1671e83d-25b3-4eb5-bed0-5c52c80f4e49} + + + {9bf62acf-6661-43f9-bde3-0de9e1db4290} + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/wingdk/MicrosoftGame.config b/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/wingdk/MicrosoftGame.config new file mode 100644 index 0000000..bbb839c --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/wingdk/MicrosoftGame.config @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + PleaseChangeMe + FFFFFFFF + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/xboxone/MicrosoftGame.config b/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/xboxone/MicrosoftGame.config new file mode 100644 index 0000000..14fbf7d --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/xboxone/MicrosoftGame.config @@ -0,0 +1,29 @@ + + + + + + + + + + + + PleaseChangeMe + FFFFFFFF + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/xboxseries/MicrosoftGame.config b/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/xboxseries/MicrosoftGame.config new file mode 100644 index 0000000..402b89e --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-GDK/tests/testsprite/xboxseries/MicrosoftGame.config @@ -0,0 +1,29 @@ + + + + + + + + + + + + PleaseChangeMe + FFFFFFFF + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC-WinRT/SDL-UWP.sln b/extern/SDL3-3.1.0/VisualC-WinRT/SDL-UWP.sln new file mode 100644 index 0000000..86bd92d --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-WinRT/SDL-UWP.sln @@ -0,0 +1,69 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.33027.164 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL3-UWP", "SDL-UWP.vcxproj", "{89E9B32E-A86A-47C3-A948-D2B1622925CE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testdraw", "testdraw\testdraw.vcxproj", "{95943BBE-F378-4068-A3FD-DAE1B8309B6E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|ARM.ActiveCfg = Debug|ARM + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|ARM.Build.0 = Debug|ARM + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|ARM64.Build.0 = Debug|ARM64 + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|x64.ActiveCfg = Debug|x64 + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|x64.Build.0 = Debug|x64 + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|x86.ActiveCfg = Debug|Win32 + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Debug|x86.Build.0 = Debug|Win32 + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|ARM.ActiveCfg = Release|ARM + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|ARM.Build.0 = Release|ARM + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|ARM64.ActiveCfg = Release|ARM64 + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|ARM64.Build.0 = Release|ARM64 + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|x64.ActiveCfg = Release|x64 + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|x64.Build.0 = Release|x64 + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|x86.ActiveCfg = Release|Win32 + {89E9B32E-A86A-47C3-A948-D2B1622925CE}.Release|x86.Build.0 = Release|Win32 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Debug|ARM.ActiveCfg = Debug|ARM + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Debug|ARM.Build.0 = Debug|ARM + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Debug|ARM.Deploy.0 = Debug|ARM + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Debug|ARM64.Build.0 = Debug|ARM64 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Debug|x64.ActiveCfg = Debug|x64 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Debug|x64.Build.0 = Debug|x64 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Debug|x64.Deploy.0 = Debug|x64 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Debug|x86.ActiveCfg = Debug|Win32 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Debug|x86.Build.0 = Debug|Win32 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Debug|x86.Deploy.0 = Debug|Win32 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Release|ARM.ActiveCfg = Release|ARM + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Release|ARM.Build.0 = Release|ARM + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Release|ARM.Deploy.0 = Release|ARM + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Release|ARM64.ActiveCfg = Release|ARM64 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Release|ARM64.Build.0 = Release|ARM64 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Release|ARM64.Deploy.0 = Release|ARM64 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Release|x64.ActiveCfg = Release|x64 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Release|x64.Build.0 = Release|x64 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Release|x64.Deploy.0 = Release|x64 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Release|x86.ActiveCfg = Release|Win32 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Release|x86.Build.0 = Release|Win32 + {95943BBE-F378-4068-A3FD-DAE1B8309B6E}.Release|x86.Deploy.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {30680F51-7BB9-41D0-A0D6-BC44A1557D87} + EndGlobalSection +EndGlobal diff --git a/extern/SDL3-3.1.0/VisualC-WinRT/SDL-UWP.vcxproj b/extern/SDL3-3.1.0/VisualC-WinRT/SDL-UWP.vcxproj new file mode 100644 index 0000000..b0f4022 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-WinRT/SDL-UWP.vcxproj @@ -0,0 +1,906 @@ + + + + + Debug + ARM64 + + + Debug + ARM + + + Debug + Win32 + + + Debug + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + Create + Create + Create + Create + Create + Create + Create + Create + + + Create + $(IntDir)$(TargetName)_cpp.pch + Create + $(IntDir)$(TargetName)_cpp.pch + Create + $(IntDir)$(TargetName)_cpp.pch + Create + $(IntDir)$(TargetName)_cpp.pch + Create + $(IntDir)$(TargetName)_cpp.pch + Create + $(IntDir)$(TargetName)_cpp.pch + Create + $(IntDir)$(TargetName)_cpp.pch + Create + $(IntDir)$(TargetName)_cpp.pch + true + true + true + true + true + true + true + true + + + + + + + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + NotUsing + + + + + + + + + + + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + true + true + true + true + true + true + true + true + + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NotUsing + + + + + + + + + + + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + true + true + true + true + true + true + true + true + + + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + true + true + true + true + true + true + true + true + + + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + true + true + true + true + true + true + true + true + + + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + true + true + true + true + true + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + true + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + $(IntDir)$(TargetName)_cpp.pch + + + + + + + {89e9b32e-a86a-47c3-a948-d2b1622925ce} + DynamicLibrary + SDL3-UWP + SDL3 + en-US + 14.0 + true + Windows Store + 8.2 + 10.0.16299.0 + 10.0.16299.0 + 10.0 + + + + DynamicLibrary + true + v142 + + + DynamicLibrary + true + v142 + + + DynamicLibrary + true + v142 + + + DynamicLibrary + true + v142 + + + DynamicLibrary + false + true + v142 + + + DynamicLibrary + false + true + v142 + + + DynamicLibrary + false + true + v142 + + + DynamicLibrary + false + true + v142 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + false + SDL3 + $(SolutionDir)/../src;$(IncludePath) + + + false + false + SDL3 + $(SolutionDir)/../src;$(IncludePath) + + + false + false + SDL3 + $(SolutionDir)/../src;$(IncludePath) + + + false + false + SDL3 + $(SolutionDir)/../src;$(IncludePath) + + + false + false + SDL3 + $(SolutionDir)/../src;$(IncludePath) + + + false + false + SDL3 + $(SolutionDir)/../src;$(IncludePath) + + + false + false + SDL3 + $(SolutionDir)/../src;$(IncludePath) + + + false + false + SDL3 + $(SolutionDir)/../src;$(IncludePath) + + + + Use + false + ..\include;%(AdditionalIncludeDirectories) + DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions) + SDL_internal.h + + + Console + false + false + /nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib %(AdditionalOptions) + + + + + Use + false + ..\include;%(AdditionalIncludeDirectories) + DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions) + SDL_internal.h + + + Console + false + false + /nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib %(AdditionalOptions) + + + + + Use + false + ..\include;%(AdditionalIncludeDirectories) + DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions) + SDL_internal.h + + + Console + false + false + /nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib %(AdditionalOptions) + + + + + Use + false + ..\include;%(AdditionalIncludeDirectories) + DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions) + SDL_internal.h + + + Console + false + false + /nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib %(AdditionalOptions) + + + + + Use + false + ..\include;%(AdditionalIncludeDirectories) + DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions) + SDL_internal.h + + + Console + false + false + /nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib %(AdditionalOptions) + + + + + Use + false + ..\include;%(AdditionalIncludeDirectories) + DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions) + SDL_internal.h + + + Console + false + false + /nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib %(AdditionalOptions) + + + + + Use + false + ..\include;%(AdditionalIncludeDirectories) + DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions) + SDL_internal.h + + + Console + false + false + /nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib %(AdditionalOptions) + + + + + Use + false + ..\include;%(AdditionalIncludeDirectories) + DLL_EXPORT;_CRT_SECURE_NO_WARNINGS;SDL_BUILDING_WINRT=1;%(PreprocessorDefinitions) + SDL_internal.h + + + Console + false + false + /nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib %(AdditionalOptions) + + + + + + + diff --git a/extern/SDL3-3.1.0/VisualC-WinRT/SDL-UWP.vcxproj.filters b/extern/SDL3-3.1.0/VisualC-WinRT/SDL-UWP.vcxproj.filters new file mode 100644 index 0000000..bfad92e --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-WinRT/SDL-UWP.vcxproj.filters @@ -0,0 +1,960 @@ + + + + + {fa0ff2df-c3d6-498a-96f1-1f88e7ce0da3} + + + {68e1b30b-19ed-4612-93e4-6260c5a979e5} + + + {00004a2523fc69c7128c60648c860000} + + + {0000318d975e0a2867ab1d5727bf0000} + + + {00009e5236c2ac679fe0bc30beb90000} + + + {000031d805439b865ff4550d2f620000} + + + {00004389761f0ae646deb5a3d65f0000} + + + {0000bc587ef6c558d75ce2e620cb0000} + + + {0000948771d0040a6a55997a7f1e0000} + + + {0000012051ca8361c8e1013aee1d0000} + + + + + Header Files + + + API Headers + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + camera + + + camera + + + filesystem + + + Header Files + + + Header Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + main + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + video + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Header Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Header Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + camera\dummy + + + camera + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + filesystem + + + filesystem\windows + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + main\generic + + + main + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + time + + + time\windows + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Header Files + + + + + Source Files + + + Source Files + + + Source Files + + + stdlib + + + Source Files + + + Source Files + + + diff --git a/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/LockScreenLogo.scale-200.png b/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..735f57adb5dfc01886d137b4e493d7e97cf13af3 GIT binary patch literal 1430 zcmaJ>TTC2P7~aKltDttVHYH6u8Io4i*}3fO&d$gd*bA_<3j~&e7%8(eXJLfhS!M@! zKrliY>>6yT4+Kr95$!DoD(Qn-5TP|{V_KS`k~E6(LGS@#`v$hQo&^^BKsw3HIsZBT z_y6C2n`lK@apunKojRQ^(_P}Mgewt$(^BBKCTZ;*xa?J3wQ7~@S0lUvbcLeq1Bg4o zH-bvQi|wt~L7q$~a-gDFP!{&TQfc3fX*6=uHv* zT&1&U(-)L%Xp^djI2?~eBF2cxC@YOP$+9d?P&h?lPy-9M2UT9fg5jKm1t$m#iWE{M zIf%q9@;fyT?0UP>tcw-bLkz;s2LlKl2qeP0w zECS7Ate+Awk|KQ+DOk;fl}Xsy4o^CY=pwq%QAAKKl628_yNPsK>?A>%D8fQG6IgdJ ztnxttBz#NI_a@fk7SU`WtrpsfZsNs9^0(2a z@C3#YO3>k~w7?2hipBf{#b6`}Xw1hlG$yi?;1dDs7k~xDAw@jiI*+tc;t2Lflg&bM)0!Y;0_@=w%`LW^8DsYpS#-bLOklX9r?Ei}TScw|4DbpW%+7 zFgAI)f51s}{y-eWb|vrU-Ya!GuYKP)J7z#*V_k^Xo>4!1Yqj*m)x&0L^tg3GJbVAJ zJ-Pl$R=NAabouV=^z_t;^K*0AvFs!vYU>_<|I^#c?>>CR<(T?=%{;U=aI*SbZADLH z&(f2wz_Y0??Tf|g;?|1Znw6}6U43Q#qNRwv1vp9uFn1)V#*4p&%$mP9x&15^OaBiDS(XppT|z^>;B{PLVEbS3IFYV yGvCsSX*m literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/SplashScreen.scale-200.png b/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..023e7f1feda78d5100569825acedfd213a0d84e9 GIT binary patch literal 7700 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 literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/Square150x150Logo.scale-200.png b/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/Square150x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..af49fec1a5484db1d52a7f9b5ec90a27c7030186 GIT binary patch literal 2937 zcma)84OCO-8BSud5)jwMLRVKgX(S?$n?Ld|vrsm<$CF7)&zTbyy1FE5bU`Q17MRv`9ue$;R(@8kR;#vJ*IM0>cJIAOte!d7oRgdH zd%ySjdB6L9=gX^A6)VzH7p2l@v~3zJAMw|DFy#^)F@@F*`mqUn=Il>l)8_+ab;nOW{%+iPx z+s{Eu|&pIs)Z7{La9~?xKfyl z#43?gjEL15d4WbOZo#SiP%>DB^+BcnJ=7dHEe;r#G=tuw|ka z%q@}##Uh7;tc%L_64m(kHtw74ty%BJMb)_1)#S0j`)F8_1jF7vScpsnH=0V19bO8y zR`0SjIdCUo&=>JwMQF8KHA<{ODHTiQh}0^@5QRmCA?gOH6_H3K^-_sNB^RrdNuK-R zOO*vOrKCVvDwgUck`kF(E7j{I#iiN;b*ZdCt4m@HPA`EuEqGGf4%!K<;(=I=&Vyrw z%TwcWtxa}8mCZ%Cyf&ActJ6_$ox5z6-D!0-dvnRx6t7y3d+h6QYpKWO;8OdnvERo7 zuEf>ih5`wqY)~o@OeVt-wM?Q!>QzdGRj!bz6fzYrfw$hZfAKzr2-M+D+R>}~oT574c;_3zquHcElqKIsryILt3g8n3jcMb+j?i?-L3FpZJ z2WRVBRdDPc+G5aaYg#5hpE+6nQ|(VSoxT3|biF;BUq#==-27Xi=gihDPYP$7?=9cP zYKE$jeQ|3~_L0VG-(F~2ZPyD0=k{J4Q~h(t__{-mz_w8{JDY9{`1ouzz!Vr5!ECdE z6U~O1k8c}24V7~zzXWTV-Pe4)y}wQJS&q%H5`Fo_f_JvIU489aCX$;P`u#!I-=^4ijC2{&9!O&h>mi?9oYD=GC#%)6{GzN6nQYw+Fal50!#x^asjBBR50i`+mho*ttoqV)ubM2KD9S~k7+FR4>{29?6 z{!l6kDdyTN0YJ9LgkPWeXm|gyi@zM3?0@{&pXT12w|78&W-q!RRF)&iLCEZVH<|fR zN0fr2^t8H(>L?>K#>^+jWROLral(Qy-xoBq1U7A&DV||wClb)Otd9?(gZ|8znMF}D zf<1haWz^s0qgecz;RFGt0C-B4g`jNGHsFU+;{<%t65v^sjk^h$lmWn#B0#_)9ij&d z-~lc`A)YYExi^7sBuPM^Y|wA2g*5?`K?#7tzELQYNxGo$UB$4J8RJp1k(8Jj+~hMT zlN~>M@KTTh^--8y3PK_NZ@AC!{PT=CziBzGd+wTJ^@icH!Bd}%)g8V)%K?|c&WTUk zy}qv1C%(fjRoZ4ozC3{O%@5?)XzH35zHns$pgU*Q?fj4v?fp1Qbm+j;3l;9jam9Da zXVcKjPlQ73x78QPu|Ffm6x?`~e3oD=gl=4kYK?={kD5j~QCXU)`HSdduNNENzA*2$ zOm3PzF!lN5e*06-f1Uot67wY#{o-S1!KZ7E=!~7ynnk9_iJR#kFoNbAOT#^2Gd17F zMmvU6>lndZQGd|ax9kUoXXO+$N?|j@6qpsF&_j7YXvwo_C{JpmLw5&#e6k>atv%es z5)7r*Wvv_JkUpT}M!_o!nVlEk1Zbl=a*2hQ*<|%*K1Glj^FcF`6kTzGQ3lz~2tCc@ z&x|tj;aH&1&9HwcJBcT`;{?a+pnej;M1HO(6Z{#J!cZA04hnFl;NXA+&`=7bjW_^o zfC40u3LMG?NdPtwGl>Tq6u}*QG)}-y;)lu-_>ee3kibW(69n0$0Zy!}9rQz%*v1iO zT9_H>99yIrSPYVy6^);rR}7Yo=J_T@hi+qhTZXnVWyf;JDYm5#eYLTxr*?kiNn!+Y zQ+LUkBafNJ#rH#C(?d5^;gw9o#%daEI{mA*LHPIHPU`#|H$hD zwm>0&+kahQ)E#%~k>&5@&#Vg82H?s%71=)(soi@174pi9--2{w{1$}Sz4zGn3Du&x bht0Iza^2ykEt4(epJ78uh5nDlX8(TxzDYwP literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/Square44x44Logo.scale-200.png b/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..ce342a2ec8a61291ba76c54604aea7e9d20af11b GIT binary patch literal 1647 zcmaJ?eM}Q)7(e+G1Q(|`V9JhTI2>MkceK4;p;PR&$Pi?ejk3YQ_3o`S&|W_dsOZ8# zWPTt69g`t$ab`0cj-Y0yiBSOqmd)tG7G(}M5aP0_%&9TijB#&)I{zSE^4@#z^FF`l z`8{8`o%wlL(UI|y2!cdsuVamHH~H86F!*-15em4)NqUpCQM5?aoC_eCf@lV4wvF2a zjDQn1JBL69f&@2M3rvzJcfE!eZ8FZUBlFlC5RD)it33{mF9#B82AiyQE%w)`vlwa> zv{<1sm&kSKK$&%2jSFn7$t&P%%6Ue>R=EAnG8N7fqynWG8L3p!4801a;8{+nliO(qd(jNJ_?+9W3#hLIDLoT6~3fx9=`CC-D}-AMrpEO7HK zt3$GicGPc?GmDjy7K2P@La;eu4!$zWCZ`ym{Z$b zu-O6RM&K4JT|BIZB`E-gxqG%FzanI#+2FFmqHqXG7yxWB=w55RGOM)$xMb(>kSNR z2w=1AZi%z=AmG~yea~XaXJR!v7vLn(RUnELfiB1|6D84ICOS}^Zo2AdN}<&*h}G_u z{xZ!(%>tLT3J3<5XhWy-tg+6)0nmUUENLW8TWA{R6bgVd3X;anYFZ^IRis*_P-C-r z;i>%1^eL3UI2-{w8nuFFcs0e~7J{O2k^~Ce%+Ly4U?|=!0LH=t6()xi<^I-rs+9sF z*q{E-CxZbGPeu#a;XJwE;9S1?#R&uns>^0G3p`hEUF*v`M?@h%T%J%RChmD|EVydq zmHWh*_=S%emRC*mhxaVLzT@>Z2SX0u9v*DIJ@WC^kLVdlGV6LpK$KIrlJqc zpJ921)+3JJdTx|<`G&kXpKkjGJv=76R`yYIQ{#c-`%+`#V(7}Q;&@6U8!Td1`d;?N z_9mnI#?AA}4J!r)LN4!E-@H5eXauuB7TOawS>Y|{-P?NNx-lq+z1W-+y(;39P&&LP zL{N80?&=C*qKmdA^moMZRuPcD!B<*mq$ch=0Cnlitw#txRWhb3%TQvPqjkC`F69G4b! ze7z9MZ#+;_#l?H37UqUhDFb^l&s2{oM$3I0o^Q!yx;;V)QmCMo)Tb_ui|mit8MS?U zm##6$sZZ1$@|s%?l@>4Z<*Q}sRBSKMhb4I{e5LdEhsHIHTe8Bod5c>6QtT>$XgUBz z6MK`kO$=jmt@FqggOhJ5j~e@ygRbG;<{Vu)*+nn9aQeo0;$#j;|MS=S$&L?BeV25z xs3B`@=#`5TF{^6(A1rvdY@|-RtQ|iS5{tyX+wH?;n8E)G$kykv-D^wh{{!TZT%7;_ literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/Square44x44Logo.targetsize-24_altform-unplated.png new file mode 100644 index 0000000000000000000000000000000000000000..f6c02ce97e0a802b85f6021e822c89f8bf57d5cd GIT binary patch literal 1255 zcmaJ>TWs4@7*5+{G#S+&C!qC#> zf>5N3P6jO*Cz>ug*(_DmW=)kea&m$gZ^+nyiF`;j%w@}y8)>p*SH}C`m?DXeieF2U zyQHecc_L%Gh!7GMt+hG06y;+|p4>m~}PjA}rKViGiEnn7G0ZO<>G|7q;2?NwGCM3s?eued6%hd$B+ z*kQJ{#~$S=DFE(%=E+UkmlEI*%3llUf~8Ja9YU1Vui0IbGBkW_gHB%Rd&!!ioX zs40O?i9I{};kle7GMvE7(rk`la=gTI)47=>%?q@^iL-nUo3}h4S}N-KHn8t5mVP8w z&bSErwp+37 zNJJ8?a|{r5Q3R0Z5s-LB1WHOwYC@7pCHWND#cL1cZ?{kJ368_*(UDWUDyb<}0y@o# zfMF016iMWPCb6obAxT$JlB6(2DrlXDTB&!0`!m??4F(qWMhjVZo?JXQmz`1*58Z=& zcDmB|S-E@j?BoFGix0flckqdS4jsPNzhfWyWIM98GxcLs89C(~dw%$_t;JjX-SD}E zfiGV;{8Q%8r}w9x>EEigW81>`kvnU@pK)4+xk9@+bNj9L!AAZ@SZ@q|)&BmY3+HZx zul~BeG4|}-;L%cHViQGQX?^zFfO0&#cHwel=d`lH9sJ-@Sl@n*(8J2>%Ac`IxyY?Q z{=GhWvC#gu-~Ia7*n{=+;qM?Ul_wy1+u7ho;=`>EwP^g~R@{unBds`!#@}tluZQpS zm)M~nYEifJWJGx?_6DcTy>#uh%>!H9=hb^(v`=m3F1{L>db=<5_tm+_&knAQ2EU$s Mu9UqpbNZeC0BbUo^Z)<= literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/StoreLogo.png b/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..7385b56c0e4d3c6b0efe3324aa1194157d837826 GIT binary patch literal 1451 zcmaJ>eN5D57_Z|bH;{0+1#mbl)eTU3{h)Wf7EZV?;HD@XL@{B`Ui%(2aMxQ~xdXSv z5nzWi(LW)U2=Vc-cY@s7nPt{i0hc6!7xN4NNHI#EQl>YNBy8l4%x9gr_W-j zEZMQmmTIy(>;lblRfh`dIyTgc9W5d!VP$L4(kKrN1c5G~(O_#xG zAJCNTstD^5SeXFB+&$h=ToJP2H>xr$iqPs-#O*;4(!Fjw25-!gEb*)mU}=)J;Iu>w zxK(5XoD0wrPSKQ~rbL^Cw6O_03*l*}i=ydbu7adJ6y;%@tjFeXIXT+ms30pmbOP%Q zX}S;+LBh8Tea~TSkHzvX6$rYb)+n&{kSbIqh|c7hmlxmwSiq5iVhU#iEQ<>a18|O^Sln-8t&+t`*{qBWo5M?wFM(JuimAOb5!K#D}XbslM@#1ZVz_;!9U zpfEpLAOz=0g@bd6Xj_ILi-x^!M}73h^o@}hM$1jflTs|Yuj9AL@A3<-?MV4!^4q`e z)fO@A;{9K^?W?DbnesnPr6kK>$zaKo&;FhFd(GYFCIU^T+OIMb%Tqo+P%oq(IdX7S zf6+HLO?7o0m+p>~Tp5UrXWh!UH!wZ5kv!E`_w)PTpI(#Iw{AS`gH4^b(bm^ZCq^FZ zY9DD7bH}rq9mg88+KgA$Zp!iWncuU2n1AuIa@=sWvUR-s`Qb{R*kk(SPU^`$6BXz8 zn#7yaFOIK%qGxyi`dYtm#&qqox0$h=pNi#u=M8zUG@bpiZ=3sT=1}Trr}39cC)H|v zbL?W)=&s4zrh)7>L(|cc%$1#!zfL?HjpeP%T+x_a+jZ16b^iKOHxFEX$7d|8${H-* zIrOJ5w&i$>*D>AKaIoYg`;{L@jM((Kt?$N$5OnuPqVvq**Nm}(f0wwOF%iX_Pba;V z;m@wxX&NcV3?<1+u?A{y_DIj7#m3Af1rCE)o`D&Y3}0%7E;iX1yMDiS)sh0wKi!36 zL!Wmq?P^Ku&rK~HJd97KkLTRl>ScGFYZNlYytWnhmuu|)L&ND8_PmkayQb{HOY640 bno1(wj@u8DCVuFR|31B*4ek@pZJqxCDDe1x literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/Wide310x150Logo.scale-200.png b/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/Assets/Wide310x150Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..288995b397fdbef1fb7e85afd71445d5de1952c5 GIT binary patch literal 3204 zcmbVPeQXow8NYmBd90>}0NP?GhXW~VaeThm=a0tV#EwJMI!)6M3}|c4_Bl3=Kd>G0 z(GHx1wl<7(tP?FsOQkTilSo*iIvF%uArExJ73~P zSv1xEy!U(Wd4A9D`FQV@W3@F^qJ@PEF$@z`Z!*BbFsS(^?B zyiAzJ+q})bkgiQHWqEb*jJD-coHYr1^iocg)l!Qa{Xqs-l~6J}p-|##ZHYofskQ3$ zI0;xzXyhazBeXhIsg5A=%ufo@f)1yy&ScKS0;HF^!r_2UE^lpZEom(+@duma3awTv zCrCL-%D_SvYWIcdHkmI}#50(fkUi)Qgx!80ju>g1za^}ff>JI8Z@^-iCiaCgg@TgF z+vtE?Q9{VQUX&MW9SYYmGcxA14%N2@7FwBTD4N<(2{nWgV8$e3?-F=L^&FrtWn~(U_Q~~^uYiyeY6-KoTnfh9AWz@ zIKje0)u!_Lw)E}G!#kEfwKVdNt(UAf9*f>tEL_(=xco-T%jTi@7YlC3hs2ik%Le0H ztj}RTeCF(5mwvi3_56>-yB?l;J>-1%!9~=fs|QcNG3J~a@JCu`4SB460s0ZO+##4fFUSGLcj_ja^fL4&BKALfb#$6$O?>P@qx2Agl^x0i&ugt zsy5Pyu=()`7HRMG3IB7F1@`_ z+-!J%#i6e^U$e#+C%Q>_qVRzWRsG^W_n+@OcX@vzI&z;mzHNb!GQ?LWA(wtpqHqTM z1OFw_{Zn?fD)p)`c`kOgv{de=v@suGRqY{N^U7gI1VF3*F=obwaXI6ob5__Yn zVTguS!%(NI09J8x#AO_aW!9W7k*UvB;IWDFC3srwftr{kHj%g)fvnAm;&h_dnl~

{o>^o9lF%RQ; zUyq(Z9}rrJ9*|nf(g)|GK@1_2IytVZ%jhM^H6z9ki9Tz4p6wg5k7%knmf53XzOI^z zUXPrj&SGDXevvG*bk(e6f3$O9ok=S*s&%Px{q;xxl3Bl(GkazT+1%N|CF7^jr!#p( zI`@*ZWB&i*)$@Z@oc}+FJ}LK&p2xipJh3XgA@?_$OAdF%L-)a3E7Sb@7UNkhVD>+A zbjjH216gCIPJl`1!|G-{xlV6x%A85D>N_oeWMz8v*(cLaf5~hhyq~T!_$b|d!m@_@ z0e5ybqh+*2nP1gw$@d?AAFh#C>=}yHz8Nwk?$>9T7qM?fZzj`7I`|B=8~SRwPZr8^ zvL1WC<=hheoi6yqoarg5vy&_bd}7HaYAbE+75Fb@cp*pd4b(l{Yo-i#*q8A@gStcs z|K2T*xs1)t?q>mupnWu=ebhC;Cd>?IX=9c^M@9qD11x0T zq!I1Ka;`}mpX=OIgd2JCH3X{E06O`{F92uV3(|_;0H_AP{WWR)H!nBqY~E0tLE7KDe5?UQFec5 zAfboA9Mx3i(dDV;D7r?;67nOY71^NWP_a%GzecnA0 zHkpP#F(uaH2WO^ZFokvW;A}W$A^F#Z!6-6~%prSJ6u~mG&B3``pNn>pX&GgQc;Ei% zT+7y@```c5r&E#RZe#4OxWGhF@|XInHPL-eWwY$nUm)YSi%qd|%!pa}=SS z6z-e|FWi$3Z5s^-3`={~4o%eKe!!^*fusD z*gB5alTy*njAi_eKKIbJiK%G&y-_mGq3!piy}W<_4p?aWMBX@CP8_xI1GjfA7-|U<9n*3njk2Ch&BS=ld z?CiBSUK3eRxh8smZoV#Zp)!sobI3Q>!9wP9=a}pNS05pB zLw4p9eAmy(J8+NL-^l-dHk-pMzxdp%Zn!#pCN-3(yZS|bMSZ{-y7mP1=|^Vft~+Bk znltKreaB$-F(#uctH>>8OVu*u0QW9@@Tpbw6)$0K+lo%v_iInLJT+-r z#y_!#5E)+Q=eig3BKD_te!sm+&Se=hh0j1^dEm*F>G7{UoK`=v591w zc`WVROFu;?^H1dyI6|&a*H9<1)J$X%^%E;+6FEaB`7dU}h2GN59o36jJ-eABZ^|)a|L^WmY>`c zdzYU$v7O%k?aVaV!v3h+;fp6Hzm$%cgqi?Xc`i4|iwgC+V9R((;II#h5VGnvu=JB|%*zwZeqt(2MF7s@w?2tFRH2D-q%fVkaN;E1*bH(Y=NUPUQriOAIayS#q1HznGw;iu`f5Y5%i77 zqkdowkEWgZAsu8$D0##BuhTF`u*e3+>uyc|^PcC|qN$KWp*N1yX( z+rM%CXX%}eU#Is@{Wey$lG80egC+1|&^z>1qVQ%ie}?=>o(Ulj;&ErQ=gh@2M}+)q zo>dL4giLFkBQw%W9@cB-Qq6~0=0Ys<9qJ)@wKaT`&-*4?h#t*1;2(69dh;Q$3l+H! z^pPeD9%-(A4z1;RR@kNT*~o4*R(`cd3z13c;S)<1sVOJ>aWcz$g+b<|%Hnyc68}bhL|&0gs?lD2U0$RPB3Der zYZ)JF@t%9*897sw7tTs@MH$RAgLA=c78lVA=s5O~FVy%xvaEaQE_CVTHq-g{)v zgr3hR&DgY*-|_Ha_j!nCTxf#@-u!8kcswH9YNHJ1lK`eQ?_Jhkj|x8-q9=l(xLquV>#LnMD1>)qQ&` zdBOb(oyp-WTCb~(=oOh?QEQP^%-@<-IS(DAN2}mDYAL=)jmDWPa*!;cKjR)kdQ7r} zuhn)gzuN32b57AU+|TfO_(T>_fAQFI#)`QTGb*mV`}LtWr#~52Uc)fzDxW{^^F2LA zeFokZ^H`i^rr)J@Vn#-8^1J^PI*{2JU+aB+6dsecWFPY|<}UPp^q2I7)Crs!GGzFG z=wlurzDKUG_KBJjD$Jw?c#tw*VjC(xKU&eQVhuj14UVNuXM@i}z1}t>{$_4`}h6@O^H_D>JvdU|-DiIhdsFjgbOy2K=Pa4a za~?=fzVJ*ctE_+*y27WiZ^p_w#d&M`Ju-@GURiH1v+wb8qMsOTCA1W@6+Il^7x@&j zD*4P5`-eMEHS)Vv%fI#OgG-uQs`$OF;x~yo&dn8Q8|7q1%J|(smYP~QrWzZMqiL{z zRt@`SRUM8!Daudoi@nPAQ5qT!qG9akxBDP^K_SmO9LH)TmKuoFP+t($#M;u$BkCkA zFo?Q`x`x?R&zW7Vt=qwKcg5NO)3mnj=e~XX=8`?_BD;#u(%ih0@4Jofi1&eZp{`L^ zw}F{hZ>G{C^j01Hb!a2yW#mjM-$+M}{1$$JW2*E)_HbXuG36)TNGDIe$zJTN<*&gy z?9bA;j^2y6V4YXcRDRF7-^H;R5H%0|mgtQkqiSCDv>8);8!LKryFDC_qsXOZGeGcR zy7L~W93o$IG|3leBa!(aXTm&?7Wkk|uLOT2%X^UPKr=C`s&6Bs zgzmxn&3l|`!IRNbK|g7u@1+@Tu-CVxfh;LKGtFd3&4F0vKk{R*HP!qedSUF1F_)@F zBA;|N{WQJX@pH5f=cqB;lq{({(PDoKJupqIt#yBo&y!_T?SV13YS}+y-)`Iki^wC9 z52+(>+DIma*Je+HMc@*%AoW$U#fzLLFH-j+n#$j$_ByzPYHj#>wvr<;OA_2t`!e6< zrMS1H_645xLa<3w)w97QO}S4akKoZXo_vz)td&oMUQ%1}I2?h0le0<%o=o{ealNSu zmO)2pf?uqbYK|)(NzEr8P7Sb!x<~B^v=LS-XA-%hsp5fDe_|zUvpl?-hVoUZvHbqj z0B_VDTbk90rMzcFlzvWQ`F$|Sa+qaVsy(_WRUcW9t*}NNDYgmp3e0*{o;PF1C_ z$Dt|sEg5f=9h#OZ3(-;zbFE}P8p;ScYS~_unb8--`kHR0v_Dw=BnHI0(Jol8M$QsA@O^x@+Na`hrw~T>NMn%aizAtB!cm}*8(^xsX?AtUv9prs`@r(9#bIgIw zFbP$Njtbd+K9{{x0pkbW7Je+72p5m3oeNK ziZfaClw=fnMJBlt-Z1y_r3=o9a{of>-1EQ4b3YrpihCBipW)TlUm3oIyy9ya#{CUr zk3;knGbQfjtTv;*Vvg2qt*bL`^PXmNDQX*oU;%rL?PI>?#w%ifME6kq@YAC6bBMf9#>|e|LXo;i83%x+^|UcG54>AG)c}O)$v~k<-xs zn6Y45^w#L1n9=o`bL`CKs@0e~{rKnqHeGWIdm!;UZ>HBi8NciBam>uUhkc>ZKHM{4 z0<%~K59^bhtJ`-Fb8?wEXRovS1?m5&#q=ek>kMD__;DS>%#?{!*`pcFWX1jS@Q-H3 zUeoT0+kr-+*An~Y;>C1zvJV}5?zzWamwVK7`#J3$*&ew1HqB@q zJ+nnR4|9)m&9XUXW&^hkTuM)nn^v=0`I^a!4Y*C8<;&k-ST}Hg;{0j9QEWv?2n0j zi24W&V?HEut1!u_rXQpZK1;@FrpGt>Yt&4tUk)~DM*nE6em1hE=0ln)&_B>XWDYeF zwUP$3krp|I&u+m3(#x?&#(YWWC2|R6encj54L*@eV2%cOLq=()>hNylla}f=aL-p^ zpl8Xttl{s^EJ~IkF|V3uNz9YTCynI~!YU7D+#!EdtPU=bOyf=<;SBE`2Sao}t6)Mp zzIS5sIj&ae?(tEwh9yJz8D>f>ImIgEd&T$Tp5PU}t6Ir{O~X<#dP!(1yYOhxR7&-a z%%Z>#kxk*e?6QB;s8obT;yKsg893u0TwLunQ&OMK;2^kVA*J)%HdB?dP@{N1)$_Fyag_oYs z^S>O-aKkOvv3D_<)BgNs;|0kju5ya^$QG6?A~(oBvXaN1lOfbStbX`4@{0VRzTt1T z^J?{FV#XW3jowYa!M8^*ZLiyz-@@mZ>u`pM9+J-(O;3x@kX7`d^o8JppB*P(ICsujxw48gTJ(qHl@VhGG52;dUe3hWw{Y^T@uAT;<6q8Ei&2-k z<@PJlqOJ{H#aVUcc-3W``|oUhGc_w7UJ_o_{g1CqFMQ{@^xU_eO*7~}o-iFvW{zAl z4?nCQd6kLiF_YuZ>7Q`~y3ir-gi@*OXvzaz{Txv;XZCBtUJ@vwqY3G4m>CF3R zC-mTiW};sMdssQEgto%@JYOQGSTc&5N_HQ-LT*-V#n;Yo&F8S%YwQd)=d0@dcw+kv3Rbn8D?l%7Yt#~ZF^hB8TPGYdItA*Y~VX=;y0anAn=8KxblYm zy3S8kGf@lintamLu`&3=9vNSo35jZFjz}B*GTl642E;iE?tN<}HFBxsQDqQwslN7F zye7Nqe6uckZBDnj{|xt_g|xSuTh01h%$R2R4`zwLB+g}*DXg|OdRO3tdiq(^KJr|L zt1O}B5&gPoAbL2ViI5>V)o!nEmJM-^s?TuW7|U6xZS=|npRnr3oFdn8x}DF3VSF9g z5;7lVQO$hl;hf?)_jAmHM6Yi%ehj{kUW{H%UiQeyCT*}ogBl5ZV&>EyTeGR^9hQAH zp?`3$p`5uOcq-;S)ID6AYM3on&H3)tV@sVx7HP%D3C)DeYrD^-qNi66rygFBIqawL zSvu<-pFB!&}YAEU-HAk1Enj?!@7lbxZiY5_02&{2pKbpp#d(ttOpm@g^epmhXKL2jtp{9WE zv2z%|?Ssg04CLC~{8rutAB^O;du%$sAO3(ZE^MvMtuHsq* zzZAnz@n^;N37+E5TC$Vxyc-5WQ!#g=ro&$ zhcA@#N`CJlwGkLZ{ljCqMeZmu!-8K_taqf=!>T^xDkpiL?>UIBlIt=1;Fvr^Yfi;1 z?QXmvSGAWz@QdEZUwrsOF%!j{tlVO+vAppm=AEdsSROlzRu4#q(Zi8r++SIrM-S*T zB)$%NOb^!^aJeS@7y2_6^$)Y@g0l`f_EL{M?NBlOhi*!#L~p(km|{ zYjSh2My_?_`5E^nQa90iat@uIkk9v=pKqU$jAN-Wzcg~R&Oecz zWEg7>y*IPbADqRe57evQEs<>pVI&7@0@jk#k&~S0}Hiz32-qSV4c$lgrbZ zm*~~`#u{eDElV$d|HX9AjB%j}sUJC)PtVQ1@Vj6v^&uI>Ka1bleDN2~{|qeCi@gb% zBRr6vsQx!)Gx*S4>_OVJi{HL?*((QDiFvKgY|ZDkcF#r$zsG*%y#AQ+Nz96cbN=Uj zW~wm*)>$Ubv6n~8!>WBWH=l@dug-j4{QK{>qSItE<%3z^7I`MGm@^NvsJX}{vWl8Y zb6YvS5o=2snnY1#RPD8?C|`$Xvo+YHt#v2N0jD(5*VLTlP8%CH!vyTlLeGoyKN_1h z@eG&(zb5v~gFo7uv%IO=hB*-V!~CfliREmv=xzBxw!<0gr`pJt!V~Ho?nNh;#2j^I zgSh`(3$xUNC1948rdRnL#!rDQ;vC*f4|BjCW>$TkpX2kgqA!MiUh}K+i2KO2G%%lx zeR9=7a{jPq#@VQ+@MO%Jy61~?LCl}#J+^8bF(K8}$Kp1j~pX=*gvC&lK0oxM$r}Olk-U{-i^#7tK__*uF_P4h60mxG`z&~)KZ>~z8f>JZLmy} zEYn@;BC>{_PGnwT5;c*A@`v$X9tuA3wXD)~^3mWFS*5YU{7H6Seq4`UQe$SMVikG| zEYi&(t_>%aMb#e9bdm~kAC>4NdMy=&bI?xAge-(j@NHPjIai4X<9R)sYM90M=(Xs% z_#3W|a)o)zC|ChrfE~P7t|>o&e1R9~svAaWDayT(y;PlbQcMdkPuVQPICVcocgk%0Pt$t*FbtA3CD&_iLEI|njGQ@l}ela`qi{JbkGvJwrCWp{3+*AK=mPL_0+y^J0m*y-Jb&>bs zi(roTm~;Dnw)bz>Dd)kfhqUzYg`A;QqHdD02YozU^dG|}&b)v349|Jj=b^Q{lf5?2 zqDLg}_&#T<$S6&1$5T_w(a6@;)E%VXcSky2wvPPi8+a${Szn9HM^*J(WK7nr_#FU~paQ5?5$PJU=-FIyQyZivFSQPb#bGLQN?zrC*oGuUGr zehNN{Gfpk%h`EoP{VY-K*(|cqF7Q~Kzpj2^kISjntmnno=1|o(?A_IiagW@X@y;GG zr&^hZ#`#V@yN&#+&yq>pn=X2H;ScAzhu4C?;$ARjJk%yS)goYo(^hLXhb;PaogIRH z5-dW#q_gRlFh>1K60Ab6 zjQh}au*xWEBGE$wr#Po9isPJ3ZfaJ}K!qEtivq^f9Isx6t7s*7fjlbw;u&7c&`OeYV|icE>j zVpSfVmfgczMYgtvoNaaS^r%XFBaiEk&Q1+S=cc;SS*h;G?0Bxvt}o@Yd5>O`K2xsK z_}U6T2>z)!G&yu2IY=)kI0bDe=bU1+8@;F8FVdq@bCDs`jP!$|^o*$7uL)hFTiXba zhb&6;18o@&U!a?8ge}ldIf1)THwUbpN=l4Y#zulGyd6R$bHulqjP=EEQR>&R(1 zC*`j`%wD|AZc za$nz@(PS>iW9l>D4!jilZ_rf+k1$ViXUseEw|@kASm%A{%b0&1FsyH|!br3La~A3w z{vPM^RP=Dn)mqNOHD7B+#bfW0PyFq^eNgY<8X3lHi&=wCd+{9tAhw~l%Z%z{?v!4*X%*$8Ljs71q zw<{l-n^rt9JFR*C{_uEKJ-i_9S&5Ic3SH!0ydX0>?u~fw)X|aI)gN-Ezx~l>Y8TV< zyyk^R(u?0(LqGBT=`s3$mOijBJ@K_i)5=Hhi`jAhy~%R!5oGSh?hZ_j%;W74bP+_po;ab6m6DV&);FK$uq;`%&BU6J2>WgzUPhm-n^@ZLZ&v)z~s5xJpbbB+*|S< zU#rhJ6W?r$oa5}2PMD|j6ggaal;ss?wKcaDvmQ(h%?0Qr^wiLkQ(L>4*=ZZHs$CzM z5PN+q%m0wd%YMfGWdE9u6#XC-7k)Pt7k`(2;2+RG^dtImehBCMnEsxBLZkV2bP2Qx zG8&Eb{Eov1oh{55BfC*w^K){s%=;oE+EB-Abna z_mij|y`tM^kz?cxXPP;;%nA*pG3%j`QRENV!`z5v7RA?j&NcF@XeTm|vqAFJOlw|x zHRe*CE#m5Y5q+Axa^FVXL{90^PtZ;Bd-9%NvnHLCt20{V4Vl7zUU|ZD&b#}>)ShJa z2>Dm9IfK<~Ys`SB*CxL=U-frnm0Vx(e9TBAuM%_B;FR!!IN#>yz%nt575$_ge@Bf( z#;|`l=B6=|HTQ+=CyqUC=qGN*<7rcaK`+tIiC$smsp|V!t+EO_i^u9Gjrclw23Ebq zj7cl{NeiBh$63}@odg{P_ORM&oEQ8yvVrJ z$W7#2s>!)nYBW_PFb&#`%wu`%J?3B{Guxf5tw7VUB2Rk&R_QL8qvGI{(0pVh%lCQR z^%xmmbskwo??^pH?Wf0!LYq0V6Tb>ys}xV`h`tg2k*k$6%#mFg&-7?LvJKY{Z5v9y z#=?Rm3*+VT3G@t(cw24(N( z+|D=p#`T?V-kx^7aYx$z+8sUn{m3PM^HJt^HvWL8qbBg;mdtQ$D*vCH}&v2fteBwDdM%~4-w@8jL`y#XGJNZ2Oie#gY z^FC+U$|UaR>mI+Bta2d?bJdN^y1nXh_@NJ6&^!3$I`X$S-Em{O84chndW)_kW1?rF zUSihO9v!n3dN1ZjWR>Cc+^Va{D)z6q+Rq}J$RA#pdDK*7mEaP1CD&SR_VXxxB7Gx2 z!=7a4r%akT4xfbCE903-2O~@;XEJTx_~;duSr)FC9l!nZOzaI!#ZEgK?i}pA-4q+3eB$I9&6{;^_Z*;OYD51-d7#dUOS|WuJ$2CI)}?VlO0nvh}E( zv+MUW|7-7a^iD6HOyBgNboYqc(vYFIF|!U%lvkMH-|P15^S=7x!|CZ49!lT)M`lbl zmxW)WcG2ERZ*cQbej|^eZ5-p@?4_^*Jvog<{QmDnzbK%Og?`|gJ@nMlCsVhV-jo7< zf6am%<@fY>%v^i_{rbq8m_5nn*mv&-82U}_H+AYW%%E;3mXBNt_)Y4v(T05Aj(nT(o`SE6ATiExvwRLw?8(vSVeh_m<)Kwa4-PimV z^xgbBdzt+xxfe!R+4oa<`46H_ocQ}xdi0y=@Zp!!v18w(=jNa3A^s8l!t7&T`|rG8 zc0o&kE7UM7GaWL99!tyvLyu_BH3@$6^Vwr^ge6DVs}i$M;Q=|ojE1}rT8MfGTwuuy z`TJdco%ipmYxq1p7<*;1TxxeVm1l&WfqvnP)OJ`vEyMgrOEWoCH4K>{G9Y;tglE7O z-Y;w9$Ju**KQlw%4Lun(kyzuonP1~|pBH@6oiC9+V!pecO&wkg@5?ok4$kG3pNo6D zvn8EgM^Dk;vG?~hy~3yPa^#fUyU~|X3$fHZtah}H7W;bfT|5pgq=n20_m~w4FGoLz zYNe;gl2_DKPB;IM{42+l$6cI@=aONOPdXdFpE_X_`6OnWz#sP9w4s&cdWo;w8_1c^ z!_(35jXzZ#_tnrpjEB=qjBekL&aZ*IV@1Sa~0geK#$zi44;OyF@R}iIqId zJPKOJiA697dDtVFW^tluYH*9aHD34q_UxEnk%4@c&yhpQ4$=2ZnXi>q?CH@r3XMkQ z2rWiEW)TdN=_|n^UhBSJ-9@&MVPuusBlCk*bn>gH96n;rqxjk>BMR=3t_B;~niD9sZHNRnhjL zu)t8bWOypso|W2%?BQ!U!7R*C^q6D3?=a_O4_CRQcn9}x8^L1Xo+BUKT)$k}Xv3A=pg!(?^;ni>3``eZu$ zOXo6c?F&(6T5_gw&EF^cSk6509$6+lq|ej$`~~Kqn1|uod6!&B{#9nVn%v42%*S^= z3w=6p$~hNb5XWD+=1TMz{E0#MFJwyG!{&T?hOQwC?B079<72ot-_#QNW8_#C-ZvvHe{f#tD33q)U}S0^ zcxpv@nEszhb0(w*o?4w=`rZpL)x^jHn?o^Y-RImm04)r{9%u89rN9* zE4QTTlbci7iM7lrSsQag+3c!_swY|LmT__wbPG`meNRHv1PAMJA3-Nx1N1EGK!fL zb13%cxIeFbHBC)qT55j-bNn*6!~I3gbTq0jw89acXcC>|QQ?Hz+Mm!XZ06JX9O?$$ z9tgTfp8bfvSu_nfK`p}hVxG(UY4e`i@KWFkUw5_tC%v#)4~w~t$e+q7aD+S|E9B>0 zGY!N&$GE2<5syW$#r^PBHkqdp>&1c&$xKBJT8#Phn@!{cBM zKfj?n?}}fOpELKGdoZrD$*JZa!3oSqL)!?QLr#GkI-1OukO3hhVn2@aM(pF&pYghD zWLUYb4&v;1@7J&KdY*latVynuz#?iSR!cp;On1+)jM4#zbT-mMTo0eX9F1rfdNTIf zSkZSwmc)4`*-R69beIwEoL1+Pm|r#P8t-w1Nir^Zij^Lns;nni=CH3u?L&UBLI?Tx`p>zp7(v`VC#8C_&RtlO()35mXV9a^YK_V=~>H{ zrzSZ?PX_JcLmefu>r>~^`p%x-<$O>v4`Y`%JdNzI!U&nX&!0I_Yp_&prBm5zKoC-3$dN<`T zMmejm%MY<0Am6)>e9PW(oQGS;#mF1^InPH{hV!L+;gCI9CRe@0Jj=0y(R?@F!};Q! z8JpycQoQ4Ccmposd>rHbdT{-KU=evk?l`n@ zKve$v0F1Kdt=m$;o4wM$w|jTjZLuC$cYE5uwh!J;pI{fCCF>j_cjIxvn|GuGXfFk8 z`=XKb$=C!gDR}eFwEs;slh=Aj?R@pNwEYjarX8>JN_*abV|cxj`*y=ByIw_4;dt}! zZb{pJ-#hdU_e{3bLB4R#IqA~NE=wQz*vCRo`OCj%7A*|(xwFqsmtAoM+6J>$F1;kV zKhN3tI#$elgbkklC~6#hiRK7_}F9L|-V+#N?c! zhorycYju~8pT$gnSmmS4bCFd(3A+kdjFhYm4z$p*%<{#^oiND zQ)i4yi~NM2dC zVrsf?^_=Jp>W>HGOk8`luf6HY&_fn1pOqGncQK!`2A#t!tv$-i;hP81R8~B)lwO8O{_!U-rK4rckZ&j;1G1etAk2_wbvD@%W}Fos`b{c2_-izW zUquxc|2h>G{xTJp{3ew!FQmBWH&I7Qe*?3;&fYbf@E_>CQ3D|lE33#Je?&X6at%e_ zNrs6TEu8-!j{oSq7D`_z_Ba0Hsn|QPv7r#=fKM8kHOtJChDPU~Y-7gCmhgSDo}caL zJey*^NqxQe!+~mpW)w74L^fn@L=#-%zU)9QE-KQw4s4? z^G9dPule20I7N2Jc}1-wuh2vEak_Pu&{ANSU>To@_Hr7Y=*geLBGGG$u9CA#^uE9? zT^-Cmqs*FgbuxRko!%Mrm~3tc{kgm+_hDSsJe;AbW)gYS+;hQq(SvcHUH9#6sG;wr z`g^Qdel*W~gWC{1elR@Hj zH;c#~=3ULcdOe@_DtAPtwcD%leezAFmzaAcTSCQb6ISyi;nSd@n1fXtX{PtaOskdm z*W|sx_WX7>JjdrfN4ECG$d|O%JVOuAQ#~GyOp^Bu$6PdKkvNY;{iER|8c7Ad42+={ z(^SbyHJ;4!u5n(53C{*@;htuBgnWq_hxrh>quKl66K9t+SKW_)q}PLnQmJo~@rkSw zi~+mE@p0zFqJ7j-az&$T(Vg*VD4mgNir|&vN$|(C)L9LW;IWupku|Ia@+f(aa_+mx z9^oHxpP7>i@+T)acLL4BK4sruVHO2GQ45hREcr<0s4j#-U?iDB#*iZ{xx#ZN4{|S6 z1;f<9Gv-v}m}*y^QwhVIERQYWxtvUEOKbWop8tP9QR2F*Y-{a-j-8tgHhm?H*ZY^uip%V+>DRYCmrH_ z``{B9MD~zX_Pq_KyxBWgMGgs0dF#%&Z!fRCU%e*#y#8q~*LJ_&2WGj0&mNQxZ@7!^ zh5v*;bBIz4u~%7E`STBbD1H2s>{|$zm`_npkzYRXDfS`61CnE$ckh14pFZ2!^cTP_ z7sqS$kP9!lD6%Os%NNdLAE0xXokD&2;)~KHU-?RunUzZ~|4O>y<{QxkdZ)|TSJ`cUy*=L6=i~ATZhjW~>KOOyK?!tT0RQ3p3yp$RH%O~@Uv1##&N$J7I=B35m z_xP+K@WD0YVB{6Ez4q!%XNK+rk1tCrA6}GJKDGocWmQ`9@{?Ik<-x_#qik=nnOgs> za-7}$tq@S+!xxO>3gT$1xJm8m!_wOAD@E65f#|;1BFwQXa82N4} zT911)zWDVuWH;#3Z7SwBoZjC$X2mz`MTgkIT(XVST7Ku(!!B>3o4ie4!{7ZkQdQ+^ zG55W$_AN9D=9WS|_*)VL2_A^kz_HGG0>OEF&2Vdk+M!RIN7Ywt2w zt(~4>dyCufaa>QamyNU4nwnsd>bLQ4$ip_g#=bhgBVY1!G@M`X9sYyw^RslU^has` z-fyO(CI7&luP{jUugESilfLrjWJiAWry^U@0H@Sf|119{MmMR$6R9`riEpB}L&+NY zI#!Q&gPxLQQt9XAIQ$$|eV_1tV3yEN@J~7{^bR@0V|#Ps9LHum)K<=P{IaKfZ9i`G zBjj1qPCN~B8EO(yFo^z# z`HLu6AkTO7WHz`rSVmn%p6Gt2d*%5I*}-SX4<0)|M6V@!Y3PHATt~M*lldw?fMv3Z zY$~2g?%l{9_RDnOopizxo%knK8yZFjW#&|`MRtgOUAz=~V%qBPOUQ7v)qa)tel24J ze3es;crIKIP9TpeJ6O5*;&rPTwrH(?HkiU^wAVe!`|wcIEnte4nn%dAKE`{W3h$+@ zI@2=b13eEJ!0N2id(neopBflJO{5k7roHCTIF=KvoFhWVfGJw5R;9M;)nr*#@x07? z@wx3)Je-zniYzhn}O!ug_c{Qi$ib;T3Ntxn+F z|(WU=g&CorCdb2KH3R)&VJM#~^rPa4OwCC>3w% zk5|(Ve}>v}XDXqJw%&nea(f&XZ@wcHZ@xVp*_vHDvbAsA>vN9q-r`Mt(NcVW|5OB< z6v8AvuaNVeE8Q}X=Vk07kH{be=qK`n+)#v9RI~*@2X>KL4y}b>xbHCh;=2E>UTN=} zHwDAUGJ9W_QF^6Y)@{Inm7QB(Y z-uLFf$le}UKQ#J@+z-H>B6W@r{ncLtr~E&E!QRK+UXVEzGbZL(^o2h8=}*V8UW_y9 z^>)rV|I6uOxFb9v7$#T)FG$TqMscq}OKvgia=}Fx#h!-Vchjxxb9^Pf1n<89Psy1s zmt4l4hGc8)Ly~>YLGH5zpEb0E$&;G_ZY&y1hy-p_CgzwI*@Ois?YU%Ya5%#XEqXZGSrv zm=Iaj@NZ@_!|lOEp|i|FS8?B;rK^~K|JcIdoH^`ixM1nTwDSJxWNh8fa8`QssYU6b z#}~vs=4^Wpq-U72A4yF_PH>j3`IO}k%uo71_9s91^y**~=c&B>y_eV%U1Kht^R&hT8 z_i{8>JQL1&^|gP;-`NFkFu%2l(qCz0P6>I{m{n3oPjLO_D0^z$m&U5Edz&1~>oCci zaqR2X7Uq;Of5bg{-6OBPbq}xMkhVSO7Q6X9-py}(_i-Eh)lj~651XF-Yff=|dUwoV zjaeh@%xPt=nSDC;0mr;{=C`{?u9;UesP^BUZhw{E_t)V9`-8K6?Alw&q;kz%YV@vA!jnI3#Y1UP!>G;5zL+*L zADvBRL!67IXTtndavSDL&6>8-x9hx+?0h!wOy0=PdrjTLYIo)S$gFZK?}Xk_Z7u|j z1AQaro#DA;GtOX^N(zRMC1e$~i=06k^-U_!Fvx>?UVdqlHz;$ezHa7v1B}s#t`Yb1 zp2iAwkgOU`&<{g3alVDV;k?4H;XU@t)R)UAcr$t^RAo?b9 zg!jlJa!KW3I0MG0DTZt064u6JGrHLW9ingong$%fZ~d{o!{CV#aKYGkEhoqnRoqj- zJtq&}liklMoA^1krPIl`OwaU}(y75Res0cDGLoNP%jZ_{U2-<6Jd7W65H{iSEI;Su zp|Qa)l`zanu33IBxuYC!=0pMa!#!pDIF?Cv-j#6$>rok`dp)}A?s)Bbr2Bm7t|8<` zhM_`8~a2Z+;|%rLoez!7@`+-EBeE2 zRPXGZD;%K)Qpl<L3-?;PU+WdM=k@G(*Q>X3|4nHp z=ha%&S>&O;Z^11vi&~1lPrmLVce{(8pgnJqmsvL?N;XkHQB#ps^nNT^MLx;1E9O-` z{n^h(Zbh9%?L}WlKS*Xd{}MHjESKV*$bb2fzlqWd`uJx)jW*jL$eUxHKAZPafv9p}8@9zRF_N$*D%xogz$s6oT;MjyE~*hTH+wtjce zf5X532f_|`K>f&=3>Z3ypV9#7MaA^A<^SQw#AIBxmn9T zXni1gMNZKRx_k89WO;i|xJIHGs zqPL|0En*K$P{3=ls?B6Tf;aYNS&-%}oZpBRvXM*$J-|)O4ryUd%W3AMo!UlrV++6O zn|jK7+Tj<^IfwOhcjf!=`uY^tERUTl;@-W^YCT2IaLgT{huD7L=*h9?m;T>uMu`12 z_V1#1(2MJ=5bHE-(#~wNd}gXXP7i>*?$6Kj>koh3?rkLBv=77*EQ-|k)FQQ&y zF0_?AMq8uYz1S!e z7m+WVo$4BWxb&u&*9bqQ+dFYD8fTkj?D2T&pijnQeU%xoau4~B%2G0_N0`}4UR4jp*Un|NzqYw- z0X#!*49{pRTgabjacCzVHyQsD^^4jbi9x6nhVeXn!w?OS^E61m6M zvd-Q&Zb^GyyD9B{6%N7g@!p-UTmy4l1)E$QwfnW}!w=g3CjJnta(Ep%mA7D#S8on} z+4+a-+>}xYB`av>EuBpf8hyvptL7VH1W9C{q)R($QO6z9k}vqg5f@bU{|e`aTj zIL}s=88VXDx4cgV(Ie6~QkzjvkzKC2_3F?g)Fg6ULawpLNDW3kX6oF@ymxTwi>K0m z7=6~G*$)V2nLKxV>>DTtxIeQqU>Dy%H~2+{F;lXHeGBKWm=apdqWh*WKYwIe_0X*J z)#sN-J-%j1@XMS<6VN**#~i$TuACVdYapMgz9AD$V}6VK{oMcb{pm&Ylpp=0?OQLP`^*VmF*EF+V-U0HhTTK&&oXi^_st=LyCQm??|W!=e3xabrotgp z)AZS+(%c0T(->yP*lTUR)(8g{f3KUwpvSDDfv{28T2ueo>{NXb9LXE zR+uH9=jtAL?(rLY^|oyaPBFVGugE3NVs-v%Ya_Eknpv4&(!uJCG`Zt+n{z|5`6Zrn zhJ0HS^WI^T4%R5{@8p{IdA}9&P1v8NwR;x4eZuw&+uv)oH<5LfPtZ}?ntsc7X0{pE zWfm)Dv7(QdgOxAzWU{^&@*noHpn;sGJa&y-YFn01Jw*njqcvlXxQ|(>`QCSVKkjMv zy>kwk)!9l8m0W43Io58j@LVtlEaK{Gv##0vvY+riGamG#(1Q}aDQ)aA!)vvXsBTY1 zpGN&d|0bVb*1~L5wT|#p&_|s6ajJ<-DZWZRZ_L%#Q80=#+GC$x@}P}XYshz)7iETr zeYEHtvHuKtj#G_1H`oPTq`SwZvk^Ao8CGYL{2~*ngD?l4YJx#xA3SEc*PO`uYTW}b zW|Vc$`pD;jDC!y2T}!(x@!+X&zK9V@Ya3?+C93AEuRR ztM)l7;<%{-J%o}eYVbR(T4#Iky79zD)dnDd+W+(@@K{4>GpQ?dYX>SqIeeE;qQBO;b?S=@pwHGV)eKVo~VaSYB{H; zQ_ZKWE`GX zRrGk&SoD*;e(nX# zSs{~a|B!mj=g(z63$JAoy&to)`Z{VVkwdxV#yB=h>zozqjzMS_aK}*g?-`CBatD3J zH=(CogXd%av3z2_#B8h@iyDeLiM-OAxwN^SqQ=sv?`<(h*X#EF#P9Y9=J}Jawg1O# ztvTCUc~+l6WJ)>ikIv%n`bhRbHnXd~qF>~^dATNh5wr$ppiIJ-Swc3&-~YMGX0ng* zMD{Ue&%!16JC804ZN*%Pea;U&xj1^1A9#F0diaS2>6sT+r0@LT@$}4d%hF>{FQ%5H zr=Mf5K|CgT#~CteI`$+vZ%!{peaD$Hi&if{yIGbVfBuQ|oqzgn`ti?y61?(HzxbE* z4?q2J%vTvVbu7;qk?!Qr-HTayQ(&#-4>2#FeGTt>baD7V=5Nfc%tTWeHJ<$i=v^K= zo_z|&4M=0g4@?s$4Nl`H^iL0xzqS9kwdDwU$x&vP9L2M-f2R~brlf~i+#9E{ephHL z>MYK!Z*AET{*FDtZ7o}2g7wrod?VO{S@AJ{mHBASFmn%HJ(&go)4gV0?4EKhKxf*&ZoD0nYJt5y0#u;OA zY^IdlM%G93kC9oet^5`aVopt2k@SzS%s-(cbtHe=pxo|9$%J!;euDkzwq! z^xwBI+Nm-q%|7aOfR9UW=Ye8J-Fm(clc$U=gz)l=C^7$#%#Uu5BmvXqKn; z%ItLygTNRqCl~V!xPoj){QkoNO;j)e=UtsCrtZ;M%jZDtL~W5*S3kqYAx4E@?mmv06@WPdPb~W9T8JndVSeIt4y3cLLW?-Y3WS zzUt5<@LJ%T#-lT%e6GLw>InX3mlX_x3(ydD4IsZUFm#FPLnBl5!O`%=$W(iHEbIbz zz$>AjpsQ5z{+v@j$RzScHGJZ|mi*#-Tz#f|qV7?7a2T2k8VIamo#eQDzaG-C&^z>! zD)(o4iN|Um73d;rA{9JCzBmE%^svUBLBS-Y=p4s)+>uV~>YK`Ta=Z(jV@F@Kk$%Ar zY9OI~xNghNt8?TfhZMsL>Jud#tCf^&$#Nwbdyo}@QA%VXwUo`h$d%m6@ol_Med9*F znVaLD(#?Iyl-vP(z&0>PvCrgvr9P9jX#K5GCHO*?uMe%uxW)Sqy#>F(KC+71i{C5P zVPu!!7+D7w7q455ADPiW-aA7PXiCYBjIikhcEn%Czm*SEbFYTUa;z$7N{~wf3hM_0+n5zc{V^ z#aGh0pI;i+)lJk%WDm0`zW)3dz7VUtV&z(kUXkVf>MLq1Y9(@tETZ3|jv|xf$7(I= zA!;MChD@UO7vkHWD|X*oKxf=HI@(NQLcqgZtByE{@wwx z$}umtd|c8Cd&(Cvw}fxa^dW*WnM-EmPe%Y6^8Oi#bOhI_t`<})KLduRc3CV2_rWrH%{};#2f{=CXs$lkfIqS*Pb*3`C^KLaWWh=?Oo?tEG zd?|U@qNuJevar;D{Z|=#GIRc&682;+jU22#ku&SnTw0noN6xmc=GAnx_@~S>`DLm+ z@hfsIuhPf!R%kEoAMES;#Z+`w4fQ z-pL&Q{mjet&#*E5_j}v<9Y+yu=xO?%o=PQ$pZfo(I?wp7s%>4iyz!?dPl6GoC$R-L{M*w7lc|DJRgAu zf{*0i?#m-0#=zr&cO%d-{&r`i*8Gv`RW{u3Q^!KBt&h`KbPfW2gm6!)dXN2lLv^>x zsgPHJH3(Sb_uIu!eLMUxPd zF!%ioo`0%5%_kmrQoA@uzz`2IKDD2&>AvzR0Urdu5&W*Mjp$u+ICx&+3D-rOL*5oM zyl%Hs-mtt&uZkhw6oUW%D=DYx#wTAyo;SZIKO^D zoN``FCB6#g%!RkaB>|^gKmW4by!eXUP{1ujX590Z5&N9wCcI=h;+X8X(7jCY4g8QH z&ubQ3BmXNL0&Bn^p?J>kXNYmKG*71H;g}xtw4QemuRLk#XPy$HJmKe|>kgqg&d4Vc zP9CPMxZ$Y~mxyOlrN<i`L=`^pCcFgk_kEd=QKR zd%!hm@Rhjb!r{l9QR4SEwets?`B>g(Y~oSna}Kt$g#9h-?A~T}>2O=;m9zV$)1c8P zH*{V(q6=b|i-*K82im#L0-q$QZYVgyDsg+2Lz2D{qhs{079MB98e8Pn1{SqLY_h$P z?lqI1(%d4qHMFRm&7Cdqo8VD_Rj4sW)2LmyuIGTr1;HyE(N_Xr3%o)OD98(Oj(--O zATPumE!(!SW{urwMT1d?RpBm;M(AsB{%c(GuEm@8|M@B6nrZ9Xvy)g z?;v{%aSx4!{Rr{d!YI@U;k~8j8+r>26YTjz&WHZ31p5Y|si4h}Cu#ruvlMxe#O0SSkp&Dg+@1wWCDnrK(vYx76 z?xS9DJ=C}ME9G|Jf-av)ujtX)rpz2-^OlUZ>0*_E^4Sg<@s*98Jjneoo!(JjlrGd! zYtNuBLOGvLdwuLV95|()7^UwI-&*fMeZ(vMt=}-|C9@{E&N6M`bl+=m@|;OFZl+jh z$sGHj+ebEh;%J+*e7?aoQx{A#>YFD_A7x`F4RJs1z@a_to%f!#ALJK45xz@xJE`J~ zpL{=_fBhGI?$v+xKOd-X{?EGii)wX#*1g;6m497pd#?TSzcO`9*S?0C_HX}@qrHN! zSWez~I}@WC=G4=6Ipvh)-B2y@Pid-oPO{tg64h5WN&VWc$Q!HujQ>4V{o9f(_xfqe zR-B63Xs1taw3RDI+rcAC?Mk|IlHbHa|KMAB;*3nO$TjgtwtiENJTTf1S*-N0e`ebM z)o=LMKd)(D#0>Rg$yVS0boJa-jnN-z_Q(HR6_+HcCi<#+vRu`(OhuOJpEdq}Qq>DL z+5YeUoYx#;m;WFawL`kcI{U}J?-bvxv&^&^ViIX1IrF7mEED@IwUkQ}Jd!U?w3LgJ z?cCYncJbUOyOun~k}r%Cw@kBiu}jvqDVCY4v57y}*{EK2F6v7=7v0^?#dNdS$d46& zv8WSWEGF`EaY-+`bnY9SceC@cJ;g4)EiLI=OTE;`vaj~F+_e7U6!q)U{&5fF?YuAj z!TW#V1(jwI)VrWv;0dKi$FFzCOZ!kiQ?Ug-Iyi?vxQ~w%rueJgg(rxhml*jJ{Gxxo zJ4%c(!p}oBEb1esXP#3*r%>MHZ+FBSVgl-3y>>-;6mlu}Iq-E*Tgx@|Fx0K!4JBs+ zS5UKZFH3$<^*#ON#sG~&hZrh7A~Y7?spn|;)^&MIlyiYQ?%~@|PUaUe3ip4%P40#L z^5o(0I+(tmdqLxXN$8z^PYgoNoDsxk$0h!Gzgt1z2;m1FWk}Z zW8S-pd-^@Mm4mr=^<8_Arf;RZ?aXplzn!?1^p;=4F|Y-3TO7kUp1~LaD{zE8_?9zI z{xSRfi((D2LPAH&z3_r~MtVnr*7>vI0wP}nxtS3{bd0B*Au=_VdmOW3&_+5)Z+SKpQPMCX zAGfO!(jvqWY2t~LQ{s!$?VLflzUqw8UYyb1t||YMda9kJMzpb%@K$#9j zVH()xg5r`m=JIjA-QMH!F?mnKDi@@uBphgF=l6wp1!i#`(mQAOHMW=?buDgZ1B>0= z(4u$Nx0s!cq?0speu>}H)Q>Sc8r#W@wVh$mU*h++)Vr<3DCD17`nBKN-}>Rb(_syb zh}zD)P3`oyCem7(gxF+pj5&5Ku_>8QSGPd?$#f*cSzolrj@*Y$I45reyP&y{&mk8CqcFz3E7Dc)))FuZdd&;3KQCWO zM|(?s=Ew_i4_yZDO27{=L^stD!zpMh_+A4)N#7rO+er0i`?7C0&kcE78zA3nzoFlHjtBjt*LPn!qjXWPee@ofrT6#h z*Dp@#J5=8u^sRkAaPeLZKU>ngXh)w@HvoSckl(m^KMjqK@`modq1W=_yP zE#tJWiuP&A4)qzudy$tuz&YgF<-QvCgLvcz-5aWLLv$_ArnrRKll$^t-~-J{R;{U6 zf$LjY)VgZz&r=UmI0R3J&VyVEZ1J#eCc}%JZQkbt?~4OM5$AwXV`H z=#Ng0ggO*zOQ-Qu4+=y9N+?2B;*m5mLR<#Sl3zO33LbI7VCQcx_#%0 z)^OJIWa$P;T5}b-`D=1oTnG6eI!Y&aS&hh-@SEN&n}5wbU*vtv!Uk~JNg*j z%ey3oQ3Ss?FY$G|skn7X8iiN^2Jm^s2I;Kf@lQJs1mC!+cW>!C&OzcMAFFpV33zHe^$?=FT_46HhJ35uf;r}abg5QY~kFX_xZh9XP@!=S+O0Ydpzxt z6EFVIdGJoAeiP@{VxClfMogi&dPZx#xFR)53~{Et^o%DgQ^Ao)JN>wFI${O|JVB(0 zEr=^(4X%^L7pbS)+O;T+)%a`Tk;^Aq%1a^+;kmfMIY#UOi=02uNKDb#5)U@A3;P>b z!rppX!|RF>>RZy`CYF4pxgV2`Hg}FmIiCM5@k{dYmUiig7~*hKyKu0vo!{TYE*xko z&7+}Mp}yZs5LfVx#6!*f`l6VFcNiDDtB#%9+sGq+cLV2=3;V?)%ofW^FS1#$i{4wYEDQ6@t2BwMH z+1TQCiAAKLpryp_ZtnMBoA3=a?8Jszc4AXqiwbMz%mTN>NMpgj8t59FS5wXgO{7Ju zR?Z>t3i+YHw}P%hEi+mSfezBFwfeA0dynhFM%nz=sOqx5{ zYl6rJ?L55KPR2&rs?8g0&(TA61&+i&Vs|I<0k%Q0x#?d7b*d zZL&j$rg|MWz4=#eSZs?|FVHs^T4a2LoliMuk#Q$&_mN$;apwjLk2-1#m(TH@d(?%~ z*Y2~gJ`|gMq33ID#=PMG;O7~*bFJ-S~rL9$7WUagttJO6{*@^0VS=RZoz=|GvWh z^Z%%R_typP8=&pG;Rh-c{a<^8_Y+Csc&` zGejug9;MuVj6991{iKgYdP1ldhS!nmotxBjC4wxDOy zJATQgpJ^z6!tq|_m+t4F&K92rIT+^RcjPE1;q$5onfC?JSoea+t3lp|8eD&_T9Qzm zN~mt+&$*6!%C9^~|IqHCZJ>|j>jh{O{EbgOfpwkronZYY&B3;#JkcyrLXUXU!R6n){mfj`)N8i|ZBAH||SwLF<5n{J!Sqo4FS|i9=qu2UpQO zI{%4@Uemm9c=&xW1e^p*@O$76)_&G<)^=C`O(RqHa?VTB&~>`*r^i0!Y=IV$tNV-# z*7t02#*OnYh>ye`VxAnm&lrMp?%#sL^gVP8z8A1Xh%cVf*yl7>-_B$!wD7nZ(MtE)|C?aW z^i$GOH1DOujVyjwO*^x#s`#Of_@bd*7Ox~8Y~XR}P-DAvP}fJA_z{*NxSz16zMU6$ zB#B8b?uQY?5(>sMhUf9SYHLgbXQJR3x1+YjY_DmjH&?T$t<^0ytd_+oqIDj#wU!6x zr#3!f$5vOAPEySo1&)c{Ue~!KVXqiT5x=9po!(T#A~oj3x+)&wYpQ7O>K3(yxoTVN zwmKH2h}=}m!q+{jF*Ph=Qyte|;FD8Z>WNRpFWc)o%S4kC+FaMi@Qj=cnn%-CEuB%y z$aexi)T~|G^FX!g)N$P;=(U2rLZ7&RZ(x)<>h%VjJSq=tY4Hbr;_B(Tg`Pd%>1Fjc z{XjiWKlEG>TodZk-_SK2_ylGl$AfMHt8fi3wUQ=-HbXBtJS|P-b7|1Li8BiQRnSzP zRK5le3S9Ea+pns2Se{yGAF#@^`C14yJmhc4`?OV!GFk}i(WGSqdtQw4%nRxhrz5@N zU(y~tojP}PE@|4bafn^?yxmjUC;8cS9G84Zk<~+Az2ION{498C8B3qI{>s0wm+{Bl)elY_GGJIg_txT18KnNPja7e@k8SwqUbc9}SZN7AsGhmEw1z>>D)W|3QxE;& z>Y*}9d7TN;OUB#CDWh!Qs6jSpwDt@7@jL6OdY&(om*Tw7;BWlMIb(VaP<_z&;f8*) zb?+|Qcl?NL*s;y_haa^ACyt3xR@nTNi*4Pu_1dF(yncsr`wueI+f{q!{M#-0OxRcO zo_w=+lxMlGe2H>B|NPbWMP_fnd-qb+Ge5!m)!xiIB`x8Y-MO(}z4iBq6L#D1k@Wt3 z!`M@C;`A|MyN_MN*>Nz;)@)s^zA#h79cwM&>P3sa7$=rG;r^Q+Mh&!O87JiCx|RQvCok;V~b>@S#iT{XzRol*Yig7lR%<#KWq%1Qm> zu%#wVv&@unmUU&MrClEEUXa^46I2^JN&C%Cl*TdMZe&fe-1N}#o@#cfsr5Z^e_i2q zw}1a_X^1iO9(&%hmmEP2jECxD9^44+gUg)wP12IS*SEj3oNMZpAVDUTen1niL^ zjf8t}Laun>y50%K-w=o7oD(CR6$_p1;B(!$C^pfUJk6CSK4G3*&69=J0+&b^$vh*r z5KmkYCnO(lY^f((Do^s5c;yMpiIYCVSbgtdAh6F z!+U)1;(_|kD3_0jS@i9IOVD609%yJON983Ehg?3Q-*!mjrH8;Oi3iX*8j2%A`V3kP z=jV3Uu?x~`F78JwflWX<9 zig~21h)d3hJx+^3A~!s05$mhjk>%y>*vg7_e3h7Htr%sa?ynQ$tgPVoxPM|zWjnsQ zvhG!}!z(M>!Q~b0=&GuActsW4v#_ikSgJAW#YUTJhqM*3%+WQE+Of6OomoPD*HFHO zd<=OP_yH!tzrr3s_G@`;5#A5gMI?9lv56;R0ZwZgI`58%uhb|tm`Qs zckAlR!q`B^;k)FE$os%3@Ch0UIt_joYM@)RdCb4jNckRov-F|u^4Z7kr6mu<-azok zhh5b_wU_#meDSe+ROrcue-@6xivpt%&7{AOw_$JOrmY)jzvjl){+Y)-+I47UZJ%l> z?ML-NPq$G%tCqFz(9RhJy`^Q_roPWG90RMsJ8e{-413_Q{owQWy{`&&Htg$6oelLi z&xn6sezT){Z_#t`;1cAF7)Krmk1KV`@2kHW8VuJTc75M{w{Xl$Z@l2z3-i%;zt4c~ zUgv{{wrB6RZN%uFHf`oWTexhr{W!LljhQmQ<}I75e9bWRPZ^}+NO@j{$PY8z*<;Y? zA+D_q8K*s!r;V{6b${-PdG1qzQ$|c4>4D#N*3!AsBG%j9qetvO_;K5^dzVGT#@O*Q zr)}=iCAMbMMmrX9!Y-vG+Kt;;Vw9icJ^9W4>mPrW&*N|M&Hg4f`J47j{;RwxfA{|O zX6kuw|0$ox-?i7^FY<@nP%Tfgde@%SezlS6ogZck7WTD{9UrxKK6zdJZaRCNHTy#k zQJ#rjyXa3pNHZEWWrVHXvdR{(TjIGcyg750&6E$Pk32)qTNl-4Pm|^|an@MRr7f2} z6Ls#8osL8g7fSH`bMrDMT6XGC%e^|t za<7HrX6BF5Hb&UZtf6*2eXzJ?gx$&=F5P8}j-%~n&L}a=NI!B9zbbkM{W_?Zy^|#$ zYkqkBte#O{OTOlIroNRrK>L@dFNg9ux3h*wgBYT{QNFRXi~9Rs`^vKa8u=C9Z#J9W zqRQnc|MJ`2(ducceP77K+{pKg>IiqhBJ9tC?t!Nxv`32eb`xLRP%m=d_e7jQ{|#~= z@J43xXO?kU`?4qpLu4d=?E9;wCH%!ww6AhvqYF9&jy*R%vEhDJ?c#!t7=Qi$0lOV4_{VJY}d*~eE z268Rl$5h-wU$LLFRF9jke(XA@c7>zYwP-9pP-0NZLTuthG(lq2j5!aw^{FM5RvkHvzbK1MkEO*2&umgd10)KFPkS5(jy2=ePN}xe- zM3W$3myl*5FR1u}fJN?KebeW7a82LRJn#*=2ds1_S)n=aUwz$=_w-G;B*+2XyYiae zc}>4XdXC0AABk1q6~0B>R<4L^I0dc>m;v6nDZK-hK+DL97du2h?vWcGVvekM-4|n^ zVZaYrF^p+1|3w=gcU?RIZ(NIbOnI2rmK80|h-v%(MXuhvv^ojK341`zPU#rs9Prp<{UHoNFTGXajLXL%X5~ zF@%`mSYt~*s_|lsD`FDZ(?CLL|4{EPBCVh_dzoC2R*L4y%@z#btD zrIE7;^DrO$L69FpBe@`!fJ?~f5af4~jhF_zxoZ2iMXN#WiXeeHiH)X5z7-=V`mH&xGSJ63fN_xvFX)WR66nN(3x>^rC ztMC9E0W+}YAhkb%-xgo3*8&v^?HR;<7z18ur<~5y@}abl{(;{WPN@xtXg*lwtqM`#6JU#gQ_xZ9>Dp2IF25qCcJ38fO8XN&-rRFQue|Z1_m6AVwu$eR19#v@!J88B2YV}b`}#9!DKAN1 zYU+6>ScQIZ9G_J`H8=*%g}|>ueusPz^~LN1-BG^{mf;#5hT5S}Z?{g~zm}f0{Rc`{ z8TF<8II@TOzzwuf6Z>d?!0&AGYXO zvkRA#?0@Y4`aXeLz0tRK{FGt-?^?WimQ9{D+WY^m+_cmth(pMgeesR@0xRe9)%V@K zKh5|Vqot=zGWcZs{>`>+&pNTzYI%{rv+X-aNKaWUwpgH;rJTtevBg}wo;h27kePNp zYmvOJt5p{>LE4FWh2<)rB5eYnhUZA6PtcFU`*~%HFLJaOik{uQsWG?4NFx%rsE63C z?4f?dA3{AW>4J4=pqZ@+stMf}ls}uX%m!XVumI^=5zHrv*&|EdxCwPisFlqBN)Dqg#y=MNYs{(v)n&-=>$ zcC)t!=gb$(`m?KoKcw0;WJHQ7)P6V!i3Any@1sz0;AwA=^^cJ**8{&i;(lyXGZgEup<94E+>m3+_ zBlE%*Av%HT&vG3#lj85J%{kd`Nj29TWH0k)Ba26#MjDz9+^(FCoX1u(yt#-(A}-?j^5M z+po{=*7!ZlhnM7kSp!~4Qr?F=4gr&dbd^S-91;AY+z+`RScUQM3Azdl5*sF+L~L?y zM=gU>f{58t%_7!Tu!s$nd`yh^B5HFD<#npsnN8Kj5jE|sxC9RiJVIWFoDWCO@hG-!2X68HD&iFHt0K*XJPj-XYoM(V z?$1>Y2+v9dd10F`u4g(KhN8O-GU`RmnI zKQr~bfA=l#qr$$*Xe;I$(HiR zG}8QSyq_!j2V6q^F+EMtM|$?{?i_;FLT&W3okDvB;cE$UMS*TYexp~v9$x!H4G{fd zU(>$EJcniQwtOoO>{}nb?tT?|(vF=pzy=Qa+=h+((x%E=J8u#C$yf5>eq;+*&sMHu zi7j5g*ygUB>wVtFD-VQbGGX>)*GneOo@!I(OttaTCThK(;`Ke$0ev@op!_S}NR#=| zYky#sJ%(*NKjXe2iMJtLw#4LXf?OyC`Vxk!s zCK$t!fLH$Y-|UC{A9}8R1^@Wj`t*6%p6}Sqo_nFG@^Wph^E)s2J_F;Y4Hp~DlP_hO z_2{j7@Sa_)|1kM%#3#e`|Iu&gSMv6JB!5nCTe5DR^p@qeUOAsNTUYpXPwh!Cd(m(^ zacYTr`>&PXME+LgZph`(kDVUuLH~F9xBq@`iPynA$P4XFOW%&)?uB}z<2C(Vy*s?F zR(Tfm4EA;TMfJE|V~ZCgPqnwIzlBS@pO~}{Sj6)#;t$^kF8`WZS|X^KMFXMl82!Ge zPk~K-_4p`Z^3 zK8{d7jc%SZVXc3V8OnK(BO!5MIl|dM_=5oXcHtLQrFZp27Vruq#Ub3?hHJMy#Kz0}d}DL2Fzp7CC`*6duZ|2K4g=hAZ? zw=RlFbdMwNqHEmLck(oUmN>AMH)g{Wb+VLoNF(Rk>5k((xY4Z z{mWXT(I0YR+Bk2ZePoJ9GR`ztG?RYO+^)yAvaHk1E%UTkBchRIMK-lG@ka9DT9y`G z-%^j)``_cqhL(A%nR5ml0@L_>Vvei%W3L>AE2?XauNw;S0{oIB?tnQG57cy~fFmv+ ztYsJWR8uZPY;nB)L)L*c&hM+{^Cax9qP4fO_~21X(z{n+5V26|kvf*9Ikwzg7x&bZZlUwN=oi)PqWC3t`y*n8DjFl+fn8vg{2Wb!G!wKE zG!t0l&&PmI;&#^XJkP03RSX`9-(JIy=qRz9t3EuBT3^LH#3nJ)Le9ve5-lG~w8liN zt!Ss$SG6eRb?~u}6M|#N>5%UUUtLKWNHxWyI#-ToMP)m&T3X1eN9@Ql<#lu(sXWoq z6&38@(z1HzQH`ysu~o$-l`MQ^RXeu4iXB~6#ZImk=SV{d&Lh@UcUIZIsGMsT=ojow zNM9A0!|Q}q=R*z%W`IlR3rAikV2EI!AG8?ioXOkZwXIS^bLjZ&OD}rf=he5~)V_I- zTX~IvVVH}4EO=>o51oZMiJ&J7{KC9=R;c@-*Bd=lp6jIj0o4PJ{Lf=giYHX}gO~Qv zdey!Dm^vL;1^)`Y+(OqcIj=m{zJ;?28VY;!z$x@|eMf6QdjZo6-WjBQGkZe(fwuC@ z3mxoD=_9bpvoD4`F0cwbLk{R=@yDB8l$VnBfrbKaz!Du^YVX`aPZRPsXeH#GV5Y8L zeWpII-+CPoJ>lrD0+)O<@N4&ckk_C_dGJW~3hJTy=I?x;XZqgu?5jPOhxGBj`{Sk! zv$=~W*wB$*S)YC%*tki3ZT;q1Vvk{Zzpp%~b8XqW#Wru%Je##_mh_PY?p47ri&u92 zj?K1w<7)Stz$pt?EtmgP9I$$+O`bQ+hKwCh`;6E51s|%xc*)7v)3$t@~J#WFE+Oh z�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 literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC/tests/testyuv/testyuv.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testyuv/testyuv.vcxproj new file mode 100644 index 0000000..81df117 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testyuv/testyuv.vcxproj @@ -0,0 +1,229 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {40FB7794-D3C3-4CFE-BCF4-A80C97635682} + testyuv + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testyuv.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testyuv.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testyuv.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testyuv.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/WhatsNew.txt b/extern/SDL3-3.1.0/WhatsNew.txt new file mode 100644 index 0000000..6896295 --- /dev/null +++ b/extern/SDL3-3.1.0/WhatsNew.txt @@ -0,0 +1,33 @@ + +This is a list of major changes in SDL's version history. + +--------------------------------------------------------------------------- +3.1.0: +--------------------------------------------------------------------------- + +This is a preview release of the new SDL 3.0 API. + +The ABI hasn't been locked down yet, but it's fairly stable and feedback is welcome! + +Check out [migration guide](docs/README-migration.md) for details on API changes since SDL 2.0, and tips on transitioning your code from SDL2 code to SDL3. + +There have been too many changes to list them all, but here are some of the highlights: +* The API has been significantly reworked to be easier to use and more consistent +* The 2D rendering API now has support for more advanced colorspaces and HDR rendering +* The 2D rendering API now has a Vulkan backend +* An example of hardware accelerated video playback using ffmpeg has been added in test/testffmpeg.c +* The shaped window API has been replaced with transparent windows +* Time and date functions have been added in SDL_time.h +* Support for webcam video capture has been added in SDL_camera.h +* Support for handling pens and tablets has been added in SDL_pen.h +* Support for file open and save dialogs has been added in SDL_dialog.h +* Cross-platform functions for working with files and directories are available in SDL_filesystem.h +* A cross-platform abstraction for working with user and game data has been added in SDL_storage.h +* Handling of main() has been moved to a header library and an optional callback-based program flow is available +* Support for simple object properties has been added in SDL_properties.h. These properties are available on many SDL objects, and can be used for more advanced functionality. + +Please let us know about issues and feedback at: https://github.com/libsdl-org/SDL/issues + +The development team is focused on code, moving towards the final release, and we would love volunteers to help improve the documentation. Please send e-mail to slouken@libsdl.org if you'd like to help out! + +Finally, a giant thank you to all the people who have contributed code and feedback to the SDL 3.0 improvements! diff --git a/extern/SDL3-3.1.0/Xcode/SDL/Info-Framework.plist b/extern/SDL3-3.1.0/Xcode/SDL/Info-Framework.plist new file mode 100644 index 0000000..e3abd18 --- /dev/null +++ b/extern/SDL3-3.1.0/Xcode/SDL/Info-Framework.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleGetInfoString + http://www.libsdl.org + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Simple DirectMedia Layer + CFBundlePackageType + FMWK + CFBundleShortVersionString + 3.1.0 + CFBundleSignature + SDLX + CFBundleVersion + 3.1.0 + + diff --git a/extern/SDL3-3.1.0/Xcode/SDL/SDL.xcodeproj/project.pbxproj b/extern/SDL3-3.1.0/Xcode/SDL/SDL.xcodeproj/project.pbxproj new file mode 100644 index 0000000..37f7bd3 --- /dev/null +++ b/extern/SDL3-3.1.0/Xcode/SDL/SDL.xcodeproj/project.pbxproj @@ -0,0 +1,3075 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXAggregateTarget section */ + F3676F582A7885080091160D /* SDL3.dmg */ = { + isa = PBXAggregateTarget; + buildConfigurationList = F3676F592A7885080091160D /* Build configuration list for PBXAggregateTarget "SDL3.dmg" */; + buildPhases = ( + F3676F5E2A78852D0091160D /* ShellScript */, + ); + dependencies = ( + F3676F5D2A7885130091160D /* PBXTargetDependency */, + ); + name = SDL3.dmg; + productName = "Create DMG"; + }; + F3B38CEC296F63B6005DA6D3 /* SDL3.xcframework */ = { + isa = PBXAggregateTarget; + buildConfigurationList = F3B38CED296F63B6005DA6D3 /* Build configuration list for PBXAggregateTarget "SDL3.xcframework" */; + buildPhases = ( + F3B38CF0296F63D1005DA6D3 /* ShellScript */, + ); + dependencies = ( + ); + name = SDL3.xcframework; + productName = xcFramework; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 00001B2471F503DD3C1B0000 /* SDL_camera_dummy.c in Sources */ = {isa = PBXBuildFile; fileRef = 00005BD74B46358B33A20000 /* SDL_camera_dummy.c */; }; + 000028F8113A53F4333E0000 /* SDL_main_callbacks.c in Sources */ = {isa = PBXBuildFile; fileRef = 00009366FB9FBBD54C390000 /* SDL_main_callbacks.c */; }; + 00002B20A48E055EB0350000 /* SDL_camera_coremedia.m in Sources */ = {isa = PBXBuildFile; fileRef = 00008B79BF08CBCEAC460000 /* SDL_camera_coremedia.m */; }; + 000040E76FDC6AE48CBF0000 /* SDL_hashtable.c in Sources */ = {isa = PBXBuildFile; fileRef = 000078E1881E857EBB6C0000 /* SDL_hashtable.c */; }; + 0000481D255AF155B42C0000 /* SDL_sysfsops.c in Sources */ = {isa = PBXBuildFile; fileRef = 0000F4E6AA3EF99DA3C80000 /* SDL_sysfsops.c */; }; + 0000494CC93F3E624D3C0000 /* SDL_systime.c in Sources */ = {isa = PBXBuildFile; fileRef = 00003F472C51CE7DF6160000 /* SDL_systime.c */; }; + 000080903BC03006F24E0000 /* SDL_filesystem.c in Sources */ = {isa = PBXBuildFile; fileRef = 00002B010DB1A70931C20000 /* SDL_filesystem.c */; }; + 000095FA1BDE436CF3AF0000 /* SDL_time.c in Sources */ = {isa = PBXBuildFile; fileRef = 0000641A9BAC11AB3FBE0000 /* SDL_time.c */; }; + 000098E9DAA43EF6FF7F0000 /* SDL_camera.c in Sources */ = {isa = PBXBuildFile; fileRef = 0000035D38C3899C7EFD0000 /* SDL_camera.c */; }; + 0000A4DA2F45A31DC4F00000 /* SDL_sysmain_callbacks.m in Sources */ = {isa = PBXBuildFile; fileRef = 0000BB287BA0A0178C1A0000 /* SDL_sysmain_callbacks.m */; platformFilters = (ios, maccatalyst, macos, tvos, watchos, ); }; + 007317A40858DECD00B2BC32 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179D0858DECD00B2BC32 /* Cocoa.framework */; platformFilters = (macos, ); }; + 007317A60858DECD00B2BC32 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0073179F0858DECD00B2BC32 /* IOKit.framework */; platformFilters = (ios, maccatalyst, macos, ); }; + 00CFA89D106B4BA100758660 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00CFA89C106B4BA100758660 /* ForceFeedback.framework */; platformFilters = (macos, ); }; + 00D0D08410675DD9004B05EF /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00D0D08310675DD9004B05EF /* CoreFoundation.framework */; platformFilters = (ios, maccatalyst, macos, tvos, watchos, ); }; + 00D0D0D810675E46004B05EF /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 007317C10858E15000B2BC32 /* Carbon.framework */; platformFilters = (macos, ); }; + 557D0CFA254586CA003913E3 /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F37DC5F225350EBC0002E6F7 /* CoreHaptics.framework */; platformFilters = (ios, maccatalyst, macos, tvos, ); }; + 557D0CFB254586D7003913E3 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A75FDABD23E28B6200529352 /* GameController.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 5616CA4C252BB2A6005D5928 /* SDL_url.c in Sources */ = {isa = PBXBuildFile; fileRef = 5616CA49252BB2A5005D5928 /* SDL_url.c */; }; + 5616CA4D252BB2A6005D5928 /* SDL_sysurl.h in Headers */ = {isa = PBXBuildFile; fileRef = 5616CA4A252BB2A6005D5928 /* SDL_sysurl.h */; }; + 5616CA4E252BB2A6005D5928 /* SDL_sysurl.m in Sources */ = {isa = PBXBuildFile; fileRef = 5616CA4B252BB2A6005D5928 /* SDL_sysurl.m */; }; + 564624361FF821C20074AC87 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 564624351FF821B80074AC87 /* QuartzCore.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 564624381FF821DA0074AC87 /* Metal.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 564624371FF821CB0074AC87 /* Metal.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 566E26CF246274CC00718109 /* SDL_syslocale.m in Sources */ = {isa = PBXBuildFile; fileRef = 566E26CC246274CB00718109 /* SDL_syslocale.m */; }; + 566E26D8246274CC00718109 /* SDL_locale.c in Sources */ = {isa = PBXBuildFile; fileRef = 566E26CD246274CB00718109 /* SDL_locale.c */; }; + 566E26E1246274CC00718109 /* SDL_syslocale.h in Headers */ = {isa = PBXBuildFile; fileRef = 566E26CE246274CC00718109 /* SDL_syslocale.h */; }; + 56A2373329F9C113003CCA5F /* SDL_sysrwlock.c in Sources */ = {isa = PBXBuildFile; fileRef = 56A2373229F9C113003CCA5F /* SDL_sysrwlock.c */; }; + 63134A222A7902CF0021E9A6 /* SDL_pen.h in Headers */ = {isa = PBXBuildFile; fileRef = 63134A212A7902CF0021E9A6 /* SDL_pen.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 63134A252A7902FD0021E9A6 /* SDL_pen_c.h in Headers */ = {isa = PBXBuildFile; fileRef = 63134A232A7902FD0021E9A6 /* SDL_pen_c.h */; }; + 63134A262A7902FD0021E9A6 /* SDL_pen.c in Sources */ = {isa = PBXBuildFile; fileRef = 63134A242A7902FD0021E9A6 /* SDL_pen.c */; }; + 75E0915A241EA924004729E1 /* SDL_virtualjoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = 75E09158241EA924004729E1 /* SDL_virtualjoystick.c */; }; + 75E09163241EA924004729E1 /* SDL_virtualjoystick_c.h in Headers */ = {isa = PBXBuildFile; fileRef = 75E09159241EA924004729E1 /* SDL_virtualjoystick_c.h */; }; + 9846B07C287A9020000C35C8 /* SDL_hidapi_shield.c in Sources */ = {isa = PBXBuildFile; fileRef = 9846B07B287A9020000C35C8 /* SDL_hidapi_shield.c */; }; + A1626A3E2617006A003F1973 /* SDL_triangle.c in Sources */ = {isa = PBXBuildFile; fileRef = A1626A3D2617006A003F1973 /* SDL_triangle.c */; }; + A1626A522617008D003F1973 /* SDL_triangle.h in Headers */ = {isa = PBXBuildFile; fileRef = A1626A512617008C003F1973 /* SDL_triangle.h */; }; + A1BB8B6327F6CF330057CFA8 /* SDL_list.c in Sources */ = {isa = PBXBuildFile; fileRef = A1BB8B6127F6CF320057CFA8 /* SDL_list.c */; }; + A1BB8B6C27F6CF330057CFA8 /* SDL_list.h in Headers */ = {isa = PBXBuildFile; fileRef = A1BB8B6227F6CF330057CFA8 /* SDL_list.h */; }; + A7381E961D8B69D600B177DD /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7381E951D8B69D600B177DD /* CoreAudio.framework */; platformFilters = (ios, maccatalyst, macos, tvos, watchos, ); }; + A7381E971D8B6A0300B177DD /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7381E931D8B69C300B177DD /* AudioToolbox.framework */; platformFilters = (ios, maccatalyst, macos, tvos, ); }; + A75FDB5823E39E6100529352 /* hidapi.h in Headers */ = {isa = PBXBuildFile; fileRef = A75FDB5723E39E6100529352 /* hidapi.h */; }; + A75FDBB723E4CBC700529352 /* License.txt in Resources */ = {isa = PBXBuildFile; fileRef = 00794D3F09D0C461003FC8A1 /* License.txt */; }; + A75FDBB823E4CBC700529352 /* ReadMe.txt in Resources */ = {isa = PBXBuildFile; fileRef = F59C710300D5CB5801000001 /* ReadMe.txt */; }; + A75FDBC523EA380300529352 /* SDL_hidapi_rumble.h in Headers */ = {isa = PBXBuildFile; fileRef = A75FDBC323EA380300529352 /* SDL_hidapi_rumble.h */; }; + A75FDBCE23EA380300529352 /* SDL_hidapi_rumble.c in Sources */ = {isa = PBXBuildFile; fileRef = A75FDBC423EA380300529352 /* SDL_hidapi_rumble.c */; }; + A79745702B2E9D39009D224A /* SDL_hidapi_steamdeck.c in Sources */ = {isa = PBXBuildFile; fileRef = A797456F2B2E9D39009D224A /* SDL_hidapi_steamdeck.c */; }; + A7D8A94B23E2514000DCD162 /* SDL.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A57123E2513D00DCD162 /* SDL.c */; }; + A7D8A95123E2514000DCD162 /* SDL_spinlock.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A57323E2513D00DCD162 /* SDL_spinlock.c */; }; + A7D8A95723E2514000DCD162 /* SDL_atomic.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A57423E2513D00DCD162 /* SDL_atomic.c */; }; + A7D8A95D23E2514000DCD162 /* SDL_error_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A57523E2513D00DCD162 /* SDL_error_c.h */; }; + A7D8A96323E2514000DCD162 /* SDL_dummysensor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A57823E2513D00DCD162 /* SDL_dummysensor.h */; }; + A7D8A96923E2514000DCD162 /* SDL_dummysensor.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A57923E2513D00DCD162 /* SDL_dummysensor.c */; }; + A7D8A96F23E2514000DCD162 /* SDL_coremotionsensor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A57B23E2513D00DCD162 /* SDL_coremotionsensor.h */; }; + A7D8A97523E2514000DCD162 /* SDL_coremotionsensor.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A57C23E2513D00DCD162 /* SDL_coremotionsensor.m */; }; + A7D8A97B23E2514000DCD162 /* SDL_syssensor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A57D23E2513D00DCD162 /* SDL_syssensor.h */; }; + A7D8A98D23E2514000DCD162 /* SDL_sensor_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A58123E2513D00DCD162 /* SDL_sensor_c.h */; }; + A7D8A99323E2514000DCD162 /* SDL_sensor.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A58223E2513D00DCD162 /* SDL_sensor.c */; }; + A7D8A99923E2514000DCD162 /* SDL_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A58323E2513D00DCD162 /* SDL_internal.h */; }; + A7D8AA6523E2514000DCD162 /* SDL_hints.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A5AB23E2513D00DCD162 /* SDL_hints.c */; }; + A7D8AAB023E2514100DCD162 /* SDL_syshaptic.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A5C423E2513D00DCD162 /* SDL_syshaptic.c */; }; + A7D8AAB623E2514100DCD162 /* SDL_haptic.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A5C523E2513D00DCD162 /* SDL_haptic.c */; }; + A7D8AABC23E2514100DCD162 /* SDL_haptic_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A5C623E2513D00DCD162 /* SDL_haptic_c.h */; }; + A7D8AAD423E2514100DCD162 /* SDL_syshaptic.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A5CC23E2513D00DCD162 /* SDL_syshaptic.h */; }; + A7D8AADA23E2514100DCD162 /* SDL_syshaptic.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A5CE23E2513D00DCD162 /* SDL_syshaptic.c */; }; + A7D8AAE023E2514100DCD162 /* SDL_syshaptic_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A5CF23E2513D00DCD162 /* SDL_syshaptic_c.h */; }; + A7D8AB0A23E2514100DCD162 /* SDL_dynapi.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A5D823E2513D00DCD162 /* SDL_dynapi.h */; }; + A7D8AB1023E2514100DCD162 /* SDL_dynapi_overrides.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A5D923E2513D00DCD162 /* SDL_dynapi_overrides.h */; }; + A7D8AB1623E2514100DCD162 /* SDL_dynapi.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A5DA23E2513D00DCD162 /* SDL_dynapi.c */; }; + A7D8AB1C23E2514100DCD162 /* SDL_dynapi_procs.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A5DB23E2513D00DCD162 /* SDL_dynapi_procs.h */; }; + A7D8AB2523E2514100DCD162 /* SDL_log.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A5DD23E2513D00DCD162 /* SDL_log.c */; }; + A7D8AB2B23E2514100DCD162 /* SDL_timer.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A5DF23E2513D00DCD162 /* SDL_timer.c */; }; + A7D8AB3123E2514100DCD162 /* SDL_timer_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A5E023E2513D00DCD162 /* SDL_timer_c.h */; }; + A7D8AB4923E2514100DCD162 /* SDL_systimer.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A5E823E2513D00DCD162 /* SDL_systimer.c */; }; + A7D8AB5B23E2514100DCD162 /* SDL_offscreenevents_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A5EE23E2513D00DCD162 /* SDL_offscreenevents_c.h */; }; + A7D8AB6123E2514100DCD162 /* SDL_offscreenwindow.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A5EF23E2513D00DCD162 /* SDL_offscreenwindow.c */; }; + A7D8AB6723E2514100DCD162 /* SDL_offscreenevents.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A5F023E2513D00DCD162 /* SDL_offscreenevents.c */; }; + A7D8AB6D23E2514100DCD162 /* SDL_offscreenvideo.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A5F123E2513D00DCD162 /* SDL_offscreenvideo.h */; }; + A7D8AB7323E2514100DCD162 /* SDL_offscreenframebuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A5F223E2513D00DCD162 /* SDL_offscreenframebuffer.c */; }; + A7D8AB7F23E2514100DCD162 /* SDL_offscreenframebuffer_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A5F423E2513D00DCD162 /* SDL_offscreenframebuffer_c.h */; }; + A7D8AB8523E2514100DCD162 /* SDL_offscreenwindow.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A5F523E2513D00DCD162 /* SDL_offscreenwindow.h */; }; + A7D8AB8B23E2514100DCD162 /* SDL_offscreenvideo.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A5F623E2513D00DCD162 /* SDL_offscreenvideo.c */; }; + A7D8ABCD23E2514100DCD162 /* SDL_blit_slow.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A60223E2513D00DCD162 /* SDL_blit_slow.c */; }; + A7D8ABD323E2514100DCD162 /* SDL_stretch.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A60323E2513D00DCD162 /* SDL_stretch.c */; }; + A7D8ABD923E2514100DCD162 /* SDL_egl_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A60423E2513D00DCD162 /* SDL_egl_c.h */; }; + A7D8ABDF23E2514100DCD162 /* SDL_nullframebuffer.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A60623E2513D00DCD162 /* SDL_nullframebuffer.c */; }; + A7D8ABE523E2514100DCD162 /* SDL_nullframebuffer_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A60723E2513D00DCD162 /* SDL_nullframebuffer_c.h */; }; + A7D8ABEB23E2514100DCD162 /* SDL_nullvideo.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A60823E2513D00DCD162 /* SDL_nullvideo.c */; }; + A7D8ABF123E2514100DCD162 /* SDL_nullevents.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A60923E2513D00DCD162 /* SDL_nullevents.c */; }; + A7D8ABF723E2514100DCD162 /* SDL_nullvideo.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A60A23E2513D00DCD162 /* SDL_nullvideo.h */; }; + A7D8ABFD23E2514100DCD162 /* SDL_nullevents_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A60B23E2513D00DCD162 /* SDL_nullevents_c.h */; }; + A7D8AC0323E2514100DCD162 /* SDL_rect_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A60C23E2513D00DCD162 /* SDL_rect_c.h */; }; + A7D8AC0F23E2514100DCD162 /* SDL_video.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A60E23E2513D00DCD162 /* SDL_video.c */; }; + A7D8AC2D23E2514100DCD162 /* SDL_surface.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A61423E2513D00DCD162 /* SDL_surface.c */; }; + A7D8AC3323E2514100DCD162 /* SDL_RLEaccel.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A61523E2513D00DCD162 /* SDL_RLEaccel.c */; }; + A7D8AC3923E2514100DCD162 /* SDL_blit_copy.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A61623E2513D00DCD162 /* SDL_blit_copy.c */; }; + A7D8AC3F23E2514100DCD162 /* SDL_sysvideo.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A61723E2513D00DCD162 /* SDL_sysvideo.h */; }; + A7D8ACE723E2514100DCD162 /* SDL_rect.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A63423E2513D00DCD162 /* SDL_rect.c */; }; + A7D8AD1D23E2514100DCD162 /* SDL_vulkan_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A63E23E2513D00DCD162 /* SDL_vulkan_internal.h */; }; + A7D8AD2323E2514100DCD162 /* SDL_blit_auto.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A63F23E2513D00DCD162 /* SDL_blit_auto.c */; }; + A7D8AD2923E2514100DCD162 /* SDL_vulkan_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A64023E2513D00DCD162 /* SDL_vulkan_utils.c */; }; + A7D8AD3223E2514100DCD162 /* SDL_blit_N.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A64223E2513D00DCD162 /* SDL_blit_N.c */; }; + A7D8AD6823E2514100DCD162 /* SDL_blit.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A64C23E2513D00DCD162 /* SDL_blit.c */; }; + A7D8AD6E23E2514100DCD162 /* SDL_pixels.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A64D23E2513D00DCD162 /* SDL_pixels.c */; }; + A7D8ADE623E2514100DCD162 /* SDL_blit_0.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A66223E2513E00DCD162 /* SDL_blit_0.c */; }; + A7D8ADEC23E2514100DCD162 /* SDL_blit_slow.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A66323E2513E00DCD162 /* SDL_blit_slow.h */; }; + A7D8ADF223E2514100DCD162 /* SDL_blit_A.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A66423E2513E00DCD162 /* SDL_blit_A.c */; }; + A7D8AE7623E2514100DCD162 /* SDL_clipboard.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A67B23E2513E00DCD162 /* SDL_clipboard.c */; }; + A7D8AE7C23E2514100DCD162 /* SDL_yuv.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A67C23E2513E00DCD162 /* SDL_yuv.c */; }; + A7D8AE8823E2514100DCD162 /* SDL_cocoaopengl.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A67F23E2513E00DCD162 /* SDL_cocoaopengl.m */; }; + A7D8AE8E23E2514100DCD162 /* SDL_cocoakeyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A68023E2513E00DCD162 /* SDL_cocoakeyboard.h */; }; + A7D8AE9423E2514100DCD162 /* SDL_cocoamodes.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A68123E2513E00DCD162 /* SDL_cocoamodes.m */; }; + A7D8AE9A23E2514100DCD162 /* SDL_cocoaopengles.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A68223E2513E00DCD162 /* SDL_cocoaopengles.m */; }; + A7D8AEA023E2514100DCD162 /* SDL_cocoavulkan.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A68323E2513E00DCD162 /* SDL_cocoavulkan.m */; }; + A7D8AEA623E2514100DCD162 /* SDL_cocoawindow.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A68423E2513E00DCD162 /* SDL_cocoawindow.m */; }; + A7D8AEAC23E2514100DCD162 /* SDL_cocoavideo.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A68523E2513E00DCD162 /* SDL_cocoavideo.m */; }; + A7D8AEB223E2514100DCD162 /* SDL_cocoametalview.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A68623E2513E00DCD162 /* SDL_cocoametalview.h */; }; + A7D8AEB823E2514100DCD162 /* SDL_cocoamouse.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A68723E2513E00DCD162 /* SDL_cocoamouse.m */; }; + A7D8AEC423E2514100DCD162 /* SDL_cocoaevents.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A68923E2513E00DCD162 /* SDL_cocoaevents.m */; }; + A7D8AECA23E2514100DCD162 /* SDL_cocoaclipboard.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A68A23E2513E00DCD162 /* SDL_cocoaclipboard.h */; }; + A7D8AED023E2514100DCD162 /* SDL_cocoamessagebox.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A68B23E2513E00DCD162 /* SDL_cocoamessagebox.m */; }; + A7D8AED623E2514100DCD162 /* SDL_cocoakeyboard.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A68C23E2513E00DCD162 /* SDL_cocoakeyboard.m */; }; + A7D8AEDC23E2514100DCD162 /* SDL_cocoaopengl.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A68D23E2513E00DCD162 /* SDL_cocoaopengl.h */; }; + A7D8AEE823E2514100DCD162 /* SDL_cocoavulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A68F23E2513E00DCD162 /* SDL_cocoavulkan.h */; }; + A7D8AEEE23E2514100DCD162 /* SDL_cocoaopengles.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A69023E2513E00DCD162 /* SDL_cocoaopengles.h */; }; + A7D8AEF423E2514100DCD162 /* SDL_cocoamodes.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A69123E2513E00DCD162 /* SDL_cocoamodes.h */; }; + A7D8AEFA23E2514100DCD162 /* SDL_cocoawindow.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A69223E2513E00DCD162 /* SDL_cocoawindow.h */; }; + A7D8AF0023E2514100DCD162 /* SDL_cocoavideo.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A69323E2513E00DCD162 /* SDL_cocoavideo.h */; }; + A7D8AF0623E2514100DCD162 /* SDL_cocoamessagebox.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A69423E2513E00DCD162 /* SDL_cocoamessagebox.h */; }; + A7D8AF0C23E2514100DCD162 /* SDL_cocoaclipboard.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A69523E2513E00DCD162 /* SDL_cocoaclipboard.m */; }; + A7D8AF1223E2514100DCD162 /* SDL_cocoaevents.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A69623E2513E00DCD162 /* SDL_cocoaevents.h */; }; + A7D8AF1E23E2514100DCD162 /* SDL_cocoamouse.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A69823E2513E00DCD162 /* SDL_cocoamouse.h */; }; + A7D8AF2423E2514100DCD162 /* SDL_cocoametalview.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A69923E2513E00DCD162 /* SDL_cocoametalview.m */; }; + A7D8AFC023E2514200DCD162 /* SDL_egl.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A6B623E2513E00DCD162 /* SDL_egl.c */; }; + A7D8B14023E2514200DCD162 /* SDL_blit_1.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A6FA23E2513E00DCD162 /* SDL_blit_1.c */; }; + A7D8B22423E2514200DCD162 /* gl2ext.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72323E2513E00DCD162 /* gl2ext.h */; }; + A7D8B22A23E2514200DCD162 /* gl2.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72423E2513E00DCD162 /* gl2.h */; }; + A7D8B23023E2514200DCD162 /* gl2platform.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72523E2513E00DCD162 /* gl2platform.h */; }; + A7D8B23623E2514200DCD162 /* khrplatform.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72723E2513E00DCD162 /* khrplatform.h */; }; + A7D8B23C23E2514200DCD162 /* egl.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72923E2513E00DCD162 /* egl.h */; }; + A7D8B24223E2514200DCD162 /* eglext.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72A23E2513E00DCD162 /* eglext.h */; }; + A7D8B24823E2514200DCD162 /* eglplatform.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72B23E2513E00DCD162 /* eglplatform.h */; }; + A7D8B24E23E2514200DCD162 /* vk_layer.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72D23E2513E00DCD162 /* vk_layer.h */; }; + A7D8B25423E2514200DCD162 /* vk_icd.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72E23E2513E00DCD162 /* vk_icd.h */; }; + A7D8B25A23E2514200DCD162 /* vulkan_vi.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A72F23E2513E00DCD162 /* vulkan_vi.h */; }; + A7D8B26023E2514200DCD162 /* vulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73023E2513E00DCD162 /* vulkan.h */; }; + A7D8B26623E2514200DCD162 /* vk_platform.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73123E2513E00DCD162 /* vk_platform.h */; }; + A7D8B26C23E2514200DCD162 /* vulkan.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73223E2513E00DCD162 /* vulkan.hpp */; }; + A7D8B27223E2514200DCD162 /* vulkan_fuchsia.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73323E2513E00DCD162 /* vulkan_fuchsia.h */; }; + A7D8B27823E2514200DCD162 /* vulkan_wayland.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73423E2513E00DCD162 /* vulkan_wayland.h */; }; + A7D8B27E23E2514200DCD162 /* vulkan_win32.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73523E2513E00DCD162 /* vulkan_win32.h */; }; + A7D8B28423E2514200DCD162 /* vulkan_macos.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73623E2513E00DCD162 /* vulkan_macos.h */; }; + A7D8B28A23E2514200DCD162 /* vulkan_xlib_xrandr.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73723E2513E00DCD162 /* vulkan_xlib_xrandr.h */; }; + A7D8B29023E2514200DCD162 /* vulkan_xcb.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73823E2513E00DCD162 /* vulkan_xcb.h */; }; + A7D8B29623E2514200DCD162 /* vulkan_mir.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73923E2513E00DCD162 /* vulkan_mir.h */; }; + A7D8B29C23E2514200DCD162 /* vulkan_xlib.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */; }; + A7D8B2A223E2514200DCD162 /* vulkan_ios.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73B23E2513E00DCD162 /* vulkan_ios.h */; }; + A7D8B2A823E2514200DCD162 /* vulkan_core.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73C23E2513E00DCD162 /* vulkan_core.h */; }; + A7D8B2AE23E2514200DCD162 /* vk_sdk_platform.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73D23E2513E00DCD162 /* vk_sdk_platform.h */; }; + A7D8B2B423E2514200DCD162 /* vulkan_android.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73E23E2513E00DCD162 /* vulkan_android.h */; }; + A7D8B2BA23E2514200DCD162 /* SDL_blit_auto.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A73F23E2513E00DCD162 /* SDL_blit_auto.h */; }; + A7D8B2C023E2514200DCD162 /* SDL_pixels_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A74023E2513E00DCD162 /* SDL_pixels_c.h */; }; + A7D8B39823E2514200DCD162 /* SDL_blit_copy.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A76623E2513E00DCD162 /* SDL_blit_copy.h */; }; + A7D8B39E23E2514200DCD162 /* SDL_RLEaccel_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A76723E2513E00DCD162 /* SDL_RLEaccel_c.h */; }; + A7D8B3A423E2514200DCD162 /* SDL_fillrect.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A76823E2513E00DCD162 /* SDL_fillrect.c */; }; + A7D8B3B023E2514200DCD162 /* SDL_yuv_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A76A23E2513E00DCD162 /* SDL_yuv_c.h */; }; + A7D8B3B623E2514200DCD162 /* SDL_blit.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A76B23E2513E00DCD162 /* SDL_blit.h */; }; + A7D8B3C823E2514200DCD162 /* yuv_rgb_sse_func.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A77023E2513E00DCD162 /* yuv_rgb_sse_func.h */; }; + A7D8B3CE23E2514300DCD162 /* yuv_rgb_std_func.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A77123E2513E00DCD162 /* yuv_rgb_std_func.h */; }; + A7D8B3D423E2514300DCD162 /* yuv_rgb.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A77223E2513E00DCD162 /* yuv_rgb.h */; }; + A7D8B3DA23E2514300DCD162 /* SDL_bmp.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A77323E2513E00DCD162 /* SDL_bmp.c */; }; + A7D8B3E023E2514300DCD162 /* SDL_cpuinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A77523E2513E00DCD162 /* SDL_cpuinfo.c */; }; + A7D8B3E623E2514300DCD162 /* SDL_systhread.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A77723E2513E00DCD162 /* SDL_systhread.h */; }; + A7D8B3EC23E2514300DCD162 /* SDL_thread_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A77823E2513E00DCD162 /* SDL_thread_c.h */; }; + A7D8B3F223E2514300DCD162 /* SDL_thread.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A77923E2513E00DCD162 /* SDL_thread.c */; }; + A7D8B41C23E2514300DCD162 /* SDL_systls.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A78223E2513E00DCD162 /* SDL_systls.c */; }; + A7D8B42223E2514300DCD162 /* SDL_syssem.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A78323E2513E00DCD162 /* SDL_syssem.c */; }; + A7D8B42823E2514300DCD162 /* SDL_systhread_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A78423E2513E00DCD162 /* SDL_systhread_c.h */; }; + A7D8B42E23E2514300DCD162 /* SDL_syscond.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A78523E2513E00DCD162 /* SDL_syscond.c */; }; + A7D8B43423E2514300DCD162 /* SDL_systhread.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A78623E2513E00DCD162 /* SDL_systhread.c */; }; + A7D8B43A23E2514300DCD162 /* SDL_sysmutex.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A78723E2513E00DCD162 /* SDL_sysmutex.c */; }; + A7D8B44023E2514300DCD162 /* SDL_sysmutex_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A78823E2513E00DCD162 /* SDL_sysmutex_c.h */; }; + A7D8B4AC23E2514300DCD162 /* SDL_gamepad_db.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A79E23E2513E00DCD162 /* SDL_gamepad_db.h */; }; + A7D8B4B223E2514300DCD162 /* SDL_sysjoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7A023E2513E00DCD162 /* SDL_sysjoystick.c */; }; + A7D8B4DC23E2514300DCD162 /* SDL_joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7A923E2513E00DCD162 /* SDL_joystick.c */; }; + A7D8B4EE23E2514300DCD162 /* SDL_gamepad.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7AD23E2513E00DCD162 /* SDL_gamepad.c */; }; + A7D8B53923E2514300DCD162 /* SDL_hidapi_xbox360.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7C223E2513E00DCD162 /* SDL_hidapi_xbox360.c */; }; + A7D8B53F23E2514300DCD162 /* SDL_hidapi_ps4.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7C323E2513E00DCD162 /* SDL_hidapi_ps4.c */; }; + A7D8B54523E2514300DCD162 /* SDL_hidapijoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7C423E2513E00DCD162 /* SDL_hidapijoystick.c */; }; + A7D8B54B23E2514300DCD162 /* SDL_hidapi_xboxone.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7C523E2513E00DCD162 /* SDL_hidapi_xboxone.c */; }; + A7D8B55123E2514300DCD162 /* SDL_hidapi_switch.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7C623E2513E00DCD162 /* SDL_hidapi_switch.c */; }; + A7D8B55723E2514300DCD162 /* SDL_hidapijoystick_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A7C723E2513E00DCD162 /* SDL_hidapijoystick_c.h */; }; + A7D8B55D23E2514300DCD162 /* SDL_hidapi_xbox360w.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7C823E2513E00DCD162 /* SDL_hidapi_xbox360w.c */; }; + A7D8B56323E2514300DCD162 /* SDL_hidapi_gamecube.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7C923E2513E00DCD162 /* SDL_hidapi_gamecube.c */; }; + A7D8B56F23E2514300DCD162 /* usb_ids.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A7CB23E2513E00DCD162 /* usb_ids.h */; }; + A7D8B58123E2514300DCD162 /* SDL_sysjoystick.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A7CF23E2513E00DCD162 /* SDL_sysjoystick.h */; }; + A7D8B58723E2514300DCD162 /* SDL_joystick_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A7D023E2513E00DCD162 /* SDL_joystick_c.h */; }; + A7D8B5B723E2514300DCD162 /* controller_type.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A7D923E2513E00DCD162 /* controller_type.h */; }; + A7D8B5BD23E2514300DCD162 /* SDL_iostream.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7DB23E2513F00DCD162 /* SDL_iostream.c */; }; + A7D8B5C323E2514300DCD162 /* SDL_iostreambundlesupport.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A7DD23E2513F00DCD162 /* SDL_iostreambundlesupport.h */; }; + A7D8B5C923E2514300DCD162 /* SDL_iostreambundlesupport.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7DE23E2513F00DCD162 /* SDL_iostreambundlesupport.m */; }; + A7D8B5CF23E2514300DCD162 /* SDL_syspower.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7E123E2513F00DCD162 /* SDL_syspower.m */; }; + A7D8B5D523E2514300DCD162 /* SDL_syspower.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A7E223E2513F00DCD162 /* SDL_syspower.h */; }; + A7D8B5E723E2514300DCD162 /* SDL_power.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7E723E2513F00DCD162 /* SDL_power.c */; }; + A7D8B5F323E2514300DCD162 /* SDL_syspower.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7EB23E2513F00DCD162 /* SDL_syspower.c */; }; + A7D8B61123E2514300DCD162 /* SDL_syspower.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A7F423E2513F00DCD162 /* SDL_syspower.h */; }; + A7D8B61723E2514300DCD162 /* SDL_assert_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A7F523E2513F00DCD162 /* SDL_assert_c.h */; }; + A7D8B61D23E2514300DCD162 /* SDL_sysfilesystem.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7F823E2513F00DCD162 /* SDL_sysfilesystem.c */; }; + A7D8B62F23E2514300DCD162 /* SDL_sysfilesystem.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7FE23E2513F00DCD162 /* SDL_sysfilesystem.m */; }; + A7D8B75223E2514300DCD162 /* SDL_sysloadso.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A85F23E2513F00DCD162 /* SDL_sysloadso.c */; }; + A7D8B75E23E2514300DCD162 /* SDL_sysloadso.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A86323E2513F00DCD162 /* SDL_sysloadso.c */; }; + A7D8B76423E2514300DCD162 /* SDL_mixer.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A86523E2513F00DCD162 /* SDL_mixer.c */; }; + A7D8B76A23E2514300DCD162 /* SDL_wave.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A86623E2513F00DCD162 /* SDL_wave.c */; }; + A7D8B79423E2514400DCD162 /* SDL_dummyaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A87123E2513F00DCD162 /* SDL_dummyaudio.h */; }; + A7D8B79A23E2514400DCD162 /* SDL_dummyaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A87223E2513F00DCD162 /* SDL_dummyaudio.c */; }; + A7D8B7A023E2514400DCD162 /* SDL_audio_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A87323E2513F00DCD162 /* SDL_audio_c.h */; }; + A7D8B7B223E2514400DCD162 /* SDL_audiodev_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A87723E2513F00DCD162 /* SDL_audiodev_c.h */; }; + A7D8B81823E2514400DCD162 /* SDL_audiodev.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A88F23E2513F00DCD162 /* SDL_audiodev.c */; }; + A7D8B85A23E2514400DCD162 /* SDL_sysaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A89F23E2513F00DCD162 /* SDL_sysaudio.h */; }; + A7D8B86023E2514400DCD162 /* SDL_audiotypecvt.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8A023E2513F00DCD162 /* SDL_audiotypecvt.c */; }; + A7D8B86623E2514400DCD162 /* SDL_audiocvt.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8A123E2513F00DCD162 /* SDL_audiocvt.c */; }; + A7D8B86C23E2514400DCD162 /* SDL_wave.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8A223E2513F00DCD162 /* SDL_wave.h */; }; + A7D8B8A223E2514400DCD162 /* SDL_diskaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8B023E2513F00DCD162 /* SDL_diskaudio.h */; }; + A7D8B8A823E2514400DCD162 /* SDL_diskaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8B123E2513F00DCD162 /* SDL_diskaudio.c */; }; + A7D8B8C623E2514400DCD162 /* SDL_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8B823E2513F00DCD162 /* SDL_audio.c */; }; + A7D8B8CC23E2514400DCD162 /* SDL_coreaudio.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8BA23E2513F00DCD162 /* SDL_coreaudio.h */; }; + A7D8B8D223E2514400DCD162 /* SDL_coreaudio.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8BB23E2513F00DCD162 /* SDL_coreaudio.m */; }; + A7D8B8E423E2514400DCD162 /* SDL_error.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8BF23E2513F00DCD162 /* SDL_error.c */; }; + A7D8B94A23E2514400DCD162 /* SDL_hints_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8D123E2514000DCD162 /* SDL_hints_c.h */; }; + A7D8B95023E2514400DCD162 /* SDL_iconv.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8D323E2514000DCD162 /* SDL_iconv.c */; }; + A7D8B95623E2514400DCD162 /* SDL_getenv.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8D423E2514000DCD162 /* SDL_getenv.c */; }; + A7D8B95C23E2514400DCD162 /* SDL_string.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8D523E2514000DCD162 /* SDL_string.c */; }; + A7D8B96223E2514400DCD162 /* SDL_strtokr.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8D623E2514000DCD162 /* SDL_strtokr.c */; }; + A7D8B96823E2514400DCD162 /* SDL_qsort.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8D723E2514000DCD162 /* SDL_qsort.c */; }; + A7D8B96E23E2514400DCD162 /* SDL_stdlib.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8D823E2514000DCD162 /* SDL_stdlib.c */; }; + A7D8B97423E2514400DCD162 /* SDL_malloc.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8D923E2514000DCD162 /* SDL_malloc.c */; }; + A7D8B97A23E2514400DCD162 /* SDL_render.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8DB23E2514000DCD162 /* SDL_render.c */; }; + A7D8B98023E2514400DCD162 /* SDL_d3dmath.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8DC23E2514000DCD162 /* SDL_d3dmath.h */; }; + A7D8B98623E2514400DCD162 /* SDL_render_metal.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8DE23E2514000DCD162 /* SDL_render_metal.m */; }; + A7D8B98C23E2514400DCD162 /* SDL_shaders_metal_ios.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8DF23E2514000DCD162 /* SDL_shaders_metal_ios.h */; }; + A7D8B99223E2514400DCD162 /* SDL_shaders_metal.metal in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8E023E2514000DCD162 /* SDL_shaders_metal.metal */; }; + A7D8B99B23E2514400DCD162 /* SDL_shaders_metal_macos.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8E223E2514000DCD162 /* SDL_shaders_metal_macos.h */; }; + A7D8B9A123E2514400DCD162 /* SDL_shaders_metal_tvos.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8E323E2514000DCD162 /* SDL_shaders_metal_tvos.h */; }; + A7D8B9CB23E2514400DCD162 /* SDL_yuv_sw_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8EC23E2514000DCD162 /* SDL_yuv_sw_c.h */; }; + A7D8B9D123E2514400DCD162 /* SDL_yuv_sw.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8ED23E2514000DCD162 /* SDL_yuv_sw.c */; }; + A7D8B9D723E2514400DCD162 /* SDL_sysrender.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8EE23E2514000DCD162 /* SDL_sysrender.h */; }; + A7D8B9DD23E2514400DCD162 /* SDL_blendpoint.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8F023E2514000DCD162 /* SDL_blendpoint.c */; }; + A7D8B9E323E2514400DCD162 /* SDL_drawline.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8F123E2514000DCD162 /* SDL_drawline.c */; }; + A7D8B9E923E2514400DCD162 /* SDL_blendline.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8F223E2514000DCD162 /* SDL_blendline.h */; }; + A7D8B9EF23E2514400DCD162 /* SDL_drawpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8F323E2514000DCD162 /* SDL_drawpoint.h */; }; + A7D8B9F523E2514400DCD162 /* SDL_rotate.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8F423E2514000DCD162 /* SDL_rotate.c */; }; + A7D8B9FB23E2514400DCD162 /* SDL_render_sw_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8F523E2514000DCD162 /* SDL_render_sw_c.h */; }; + A7D8BA0123E2514400DCD162 /* SDL_blendfillrect.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8F623E2514000DCD162 /* SDL_blendfillrect.h */; }; + A7D8BA0723E2514400DCD162 /* SDL_drawline.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8F723E2514000DCD162 /* SDL_drawline.h */; }; + A7D8BA0D23E2514400DCD162 /* SDL_blendpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8F823E2514000DCD162 /* SDL_blendpoint.h */; }; + A7D8BA1323E2514400DCD162 /* SDL_render_sw.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8F923E2514000DCD162 /* SDL_render_sw.c */; }; + A7D8BA1923E2514400DCD162 /* SDL_draw.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8FA23E2514000DCD162 /* SDL_draw.h */; }; + A7D8BA1F23E2514400DCD162 /* SDL_blendline.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8FB23E2514000DCD162 /* SDL_blendline.c */; }; + A7D8BA2523E2514400DCD162 /* SDL_drawpoint.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8FC23E2514000DCD162 /* SDL_drawpoint.c */; }; + A7D8BA2B23E2514400DCD162 /* SDL_blendfillrect.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8FD23E2514000DCD162 /* SDL_blendfillrect.c */; }; + A7D8BA3123E2514400DCD162 /* SDL_rotate.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A8FE23E2514000DCD162 /* SDL_rotate.h */; }; + A7D8BA3723E2514400DCD162 /* SDL_d3dmath.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A8FF23E2514000DCD162 /* SDL_d3dmath.c */; }; + A7D8BA4923E2514400DCD162 /* SDL_render_gles2.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A90423E2514000DCD162 /* SDL_render_gles2.c */; }; + A7D8BA4F23E2514400DCD162 /* SDL_shaders_gles2.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A90523E2514000DCD162 /* SDL_shaders_gles2.h */; }; + A7D8BA5523E2514400DCD162 /* SDL_gles2funcs.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A90623E2514000DCD162 /* SDL_gles2funcs.h */; }; + A7D8BA5B23E2514400DCD162 /* SDL_shaders_gles2.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A90723E2514000DCD162 /* SDL_shaders_gles2.c */; }; + A7D8BA7323E2514400DCD162 /* SDL_shaders_gl.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A90D23E2514000DCD162 /* SDL_shaders_gl.h */; }; + A7D8BA7923E2514400DCD162 /* SDL_glfuncs.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A90E23E2514000DCD162 /* SDL_glfuncs.h */; }; + A7D8BA7F23E2514400DCD162 /* SDL_render_gl.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A90F23E2514000DCD162 /* SDL_render_gl.c */; }; + A7D8BA8523E2514400DCD162 /* SDL_shaders_gl.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A91023E2514000DCD162 /* SDL_shaders_gl.c */; }; + A7D8BA8B23E2514400DCD162 /* s_sin.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A91223E2514000DCD162 /* s_sin.c */; }; + A7D8BA9123E2514400DCD162 /* s_cos.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A91323E2514000DCD162 /* s_cos.c */; }; + A7D8BA9723E2514400DCD162 /* s_copysign.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A91423E2514000DCD162 /* s_copysign.c */; }; + A7D8BA9D23E2514400DCD162 /* s_fabs.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A91523E2514000DCD162 /* s_fabs.c */; }; + A7D8BAA323E2514400DCD162 /* k_rem_pio2.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A91623E2514000DCD162 /* k_rem_pio2.c */; }; + A7D8BAA923E2514400DCD162 /* k_sin.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A91723E2514000DCD162 /* k_sin.c */; }; + A7D8BAAF23E2514400DCD162 /* s_atan.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A91823E2514000DCD162 /* s_atan.c */; }; + A7D8BAB523E2514400DCD162 /* k_cos.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A91923E2514000DCD162 /* k_cos.c */; }; + A7D8BABB23E2514400DCD162 /* s_scalbn.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A91A23E2514000DCD162 /* s_scalbn.c */; }; + A7D8BAC123E2514500DCD162 /* math_private.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A91B23E2514000DCD162 /* math_private.h */; }; + A7D8BAC723E2514500DCD162 /* e_pow.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A91C23E2514000DCD162 /* e_pow.c */; }; + A7D8BACD23E2514500DCD162 /* e_atan2.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A91D23E2514000DCD162 /* e_atan2.c */; }; + A7D8BAD323E2514500DCD162 /* s_tan.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A91E23E2514000DCD162 /* s_tan.c */; }; + A7D8BAD923E2514500DCD162 /* e_rem_pio2.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A91F23E2514000DCD162 /* e_rem_pio2.c */; }; + A7D8BADF23E2514500DCD162 /* e_fmod.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A92023E2514000DCD162 /* e_fmod.c */; }; + A7D8BAE523E2514500DCD162 /* e_exp.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A92123E2514000DCD162 /* e_exp.c */; }; + A7D8BAEB23E2514500DCD162 /* e_log10.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A92223E2514000DCD162 /* e_log10.c */; }; + A7D8BAF123E2514500DCD162 /* e_log.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A92323E2514000DCD162 /* e_log.c */; }; + A7D8BAF723E2514500DCD162 /* e_sqrt.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A92423E2514000DCD162 /* e_sqrt.c */; }; + A7D8BAFD23E2514500DCD162 /* s_floor.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A92523E2514000DCD162 /* s_floor.c */; }; + A7D8BB0323E2514500DCD162 /* math_libm.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A92623E2514000DCD162 /* math_libm.h */; }; + A7D8BB0923E2514500DCD162 /* k_tan.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A92723E2514000DCD162 /* k_tan.c */; }; + A7D8BB1523E2514500DCD162 /* SDL_mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A92A23E2514000DCD162 /* SDL_mouse.c */; }; + A7D8BB1B23E2514500DCD162 /* SDL_mouse_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A92B23E2514000DCD162 /* SDL_mouse_c.h */; }; + A7D8BB2123E2514500DCD162 /* scancodes_windows.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A92C23E2514000DCD162 /* scancodes_windows.h */; }; + A7D8BB2723E2514500DCD162 /* SDL_displayevents.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A92D23E2514000DCD162 /* SDL_displayevents.c */; }; + A7D8BB2D23E2514500DCD162 /* SDL_dropevents_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A92E23E2514000DCD162 /* SDL_dropevents_c.h */; }; + A7D8BB3323E2514500DCD162 /* SDL_windowevents.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A92F23E2514000DCD162 /* SDL_windowevents.c */; }; + A7D8BB3F23E2514500DCD162 /* SDL_displayevents_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93123E2514000DCD162 /* SDL_displayevents_c.h */; }; + A7D8BB4523E2514500DCD162 /* blank_cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93223E2514000DCD162 /* blank_cursor.h */; }; + A7D8BB4B23E2514500DCD162 /* default_cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93323E2514000DCD162 /* default_cursor.h */; }; + A7D8BB5123E2514500DCD162 /* scancodes_darwin.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93423E2514000DCD162 /* scancodes_darwin.h */; }; + A7D8BB5723E2514500DCD162 /* SDL_events.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A93523E2514000DCD162 /* SDL_events.c */; }; + A7D8BB5D23E2514500DCD162 /* scancodes_linux.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93623E2514000DCD162 /* scancodes_linux.h */; }; + A7D8BB6323E2514500DCD162 /* SDL_touch_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93723E2514000DCD162 /* SDL_touch_c.h */; }; + A7D8BB6923E2514500DCD162 /* SDL_keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A93823E2514000DCD162 /* SDL_keyboard.c */; }; + A7D8BB6F23E2514500DCD162 /* SDL_clipboardevents_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93923E2514000DCD162 /* SDL_clipboardevents_c.h */; }; + A7D8BB7523E2514500DCD162 /* SDL_clipboardevents.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A93A23E2514000DCD162 /* SDL_clipboardevents.c */; }; + A7D8BB7B23E2514500DCD162 /* SDL_dropevents.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A93B23E2514000DCD162 /* SDL_dropevents.c */; }; + A7D8BB8123E2514500DCD162 /* SDL_quit.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A93C23E2514000DCD162 /* SDL_quit.c */; }; + A7D8BB8723E2514500DCD162 /* SDL_keyboard_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A93D23E2514000DCD162 /* SDL_keyboard_c.h */; }; + A7D8BB8D23E2514500DCD162 /* SDL_touch.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A93E23E2514000DCD162 /* SDL_touch.c */; }; + A7D8BB9F23E2514500DCD162 /* scancodes_xfree86.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A94123E2514000DCD162 /* scancodes_xfree86.h */; }; + A7D8BBA523E2514500DCD162 /* SDL_events_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A94223E2514000DCD162 /* SDL_events_c.h */; }; + A7D8BBAB23E2514500DCD162 /* SDL_windowevents_c.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A94323E2514000DCD162 /* SDL_windowevents_c.h */; }; + A7D8BBB123E2514500DCD162 /* SDL_assert.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A94423E2514000DCD162 /* SDL_assert.c */; }; + A7D8BBC523E2561500DCD162 /* SDL_steamcontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A7A723E2513E00DCD162 /* SDL_steamcontroller.c */; }; + A7D8BBC723E2561500DCD162 /* SDL_steamcontroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A7A523E2513E00DCD162 /* SDL_steamcontroller.h */; }; + A7D8BBD223E2574800DCD162 /* SDL_uikitappdelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A62F23E2513D00DCD162 /* SDL_uikitappdelegate.h */; }; + A7D8BBD323E2574800DCD162 /* SDL_uikitappdelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A61E23E2513D00DCD162 /* SDL_uikitappdelegate.m */; }; + A7D8BBD423E2574800DCD162 /* SDL_uikitclipboard.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A62123E2513D00DCD162 /* SDL_uikitclipboard.h */; }; + A7D8BBD523E2574800DCD162 /* SDL_uikitclipboard.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A62A23E2513D00DCD162 /* SDL_uikitclipboard.m */; }; + A7D8BBD623E2574800DCD162 /* SDL_uikitevents.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A62D23E2513D00DCD162 /* SDL_uikitevents.h */; }; + A7D8BBD723E2574800DCD162 /* SDL_uikitevents.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A61C23E2513D00DCD162 /* SDL_uikitevents.m */; }; + A7D8BBD823E2574800DCD162 /* SDL_uikitmessagebox.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A62623E2513D00DCD162 /* SDL_uikitmessagebox.h */; }; + A7D8BBD923E2574800DCD162 /* SDL_uikitmessagebox.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A61B23E2513D00DCD162 /* SDL_uikitmessagebox.m */; }; + A7D8BBDA23E2574800DCD162 /* SDL_uikitmetalview.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A61D23E2513D00DCD162 /* SDL_uikitmetalview.h */; }; + A7D8BBDB23E2574800DCD162 /* SDL_uikitmetalview.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A62E23E2513D00DCD162 /* SDL_uikitmetalview.m */; }; + A7D8BBDC23E2574800DCD162 /* SDL_uikitmodes.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A61F23E2513D00DCD162 /* SDL_uikitmodes.h */; }; + A7D8BBDD23E2574800DCD162 /* SDL_uikitmodes.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A62C23E2513D00DCD162 /* SDL_uikitmodes.m */; }; + A7D8BBDE23E2574800DCD162 /* SDL_uikitopengles.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A63123E2513D00DCD162 /* SDL_uikitopengles.h */; }; + A7D8BBDF23E2574800DCD162 /* SDL_uikitopengles.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A62323E2513D00DCD162 /* SDL_uikitopengles.m */; }; + A7D8BBE023E2574800DCD162 /* SDL_uikitopenglview.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A62B23E2513D00DCD162 /* SDL_uikitopenglview.h */; }; + A7D8BBE123E2574800DCD162 /* SDL_uikitopenglview.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A62023E2513D00DCD162 /* SDL_uikitopenglview.m */; }; + A7D8BBE223E2574800DCD162 /* SDL_uikitvideo.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A62223E2513D00DCD162 /* SDL_uikitvideo.h */; }; + A7D8BBE323E2574800DCD162 /* SDL_uikitvideo.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A63223E2513D00DCD162 /* SDL_uikitvideo.m */; }; + A7D8BBE423E2574800DCD162 /* SDL_uikitview.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A61923E2513D00DCD162 /* SDL_uikitview.h */; }; + A7D8BBE523E2574800DCD162 /* SDL_uikitview.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A62923E2513D00DCD162 /* SDL_uikitview.m */; }; + A7D8BBE623E2574800DCD162 /* SDL_uikitviewcontroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A62423E2513D00DCD162 /* SDL_uikitviewcontroller.h */; }; + A7D8BBE723E2574800DCD162 /* SDL_uikitviewcontroller.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A63023E2513D00DCD162 /* SDL_uikitviewcontroller.m */; }; + A7D8BBE823E2574800DCD162 /* SDL_uikitvulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A63323E2513D00DCD162 /* SDL_uikitvulkan.h */; }; + A7D8BBE923E2574800DCD162 /* SDL_uikitvulkan.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A62523E2513D00DCD162 /* SDL_uikitvulkan.m */; }; + A7D8BBEA23E2574800DCD162 /* SDL_uikitwindow.h in Headers */ = {isa = PBXBuildFile; fileRef = A7D8A62723E2513D00DCD162 /* SDL_uikitwindow.h */; }; + A7D8BBEB23E2574800DCD162 /* SDL_uikitwindow.m in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A61A23E2513D00DCD162 /* SDL_uikitwindow.m */; }; + E41D20152BA9577D003073FA /* SDL_storage.h in Headers */ = {isa = PBXBuildFile; fileRef = E41D20142BA9577D003073FA /* SDL_storage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E479118D2BA9555500CE3B7F /* SDL_storage.c in Sources */ = {isa = PBXBuildFile; fileRef = E47911872BA9555500CE3B7F /* SDL_storage.c */; }; + E479118E2BA9555500CE3B7F /* SDL_sysstorage.h in Headers */ = {isa = PBXBuildFile; fileRef = E47911882BA9555500CE3B7F /* SDL_sysstorage.h */; }; + E479118F2BA9555500CE3B7F /* SDL_genericstorage.c in Sources */ = {isa = PBXBuildFile; fileRef = E479118A2BA9555500CE3B7F /* SDL_genericstorage.c */; }; + E4A568B62AF763940062EEC4 /* SDL_sysmain_callbacks.c in Sources */ = {isa = PBXBuildFile; fileRef = E4A568B52AF763940062EEC4 /* SDL_sysmain_callbacks.c */; }; + E4F7981A2AD8D84800669F54 /* SDL_core_unsupported.c in Sources */ = {isa = PBXBuildFile; fileRef = E4F798192AD8D84800669F54 /* SDL_core_unsupported.c */; }; + E4F7981C2AD8D85500669F54 /* SDL_dynapi_unsupported.h in Headers */ = {isa = PBXBuildFile; fileRef = E4F7981B2AD8D85500669F54 /* SDL_dynapi_unsupported.h */; }; + E4F7981E2AD8D86A00669F54 /* SDL_render_unsupported.c in Sources */ = {isa = PBXBuildFile; fileRef = E4F7981D2AD8D86A00669F54 /* SDL_render_unsupported.c */; }; + E4F798202AD8D87F00669F54 /* SDL_video_unsupported.c in Sources */ = {isa = PBXBuildFile; fileRef = E4F7981F2AD8D87F00669F54 /* SDL_video_unsupported.c */; }; + F316ABD82B5C3185002EF551 /* SDL_memset.c in Sources */ = {isa = PBXBuildFile; fileRef = F316ABD62B5C3185002EF551 /* SDL_memset.c */; }; + F316ABD92B5C3185002EF551 /* SDL_memcpy.c in Sources */ = {isa = PBXBuildFile; fileRef = F316ABD72B5C3185002EF551 /* SDL_memcpy.c */; }; + F316ABDB2B5CA721002EF551 /* SDL_memmove.c in Sources */ = {isa = PBXBuildFile; fileRef = F316ABDA2B5CA721002EF551 /* SDL_memmove.c */; }; + F31A92C828D4CB39003BFD6A /* SDL_offscreenopengles.h in Headers */ = {isa = PBXBuildFile; fileRef = F31A92C628D4CB39003BFD6A /* SDL_offscreenopengles.h */; }; + F31A92D228D4CB39003BFD6A /* SDL_offscreenopengles.c in Sources */ = {isa = PBXBuildFile; fileRef = F31A92C728D4CB39003BFD6A /* SDL_offscreenopengles.c */; }; + F32305FF28939F6400E66D30 /* SDL_hidapi_combined.c in Sources */ = {isa = PBXBuildFile; fileRef = F32305FE28939F6400E66D30 /* SDL_hidapi_combined.c */; }; + F32DDACF2AB795A30041EAA5 /* SDL_audio_channel_converters.h in Headers */ = {isa = PBXBuildFile; fileRef = F32DDAC92AB795A30041EAA5 /* SDL_audio_channel_converters.h */; }; + F32DDAD02AB795A30041EAA5 /* SDL_audioresample.h in Headers */ = {isa = PBXBuildFile; fileRef = F32DDACA2AB795A30041EAA5 /* SDL_audioresample.h */; }; + F32DDAD12AB795A30041EAA5 /* SDL_audioqueue.c in Sources */ = {isa = PBXBuildFile; fileRef = F32DDACB2AB795A30041EAA5 /* SDL_audioqueue.c */; }; + F32DDAD22AB795A30041EAA5 /* SDL_audio_resampler_filter.h in Headers */ = {isa = PBXBuildFile; fileRef = F32DDACC2AB795A30041EAA5 /* SDL_audio_resampler_filter.h */; }; + F32DDAD32AB795A30041EAA5 /* SDL_audioqueue.h in Headers */ = {isa = PBXBuildFile; fileRef = F32DDACD2AB795A30041EAA5 /* SDL_audioqueue.h */; }; + F32DDAD42AB795A30041EAA5 /* SDL_audioresample.c in Sources */ = {isa = PBXBuildFile; fileRef = F32DDACE2AB795A30041EAA5 /* SDL_audioresample.c */; }; + F34B9895291DEFF500AAC96E /* SDL_hidapi_steam.c in Sources */ = {isa = PBXBuildFile; fileRef = A75FDAAC23E2795C00529352 /* SDL_hidapi_steam.c */; }; + F362B9192B3349E200D30B94 /* controller_list.h in Headers */ = {isa = PBXBuildFile; fileRef = F362B9152B3349E200D30B94 /* controller_list.h */; }; + F362B91A2B3349E200D30B94 /* SDL_gamepad_c.h in Headers */ = {isa = PBXBuildFile; fileRef = F362B9162B3349E200D30B94 /* SDL_gamepad_c.h */; }; + F362B91B2B3349E200D30B94 /* SDL_steam_virtual_gamepad.h in Headers */ = {isa = PBXBuildFile; fileRef = F362B9172B3349E200D30B94 /* SDL_steam_virtual_gamepad.h */; }; + F362B91C2B3349E200D30B94 /* SDL_steam_virtual_gamepad.c in Sources */ = {isa = PBXBuildFile; fileRef = F362B9182B3349E200D30B94 /* SDL_steam_virtual_gamepad.c */; }; + F3681E802B7AA6240002C6FD /* SDL_cocoashape.m in Sources */ = {isa = PBXBuildFile; fileRef = F3681E7E2B7AA6240002C6FD /* SDL_cocoashape.m */; }; + F3681E812B7AA6240002C6FD /* SDL_cocoashape.h in Headers */ = {isa = PBXBuildFile; fileRef = F3681E7F2B7AA6240002C6FD /* SDL_cocoashape.h */; }; + F36C7AD1294BA009004D61C3 /* SDL_runapp.c in Sources */ = {isa = PBXBuildFile; fileRef = F36C7AD0294BA009004D61C3 /* SDL_runapp.c */; }; + F376F6552559B4E300CFC0BC /* SDL_hidapi.c in Sources */ = {isa = PBXBuildFile; fileRef = A7D8A81423E2513F00DCD162 /* SDL_hidapi.c */; }; + F37A8E1A28405AA100C38E95 /* CMake in Resources */ = {isa = PBXBuildFile; fileRef = F37A8E1928405AA100C38E95 /* CMake */; }; + F37E184E2B8C097D0098C111 /* SDL_camera.h in Headers */ = {isa = PBXBuildFile; fileRef = 000084ED0A56E3ED52F90000 /* SDL_camera.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F37E18522BA50E760098C111 /* SDL_dialog.h in Headers */ = {isa = PBXBuildFile; fileRef = F37E18512BA50E750098C111 /* SDL_dialog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F37E18582BA50F3B0098C111 /* SDL_cocoadialog.m in Sources */ = {isa = PBXBuildFile; fileRef = F37E18572BA50F3B0098C111 /* SDL_cocoadialog.m */; platformFilters = (macos, ); }; + F37E185A2BA50F450098C111 /* SDL_dummydialog.c in Sources */ = {isa = PBXBuildFile; fileRef = F37E18592BA50F450098C111 /* SDL_dummydialog.c */; platformFilters = (ios, maccatalyst, tvos, xros, ); }; + F37E185C2BAA3EF90098C111 /* SDL_time.h in Headers */ = {isa = PBXBuildFile; fileRef = F37E185B2BAA3EF90098C111 /* SDL_time.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F37E18622BAA40090098C111 /* SDL_sysfilesystem.h in Headers */ = {isa = PBXBuildFile; fileRef = F37E18612BAA40090098C111 /* SDL_sysfilesystem.h */; }; + F37E18642BAA40670098C111 /* SDL_time_c.h in Headers */ = {isa = PBXBuildFile; fileRef = F37E18632BAA40670098C111 /* SDL_time_c.h */; }; + F3820713284F3609004DD584 /* controller_type.c in Sources */ = {isa = PBXBuildFile; fileRef = F3820712284F3609004DD584 /* controller_type.c */; }; + F382071D284F362F004DD584 /* SDL_guid.c in Sources */ = {isa = PBXBuildFile; fileRef = F382071C284F362F004DD584 /* SDL_guid.c */; }; + F386F6E72884663E001840AA /* SDL_log_c.h in Headers */ = {isa = PBXBuildFile; fileRef = F386F6E42884663E001840AA /* SDL_log_c.h */; }; + F386F6F02884663E001840AA /* SDL_utils_c.h in Headers */ = {isa = PBXBuildFile; fileRef = F386F6E52884663E001840AA /* SDL_utils_c.h */; }; + F386F6F92884663E001840AA /* SDL_utils.c in Sources */ = {isa = PBXBuildFile; fileRef = F386F6E62884663E001840AA /* SDL_utils.c */; }; + F388C95528B5F6F700661ECF /* SDL_hidapi_ps3.c in Sources */ = {isa = PBXBuildFile; fileRef = F388C95428B5F6F600661ECF /* SDL_hidapi_ps3.c */; }; + F395BF6525633B2400942BFF /* SDL_crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = F395BF6425633B2400942BFF /* SDL_crc32.c */; }; + F395C1932569C68F00942BFF /* SDL_iokitjoystick_c.h in Headers */ = {isa = PBXBuildFile; fileRef = F395C1912569C68E00942BFF /* SDL_iokitjoystick_c.h */; }; + F395C19C2569C68F00942BFF /* SDL_iokitjoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = F395C1922569C68E00942BFF /* SDL_iokitjoystick.c */; }; + F395C1B12569C6A000942BFF /* SDL_mfijoystick.m in Sources */ = {isa = PBXBuildFile; fileRef = F395C1AF2569C6A000942BFF /* SDL_mfijoystick.m */; }; + F395C1BA2569C6A000942BFF /* SDL_mfijoystick_c.h in Headers */ = {isa = PBXBuildFile; fileRef = F395C1B02569C6A000942BFF /* SDL_mfijoystick_c.h */; }; + F3973FA228A59BDD00B84553 /* SDL_vacopy.h in Headers */ = {isa = PBXBuildFile; fileRef = F3973FA028A59BDD00B84553 /* SDL_vacopy.h */; }; + F3973FAB28A59BDD00B84553 /* SDL_crc16.c in Sources */ = {isa = PBXBuildFile; fileRef = F3973FA128A59BDD00B84553 /* SDL_crc16.c */; }; + F3984CD025BCC92900374F43 /* SDL_hidapi_stadia.c in Sources */ = {isa = PBXBuildFile; fileRef = F3984CCF25BCC92800374F43 /* SDL_hidapi_stadia.c */; }; + F3990DF52A787C10000D8759 /* SDL_sysurl.m in Sources */ = {isa = PBXBuildFile; fileRef = F3ADAB8D2576F0B300A6B1D9 /* SDL_sysurl.m */; }; + F3990E042A788303000D8759 /* SDL_hidapi_c.h in Headers */ = {isa = PBXBuildFile; fileRef = F3990E012A788303000D8759 /* SDL_hidapi_c.h */; }; + F3990E052A788303000D8759 /* SDL_hidapi_mac.h in Headers */ = {isa = PBXBuildFile; fileRef = F3990E022A788303000D8759 /* SDL_hidapi_mac.h */; }; + F3990E062A788303000D8759 /* SDL_hidapi_ios.h in Headers */ = {isa = PBXBuildFile; fileRef = F3990E032A788303000D8759 /* SDL_hidapi_ios.h */; }; + F3990E072A78833C000D8759 /* hid.m in Sources */ = {isa = PBXBuildFile; fileRef = A75FDAA523E2792500529352 /* hid.m */; }; + F3A4909E2554D38600E92A8B /* SDL_hidapi_ps5.c in Sources */ = {isa = PBXBuildFile; fileRef = F3A4909D2554D38500E92A8B /* SDL_hidapi_ps5.c */; }; + F3B38CCF296E2E52005DA6D3 /* SDL_main_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F3B38CCA296E2E52005DA6D3 /* SDL_main_impl.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3B38CD3296E2E52005DA6D3 /* SDL_platform_defines.h in Headers */ = {isa = PBXBuildFile; fileRef = F3B38CCB296E2E52005DA6D3 /* SDL_platform_defines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3B38CD7296E2E52005DA6D3 /* SDL_init.h in Headers */ = {isa = PBXBuildFile; fileRef = F3B38CCC296E2E52005DA6D3 /* SDL_init.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3B38CDB296E2E52005DA6D3 /* SDL_oldnames.h in Headers */ = {isa = PBXBuildFile; fileRef = F3B38CCD296E2E52005DA6D3 /* SDL_oldnames.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3B38CDF296E2E52005DA6D3 /* SDL_intrin.h in Headers */ = {isa = PBXBuildFile; fileRef = F3B38CCE296E2E52005DA6D3 /* SDL_intrin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3D60A8328C16A1900788A3A /* SDL_hidapi_wii.c in Sources */ = {isa = PBXBuildFile; fileRef = F3D60A8228C16A1800788A3A /* SDL_hidapi_wii.c */; }; + F3DDCC562AFD42B600B0842B /* SDL_clipboard_c.h in Headers */ = {isa = PBXBuildFile; fileRef = F3DDCC4D2AFD42B500B0842B /* SDL_clipboard_c.h */; }; + F3DDCC5B2AFD42B600B0842B /* SDL_video_c.h in Headers */ = {isa = PBXBuildFile; fileRef = F3DDCC522AFD42B600B0842B /* SDL_video_c.h */; }; + F3DDCC5D2AFD42B600B0842B /* SDL_rect_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = F3DDCC542AFD42B600B0842B /* SDL_rect_impl.h */; }; + F3E5A6EB2AD5E0E600293D83 /* SDL_properties.c in Sources */ = {isa = PBXBuildFile; fileRef = F3E5A6EA2AD5E0E600293D83 /* SDL_properties.c */; }; + F3E5A6ED2AD5E10800293D83 /* SDL_properties.h in Headers */ = {isa = PBXBuildFile; fileRef = F3E5A6EC2AD5E10800293D83 /* SDL_properties.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F07D5A269640160074468B /* SDL_hidapi_luna.c in Sources */ = {isa = PBXBuildFile; fileRef = F3F07D59269640160074468B /* SDL_hidapi_luna.c */; }; + F3F7D8ED2933074E00816151 /* SDL_audio.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8AA2933074900816151 /* SDL_audio.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D8F12933074E00816151 /* SDL_platform.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8AB2933074900816151 /* SDL_platform.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D8F52933074E00816151 /* SDL_stdinc.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8AC2933074900816151 /* SDL_stdinc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D8F92933074E00816151 /* SDL_haptic.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8AD2933074900816151 /* SDL_haptic.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D8FD2933074E00816151 /* SDL_opengles2_gl2.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8AE2933074900816151 /* SDL_opengles2_gl2.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9012933074E00816151 /* SDL_touch.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8AF2933074900816151 /* SDL_touch.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9052933074E00816151 /* SDL_main.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8B02933074900816151 /* SDL_main.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9092933074E00816151 /* SDL_opengles2_khrplatform.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8B12933074900816151 /* SDL_opengles2_khrplatform.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D90D2933074E00816151 /* SDL_timer.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8B22933074900816151 /* SDL_timer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9112933074E00816151 /* SDL_hints.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8B32933074900816151 /* SDL_hints.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9152933074E00816151 /* SDL_revision.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8B42933074900816151 /* SDL_revision.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9192933074E00816151 /* SDL_pixels.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8B52933074A00816151 /* SDL_pixels.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D91D2933074E00816151 /* SDL_messagebox.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8B62933074A00816151 /* SDL_messagebox.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9212933074E00816151 /* SDL_log.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8B72933074A00816151 /* SDL_log.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9252933074E00816151 /* SDL_egl.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8B82933074A00816151 /* SDL_egl.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9292933074E00816151 /* SDL_atomic.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8B92933074A00816151 /* SDL_atomic.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9312933074E00816151 /* SDL_surface.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8BB2933074A00816151 /* SDL_surface.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9352933074E00816151 /* SDL_error.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8BC2933074A00816151 /* SDL_error.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9392933074E00816151 /* SDL_opengles2_gl2ext.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8BD2933074A00816151 /* SDL_opengles2_gl2ext.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D93D2933074E00816151 /* SDL_endian.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8BE2933074A00816151 /* SDL_endian.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9452933074E00816151 /* SDL_opengl_glext.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8C02933074A00816151 /* SDL_opengl_glext.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9492933074E00816151 /* SDL_scancode.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8C12933074B00816151 /* SDL_scancode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D94D2933074E00816151 /* SDL_sensor.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8C22933074B00816151 /* SDL_sensor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9512933074E00816151 /* SDL_keyboard.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8C32933074B00816151 /* SDL_keyboard.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9552933074E00816151 /* SDL_locale.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8C42933074B00816151 /* SDL_locale.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9592933074E00816151 /* SDL_video.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8C52933074B00816151 /* SDL_video.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D95D2933074E00816151 /* SDL_opengles.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8C62933074B00816151 /* SDL_opengles.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9612933074E00816151 /* SDL_opengles2.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8C72933074B00816151 /* SDL_opengles2.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9652933074E00816151 /* SDL_iostream.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8C82933074B00816151 /* SDL_iostream.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9692933074E00816151 /* SDL_opengles2_gl2platform.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8C92933074B00816151 /* SDL_opengles2_gl2platform.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D96D2933074E00816151 /* SDL_hidapi.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8CA2933074B00816151 /* SDL_hidapi.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9712933074E00816151 /* SDL_events.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8CB2933074B00816151 /* SDL_events.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9752933074E00816151 /* SDL_keycode.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8CC2933074B00816151 /* SDL_keycode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9792933074E00816151 /* SDL_thread.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8CD2933074C00816151 /* SDL_thread.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D97D2933074E00816151 /* SDL_blendmode.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8CE2933074C00816151 /* SDL_blendmode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9812933074E00816151 /* SDL.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8CF2933074C00816151 /* SDL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9852933074E00816151 /* SDL_gamepad.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8D02933074C00816151 /* SDL_gamepad.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9892933074E00816151 /* SDL_guid.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8D12933074C00816151 /* SDL_guid.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D98D2933074E00816151 /* SDL_metal.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8D22933074C00816151 /* SDL_metal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9912933074E00816151 /* SDL_joystick.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8D32933074C00816151 /* SDL_joystick.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9952933074E00816151 /* SDL_vulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8D42933074C00816151 /* SDL_vulkan.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9992933074E00816151 /* SDL_misc.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8D52933074C00816151 /* SDL_misc.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D99D2933074E00816151 /* SDL_filesystem.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8D62933074C00816151 /* SDL_filesystem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9A12933074E00816151 /* SDL_clipboard.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8D72933074C00816151 /* SDL_clipboard.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9A52933074E00816151 /* SDL_bits.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8D82933074C00816151 /* SDL_bits.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9A92933074E00816151 /* SDL_loadso.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8D92933074C00816151 /* SDL_loadso.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9AD2933074E00816151 /* SDL_mouse.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8DA2933074D00816151 /* SDL_mouse.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9B12933074E00816151 /* SDL_power.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8DB2933074D00816151 /* SDL_power.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9B92933074E00816151 /* SDL_cpuinfo.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8DD2933074D00816151 /* SDL_cpuinfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9BD2933074E00816151 /* SDL_render.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8DE2933074D00816151 /* SDL_render.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9C12933074E00816151 /* SDL_quit.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8DF2933074D00816151 /* SDL_quit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9C52933074E00816151 /* SDL_assert.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8E02933074D00816151 /* SDL_assert.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9C92933074E00816151 /* SDL_opengl.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8E12933074D00816151 /* SDL_opengl.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9CD2933074E00816151 /* SDL_rect.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8E22933074D00816151 /* SDL_rect.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9D12933074E00816151 /* SDL_copying.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8E32933074D00816151 /* SDL_copying.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9D52933074E00816151 /* SDL_version.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8E42933074D00816151 /* SDL_version.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9D92933074E00816151 /* SDL_close_code.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8E52933074D00816151 /* SDL_close_code.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9DD2933074E00816151 /* SDL_mutex.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8E62933074E00816151 /* SDL_mutex.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9E12933074E00816151 /* SDL_begin_code.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8E72933074E00816151 /* SDL_begin_code.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3F7D9E52933074E00816151 /* SDL_system.h in Headers */ = {isa = PBXBuildFile; fileRef = F3F7D8E82933074E00816151 /* SDL_system.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3FA5A1D2B59ACE000FEAD97 /* yuv_rgb_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = F3FA5A142B59ACE000FEAD97 /* yuv_rgb_internal.h */; }; + F3FA5A1E2B59ACE000FEAD97 /* yuv_rgb_lsx_func.h in Headers */ = {isa = PBXBuildFile; fileRef = F3FA5A152B59ACE000FEAD97 /* yuv_rgb_lsx_func.h */; }; + F3FA5A1F2B59ACE000FEAD97 /* yuv_rgb_sse.h in Headers */ = {isa = PBXBuildFile; fileRef = F3FA5A162B59ACE000FEAD97 /* yuv_rgb_sse.h */; }; + F3FA5A202B59ACE000FEAD97 /* yuv_rgb_std.h in Headers */ = {isa = PBXBuildFile; fileRef = F3FA5A172B59ACE000FEAD97 /* yuv_rgb_std.h */; }; + F3FA5A212B59ACE000FEAD97 /* yuv_rgb_std.c in Sources */ = {isa = PBXBuildFile; fileRef = F3FA5A182B59ACE000FEAD97 /* yuv_rgb_std.c */; }; + F3FA5A222B59ACE000FEAD97 /* yuv_rgb_sse.c in Sources */ = {isa = PBXBuildFile; fileRef = F3FA5A192B59ACE000FEAD97 /* yuv_rgb_sse.c */; }; + F3FA5A232B59ACE000FEAD97 /* yuv_rgb_lsx.c in Sources */ = {isa = PBXBuildFile; fileRef = F3FA5A1A2B59ACE000FEAD97 /* yuv_rgb_lsx.c */; }; + F3FA5A242B59ACE000FEAD97 /* yuv_rgb_lsx.h in Headers */ = {isa = PBXBuildFile; fileRef = F3FA5A1B2B59ACE000FEAD97 /* yuv_rgb_lsx.h */; }; + F3FA5A252B59ACE000FEAD97 /* yuv_rgb_common.h in Headers */ = {isa = PBXBuildFile; fileRef = F3FA5A1C2B59ACE000FEAD97 /* yuv_rgb_common.h */; }; + FA73671D19A540EF004122E4 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA73671C19A540EF004122E4 /* CoreVideo.framework */; platformFilters = (ios, maccatalyst, macos, tvos, watchos, ); }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + F3676F5C2A7885130091160D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F3B38CEC296F63B6005DA6D3; + remoteInfo = SDL.xcframework; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + A75FDB9C23E4CAEF00529352 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 0000035D38C3899C7EFD0000 /* SDL_camera.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_camera.c; sourceTree = ""; }; + 00002B010DB1A70931C20000 /* SDL_filesystem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_filesystem.c; sourceTree = ""; }; + 00003260407E1002EAC10000 /* SDL_main_callbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_main_callbacks.h; sourceTree = ""; }; + 00003F472C51CE7DF6160000 /* SDL_systime.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_systime.c; sourceTree = ""; }; + 00005BD74B46358B33A20000 /* SDL_camera_dummy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_camera_dummy.c; sourceTree = ""; }; + 00005D3EB902478835E20000 /* SDL_syscamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_syscamera.h; sourceTree = ""; }; + 0000641A9BAC11AB3FBE0000 /* SDL_time.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_time.c; sourceTree = ""; }; + 000078E1881E857EBB6C0000 /* SDL_hashtable.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hashtable.c; sourceTree = ""; }; + 000084ED0A56E3ED52F90000 /* SDL_camera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_camera.h; path = SDL3/SDL_camera.h; sourceTree = ""; }; + 00008B79BF08CBCEAC460000 /* SDL_camera_coremedia.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_camera_coremedia.m; sourceTree = ""; }; + 00009003C7148E1126CA0000 /* SDL_camera_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_camera_c.h; sourceTree = ""; }; + 00009366FB9FBBD54C390000 /* SDL_main_callbacks.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_main_callbacks.c; sourceTree = ""; }; + 0000B6ADCD88CAD6610F0000 /* SDL_hashtable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_hashtable.h; sourceTree = ""; }; + 0000BB287BA0A0178C1A0000 /* SDL_sysmain_callbacks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_sysmain_callbacks.m; sourceTree = ""; }; + 0000F4E6AA3EF99DA3C80000 /* SDL_sysfsops.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_sysfsops.c; sourceTree = ""; }; + 0073179D0858DECD00B2BC32 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 0073179F0858DECD00B2BC32 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; }; + 007317C10858E15000B2BC32 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; + 00794D3F09D0C461003FC8A1 /* License.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = License.txt; sourceTree = ""; }; + 00CFA89C106B4BA100758660 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ForceFeedback.framework; path = System/Library/Frameworks/ForceFeedback.framework; sourceTree = SDKROOT; }; + 00D0D08310675DD9004B05EF /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; + 5616CA49252BB2A5005D5928 /* SDL_url.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_url.c; sourceTree = ""; }; + 5616CA4A252BB2A6005D5928 /* SDL_sysurl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sysurl.h; sourceTree = ""; }; + 5616CA4B252BB2A6005D5928 /* SDL_sysurl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_sysurl.m; sourceTree = ""; }; + 564624351FF821B80074AC87 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 564624371FF821CB0074AC87 /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = System/Library/Frameworks/Metal.framework; sourceTree = SDKROOT; }; + 566E26CC246274CB00718109 /* SDL_syslocale.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDL_syslocale.m; path = locale/macos/SDL_syslocale.m; sourceTree = ""; }; + 566E26CD246274CB00718109 /* SDL_locale.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = SDL_locale.c; path = locale/SDL_locale.c; sourceTree = ""; }; + 566E26CE246274CC00718109 /* SDL_syslocale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_syslocale.h; path = locale/SDL_syslocale.h; sourceTree = ""; }; + 56A2373229F9C113003CCA5F /* SDL_sysrwlock.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_sysrwlock.c; sourceTree = ""; }; + 63134A212A7902CF0021E9A6 /* SDL_pen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_pen.h; path = SDL3/SDL_pen.h; sourceTree = ""; }; + 63134A232A7902FD0021E9A6 /* SDL_pen_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_pen_c.h; sourceTree = ""; }; + 63134A242A7902FD0021E9A6 /* SDL_pen.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_pen.c; sourceTree = ""; }; + 75E09158241EA924004729E1 /* SDL_virtualjoystick.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_virtualjoystick.c; sourceTree = ""; }; + 75E09159241EA924004729E1 /* SDL_virtualjoystick_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_virtualjoystick_c.h; sourceTree = ""; }; + 9846B07B287A9020000C35C8 /* SDL_hidapi_shield.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_shield.c; sourceTree = ""; }; + A1626A3D2617006A003F1973 /* SDL_triangle.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_triangle.c; sourceTree = ""; }; + A1626A512617008C003F1973 /* SDL_triangle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_triangle.h; sourceTree = ""; }; + A1BB8B6127F6CF320057CFA8 /* SDL_list.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_list.c; sourceTree = ""; }; + A1BB8B6227F6CF330057CFA8 /* SDL_list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_list.h; sourceTree = ""; }; + A7381E931D8B69C300B177DD /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + A7381E951D8B69D600B177DD /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; }; + A75FDAA523E2792500529352 /* hid.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = hid.m; sourceTree = ""; }; + A75FDAAC23E2795C00529352 /* SDL_hidapi_steam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_steam.c; sourceTree = ""; }; + A75FDAB923E28A7A00529352 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; + A75FDABD23E28B6200529352 /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = System/Library/Frameworks/GameController.framework; sourceTree = SDKROOT; }; + A75FDABF23E28B8000529352 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; + A75FDAC123E28B9600529352 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + A75FDAC323E28BA700529352 /* CoreBluetooth.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreBluetooth.framework; path = System/Library/Frameworks/CoreBluetooth.framework; sourceTree = SDKROOT; }; + A75FDB5723E39E6100529352 /* hidapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = hidapi.h; path = hidapi/hidapi.h; sourceTree = ""; }; + A75FDB9223E4C8DB00529352 /* hid.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hid.c; sourceTree = ""; }; + A75FDBA323E4CB6F00529352 /* LICENSE-bsd.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "LICENSE-bsd.txt"; sourceTree = ""; }; + A75FDBA423E4CB6F00529352 /* AUTHORS.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AUTHORS.txt; sourceTree = ""; }; + A75FDBA523E4CB6F00529352 /* LICENSE-orig.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "LICENSE-orig.txt"; sourceTree = ""; }; + A75FDBA623E4CB6F00529352 /* LICENSE-gpl3.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "LICENSE-gpl3.txt"; sourceTree = ""; }; + A75FDBA723E4CB6F00529352 /* LICENSE.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE.txt; sourceTree = ""; }; + A75FDBC323EA380300529352 /* SDL_hidapi_rumble.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_hidapi_rumble.h; sourceTree = ""; }; + A75FDBC423EA380300529352 /* SDL_hidapi_rumble.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_rumble.c; sourceTree = ""; }; + A797456F2B2E9D39009D224A /* SDL_hidapi_steamdeck.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_steamdeck.c; sourceTree = ""; }; + A7D8A57123E2513D00DCD162 /* SDL.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL.c; sourceTree = ""; }; + A7D8A57323E2513D00DCD162 /* SDL_spinlock.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_spinlock.c; sourceTree = ""; }; + A7D8A57423E2513D00DCD162 /* SDL_atomic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_atomic.c; sourceTree = ""; }; + A7D8A57523E2513D00DCD162 /* SDL_error_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_error_c.h; sourceTree = ""; }; + A7D8A57823E2513D00DCD162 /* SDL_dummysensor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_dummysensor.h; sourceTree = ""; }; + A7D8A57923E2513D00DCD162 /* SDL_dummysensor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_dummysensor.c; sourceTree = ""; }; + A7D8A57B23E2513D00DCD162 /* SDL_coremotionsensor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_coremotionsensor.h; sourceTree = ""; }; + A7D8A57C23E2513D00DCD162 /* SDL_coremotionsensor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_coremotionsensor.m; sourceTree = ""; }; + A7D8A57D23E2513D00DCD162 /* SDL_syssensor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_syssensor.h; sourceTree = ""; }; + A7D8A58123E2513D00DCD162 /* SDL_sensor_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sensor_c.h; sourceTree = ""; }; + A7D8A58223E2513D00DCD162 /* SDL_sensor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_sensor.c; sourceTree = ""; }; + A7D8A58323E2513D00DCD162 /* SDL_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_internal.h; sourceTree = ""; }; + A7D8A5AB23E2513D00DCD162 /* SDL_hints.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hints.c; sourceTree = ""; }; + A7D8A5C423E2513D00DCD162 /* SDL_syshaptic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_syshaptic.c; sourceTree = ""; }; + A7D8A5C523E2513D00DCD162 /* SDL_haptic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_haptic.c; sourceTree = ""; }; + A7D8A5C623E2513D00DCD162 /* SDL_haptic_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_haptic_c.h; sourceTree = ""; }; + A7D8A5CC23E2513D00DCD162 /* SDL_syshaptic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_syshaptic.h; sourceTree = ""; }; + A7D8A5CE23E2513D00DCD162 /* SDL_syshaptic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_syshaptic.c; sourceTree = ""; }; + A7D8A5CF23E2513D00DCD162 /* SDL_syshaptic_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_syshaptic_c.h; sourceTree = ""; }; + A7D8A5D823E2513D00DCD162 /* SDL_dynapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_dynapi.h; sourceTree = ""; }; + A7D8A5D923E2513D00DCD162 /* SDL_dynapi_overrides.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_dynapi_overrides.h; sourceTree = ""; }; + A7D8A5DA23E2513D00DCD162 /* SDL_dynapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_dynapi.c; sourceTree = ""; }; + A7D8A5DB23E2513D00DCD162 /* SDL_dynapi_procs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_dynapi_procs.h; sourceTree = ""; }; + A7D8A5DD23E2513D00DCD162 /* SDL_log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_log.c; sourceTree = ""; }; + A7D8A5DF23E2513D00DCD162 /* SDL_timer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_timer.c; sourceTree = ""; }; + A7D8A5E023E2513D00DCD162 /* SDL_timer_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_timer_c.h; sourceTree = ""; }; + A7D8A5E823E2513D00DCD162 /* SDL_systimer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_systimer.c; sourceTree = ""; }; + A7D8A5EE23E2513D00DCD162 /* SDL_offscreenevents_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_offscreenevents_c.h; sourceTree = ""; }; + A7D8A5EF23E2513D00DCD162 /* SDL_offscreenwindow.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_offscreenwindow.c; sourceTree = ""; }; + A7D8A5F023E2513D00DCD162 /* SDL_offscreenevents.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_offscreenevents.c; sourceTree = ""; }; + A7D8A5F123E2513D00DCD162 /* SDL_offscreenvideo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_offscreenvideo.h; sourceTree = ""; }; + A7D8A5F223E2513D00DCD162 /* SDL_offscreenframebuffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_offscreenframebuffer.c; sourceTree = ""; }; + A7D8A5F423E2513D00DCD162 /* SDL_offscreenframebuffer_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_offscreenframebuffer_c.h; sourceTree = ""; }; + A7D8A5F523E2513D00DCD162 /* SDL_offscreenwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_offscreenwindow.h; sourceTree = ""; }; + A7D8A5F623E2513D00DCD162 /* SDL_offscreenvideo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_offscreenvideo.c; sourceTree = ""; }; + A7D8A60223E2513D00DCD162 /* SDL_blit_slow.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_blit_slow.c; sourceTree = ""; }; + A7D8A60323E2513D00DCD162 /* SDL_stretch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_stretch.c; sourceTree = ""; }; + A7D8A60423E2513D00DCD162 /* SDL_egl_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_egl_c.h; sourceTree = ""; }; + A7D8A60623E2513D00DCD162 /* SDL_nullframebuffer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_nullframebuffer.c; sourceTree = ""; }; + A7D8A60723E2513D00DCD162 /* SDL_nullframebuffer_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_nullframebuffer_c.h; sourceTree = ""; }; + A7D8A60823E2513D00DCD162 /* SDL_nullvideo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_nullvideo.c; sourceTree = ""; }; + A7D8A60923E2513D00DCD162 /* SDL_nullevents.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_nullevents.c; sourceTree = ""; }; + A7D8A60A23E2513D00DCD162 /* SDL_nullvideo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_nullvideo.h; sourceTree = ""; }; + A7D8A60B23E2513D00DCD162 /* SDL_nullevents_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_nullevents_c.h; sourceTree = ""; }; + A7D8A60C23E2513D00DCD162 /* SDL_rect_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_rect_c.h; sourceTree = ""; }; + A7D8A60E23E2513D00DCD162 /* SDL_video.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_video.c; sourceTree = ""; }; + A7D8A61423E2513D00DCD162 /* SDL_surface.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_surface.c; sourceTree = ""; }; + A7D8A61523E2513D00DCD162 /* SDL_RLEaccel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_RLEaccel.c; sourceTree = ""; }; + A7D8A61623E2513D00DCD162 /* SDL_blit_copy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_blit_copy.c; sourceTree = ""; }; + A7D8A61723E2513D00DCD162 /* SDL_sysvideo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sysvideo.h; sourceTree = ""; }; + A7D8A61923E2513D00DCD162 /* SDL_uikitview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitview.h; sourceTree = ""; }; + A7D8A61A23E2513D00DCD162 /* SDL_uikitwindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitwindow.m; sourceTree = ""; }; + A7D8A61B23E2513D00DCD162 /* SDL_uikitmessagebox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitmessagebox.m; sourceTree = ""; }; + A7D8A61C23E2513D00DCD162 /* SDL_uikitevents.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitevents.m; sourceTree = ""; }; + A7D8A61D23E2513D00DCD162 /* SDL_uikitmetalview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitmetalview.h; sourceTree = ""; }; + A7D8A61E23E2513D00DCD162 /* SDL_uikitappdelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitappdelegate.m; sourceTree = ""; }; + A7D8A61F23E2513D00DCD162 /* SDL_uikitmodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitmodes.h; sourceTree = ""; }; + A7D8A62023E2513D00DCD162 /* SDL_uikitopenglview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitopenglview.m; sourceTree = ""; }; + A7D8A62123E2513D00DCD162 /* SDL_uikitclipboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitclipboard.h; sourceTree = ""; }; + A7D8A62223E2513D00DCD162 /* SDL_uikitvideo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitvideo.h; sourceTree = ""; }; + A7D8A62323E2513D00DCD162 /* SDL_uikitopengles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitopengles.m; sourceTree = ""; }; + A7D8A62423E2513D00DCD162 /* SDL_uikitviewcontroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitviewcontroller.h; sourceTree = ""; }; + A7D8A62523E2513D00DCD162 /* SDL_uikitvulkan.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitvulkan.m; sourceTree = ""; }; + A7D8A62623E2513D00DCD162 /* SDL_uikitmessagebox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitmessagebox.h; sourceTree = ""; }; + A7D8A62723E2513D00DCD162 /* SDL_uikitwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitwindow.h; sourceTree = ""; }; + A7D8A62923E2513D00DCD162 /* SDL_uikitview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitview.m; sourceTree = ""; }; + A7D8A62A23E2513D00DCD162 /* SDL_uikitclipboard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitclipboard.m; sourceTree = ""; }; + A7D8A62B23E2513D00DCD162 /* SDL_uikitopenglview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitopenglview.h; sourceTree = ""; }; + A7D8A62C23E2513D00DCD162 /* SDL_uikitmodes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitmodes.m; sourceTree = ""; }; + A7D8A62D23E2513D00DCD162 /* SDL_uikitevents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitevents.h; sourceTree = ""; }; + A7D8A62E23E2513D00DCD162 /* SDL_uikitmetalview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitmetalview.m; sourceTree = ""; }; + A7D8A62F23E2513D00DCD162 /* SDL_uikitappdelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitappdelegate.h; sourceTree = ""; }; + A7D8A63023E2513D00DCD162 /* SDL_uikitviewcontroller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitviewcontroller.m; sourceTree = ""; }; + A7D8A63123E2513D00DCD162 /* SDL_uikitopengles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitopengles.h; sourceTree = ""; }; + A7D8A63223E2513D00DCD162 /* SDL_uikitvideo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_uikitvideo.m; sourceTree = ""; }; + A7D8A63323E2513D00DCD162 /* SDL_uikitvulkan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_uikitvulkan.h; sourceTree = ""; }; + A7D8A63423E2513D00DCD162 /* SDL_rect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_rect.c; sourceTree = ""; }; + A7D8A63E23E2513D00DCD162 /* SDL_vulkan_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_vulkan_internal.h; sourceTree = ""; }; + A7D8A63F23E2513D00DCD162 /* SDL_blit_auto.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_blit_auto.c; sourceTree = ""; }; + A7D8A64023E2513D00DCD162 /* SDL_vulkan_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_vulkan_utils.c; sourceTree = ""; }; + A7D8A64223E2513D00DCD162 /* SDL_blit_N.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_blit_N.c; sourceTree = ""; }; + A7D8A64C23E2513D00DCD162 /* SDL_blit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_blit.c; sourceTree = ""; }; + A7D8A64D23E2513D00DCD162 /* SDL_pixels.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_pixels.c; sourceTree = ""; }; + A7D8A66223E2513E00DCD162 /* SDL_blit_0.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_blit_0.c; sourceTree = ""; }; + A7D8A66323E2513E00DCD162 /* SDL_blit_slow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_blit_slow.h; sourceTree = ""; }; + A7D8A66423E2513E00DCD162 /* SDL_blit_A.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_blit_A.c; sourceTree = ""; }; + A7D8A67B23E2513E00DCD162 /* SDL_clipboard.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_clipboard.c; sourceTree = ""; }; + A7D8A67C23E2513E00DCD162 /* SDL_yuv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_yuv.c; sourceTree = ""; }; + A7D8A67F23E2513E00DCD162 /* SDL_cocoaopengl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoaopengl.m; sourceTree = ""; }; + A7D8A68023E2513E00DCD162 /* SDL_cocoakeyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cocoakeyboard.h; sourceTree = ""; }; + A7D8A68123E2513E00DCD162 /* SDL_cocoamodes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoamodes.m; sourceTree = ""; }; + A7D8A68223E2513E00DCD162 /* SDL_cocoaopengles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoaopengles.m; sourceTree = ""; }; + A7D8A68323E2513E00DCD162 /* SDL_cocoavulkan.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoavulkan.m; sourceTree = ""; }; + A7D8A68423E2513E00DCD162 /* SDL_cocoawindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoawindow.m; sourceTree = ""; }; + A7D8A68523E2513E00DCD162 /* SDL_cocoavideo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoavideo.m; sourceTree = ""; }; + A7D8A68623E2513E00DCD162 /* SDL_cocoametalview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cocoametalview.h; sourceTree = ""; }; + A7D8A68723E2513E00DCD162 /* SDL_cocoamouse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoamouse.m; sourceTree = ""; }; + A7D8A68923E2513E00DCD162 /* SDL_cocoaevents.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoaevents.m; sourceTree = ""; }; + A7D8A68A23E2513E00DCD162 /* SDL_cocoaclipboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cocoaclipboard.h; sourceTree = ""; }; + A7D8A68B23E2513E00DCD162 /* SDL_cocoamessagebox.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoamessagebox.m; sourceTree = ""; }; + A7D8A68C23E2513E00DCD162 /* SDL_cocoakeyboard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoakeyboard.m; sourceTree = ""; }; + A7D8A68D23E2513E00DCD162 /* SDL_cocoaopengl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cocoaopengl.h; sourceTree = ""; }; + A7D8A68F23E2513E00DCD162 /* SDL_cocoavulkan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cocoavulkan.h; sourceTree = ""; }; + A7D8A69023E2513E00DCD162 /* SDL_cocoaopengles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cocoaopengles.h; sourceTree = ""; }; + A7D8A69123E2513E00DCD162 /* SDL_cocoamodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cocoamodes.h; sourceTree = ""; }; + A7D8A69223E2513E00DCD162 /* SDL_cocoawindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cocoawindow.h; sourceTree = ""; }; + A7D8A69323E2513E00DCD162 /* SDL_cocoavideo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cocoavideo.h; sourceTree = ""; }; + A7D8A69423E2513E00DCD162 /* SDL_cocoamessagebox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cocoamessagebox.h; sourceTree = ""; }; + A7D8A69523E2513E00DCD162 /* SDL_cocoaclipboard.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoaclipboard.m; sourceTree = ""; }; + A7D8A69623E2513E00DCD162 /* SDL_cocoaevents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cocoaevents.h; sourceTree = ""; }; + A7D8A69823E2513E00DCD162 /* SDL_cocoamouse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cocoamouse.h; sourceTree = ""; }; + A7D8A69923E2513E00DCD162 /* SDL_cocoametalview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoametalview.m; sourceTree = ""; }; + A7D8A6B623E2513E00DCD162 /* SDL_egl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_egl.c; sourceTree = ""; }; + A7D8A6FA23E2513E00DCD162 /* SDL_blit_1.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_blit_1.c; sourceTree = ""; }; + A7D8A72323E2513E00DCD162 /* gl2ext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gl2ext.h; sourceTree = ""; }; + A7D8A72423E2513E00DCD162 /* gl2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gl2.h; sourceTree = ""; }; + A7D8A72523E2513E00DCD162 /* gl2platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gl2platform.h; sourceTree = ""; }; + A7D8A72723E2513E00DCD162 /* khrplatform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = khrplatform.h; sourceTree = ""; }; + A7D8A72923E2513E00DCD162 /* egl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = egl.h; sourceTree = ""; }; + A7D8A72A23E2513E00DCD162 /* eglext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eglext.h; sourceTree = ""; }; + A7D8A72B23E2513E00DCD162 /* eglplatform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eglplatform.h; sourceTree = ""; }; + A7D8A72D23E2513E00DCD162 /* vk_layer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vk_layer.h; sourceTree = ""; }; + A7D8A72E23E2513E00DCD162 /* vk_icd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vk_icd.h; sourceTree = ""; }; + A7D8A72F23E2513E00DCD162 /* vulkan_vi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_vi.h; sourceTree = ""; }; + A7D8A73023E2513E00DCD162 /* vulkan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan.h; sourceTree = ""; }; + A7D8A73123E2513E00DCD162 /* vk_platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vk_platform.h; sourceTree = ""; }; + A7D8A73223E2513E00DCD162 /* vulkan.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = vulkan.hpp; sourceTree = ""; }; + A7D8A73323E2513E00DCD162 /* vulkan_fuchsia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_fuchsia.h; sourceTree = ""; }; + A7D8A73423E2513E00DCD162 /* vulkan_wayland.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_wayland.h; sourceTree = ""; }; + A7D8A73523E2513E00DCD162 /* vulkan_win32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_win32.h; sourceTree = ""; }; + A7D8A73623E2513E00DCD162 /* vulkan_macos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_macos.h; sourceTree = ""; }; + A7D8A73723E2513E00DCD162 /* vulkan_xlib_xrandr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_xlib_xrandr.h; sourceTree = ""; }; + A7D8A73823E2513E00DCD162 /* vulkan_xcb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_xcb.h; sourceTree = ""; }; + A7D8A73923E2513E00DCD162 /* vulkan_mir.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_mir.h; sourceTree = ""; }; + A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_xlib.h; sourceTree = ""; }; + A7D8A73B23E2513E00DCD162 /* vulkan_ios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_ios.h; sourceTree = ""; }; + A7D8A73C23E2513E00DCD162 /* vulkan_core.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_core.h; sourceTree = ""; }; + A7D8A73D23E2513E00DCD162 /* vk_sdk_platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vk_sdk_platform.h; sourceTree = ""; }; + A7D8A73E23E2513E00DCD162 /* vulkan_android.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vulkan_android.h; sourceTree = ""; }; + A7D8A73F23E2513E00DCD162 /* SDL_blit_auto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_blit_auto.h; sourceTree = ""; }; + A7D8A74023E2513E00DCD162 /* SDL_pixels_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_pixels_c.h; sourceTree = ""; }; + A7D8A76623E2513E00DCD162 /* SDL_blit_copy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_blit_copy.h; sourceTree = ""; }; + A7D8A76723E2513E00DCD162 /* SDL_RLEaccel_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_RLEaccel_c.h; sourceTree = ""; }; + A7D8A76823E2513E00DCD162 /* SDL_fillrect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_fillrect.c; sourceTree = ""; }; + A7D8A76A23E2513E00DCD162 /* SDL_yuv_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_yuv_c.h; sourceTree = ""; }; + A7D8A76B23E2513E00DCD162 /* SDL_blit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_blit.h; sourceTree = ""; }; + A7D8A77023E2513E00DCD162 /* yuv_rgb_sse_func.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = yuv_rgb_sse_func.h; sourceTree = ""; }; + A7D8A77123E2513E00DCD162 /* yuv_rgb_std_func.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = yuv_rgb_std_func.h; sourceTree = ""; }; + A7D8A77223E2513E00DCD162 /* yuv_rgb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = yuv_rgb.h; sourceTree = ""; }; + A7D8A77323E2513E00DCD162 /* SDL_bmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_bmp.c; sourceTree = ""; }; + A7D8A77523E2513E00DCD162 /* SDL_cpuinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_cpuinfo.c; sourceTree = ""; }; + A7D8A77723E2513E00DCD162 /* SDL_systhread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_systhread.h; sourceTree = ""; }; + A7D8A77823E2513E00DCD162 /* SDL_thread_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_thread_c.h; sourceTree = ""; }; + A7D8A77923E2513E00DCD162 /* SDL_thread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_thread.c; sourceTree = ""; }; + A7D8A78223E2513E00DCD162 /* SDL_systls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_systls.c; sourceTree = ""; }; + A7D8A78323E2513E00DCD162 /* SDL_syssem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_syssem.c; sourceTree = ""; }; + A7D8A78423E2513E00DCD162 /* SDL_systhread_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_systhread_c.h; sourceTree = ""; }; + A7D8A78523E2513E00DCD162 /* SDL_syscond.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_syscond.c; sourceTree = ""; }; + A7D8A78623E2513E00DCD162 /* SDL_systhread.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_systhread.c; sourceTree = ""; }; + A7D8A78723E2513E00DCD162 /* SDL_sysmutex.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_sysmutex.c; sourceTree = ""; }; + A7D8A78823E2513E00DCD162 /* SDL_sysmutex_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sysmutex_c.h; sourceTree = ""; }; + A7D8A79E23E2513E00DCD162 /* SDL_gamepad_db.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_gamepad_db.h; sourceTree = ""; }; + A7D8A7A023E2513E00DCD162 /* SDL_sysjoystick.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_sysjoystick.c; sourceTree = ""; }; + A7D8A7A523E2513E00DCD162 /* SDL_steamcontroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_steamcontroller.h; sourceTree = ""; }; + A7D8A7A723E2513E00DCD162 /* SDL_steamcontroller.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_steamcontroller.c; sourceTree = ""; }; + A7D8A7A923E2513E00DCD162 /* SDL_joystick.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_joystick.c; sourceTree = ""; }; + A7D8A7AD23E2513E00DCD162 /* SDL_gamepad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_gamepad.c; sourceTree = ""; }; + A7D8A7C223E2513E00DCD162 /* SDL_hidapi_xbox360.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_xbox360.c; sourceTree = ""; }; + A7D8A7C323E2513E00DCD162 /* SDL_hidapi_ps4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_ps4.c; sourceTree = ""; }; + A7D8A7C423E2513E00DCD162 /* SDL_hidapijoystick.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapijoystick.c; sourceTree = ""; }; + A7D8A7C523E2513E00DCD162 /* SDL_hidapi_xboxone.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_xboxone.c; sourceTree = ""; }; + A7D8A7C623E2513E00DCD162 /* SDL_hidapi_switch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_switch.c; sourceTree = ""; }; + A7D8A7C723E2513E00DCD162 /* SDL_hidapijoystick_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_hidapijoystick_c.h; sourceTree = ""; }; + A7D8A7C823E2513E00DCD162 /* SDL_hidapi_xbox360w.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_xbox360w.c; sourceTree = ""; }; + A7D8A7C923E2513E00DCD162 /* SDL_hidapi_gamecube.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_gamecube.c; sourceTree = ""; }; + A7D8A7CB23E2513E00DCD162 /* usb_ids.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = usb_ids.h; sourceTree = ""; }; + A7D8A7CF23E2513E00DCD162 /* SDL_sysjoystick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sysjoystick.h; sourceTree = ""; }; + A7D8A7D023E2513E00DCD162 /* SDL_joystick_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_joystick_c.h; sourceTree = ""; }; + A7D8A7D923E2513E00DCD162 /* controller_type.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = controller_type.h; sourceTree = ""; }; + A7D8A7DB23E2513F00DCD162 /* SDL_iostream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_iostream.c; sourceTree = ""; }; + A7D8A7DD23E2513F00DCD162 /* SDL_iostreambundlesupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_iostreambundlesupport.h; sourceTree = ""; }; + A7D8A7DE23E2513F00DCD162 /* SDL_iostreambundlesupport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_iostreambundlesupport.m; sourceTree = ""; }; + A7D8A7E123E2513F00DCD162 /* SDL_syspower.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_syspower.m; sourceTree = ""; }; + A7D8A7E223E2513F00DCD162 /* SDL_syspower.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_syspower.h; sourceTree = ""; }; + A7D8A7E723E2513F00DCD162 /* SDL_power.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_power.c; sourceTree = ""; }; + A7D8A7EB23E2513F00DCD162 /* SDL_syspower.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_syspower.c; sourceTree = ""; }; + A7D8A7F423E2513F00DCD162 /* SDL_syspower.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_syspower.h; sourceTree = ""; }; + A7D8A7F523E2513F00DCD162 /* SDL_assert_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_assert_c.h; sourceTree = ""; }; + A7D8A7F823E2513F00DCD162 /* SDL_sysfilesystem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_sysfilesystem.c; sourceTree = ""; }; + A7D8A7FE23E2513F00DCD162 /* SDL_sysfilesystem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_sysfilesystem.m; sourceTree = ""; }; + A7D8A81423E2513F00DCD162 /* SDL_hidapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi.c; sourceTree = ""; }; + A7D8A85F23E2513F00DCD162 /* SDL_sysloadso.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_sysloadso.c; sourceTree = ""; }; + A7D8A86323E2513F00DCD162 /* SDL_sysloadso.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_sysloadso.c; sourceTree = ""; }; + A7D8A86523E2513F00DCD162 /* SDL_mixer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_mixer.c; sourceTree = ""; }; + A7D8A86623E2513F00DCD162 /* SDL_wave.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_wave.c; sourceTree = ""; }; + A7D8A87123E2513F00DCD162 /* SDL_dummyaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_dummyaudio.h; sourceTree = ""; }; + A7D8A87223E2513F00DCD162 /* SDL_dummyaudio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_dummyaudio.c; sourceTree = ""; }; + A7D8A87323E2513F00DCD162 /* SDL_audio_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_audio_c.h; sourceTree = ""; }; + A7D8A87723E2513F00DCD162 /* SDL_audiodev_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_audiodev_c.h; sourceTree = ""; }; + A7D8A88F23E2513F00DCD162 /* SDL_audiodev.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_audiodev.c; sourceTree = ""; }; + A7D8A89F23E2513F00DCD162 /* SDL_sysaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sysaudio.h; sourceTree = ""; }; + A7D8A8A023E2513F00DCD162 /* SDL_audiotypecvt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_audiotypecvt.c; sourceTree = ""; }; + A7D8A8A123E2513F00DCD162 /* SDL_audiocvt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_audiocvt.c; sourceTree = ""; }; + A7D8A8A223E2513F00DCD162 /* SDL_wave.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_wave.h; sourceTree = ""; }; + A7D8A8B023E2513F00DCD162 /* SDL_diskaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_diskaudio.h; sourceTree = ""; }; + A7D8A8B123E2513F00DCD162 /* SDL_diskaudio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_diskaudio.c; sourceTree = ""; }; + A7D8A8B823E2513F00DCD162 /* SDL_audio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_audio.c; sourceTree = ""; }; + A7D8A8BA23E2513F00DCD162 /* SDL_coreaudio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_coreaudio.h; sourceTree = ""; }; + A7D8A8BB23E2513F00DCD162 /* SDL_coreaudio.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_coreaudio.m; sourceTree = ""; }; + A7D8A8BF23E2513F00DCD162 /* SDL_error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_error.c; sourceTree = ""; }; + A7D8A8D123E2514000DCD162 /* SDL_hints_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_hints_c.h; sourceTree = ""; }; + A7D8A8D323E2514000DCD162 /* SDL_iconv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_iconv.c; sourceTree = ""; }; + A7D8A8D423E2514000DCD162 /* SDL_getenv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_getenv.c; sourceTree = ""; }; + A7D8A8D523E2514000DCD162 /* SDL_string.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_string.c; sourceTree = ""; }; + A7D8A8D623E2514000DCD162 /* SDL_strtokr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_strtokr.c; sourceTree = ""; }; + A7D8A8D723E2514000DCD162 /* SDL_qsort.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_qsort.c; sourceTree = ""; }; + A7D8A8D823E2514000DCD162 /* SDL_stdlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_stdlib.c; sourceTree = ""; }; + A7D8A8D923E2514000DCD162 /* SDL_malloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_malloc.c; sourceTree = ""; }; + A7D8A8DB23E2514000DCD162 /* SDL_render.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_render.c; sourceTree = ""; }; + A7D8A8DC23E2514000DCD162 /* SDL_d3dmath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_d3dmath.h; sourceTree = ""; }; + A7D8A8DE23E2514000DCD162 /* SDL_render_metal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_render_metal.m; sourceTree = ""; }; + A7D8A8DF23E2514000DCD162 /* SDL_shaders_metal_ios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_metal_ios.h; sourceTree = ""; }; + A7D8A8E023E2514000DCD162 /* SDL_shaders_metal.metal */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.metal; path = SDL_shaders_metal.metal; sourceTree = ""; }; + A7D8A8E223E2514000DCD162 /* SDL_shaders_metal_macos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_metal_macos.h; sourceTree = ""; }; + A7D8A8E323E2514000DCD162 /* SDL_shaders_metal_tvos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_metal_tvos.h; sourceTree = ""; }; + A7D8A8EC23E2514000DCD162 /* SDL_yuv_sw_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_yuv_sw_c.h; sourceTree = ""; }; + A7D8A8ED23E2514000DCD162 /* SDL_yuv_sw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_yuv_sw.c; sourceTree = ""; }; + A7D8A8EE23E2514000DCD162 /* SDL_sysrender.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sysrender.h; sourceTree = ""; }; + A7D8A8F023E2514000DCD162 /* SDL_blendpoint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_blendpoint.c; sourceTree = ""; }; + A7D8A8F123E2514000DCD162 /* SDL_drawline.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_drawline.c; sourceTree = ""; }; + A7D8A8F223E2514000DCD162 /* SDL_blendline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_blendline.h; sourceTree = ""; }; + A7D8A8F323E2514000DCD162 /* SDL_drawpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_drawpoint.h; sourceTree = ""; }; + A7D8A8F423E2514000DCD162 /* SDL_rotate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_rotate.c; sourceTree = ""; }; + A7D8A8F523E2514000DCD162 /* SDL_render_sw_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_render_sw_c.h; sourceTree = ""; }; + A7D8A8F623E2514000DCD162 /* SDL_blendfillrect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_blendfillrect.h; sourceTree = ""; }; + A7D8A8F723E2514000DCD162 /* SDL_drawline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_drawline.h; sourceTree = ""; }; + A7D8A8F823E2514000DCD162 /* SDL_blendpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_blendpoint.h; sourceTree = ""; }; + A7D8A8F923E2514000DCD162 /* SDL_render_sw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_render_sw.c; sourceTree = ""; }; + A7D8A8FA23E2514000DCD162 /* SDL_draw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_draw.h; sourceTree = ""; }; + A7D8A8FB23E2514000DCD162 /* SDL_blendline.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_blendline.c; sourceTree = ""; }; + A7D8A8FC23E2514000DCD162 /* SDL_drawpoint.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_drawpoint.c; sourceTree = ""; }; + A7D8A8FD23E2514000DCD162 /* SDL_blendfillrect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_blendfillrect.c; sourceTree = ""; }; + A7D8A8FE23E2514000DCD162 /* SDL_rotate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_rotate.h; sourceTree = ""; }; + A7D8A8FF23E2514000DCD162 /* SDL_d3dmath.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_d3dmath.c; sourceTree = ""; }; + A7D8A90423E2514000DCD162 /* SDL_render_gles2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_render_gles2.c; sourceTree = ""; }; + A7D8A90523E2514000DCD162 /* SDL_shaders_gles2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_gles2.h; sourceTree = ""; }; + A7D8A90623E2514000DCD162 /* SDL_gles2funcs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_gles2funcs.h; sourceTree = ""; }; + A7D8A90723E2514000DCD162 /* SDL_shaders_gles2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_shaders_gles2.c; sourceTree = ""; }; + A7D8A90D23E2514000DCD162 /* SDL_shaders_gl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_shaders_gl.h; sourceTree = ""; }; + A7D8A90E23E2514000DCD162 /* SDL_glfuncs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_glfuncs.h; sourceTree = ""; }; + A7D8A90F23E2514000DCD162 /* SDL_render_gl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_render_gl.c; sourceTree = ""; }; + A7D8A91023E2514000DCD162 /* SDL_shaders_gl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_shaders_gl.c; sourceTree = ""; }; + A7D8A91223E2514000DCD162 /* s_sin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = s_sin.c; sourceTree = ""; }; + A7D8A91323E2514000DCD162 /* s_cos.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = s_cos.c; sourceTree = ""; }; + A7D8A91423E2514000DCD162 /* s_copysign.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = s_copysign.c; sourceTree = ""; }; + A7D8A91523E2514000DCD162 /* s_fabs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = s_fabs.c; sourceTree = ""; }; + A7D8A91623E2514000DCD162 /* k_rem_pio2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = k_rem_pio2.c; sourceTree = ""; }; + A7D8A91723E2514000DCD162 /* k_sin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = k_sin.c; sourceTree = ""; }; + A7D8A91823E2514000DCD162 /* s_atan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = s_atan.c; sourceTree = ""; }; + A7D8A91923E2514000DCD162 /* k_cos.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = k_cos.c; sourceTree = ""; }; + A7D8A91A23E2514000DCD162 /* s_scalbn.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = s_scalbn.c; sourceTree = ""; }; + A7D8A91B23E2514000DCD162 /* math_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = math_private.h; sourceTree = ""; }; + A7D8A91C23E2514000DCD162 /* e_pow.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = e_pow.c; sourceTree = ""; }; + A7D8A91D23E2514000DCD162 /* e_atan2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = e_atan2.c; sourceTree = ""; }; + A7D8A91E23E2514000DCD162 /* s_tan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = s_tan.c; sourceTree = ""; }; + A7D8A91F23E2514000DCD162 /* e_rem_pio2.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = e_rem_pio2.c; sourceTree = ""; }; + A7D8A92023E2514000DCD162 /* e_fmod.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = e_fmod.c; sourceTree = ""; }; + A7D8A92123E2514000DCD162 /* e_exp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = e_exp.c; sourceTree = ""; }; + A7D8A92223E2514000DCD162 /* e_log10.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = e_log10.c; sourceTree = ""; }; + A7D8A92323E2514000DCD162 /* e_log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = e_log.c; sourceTree = ""; }; + A7D8A92423E2514000DCD162 /* e_sqrt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = e_sqrt.c; sourceTree = ""; }; + A7D8A92523E2514000DCD162 /* s_floor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = s_floor.c; sourceTree = ""; }; + A7D8A92623E2514000DCD162 /* math_libm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = math_libm.h; sourceTree = ""; }; + A7D8A92723E2514000DCD162 /* k_tan.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = k_tan.c; sourceTree = ""; }; + A7D8A92A23E2514000DCD162 /* SDL_mouse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_mouse.c; sourceTree = ""; }; + A7D8A92B23E2514000DCD162 /* SDL_mouse_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_mouse_c.h; sourceTree = ""; }; + A7D8A92C23E2514000DCD162 /* scancodes_windows.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scancodes_windows.h; sourceTree = ""; }; + A7D8A92D23E2514000DCD162 /* SDL_displayevents.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_displayevents.c; sourceTree = ""; }; + A7D8A92E23E2514000DCD162 /* SDL_dropevents_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_dropevents_c.h; sourceTree = ""; }; + A7D8A92F23E2514000DCD162 /* SDL_windowevents.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_windowevents.c; sourceTree = ""; }; + A7D8A93123E2514000DCD162 /* SDL_displayevents_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_displayevents_c.h; sourceTree = ""; }; + A7D8A93223E2514000DCD162 /* blank_cursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = blank_cursor.h; sourceTree = ""; }; + A7D8A93323E2514000DCD162 /* default_cursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = default_cursor.h; sourceTree = ""; }; + A7D8A93423E2514000DCD162 /* scancodes_darwin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scancodes_darwin.h; sourceTree = ""; }; + A7D8A93523E2514000DCD162 /* SDL_events.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_events.c; sourceTree = ""; }; + A7D8A93623E2514000DCD162 /* scancodes_linux.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scancodes_linux.h; sourceTree = ""; }; + A7D8A93723E2514000DCD162 /* SDL_touch_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_touch_c.h; sourceTree = ""; }; + A7D8A93823E2514000DCD162 /* SDL_keyboard.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_keyboard.c; sourceTree = ""; }; + A7D8A93923E2514000DCD162 /* SDL_clipboardevents_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_clipboardevents_c.h; sourceTree = ""; }; + A7D8A93A23E2514000DCD162 /* SDL_clipboardevents.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_clipboardevents.c; sourceTree = ""; }; + A7D8A93B23E2514000DCD162 /* SDL_dropevents.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_dropevents.c; sourceTree = ""; }; + A7D8A93C23E2514000DCD162 /* SDL_quit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_quit.c; sourceTree = ""; }; + A7D8A93D23E2514000DCD162 /* SDL_keyboard_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_keyboard_c.h; sourceTree = ""; }; + A7D8A93E23E2514000DCD162 /* SDL_touch.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_touch.c; sourceTree = ""; }; + A7D8A94123E2514000DCD162 /* scancodes_xfree86.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scancodes_xfree86.h; sourceTree = ""; }; + A7D8A94223E2514000DCD162 /* SDL_events_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_events_c.h; sourceTree = ""; }; + A7D8A94323E2514000DCD162 /* SDL_windowevents_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_windowevents_c.h; sourceTree = ""; }; + A7D8A94423E2514000DCD162 /* SDL_assert.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_assert.c; sourceTree = ""; }; + BECDF66B0761BA81005FE872 /* Info-Framework.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-Framework.plist"; sourceTree = ""; }; + BECDF66C0761BA81005FE872 /* SDL3.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SDL3.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E2D187D228A5673500D2B4F1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + E41D20142BA9577D003073FA /* SDL_storage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_storage.h; path = SDL3/SDL_storage.h; sourceTree = ""; }; + E47911872BA9555500CE3B7F /* SDL_storage.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_storage.c; sourceTree = ""; }; + E47911882BA9555500CE3B7F /* SDL_sysstorage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sysstorage.h; sourceTree = ""; }; + E479118A2BA9555500CE3B7F /* SDL_genericstorage.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_genericstorage.c; sourceTree = ""; }; + E4A568B52AF763940062EEC4 /* SDL_sysmain_callbacks.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_sysmain_callbacks.c; sourceTree = ""; }; + E4F798192AD8D84800669F54 /* SDL_core_unsupported.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_core_unsupported.c; sourceTree = ""; }; + E4F7981B2AD8D85500669F54 /* SDL_dynapi_unsupported.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_dynapi_unsupported.h; sourceTree = ""; }; + E4F7981D2AD8D86A00669F54 /* SDL_render_unsupported.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_render_unsupported.c; sourceTree = ""; }; + E4F7981F2AD8D87F00669F54 /* SDL_video_unsupported.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_video_unsupported.c; sourceTree = ""; }; + F316ABD62B5C3185002EF551 /* SDL_memset.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_memset.c; sourceTree = ""; }; + F316ABD72B5C3185002EF551 /* SDL_memcpy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_memcpy.c; sourceTree = ""; }; + F316ABDA2B5CA721002EF551 /* SDL_memmove.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_memmove.c; sourceTree = ""; }; + F31A92C628D4CB39003BFD6A /* SDL_offscreenopengles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_offscreenopengles.h; sourceTree = ""; }; + F31A92C728D4CB39003BFD6A /* SDL_offscreenopengles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_offscreenopengles.c; sourceTree = ""; }; + F32305FE28939F6400E66D30 /* SDL_hidapi_combined.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_combined.c; sourceTree = ""; }; + F32DDAC92AB795A30041EAA5 /* SDL_audio_channel_converters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_audio_channel_converters.h; sourceTree = ""; }; + F32DDACA2AB795A30041EAA5 /* SDL_audioresample.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_audioresample.h; sourceTree = ""; }; + F32DDACB2AB795A30041EAA5 /* SDL_audioqueue.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_audioqueue.c; sourceTree = ""; }; + F32DDACC2AB795A30041EAA5 /* SDL_audio_resampler_filter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_audio_resampler_filter.h; sourceTree = ""; }; + F32DDACD2AB795A30041EAA5 /* SDL_audioqueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_audioqueue.h; sourceTree = ""; }; + F32DDACE2AB795A30041EAA5 /* SDL_audioresample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_audioresample.c; sourceTree = ""; }; + F362B9152B3349E200D30B94 /* controller_list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = controller_list.h; sourceTree = ""; }; + F362B9162B3349E200D30B94 /* SDL_gamepad_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_gamepad_c.h; sourceTree = ""; }; + F362B9172B3349E200D30B94 /* SDL_steam_virtual_gamepad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_steam_virtual_gamepad.h; sourceTree = ""; }; + F362B9182B3349E200D30B94 /* SDL_steam_virtual_gamepad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_steam_virtual_gamepad.c; sourceTree = ""; }; + F3681E7E2B7AA6240002C6FD /* SDL_cocoashape.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoashape.m; sourceTree = ""; }; + F3681E7F2B7AA6240002C6FD /* SDL_cocoashape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cocoashape.h; sourceTree = ""; }; + F36C7AD0294BA009004D61C3 /* SDL_runapp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_runapp.c; sourceTree = ""; }; + F376F6182559B29300CFC0BC /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.1.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; + F376F61A2559B2AF00CFC0BC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/iOSSupport/System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + F376F6312559B31D00CFC0BC /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = System/iOSSupport/System/Library/Frameworks/GameController.framework; sourceTree = SDKROOT; }; + F376F6CC2559B54500CFC0BC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + F376F6D82559B59600CFC0BC /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; + F376F6DA2559B5A000CFC0BC /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/AVFoundation.framework; sourceTree = DEVELOPER_DIR; }; + F376F6DC2559B5A900CFC0BC /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; }; + F376F6DE2559B5BA00CFC0BC /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/GameController.framework; sourceTree = DEVELOPER_DIR; }; + F376F6E02559B5CA00CFC0BC /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/CoreVideo.framework; sourceTree = DEVELOPER_DIR; }; + F376F6F72559B5EC00CFC0BC /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + F376F71E2559B73A00CFC0BC /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + F376F7212559B74900CFC0BC /* Metal.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Metal.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/Metal.framework; sourceTree = DEVELOPER_DIR; }; + F376F7252559B76800CFC0BC /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; }; + F376F7272559B77100CFC0BC /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/CoreAudio.framework; sourceTree = DEVELOPER_DIR; }; + F37A8E1928405AA100C38E95 /* CMake */ = {isa = PBXFileReference; lastKnownFileType = folder; path = CMake; sourceTree = ""; }; + F37DC5F225350EBC0002E6F7 /* CoreHaptics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreHaptics.framework; path = System/Library/Frameworks/CoreHaptics.framework; sourceTree = SDKROOT; }; + F37DC5F425350ECC0002E6F7 /* CoreHaptics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreHaptics.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS14.0.sdk/System/Library/Frameworks/CoreHaptics.framework; sourceTree = DEVELOPER_DIR; }; + F37E18512BA50E750098C111 /* SDL_dialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_dialog.h; path = SDL3/SDL_dialog.h; sourceTree = ""; }; + F37E18572BA50F3B0098C111 /* SDL_cocoadialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_cocoadialog.m; sourceTree = ""; }; + F37E18592BA50F450098C111 /* SDL_dummydialog.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_dummydialog.c; sourceTree = ""; }; + F37E185B2BAA3EF90098C111 /* SDL_time.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_time.h; path = SDL3/SDL_time.h; sourceTree = ""; }; + F37E18612BAA40090098C111 /* SDL_sysfilesystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sysfilesystem.h; sourceTree = ""; }; + F37E18632BAA40670098C111 /* SDL_time_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_time_c.h; sourceTree = ""; }; + F3820712284F3609004DD584 /* controller_type.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = controller_type.c; sourceTree = ""; }; + F382071C284F362F004DD584 /* SDL_guid.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_guid.c; sourceTree = ""; }; + F382339B2738ED6600F7F527 /* CoreBluetooth.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreBluetooth.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.0.sdk/System/Library/Frameworks/CoreBluetooth.framework; sourceTree = DEVELOPER_DIR; }; + F386F6E42884663E001840AA /* SDL_log_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_log_c.h; sourceTree = ""; }; + F386F6E52884663E001840AA /* SDL_utils_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_utils_c.h; sourceTree = ""; }; + F386F6E62884663E001840AA /* SDL_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_utils.c; sourceTree = ""; }; + F388C95428B5F6F600661ECF /* SDL_hidapi_ps3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_ps3.c; sourceTree = ""; }; + F395BF6425633B2400942BFF /* SDL_crc32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_crc32.c; sourceTree = ""; }; + F395C1912569C68E00942BFF /* SDL_iokitjoystick_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_iokitjoystick_c.h; sourceTree = ""; }; + F395C1922569C68E00942BFF /* SDL_iokitjoystick.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_iokitjoystick.c; sourceTree = ""; }; + F395C1AF2569C6A000942BFF /* SDL_mfijoystick.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_mfijoystick.m; sourceTree = ""; }; + F395C1B02569C6A000942BFF /* SDL_mfijoystick_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_mfijoystick_c.h; sourceTree = ""; }; + F3973FA028A59BDD00B84553 /* SDL_vacopy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_vacopy.h; sourceTree = ""; }; + F3973FA128A59BDD00B84553 /* SDL_crc16.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_crc16.c; sourceTree = ""; }; + F3984CCF25BCC92800374F43 /* SDL_hidapi_stadia.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_stadia.c; sourceTree = ""; }; + F3990E012A788303000D8759 /* SDL_hidapi_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_hidapi_c.h; sourceTree = ""; }; + F3990E022A788303000D8759 /* SDL_hidapi_mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_hidapi_mac.h; sourceTree = ""; }; + F3990E032A788303000D8759 /* SDL_hidapi_ios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_hidapi_ios.h; sourceTree = ""; }; + F3A4909D2554D38500E92A8B /* SDL_hidapi_ps5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_ps5.c; sourceTree = ""; }; + F3ADAB8D2576F0B300A6B1D9 /* SDL_sysurl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SDL_sysurl.m; sourceTree = ""; }; + F3B38CCA296E2E52005DA6D3 /* SDL_main_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_main_impl.h; path = SDL3/SDL_main_impl.h; sourceTree = ""; }; + F3B38CCB296E2E52005DA6D3 /* SDL_platform_defines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_platform_defines.h; path = SDL3/SDL_platform_defines.h; sourceTree = ""; }; + F3B38CCC296E2E52005DA6D3 /* SDL_init.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_init.h; path = SDL3/SDL_init.h; sourceTree = ""; }; + F3B38CCD296E2E52005DA6D3 /* SDL_oldnames.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_oldnames.h; path = SDL3/SDL_oldnames.h; sourceTree = ""; }; + F3B38CCE296E2E52005DA6D3 /* SDL_intrin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_intrin.h; path = SDL3/SDL_intrin.h; sourceTree = ""; }; + F3D60A8228C16A1800788A3A /* SDL_hidapi_wii.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_wii.c; sourceTree = ""; }; + F3DDCC4D2AFD42B500B0842B /* SDL_clipboard_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_clipboard_c.h; sourceTree = ""; }; + F3DDCC522AFD42B600B0842B /* SDL_video_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_video_c.h; sourceTree = ""; }; + F3DDCC542AFD42B600B0842B /* SDL_rect_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_rect_impl.h; sourceTree = ""; }; + F3E5A6EA2AD5E0E600293D83 /* SDL_properties.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_properties.c; sourceTree = ""; }; + F3E5A6EC2AD5E10800293D83 /* SDL_properties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_properties.h; path = SDL3/SDL_properties.h; sourceTree = ""; }; + F3F07D59269640160074468B /* SDL_hidapi_luna.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_luna.c; sourceTree = ""; }; + F3F7D8AA2933074900816151 /* SDL_audio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_audio.h; path = SDL3/SDL_audio.h; sourceTree = ""; }; + F3F7D8AB2933074900816151 /* SDL_platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_platform.h; path = SDL3/SDL_platform.h; sourceTree = ""; }; + F3F7D8AC2933074900816151 /* SDL_stdinc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_stdinc.h; path = SDL3/SDL_stdinc.h; sourceTree = ""; }; + F3F7D8AD2933074900816151 /* SDL_haptic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_haptic.h; path = SDL3/SDL_haptic.h; sourceTree = ""; }; + F3F7D8AE2933074900816151 /* SDL_opengles2_gl2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_opengles2_gl2.h; path = SDL3/SDL_opengles2_gl2.h; sourceTree = ""; }; + F3F7D8AF2933074900816151 /* SDL_touch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_touch.h; path = SDL3/SDL_touch.h; sourceTree = ""; }; + F3F7D8B02933074900816151 /* SDL_main.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_main.h; path = SDL3/SDL_main.h; sourceTree = ""; }; + F3F7D8B12933074900816151 /* SDL_opengles2_khrplatform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_opengles2_khrplatform.h; path = SDL3/SDL_opengles2_khrplatform.h; sourceTree = ""; }; + F3F7D8B22933074900816151 /* SDL_timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_timer.h; path = SDL3/SDL_timer.h; sourceTree = ""; }; + F3F7D8B32933074900816151 /* SDL_hints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_hints.h; path = SDL3/SDL_hints.h; sourceTree = ""; }; + F3F7D8B42933074900816151 /* SDL_revision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_revision.h; path = SDL3/SDL_revision.h; sourceTree = ""; }; + F3F7D8B52933074A00816151 /* SDL_pixels.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_pixels.h; path = SDL3/SDL_pixels.h; sourceTree = ""; }; + F3F7D8B62933074A00816151 /* SDL_messagebox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_messagebox.h; path = SDL3/SDL_messagebox.h; sourceTree = ""; }; + F3F7D8B72933074A00816151 /* SDL_log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_log.h; path = SDL3/SDL_log.h; sourceTree = ""; }; + F3F7D8B82933074A00816151 /* SDL_egl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_egl.h; path = SDL3/SDL_egl.h; sourceTree = ""; }; + F3F7D8B92933074A00816151 /* SDL_atomic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_atomic.h; path = SDL3/SDL_atomic.h; sourceTree = ""; }; + F3F7D8BB2933074A00816151 /* SDL_surface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_surface.h; path = SDL3/SDL_surface.h; sourceTree = ""; }; + F3F7D8BC2933074A00816151 /* SDL_error.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_error.h; path = SDL3/SDL_error.h; sourceTree = ""; }; + F3F7D8BD2933074A00816151 /* SDL_opengles2_gl2ext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_opengles2_gl2ext.h; path = SDL3/SDL_opengles2_gl2ext.h; sourceTree = ""; }; + F3F7D8BE2933074A00816151 /* SDL_endian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_endian.h; path = SDL3/SDL_endian.h; sourceTree = ""; }; + F3F7D8C02933074A00816151 /* SDL_opengl_glext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_opengl_glext.h; path = SDL3/SDL_opengl_glext.h; sourceTree = ""; }; + F3F7D8C12933074B00816151 /* SDL_scancode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_scancode.h; path = SDL3/SDL_scancode.h; sourceTree = ""; }; + F3F7D8C22933074B00816151 /* SDL_sensor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_sensor.h; path = SDL3/SDL_sensor.h; sourceTree = ""; }; + F3F7D8C32933074B00816151 /* SDL_keyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_keyboard.h; path = SDL3/SDL_keyboard.h; sourceTree = ""; }; + F3F7D8C42933074B00816151 /* SDL_locale.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_locale.h; path = SDL3/SDL_locale.h; sourceTree = ""; }; + F3F7D8C52933074B00816151 /* SDL_video.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_video.h; path = SDL3/SDL_video.h; sourceTree = ""; }; + F3F7D8C62933074B00816151 /* SDL_opengles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_opengles.h; path = SDL3/SDL_opengles.h; sourceTree = ""; }; + F3F7D8C72933074B00816151 /* SDL_opengles2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_opengles2.h; path = SDL3/SDL_opengles2.h; sourceTree = ""; }; + F3F7D8C82933074B00816151 /* SDL_iostream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_iostream.h; path = SDL3/SDL_iostream.h; sourceTree = ""; }; + F3F7D8C92933074B00816151 /* SDL_opengles2_gl2platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_opengles2_gl2platform.h; path = SDL3/SDL_opengles2_gl2platform.h; sourceTree = ""; }; + F3F7D8CA2933074B00816151 /* SDL_hidapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_hidapi.h; path = SDL3/SDL_hidapi.h; sourceTree = ""; }; + F3F7D8CB2933074B00816151 /* SDL_events.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_events.h; path = SDL3/SDL_events.h; sourceTree = ""; }; + F3F7D8CC2933074B00816151 /* SDL_keycode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_keycode.h; path = SDL3/SDL_keycode.h; sourceTree = ""; }; + F3F7D8CD2933074C00816151 /* SDL_thread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_thread.h; path = SDL3/SDL_thread.h; sourceTree = ""; }; + F3F7D8CE2933074C00816151 /* SDL_blendmode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_blendmode.h; path = SDL3/SDL_blendmode.h; sourceTree = ""; }; + F3F7D8CF2933074C00816151 /* SDL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL.h; path = SDL3/SDL.h; sourceTree = ""; }; + F3F7D8D02933074C00816151 /* SDL_gamepad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_gamepad.h; path = SDL3/SDL_gamepad.h; sourceTree = ""; }; + F3F7D8D12933074C00816151 /* SDL_guid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_guid.h; path = SDL3/SDL_guid.h; sourceTree = ""; }; + F3F7D8D22933074C00816151 /* SDL_metal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_metal.h; path = SDL3/SDL_metal.h; sourceTree = ""; }; + F3F7D8D32933074C00816151 /* SDL_joystick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_joystick.h; path = SDL3/SDL_joystick.h; sourceTree = ""; }; + F3F7D8D42933074C00816151 /* SDL_vulkan.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_vulkan.h; path = SDL3/SDL_vulkan.h; sourceTree = ""; }; + F3F7D8D52933074C00816151 /* SDL_misc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_misc.h; path = SDL3/SDL_misc.h; sourceTree = ""; }; + F3F7D8D62933074C00816151 /* SDL_filesystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_filesystem.h; path = SDL3/SDL_filesystem.h; sourceTree = ""; }; + F3F7D8D72933074C00816151 /* SDL_clipboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_clipboard.h; path = SDL3/SDL_clipboard.h; sourceTree = ""; }; + F3F7D8D82933074C00816151 /* SDL_bits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_bits.h; path = SDL3/SDL_bits.h; sourceTree = ""; }; + F3F7D8D92933074C00816151 /* SDL_loadso.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_loadso.h; path = SDL3/SDL_loadso.h; sourceTree = ""; }; + F3F7D8DA2933074D00816151 /* SDL_mouse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_mouse.h; path = SDL3/SDL_mouse.h; sourceTree = ""; }; + F3F7D8DB2933074D00816151 /* SDL_power.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_power.h; path = SDL3/SDL_power.h; sourceTree = ""; }; + F3F7D8DD2933074D00816151 /* SDL_cpuinfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_cpuinfo.h; path = SDL3/SDL_cpuinfo.h; sourceTree = ""; }; + F3F7D8DE2933074D00816151 /* SDL_render.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_render.h; path = SDL3/SDL_render.h; sourceTree = ""; }; + F3F7D8DF2933074D00816151 /* SDL_quit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_quit.h; path = SDL3/SDL_quit.h; sourceTree = ""; }; + F3F7D8E02933074D00816151 /* SDL_assert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_assert.h; path = SDL3/SDL_assert.h; sourceTree = ""; }; + F3F7D8E12933074D00816151 /* SDL_opengl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_opengl.h; path = SDL3/SDL_opengl.h; sourceTree = ""; }; + F3F7D8E22933074D00816151 /* SDL_rect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_rect.h; path = SDL3/SDL_rect.h; sourceTree = ""; }; + F3F7D8E32933074D00816151 /* SDL_copying.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_copying.h; path = SDL3/SDL_copying.h; sourceTree = ""; }; + F3F7D8E42933074D00816151 /* SDL_version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_version.h; path = SDL3/SDL_version.h; sourceTree = ""; }; + F3F7D8E52933074D00816151 /* SDL_close_code.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_close_code.h; path = SDL3/SDL_close_code.h; sourceTree = ""; }; + F3F7D8E62933074E00816151 /* SDL_mutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_mutex.h; path = SDL3/SDL_mutex.h; sourceTree = ""; }; + F3F7D8E72933074E00816151 /* SDL_begin_code.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_begin_code.h; path = SDL3/SDL_begin_code.h; sourceTree = ""; }; + F3F7D8E82933074E00816151 /* SDL_system.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDL_system.h; path = SDL3/SDL_system.h; sourceTree = ""; }; + F3FA5A142B59ACE000FEAD97 /* yuv_rgb_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = yuv_rgb_internal.h; sourceTree = ""; }; + F3FA5A152B59ACE000FEAD97 /* yuv_rgb_lsx_func.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = yuv_rgb_lsx_func.h; sourceTree = ""; }; + F3FA5A162B59ACE000FEAD97 /* yuv_rgb_sse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = yuv_rgb_sse.h; sourceTree = ""; }; + F3FA5A172B59ACE000FEAD97 /* yuv_rgb_std.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = yuv_rgb_std.h; sourceTree = ""; }; + F3FA5A182B59ACE000FEAD97 /* yuv_rgb_std.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = yuv_rgb_std.c; sourceTree = ""; }; + F3FA5A192B59ACE000FEAD97 /* yuv_rgb_sse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = yuv_rgb_sse.c; sourceTree = ""; }; + F3FA5A1A2B59ACE000FEAD97 /* yuv_rgb_lsx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = yuv_rgb_lsx.c; sourceTree = ""; }; + F3FA5A1B2B59ACE000FEAD97 /* yuv_rgb_lsx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = yuv_rgb_lsx.h; sourceTree = ""; }; + F3FA5A1C2B59ACE000FEAD97 /* yuv_rgb_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = yuv_rgb_common.h; sourceTree = ""; }; + F59C710300D5CB5801000001 /* ReadMe.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = ReadMe.txt; sourceTree = ""; }; + F59C710600D5CB5801000001 /* SDL.info */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = SDL.info; sourceTree = ""; }; + F5A2EF3900C6A39A01000001 /* BUGS.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = BUGS.txt; path = ../../BUGS.txt; sourceTree = SOURCE_ROOT; }; + FA73671C19A540EF004122E4 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + BECDF6680761BA81005FE872 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A7381E971D8B6A0300B177DD /* AudioToolbox.framework in Frameworks */, + 00D0D0D810675E46004B05EF /* Carbon.framework in Frameworks */, + 007317A40858DECD00B2BC32 /* Cocoa.framework in Frameworks */, + A7381E961D8B69D600B177DD /* CoreAudio.framework in Frameworks */, + 557D0CFA254586CA003913E3 /* CoreHaptics.framework in Frameworks */, + 00D0D08410675DD9004B05EF /* CoreFoundation.framework in Frameworks */, + FA73671D19A540EF004122E4 /* CoreVideo.framework in Frameworks */, + 00CFA89D106B4BA100758660 /* ForceFeedback.framework in Frameworks */, + 557D0CFB254586D7003913E3 /* GameController.framework in Frameworks */, + 007317A60858DECD00B2BC32 /* IOKit.framework in Frameworks */, + 564624381FF821DA0074AC87 /* Metal.framework in Frameworks */, + 564624361FF821C20074AC87 /* QuartzCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 000004752BA2F77DECDF0000 /* unix */ = { + isa = PBXGroup; + children = ( + 00003F472C51CE7DF6160000 /* SDL_systime.c */, + ); + path = unix; + sourceTree = ""; + }; + 000023E01FD84242AF850000 /* dummy */ = { + isa = PBXGroup; + children = ( + 00005BD74B46358B33A20000 /* SDL_camera_dummy.c */, + ); + path = dummy; + sourceTree = ""; + }; + 00002EC7DF7A0A31B32A0000 /* camera */ = { + isa = PBXGroup; + children = ( + 0000DBB4B95F4CC5CAE80000 /* coremedia */, + 000023E01FD84242AF850000 /* dummy */, + 0000035D38C3899C7EFD0000 /* SDL_camera.c */, + 00009003C7148E1126CA0000 /* SDL_camera_c.h */, + 00005D3EB902478835E20000 /* SDL_syscamera.h */, + ); + path = camera; + sourceTree = ""; + }; + 000050A2BB34616138570000 /* posix */ = { + isa = PBXGroup; + children = ( + 0000F4E6AA3EF99DA3C80000 /* SDL_sysfsops.c */, + ); + path = posix; + sourceTree = ""; + }; + 000082EF09C89B62BD840000 /* main */ = { + isa = PBXGroup; + children = ( + E4A568B42AF763940062EEC4 /* generic */, + 00008B5A0CB83D2069E80000 /* ios */, + 00009366FB9FBBD54C390000 /* SDL_main_callbacks.c */, + 00003260407E1002EAC10000 /* SDL_main_callbacks.h */, + ); + path = main; + sourceTree = ""; + }; + 00008B5A0CB83D2069E80000 /* ios */ = { + isa = PBXGroup; + children = ( + 0000BB287BA0A0178C1A0000 /* SDL_sysmain_callbacks.m */, + ); + path = ios; + sourceTree = ""; + }; + 0000DBB4B95F4CC5CAE80000 /* coremedia */ = { + isa = PBXGroup; + children = ( + 00008B79BF08CBCEAC460000 /* SDL_camera_coremedia.m */, + ); + path = coremedia; + sourceTree = ""; + }; + 0000F5E7419220E3A8AB0000 /* time */ = { + isa = PBXGroup; + children = ( + 000004752BA2F77DECDF0000 /* unix */, + F37E18632BAA40670098C111 /* SDL_time_c.h */, + 0000641A9BAC11AB3FBE0000 /* SDL_time.c */, + ); + path = time; + sourceTree = ""; + }; + 0153844A006D81B07F000001 /* Public Headers */ = { + isa = PBXGroup; + children = ( + F3F7D8E02933074D00816151 /* SDL_assert.h */, + F3F7D8B92933074A00816151 /* SDL_atomic.h */, + F3F7D8AA2933074900816151 /* SDL_audio.h */, + F3F7D8E72933074E00816151 /* SDL_begin_code.h */, + F3F7D8D82933074C00816151 /* SDL_bits.h */, + F3F7D8CE2933074C00816151 /* SDL_blendmode.h */, + 000084ED0A56E3ED52F90000 /* SDL_camera.h */, + F3F7D8D72933074C00816151 /* SDL_clipboard.h */, + F3F7D8E52933074D00816151 /* SDL_close_code.h */, + F3F7D8E32933074D00816151 /* SDL_copying.h */, + F3F7D8DD2933074D00816151 /* SDL_cpuinfo.h */, + F37E18512BA50E750098C111 /* SDL_dialog.h */, + F3F7D8B82933074A00816151 /* SDL_egl.h */, + F3F7D8BE2933074A00816151 /* SDL_endian.h */, + F3F7D8BC2933074A00816151 /* SDL_error.h */, + F3F7D8CB2933074B00816151 /* SDL_events.h */, + F3F7D8D62933074C00816151 /* SDL_filesystem.h */, + F3F7D8D02933074C00816151 /* SDL_gamepad.h */, + F3F7D8D12933074C00816151 /* SDL_guid.h */, + F3F7D8AD2933074900816151 /* SDL_haptic.h */, + F3F7D8CA2933074B00816151 /* SDL_hidapi.h */, + F3F7D8B32933074900816151 /* SDL_hints.h */, + F3B38CCC296E2E52005DA6D3 /* SDL_init.h */, + F3B38CCE296E2E52005DA6D3 /* SDL_intrin.h */, + F3F7D8C82933074B00816151 /* SDL_iostream.h */, + F3F7D8D32933074C00816151 /* SDL_joystick.h */, + F3F7D8C32933074B00816151 /* SDL_keyboard.h */, + F3F7D8CC2933074B00816151 /* SDL_keycode.h */, + F3F7D8D92933074C00816151 /* SDL_loadso.h */, + F3F7D8C42933074B00816151 /* SDL_locale.h */, + F3F7D8B72933074A00816151 /* SDL_log.h */, + F3B38CCA296E2E52005DA6D3 /* SDL_main_impl.h */, + F3F7D8B02933074900816151 /* SDL_main.h */, + F3F7D8B62933074A00816151 /* SDL_messagebox.h */, + F3F7D8D22933074C00816151 /* SDL_metal.h */, + F3F7D8D52933074C00816151 /* SDL_misc.h */, + F3F7D8DA2933074D00816151 /* SDL_mouse.h */, + F3F7D8E62933074E00816151 /* SDL_mutex.h */, + F3B38CCD296E2E52005DA6D3 /* SDL_oldnames.h */, + F3F7D8C02933074A00816151 /* SDL_opengl_glext.h */, + F3F7D8E12933074D00816151 /* SDL_opengl.h */, + F3F7D8C62933074B00816151 /* SDL_opengles.h */, + F3F7D8AE2933074900816151 /* SDL_opengles2_gl2.h */, + F3F7D8BD2933074A00816151 /* SDL_opengles2_gl2ext.h */, + F3F7D8C92933074B00816151 /* SDL_opengles2_gl2platform.h */, + F3F7D8B12933074900816151 /* SDL_opengles2_khrplatform.h */, + F3F7D8C72933074B00816151 /* SDL_opengles2.h */, + 63134A212A7902CF0021E9A6 /* SDL_pen.h */, + F3F7D8B52933074A00816151 /* SDL_pixels.h */, + F3B38CCB296E2E52005DA6D3 /* SDL_platform_defines.h */, + F3F7D8AB2933074900816151 /* SDL_platform.h */, + F3F7D8DB2933074D00816151 /* SDL_power.h */, + F3E5A6EC2AD5E10800293D83 /* SDL_properties.h */, + F3F7D8DF2933074D00816151 /* SDL_quit.h */, + F3F7D8E22933074D00816151 /* SDL_rect.h */, + F3F7D8DE2933074D00816151 /* SDL_render.h */, + F3F7D8B42933074900816151 /* SDL_revision.h */, + F3F7D8C12933074B00816151 /* SDL_scancode.h */, + F3F7D8C22933074B00816151 /* SDL_sensor.h */, + F3F7D8AC2933074900816151 /* SDL_stdinc.h */, + E41D20142BA9577D003073FA /* SDL_storage.h */, + F3F7D8BB2933074A00816151 /* SDL_surface.h */, + F3F7D8E82933074E00816151 /* SDL_system.h */, + F3F7D8CD2933074C00816151 /* SDL_thread.h */, + F37E185B2BAA3EF90098C111 /* SDL_time.h */, + F3F7D8B22933074900816151 /* SDL_timer.h */, + F3F7D8AF2933074900816151 /* SDL_touch.h */, + F3F7D8E42933074D00816151 /* SDL_version.h */, + F3F7D8C52933074B00816151 /* SDL_video.h */, + F3F7D8D42933074C00816151 /* SDL_vulkan.h */, + F3F7D8CF2933074C00816151 /* SDL.h */, + ); + name = "Public Headers"; + path = ../../include; + sourceTree = ""; + }; + 034768DDFF38A45A11DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + BECDF66C0761BA81005FE872 /* SDL3.framework */, + ); + name = Products; + sourceTree = ""; + }; + 0867D691FE84028FC02AAC07 /* SDLFramework */ = { + isa = PBXGroup; + children = ( + F5A2EF3900C6A39A01000001 /* BUGS.txt */, + F59C70FC00D5CB5801000001 /* pkg-support */, + 0153844A006D81B07F000001 /* Public Headers */, + 08FB77ACFE841707C02AAC07 /* Library Source */, + E2D187D028A5673500D2B4F1 /* SDL3 */, + 034768DDFF38A45A11DB9C8B /* Products */, + BECDF66B0761BA81005FE872 /* Info-Framework.plist */, + 564624341FF821B70074AC87 /* Frameworks */, + ); + comments = "To build Universal Binaries, we have experimented with a variety of different options.\nThe complication is that we must retain compatibility with at least 10.2. \nThe Universal Binary defaults only work for > 10.3.9\n\nSo far, we have found:\ngcc 4.0.0 with Xcode 2.1 always links against libgcc_s. gcc 4.0.1 from Xcode 2.2 fixes this problem.\n\nBut gcc 4.0 will not work with < 10.3.9 because we continue to get an undefined symbol to _fprintf$LDBL128.\nSo we must use gcc 3.3 on PPC to accomplish 10.2 support. (But 4.0 is required for i386.)\n\nSetting the deployment target to 10.4 will disable prebinding, so for PPC, we set it less than 10.4 to preserve prebinding for legacy support.\n\nSetting the PPC SDKROOT to /Developers/SDKs/MacOSX10.2.8.sdk will link to 63.0.0 libSystem.B.dylib. Leaving it at current or 10.4u links to 88.1.2. However, as long as we are using gcc 3.3, it doesn't seem to matter as testing has demonstrated both will run. We have decided not to invoke the 10.2.8 SDK because it is not a default installed component with Xcode which will probably cause most people problems. However, rather than deleting the SDKROOT_ppc entry entirely, we have mapped it to 10.4u in case we decide we need to change this setting.\n\nTo use Altivec or SSE, we needed architecture specific flags:\nOTHER_CFLAGS_ppc\nOTHER_CFLAGS_i386\nOTHER_CFLAGS=$(OTHER_CFLAGS_($CURRENT_ARCH))\n\nThe general OTHER_CFLAGS needed to be manually mapped to architecture specific options because Xcode didn't do this automatically for us.\n\n\n"; + indentWidth = 4; + name = SDLFramework; + sourceTree = ""; + tabWidth = 4; + usesTabs = 0; + }; + 08FB77ACFE841707C02AAC07 /* Library Source */ = { + isa = PBXGroup; + children = ( + A7D8A57223E2513D00DCD162 /* atomic */, + A7D8A86423E2513F00DCD162 /* audio */, + 00002EC7DF7A0A31B32A0000 /* camera */, + F36C7ACF294B9F5E004D61C3 /* core */, + A7D8A77423E2513E00DCD162 /* cpuinfo */, + F37E18542BA50EB40098C111 /* dialog */, + A7D8A5D723E2513D00DCD162 /* dynapi */, + A7D8A92923E2514000DCD162 /* events */, + A7D8A7DA23E2513E00DCD162 /* file */, + A7D8A7F623E2513F00DCD162 /* filesystem */, + A7D8A5C223E2513D00DCD162 /* haptic */, + A7D8A80923E2513F00DCD162 /* hidapi */, + A7D8A79D23E2513E00DCD162 /* joystick */, + A7D8A91123E2514000DCD162 /* libm */, + A7D8A85D23E2513F00DCD162 /* loadso */, + 566E26CB246274AE00718109 /* locale */, + 000082EF09C89B62BD840000 /* main */, + 5616CA47252BB278005D5928 /* misc */, + A7D8A7DF23E2513F00DCD162 /* power */, + A7D8A8DA23E2514000DCD162 /* render */, + A7D8A57623E2513D00DCD162 /* sensor */, + A7D8A8D223E2514000DCD162 /* stdlib */, + E47911832BA9555500CE3B7F /* storage */, + A7D8A77623E2513E00DCD162 /* thread */, + 0000F5E7419220E3A8AB0000 /* time */, + A7D8A5DE23E2513D00DCD162 /* timer */, + A7D8A5EB23E2513D00DCD162 /* video */, + A7D8A7F523E2513F00DCD162 /* SDL_assert_c.h */, + A7D8A94423E2514000DCD162 /* SDL_assert.c */, + A7D8A57523E2513D00DCD162 /* SDL_error_c.h */, + A7D8A8BF23E2513F00DCD162 /* SDL_error.c */, + F382071C284F362F004DD584 /* SDL_guid.c */, + 000078E1881E857EBB6C0000 /* SDL_hashtable.c */, + 0000B6ADCD88CAD6610F0000 /* SDL_hashtable.h */, + A7D8A8D123E2514000DCD162 /* SDL_hints_c.h */, + A7D8A5AB23E2513D00DCD162 /* SDL_hints.c */, + A7D8A58323E2513D00DCD162 /* SDL_internal.h */, + A1BB8B6127F6CF320057CFA8 /* SDL_list.c */, + A1BB8B6227F6CF330057CFA8 /* SDL_list.h */, + F386F6E42884663E001840AA /* SDL_log_c.h */, + A7D8A5DD23E2513D00DCD162 /* SDL_log.c */, + F3E5A6EA2AD5E0E600293D83 /* SDL_properties.c */, + F386F6E52884663E001840AA /* SDL_utils_c.h */, + F386F6E62884663E001840AA /* SDL_utils.c */, + A7D8A57123E2513D00DCD162 /* SDL.c */, + ); + name = "Library Source"; + path = ../../src; + sourceTree = ""; + }; + 5616CA47252BB278005D5928 /* misc */ = { + isa = PBXGroup; + children = ( + F3ADAB8C2576F08500A6B1D9 /* ios */, + 5616CA48252BB285005D5928 /* macos */, + 5616CA4A252BB2A6005D5928 /* SDL_sysurl.h */, + 5616CA49252BB2A5005D5928 /* SDL_url.c */, + ); + path = misc; + sourceTree = ""; + }; + 5616CA48252BB285005D5928 /* macos */ = { + isa = PBXGroup; + children = ( + 5616CA4B252BB2A6005D5928 /* SDL_sysurl.m */, + ); + path = macos; + sourceTree = ""; + }; + 564624341FF821B70074AC87 /* Frameworks */ = { + isa = PBXGroup; + children = ( + F382339B2738ED6600F7F527 /* CoreBluetooth.framework */, + F376F7272559B77100CFC0BC /* CoreAudio.framework */, + F376F7252559B76800CFC0BC /* CoreFoundation.framework */, + F376F7212559B74900CFC0BC /* Metal.framework */, + F376F71E2559B73A00CFC0BC /* QuartzCore.framework */, + F376F6F72559B5EC00CFC0BC /* CoreGraphics.framework */, + F376F6E02559B5CA00CFC0BC /* CoreVideo.framework */, + F376F6DE2559B5BA00CFC0BC /* GameController.framework */, + F376F6DC2559B5A900CFC0BC /* OpenGLES.framework */, + F376F6DA2559B5A000CFC0BC /* AVFoundation.framework */, + F376F6D82559B59600CFC0BC /* AudioToolbox.framework */, + F376F6CC2559B54500CFC0BC /* UIKit.framework */, + F376F6312559B31D00CFC0BC /* GameController.framework */, + F376F61A2559B2AF00CFC0BC /* UIKit.framework */, + F376F6182559B29300CFC0BC /* OpenGLES.framework */, + F37DC5F225350EBC0002E6F7 /* CoreHaptics.framework */, + F37DC5F425350ECC0002E6F7 /* CoreHaptics.framework */, + A75FDAC323E28BA700529352 /* CoreBluetooth.framework */, + A75FDAC123E28B9600529352 /* CoreGraphics.framework */, + A75FDABF23E28B8000529352 /* CoreMotion.framework */, + A75FDABD23E28B6200529352 /* GameController.framework */, + A75FDAB923E28A7A00529352 /* AVFoundation.framework */, + A7381E931D8B69C300B177DD /* AudioToolbox.framework */, + 007317C10858E15000B2BC32 /* Carbon.framework */, + 0073179D0858DECD00B2BC32 /* Cocoa.framework */, + A7381E951D8B69D600B177DD /* CoreAudio.framework */, + 00D0D08310675DD9004B05EF /* CoreFoundation.framework */, + FA73671C19A540EF004122E4 /* CoreVideo.framework */, + 00CFA89C106B4BA100758660 /* ForceFeedback.framework */, + 0073179F0858DECD00B2BC32 /* IOKit.framework */, + 564624371FF821CB0074AC87 /* Metal.framework */, + 564624351FF821B80074AC87 /* QuartzCore.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 566E26CB246274AE00718109 /* locale */ = { + isa = PBXGroup; + children = ( + 566E26EA246274E800718109 /* macos */, + 566E26CD246274CB00718109 /* SDL_locale.c */, + 566E26CE246274CC00718109 /* SDL_syslocale.h */, + ); + name = locale; + sourceTree = ""; + }; + 566E26EA246274E800718109 /* macos */ = { + isa = PBXGroup; + children = ( + 566E26CC246274CB00718109 /* SDL_syslocale.m */, + ); + name = macos; + sourceTree = ""; + }; + 75E09157241EA924004729E1 /* virtual */ = { + isa = PBXGroup; + children = ( + 75E09158241EA924004729E1 /* SDL_virtualjoystick.c */, + 75E09159241EA924004729E1 /* SDL_virtualjoystick_c.h */, + ); + path = virtual; + sourceTree = ""; + }; + A75FDAA423E2790500529352 /* ios */ = { + isa = PBXGroup; + children = ( + A75FDAA523E2792500529352 /* hid.m */, + ); + path = ios; + sourceTree = ""; + }; + A75FDB9123E4C8B800529352 /* mac */ = { + isa = PBXGroup; + children = ( + A75FDB9223E4C8DB00529352 /* hid.c */, + ); + path = mac; + sourceTree = ""; + }; + A7D8A57223E2513D00DCD162 /* atomic */ = { + isa = PBXGroup; + children = ( + A7D8A57423E2513D00DCD162 /* SDL_atomic.c */, + A7D8A57323E2513D00DCD162 /* SDL_spinlock.c */, + ); + path = atomic; + sourceTree = ""; + }; + A7D8A57623E2513D00DCD162 /* sensor */ = { + isa = PBXGroup; + children = ( + A7D8A57A23E2513D00DCD162 /* coremotion */, + A7D8A57723E2513D00DCD162 /* dummy */, + A7D8A58123E2513D00DCD162 /* SDL_sensor_c.h */, + A7D8A58223E2513D00DCD162 /* SDL_sensor.c */, + A7D8A57D23E2513D00DCD162 /* SDL_syssensor.h */, + ); + path = sensor; + sourceTree = ""; + }; + A7D8A57723E2513D00DCD162 /* dummy */ = { + isa = PBXGroup; + children = ( + A7D8A57923E2513D00DCD162 /* SDL_dummysensor.c */, + A7D8A57823E2513D00DCD162 /* SDL_dummysensor.h */, + ); + path = dummy; + sourceTree = ""; + }; + A7D8A57A23E2513D00DCD162 /* coremotion */ = { + isa = PBXGroup; + children = ( + A7D8A57B23E2513D00DCD162 /* SDL_coremotionsensor.h */, + A7D8A57C23E2513D00DCD162 /* SDL_coremotionsensor.m */, + ); + path = coremotion; + sourceTree = ""; + }; + A7D8A5C223E2513D00DCD162 /* haptic */ = { + isa = PBXGroup; + children = ( + A7D8A5CD23E2513D00DCD162 /* darwin */, + A7D8A5C323E2513D00DCD162 /* dummy */, + A7D8A5C623E2513D00DCD162 /* SDL_haptic_c.h */, + A7D8A5C523E2513D00DCD162 /* SDL_haptic.c */, + A7D8A5CC23E2513D00DCD162 /* SDL_syshaptic.h */, + ); + path = haptic; + sourceTree = ""; + }; + A7D8A5C323E2513D00DCD162 /* dummy */ = { + isa = PBXGroup; + children = ( + A7D8A5C423E2513D00DCD162 /* SDL_syshaptic.c */, + ); + path = dummy; + sourceTree = ""; + }; + A7D8A5CD23E2513D00DCD162 /* darwin */ = { + isa = PBXGroup; + children = ( + A7D8A5CF23E2513D00DCD162 /* SDL_syshaptic_c.h */, + A7D8A5CE23E2513D00DCD162 /* SDL_syshaptic.c */, + ); + path = darwin; + sourceTree = ""; + }; + A7D8A5D723E2513D00DCD162 /* dynapi */ = { + isa = PBXGroup; + children = ( + A7D8A5D923E2513D00DCD162 /* SDL_dynapi_overrides.h */, + A7D8A5DB23E2513D00DCD162 /* SDL_dynapi_procs.h */, + A7D8A5DA23E2513D00DCD162 /* SDL_dynapi.c */, + A7D8A5D823E2513D00DCD162 /* SDL_dynapi.h */, + E4F7981B2AD8D85500669F54 /* SDL_dynapi_unsupported.h */, + ); + path = dynapi; + sourceTree = ""; + }; + A7D8A5DE23E2513D00DCD162 /* timer */ = { + isa = PBXGroup; + children = ( + A7D8A5E723E2513D00DCD162 /* unix */, + A7D8A5E023E2513D00DCD162 /* SDL_timer_c.h */, + A7D8A5DF23E2513D00DCD162 /* SDL_timer.c */, + ); + path = timer; + sourceTree = ""; + }; + A7D8A5E723E2513D00DCD162 /* unix */ = { + isa = PBXGroup; + children = ( + A7D8A5E823E2513D00DCD162 /* SDL_systimer.c */, + ); + path = unix; + sourceTree = ""; + }; + A7D8A5EB23E2513D00DCD162 /* video */ = { + isa = PBXGroup; + children = ( + A7D8A67D23E2513E00DCD162 /* cocoa */, + A7D8A60523E2513D00DCD162 /* dummy */, + A7D8A72123E2513E00DCD162 /* khronos */, + A7D8A5EC23E2513D00DCD162 /* offscreen */, + A7D8A61823E2513D00DCD162 /* uikit */, + A7D8A76C23E2513E00DCD162 /* yuv2rgb */, + A7D8A66223E2513E00DCD162 /* SDL_blit_0.c */, + A7D8A6FA23E2513E00DCD162 /* SDL_blit_1.c */, + A7D8A66423E2513E00DCD162 /* SDL_blit_A.c */, + A7D8A63F23E2513D00DCD162 /* SDL_blit_auto.c */, + A7D8A73F23E2513E00DCD162 /* SDL_blit_auto.h */, + A7D8A61623E2513D00DCD162 /* SDL_blit_copy.c */, + A7D8A76623E2513E00DCD162 /* SDL_blit_copy.h */, + A7D8A64223E2513D00DCD162 /* SDL_blit_N.c */, + A7D8A60223E2513D00DCD162 /* SDL_blit_slow.c */, + A7D8A66323E2513E00DCD162 /* SDL_blit_slow.h */, + A7D8A64C23E2513D00DCD162 /* SDL_blit.c */, + A7D8A76B23E2513E00DCD162 /* SDL_blit.h */, + A7D8A77323E2513E00DCD162 /* SDL_bmp.c */, + F3DDCC4D2AFD42B500B0842B /* SDL_clipboard_c.h */, + A7D8A67B23E2513E00DCD162 /* SDL_clipboard.c */, + A7D8A60423E2513D00DCD162 /* SDL_egl_c.h */, + A7D8A6B623E2513E00DCD162 /* SDL_egl.c */, + A7D8A76823E2513E00DCD162 /* SDL_fillrect.c */, + A7D8A74023E2513E00DCD162 /* SDL_pixels_c.h */, + A7D8A64D23E2513D00DCD162 /* SDL_pixels.c */, + A7D8A60C23E2513D00DCD162 /* SDL_rect_c.h */, + F3DDCC542AFD42B600B0842B /* SDL_rect_impl.h */, + A7D8A63423E2513D00DCD162 /* SDL_rect.c */, + A7D8A76723E2513E00DCD162 /* SDL_RLEaccel_c.h */, + A7D8A61523E2513D00DCD162 /* SDL_RLEaccel.c */, + A7D8A60323E2513D00DCD162 /* SDL_stretch.c */, + A7D8A61423E2513D00DCD162 /* SDL_surface.c */, + A7D8A61723E2513D00DCD162 /* SDL_sysvideo.h */, + F3DDCC522AFD42B600B0842B /* SDL_video_c.h */, + E4F7981F2AD8D87F00669F54 /* SDL_video_unsupported.c */, + A7D8A60E23E2513D00DCD162 /* SDL_video.c */, + A7D8A63E23E2513D00DCD162 /* SDL_vulkan_internal.h */, + A7D8A64023E2513D00DCD162 /* SDL_vulkan_utils.c */, + A7D8A76A23E2513E00DCD162 /* SDL_yuv_c.h */, + A7D8A67C23E2513E00DCD162 /* SDL_yuv.c */, + ); + path = video; + sourceTree = ""; + }; + A7D8A5EC23E2513D00DCD162 /* offscreen */ = { + isa = PBXGroup; + children = ( + A7D8A5EE23E2513D00DCD162 /* SDL_offscreenevents_c.h */, + A7D8A5F023E2513D00DCD162 /* SDL_offscreenevents.c */, + A7D8A5F423E2513D00DCD162 /* SDL_offscreenframebuffer_c.h */, + A7D8A5F223E2513D00DCD162 /* SDL_offscreenframebuffer.c */, + F31A92C728D4CB39003BFD6A /* SDL_offscreenopengles.c */, + F31A92C628D4CB39003BFD6A /* SDL_offscreenopengles.h */, + A7D8A5F623E2513D00DCD162 /* SDL_offscreenvideo.c */, + A7D8A5F123E2513D00DCD162 /* SDL_offscreenvideo.h */, + A7D8A5EF23E2513D00DCD162 /* SDL_offscreenwindow.c */, + A7D8A5F523E2513D00DCD162 /* SDL_offscreenwindow.h */, + ); + path = offscreen; + sourceTree = ""; + }; + A7D8A60523E2513D00DCD162 /* dummy */ = { + isa = PBXGroup; + children = ( + A7D8A60B23E2513D00DCD162 /* SDL_nullevents_c.h */, + A7D8A60923E2513D00DCD162 /* SDL_nullevents.c */, + A7D8A60723E2513D00DCD162 /* SDL_nullframebuffer_c.h */, + A7D8A60623E2513D00DCD162 /* SDL_nullframebuffer.c */, + A7D8A60823E2513D00DCD162 /* SDL_nullvideo.c */, + A7D8A60A23E2513D00DCD162 /* SDL_nullvideo.h */, + ); + path = dummy; + sourceTree = ""; + }; + A7D8A61823E2513D00DCD162 /* uikit */ = { + isa = PBXGroup; + children = ( + A7D8A62F23E2513D00DCD162 /* SDL_uikitappdelegate.h */, + A7D8A61E23E2513D00DCD162 /* SDL_uikitappdelegate.m */, + A7D8A62123E2513D00DCD162 /* SDL_uikitclipboard.h */, + A7D8A62A23E2513D00DCD162 /* SDL_uikitclipboard.m */, + A7D8A62D23E2513D00DCD162 /* SDL_uikitevents.h */, + A7D8A61C23E2513D00DCD162 /* SDL_uikitevents.m */, + A7D8A62623E2513D00DCD162 /* SDL_uikitmessagebox.h */, + A7D8A61B23E2513D00DCD162 /* SDL_uikitmessagebox.m */, + A7D8A61D23E2513D00DCD162 /* SDL_uikitmetalview.h */, + A7D8A62E23E2513D00DCD162 /* SDL_uikitmetalview.m */, + A7D8A61F23E2513D00DCD162 /* SDL_uikitmodes.h */, + A7D8A62C23E2513D00DCD162 /* SDL_uikitmodes.m */, + A7D8A63123E2513D00DCD162 /* SDL_uikitopengles.h */, + A7D8A62323E2513D00DCD162 /* SDL_uikitopengles.m */, + A7D8A62B23E2513D00DCD162 /* SDL_uikitopenglview.h */, + A7D8A62023E2513D00DCD162 /* SDL_uikitopenglview.m */, + A7D8A62223E2513D00DCD162 /* SDL_uikitvideo.h */, + A7D8A63223E2513D00DCD162 /* SDL_uikitvideo.m */, + A7D8A61923E2513D00DCD162 /* SDL_uikitview.h */, + A7D8A62923E2513D00DCD162 /* SDL_uikitview.m */, + A7D8A62423E2513D00DCD162 /* SDL_uikitviewcontroller.h */, + A7D8A63023E2513D00DCD162 /* SDL_uikitviewcontroller.m */, + A7D8A63323E2513D00DCD162 /* SDL_uikitvulkan.h */, + A7D8A62523E2513D00DCD162 /* SDL_uikitvulkan.m */, + A7D8A62723E2513D00DCD162 /* SDL_uikitwindow.h */, + A7D8A61A23E2513D00DCD162 /* SDL_uikitwindow.m */, + ); + path = uikit; + sourceTree = ""; + }; + A7D8A67D23E2513E00DCD162 /* cocoa */ = { + isa = PBXGroup; + children = ( + A7D8A68A23E2513E00DCD162 /* SDL_cocoaclipboard.h */, + A7D8A69523E2513E00DCD162 /* SDL_cocoaclipboard.m */, + A7D8A69623E2513E00DCD162 /* SDL_cocoaevents.h */, + A7D8A68923E2513E00DCD162 /* SDL_cocoaevents.m */, + A7D8A68023E2513E00DCD162 /* SDL_cocoakeyboard.h */, + A7D8A68C23E2513E00DCD162 /* SDL_cocoakeyboard.m */, + A7D8A69423E2513E00DCD162 /* SDL_cocoamessagebox.h */, + A7D8A68B23E2513E00DCD162 /* SDL_cocoamessagebox.m */, + A7D8A68623E2513E00DCD162 /* SDL_cocoametalview.h */, + A7D8A69923E2513E00DCD162 /* SDL_cocoametalview.m */, + A7D8A69123E2513E00DCD162 /* SDL_cocoamodes.h */, + A7D8A68123E2513E00DCD162 /* SDL_cocoamodes.m */, + A7D8A69823E2513E00DCD162 /* SDL_cocoamouse.h */, + A7D8A68723E2513E00DCD162 /* SDL_cocoamouse.m */, + A7D8A68D23E2513E00DCD162 /* SDL_cocoaopengl.h */, + A7D8A67F23E2513E00DCD162 /* SDL_cocoaopengl.m */, + A7D8A69023E2513E00DCD162 /* SDL_cocoaopengles.h */, + A7D8A68223E2513E00DCD162 /* SDL_cocoaopengles.m */, + F3681E7F2B7AA6240002C6FD /* SDL_cocoashape.h */, + F3681E7E2B7AA6240002C6FD /* SDL_cocoashape.m */, + A7D8A69323E2513E00DCD162 /* SDL_cocoavideo.h */, + A7D8A68523E2513E00DCD162 /* SDL_cocoavideo.m */, + A7D8A68F23E2513E00DCD162 /* SDL_cocoavulkan.h */, + A7D8A68323E2513E00DCD162 /* SDL_cocoavulkan.m */, + A7D8A69223E2513E00DCD162 /* SDL_cocoawindow.h */, + A7D8A68423E2513E00DCD162 /* SDL_cocoawindow.m */, + ); + path = cocoa; + sourceTree = ""; + }; + A7D8A72123E2513E00DCD162 /* khronos */ = { + isa = PBXGroup; + children = ( + A7D8A72823E2513E00DCD162 /* EGL */, + A7D8A72223E2513E00DCD162 /* GLES2 */, + A7D8A72623E2513E00DCD162 /* KHR */, + A7D8A72C23E2513E00DCD162 /* vulkan */, + ); + path = khronos; + sourceTree = ""; + }; + A7D8A72223E2513E00DCD162 /* GLES2 */ = { + isa = PBXGroup; + children = ( + A7D8A72423E2513E00DCD162 /* gl2.h */, + A7D8A72323E2513E00DCD162 /* gl2ext.h */, + A7D8A72523E2513E00DCD162 /* gl2platform.h */, + ); + path = GLES2; + sourceTree = ""; + }; + A7D8A72623E2513E00DCD162 /* KHR */ = { + isa = PBXGroup; + children = ( + A7D8A72723E2513E00DCD162 /* khrplatform.h */, + ); + path = KHR; + sourceTree = ""; + }; + A7D8A72823E2513E00DCD162 /* EGL */ = { + isa = PBXGroup; + children = ( + A7D8A72923E2513E00DCD162 /* egl.h */, + A7D8A72A23E2513E00DCD162 /* eglext.h */, + A7D8A72B23E2513E00DCD162 /* eglplatform.h */, + ); + path = EGL; + sourceTree = ""; + }; + A7D8A72C23E2513E00DCD162 /* vulkan */ = { + isa = PBXGroup; + children = ( + A7D8A72E23E2513E00DCD162 /* vk_icd.h */, + A7D8A72D23E2513E00DCD162 /* vk_layer.h */, + A7D8A73123E2513E00DCD162 /* vk_platform.h */, + A7D8A73D23E2513E00DCD162 /* vk_sdk_platform.h */, + A7D8A73E23E2513E00DCD162 /* vulkan_android.h */, + A7D8A73C23E2513E00DCD162 /* vulkan_core.h */, + A7D8A73323E2513E00DCD162 /* vulkan_fuchsia.h */, + A7D8A73B23E2513E00DCD162 /* vulkan_ios.h */, + A7D8A73623E2513E00DCD162 /* vulkan_macos.h */, + A7D8A73923E2513E00DCD162 /* vulkan_mir.h */, + A7D8A72F23E2513E00DCD162 /* vulkan_vi.h */, + A7D8A73423E2513E00DCD162 /* vulkan_wayland.h */, + A7D8A73523E2513E00DCD162 /* vulkan_win32.h */, + A7D8A73823E2513E00DCD162 /* vulkan_xcb.h */, + A7D8A73723E2513E00DCD162 /* vulkan_xlib_xrandr.h */, + A7D8A73A23E2513E00DCD162 /* vulkan_xlib.h */, + A7D8A73023E2513E00DCD162 /* vulkan.h */, + A7D8A73223E2513E00DCD162 /* vulkan.hpp */, + ); + path = vulkan; + sourceTree = ""; + }; + A7D8A76C23E2513E00DCD162 /* yuv2rgb */ = { + isa = PBXGroup; + children = ( + F3FA5A1C2B59ACE000FEAD97 /* yuv_rgb_common.h */, + F3FA5A142B59ACE000FEAD97 /* yuv_rgb_internal.h */, + F3FA5A152B59ACE000FEAD97 /* yuv_rgb_lsx_func.h */, + F3FA5A1A2B59ACE000FEAD97 /* yuv_rgb_lsx.c */, + F3FA5A1B2B59ACE000FEAD97 /* yuv_rgb_lsx.h */, + A7D8A77023E2513E00DCD162 /* yuv_rgb_sse_func.h */, + F3FA5A192B59ACE000FEAD97 /* yuv_rgb_sse.c */, + F3FA5A162B59ACE000FEAD97 /* yuv_rgb_sse.h */, + A7D8A77123E2513E00DCD162 /* yuv_rgb_std_func.h */, + F3FA5A182B59ACE000FEAD97 /* yuv_rgb_std.c */, + F3FA5A172B59ACE000FEAD97 /* yuv_rgb_std.h */, + A7D8A77223E2513E00DCD162 /* yuv_rgb.h */, + ); + path = yuv2rgb; + sourceTree = ""; + }; + A7D8A77423E2513E00DCD162 /* cpuinfo */ = { + isa = PBXGroup; + children = ( + A7D8A77523E2513E00DCD162 /* SDL_cpuinfo.c */, + ); + path = cpuinfo; + sourceTree = ""; + }; + A7D8A77623E2513E00DCD162 /* thread */ = { + isa = PBXGroup; + children = ( + A7D8A78123E2513E00DCD162 /* pthread */, + A7D8A77723E2513E00DCD162 /* SDL_systhread.h */, + A7D8A77823E2513E00DCD162 /* SDL_thread_c.h */, + A7D8A77923E2513E00DCD162 /* SDL_thread.c */, + ); + path = thread; + sourceTree = ""; + }; + A7D8A78123E2513E00DCD162 /* pthread */ = { + isa = PBXGroup; + children = ( + 56A2373229F9C113003CCA5F /* SDL_sysrwlock.c */, + A7D8A78523E2513E00DCD162 /* SDL_syscond.c */, + A7D8A78823E2513E00DCD162 /* SDL_sysmutex_c.h */, + A7D8A78723E2513E00DCD162 /* SDL_sysmutex.c */, + A7D8A78323E2513E00DCD162 /* SDL_syssem.c */, + A7D8A78423E2513E00DCD162 /* SDL_systhread_c.h */, + A7D8A78623E2513E00DCD162 /* SDL_systhread.c */, + A7D8A78223E2513E00DCD162 /* SDL_systls.c */, + ); + path = pthread; + sourceTree = ""; + }; + A7D8A79D23E2513E00DCD162 /* joystick */ = { + isa = PBXGroup; + children = ( + A7D8A7AA23E2513E00DCD162 /* apple */, + A7D8A7CC23E2513E00DCD162 /* darwin */, + A7D8A79F23E2513E00DCD162 /* dummy */, + A7D8A7BE23E2513E00DCD162 /* hidapi */, + A7D8A7A123E2513E00DCD162 /* steam */, + 75E09157241EA924004729E1 /* virtual */, + F362B9152B3349E200D30B94 /* controller_list.h */, + F3820712284F3609004DD584 /* controller_type.c */, + A7D8A7D923E2513E00DCD162 /* controller_type.h */, + F362B9162B3349E200D30B94 /* SDL_gamepad_c.h */, + A7D8A79E23E2513E00DCD162 /* SDL_gamepad_db.h */, + A7D8A7AD23E2513E00DCD162 /* SDL_gamepad.c */, + A7D8A7D023E2513E00DCD162 /* SDL_joystick_c.h */, + A7D8A7A923E2513E00DCD162 /* SDL_joystick.c */, + F362B9182B3349E200D30B94 /* SDL_steam_virtual_gamepad.c */, + F362B9172B3349E200D30B94 /* SDL_steam_virtual_gamepad.h */, + A7D8A7CF23E2513E00DCD162 /* SDL_sysjoystick.h */, + A7D8A7CB23E2513E00DCD162 /* usb_ids.h */, + ); + path = joystick; + sourceTree = ""; + }; + A7D8A79F23E2513E00DCD162 /* dummy */ = { + isa = PBXGroup; + children = ( + A7D8A7A023E2513E00DCD162 /* SDL_sysjoystick.c */, + ); + path = dummy; + sourceTree = ""; + }; + A7D8A7A123E2513E00DCD162 /* steam */ = { + isa = PBXGroup; + children = ( + A7D8A7A723E2513E00DCD162 /* SDL_steamcontroller.c */, + A7D8A7A523E2513E00DCD162 /* SDL_steamcontroller.h */, + ); + path = steam; + sourceTree = ""; + }; + A7D8A7AA23E2513E00DCD162 /* apple */ = { + isa = PBXGroup; + children = ( + F395C1B02569C6A000942BFF /* SDL_mfijoystick_c.h */, + F395C1AF2569C6A000942BFF /* SDL_mfijoystick.m */, + ); + path = apple; + sourceTree = ""; + }; + A7D8A7BE23E2513E00DCD162 /* hidapi */ = { + isa = PBXGroup; + children = ( + A797456F2B2E9D39009D224A /* SDL_hidapi_steamdeck.c */, + F32305FE28939F6400E66D30 /* SDL_hidapi_combined.c */, + A7D8A7C923E2513E00DCD162 /* SDL_hidapi_gamecube.c */, + F3F07D59269640160074468B /* SDL_hidapi_luna.c */, + F388C95428B5F6F600661ECF /* SDL_hidapi_ps3.c */, + A7D8A7C323E2513E00DCD162 /* SDL_hidapi_ps4.c */, + F3A4909D2554D38500E92A8B /* SDL_hidapi_ps5.c */, + A75FDBC423EA380300529352 /* SDL_hidapi_rumble.c */, + A75FDBC323EA380300529352 /* SDL_hidapi_rumble.h */, + 9846B07B287A9020000C35C8 /* SDL_hidapi_shield.c */, + F3984CCF25BCC92800374F43 /* SDL_hidapi_stadia.c */, + A75FDAAC23E2795C00529352 /* SDL_hidapi_steam.c */, + A7D8A7C623E2513E00DCD162 /* SDL_hidapi_switch.c */, + F3D60A8228C16A1800788A3A /* SDL_hidapi_wii.c */, + A7D8A7C223E2513E00DCD162 /* SDL_hidapi_xbox360.c */, + A7D8A7C823E2513E00DCD162 /* SDL_hidapi_xbox360w.c */, + A7D8A7C523E2513E00DCD162 /* SDL_hidapi_xboxone.c */, + A7D8A7C723E2513E00DCD162 /* SDL_hidapijoystick_c.h */, + A7D8A7C423E2513E00DCD162 /* SDL_hidapijoystick.c */, + ); + path = hidapi; + sourceTree = ""; + }; + A7D8A7CC23E2513E00DCD162 /* darwin */ = { + isa = PBXGroup; + children = ( + F395C1912569C68E00942BFF /* SDL_iokitjoystick_c.h */, + F395C1922569C68E00942BFF /* SDL_iokitjoystick.c */, + ); + path = darwin; + sourceTree = ""; + }; + A7D8A7DA23E2513E00DCD162 /* file */ = { + isa = PBXGroup; + children = ( + A7D8A7DC23E2513F00DCD162 /* cocoa */, + A7D8A7DB23E2513F00DCD162 /* SDL_iostream.c */, + ); + path = file; + sourceTree = ""; + }; + A7D8A7DC23E2513F00DCD162 /* cocoa */ = { + isa = PBXGroup; + children = ( + A7D8A7DD23E2513F00DCD162 /* SDL_iostreambundlesupport.h */, + A7D8A7DE23E2513F00DCD162 /* SDL_iostreambundlesupport.m */, + ); + path = cocoa; + sourceTree = ""; + }; + A7D8A7DF23E2513F00DCD162 /* power */ = { + isa = PBXGroup; + children = ( + A7D8A7EA23E2513F00DCD162 /* macos */, + A7D8A7E023E2513F00DCD162 /* uikit */, + A7D8A7E723E2513F00DCD162 /* SDL_power.c */, + A7D8A7F423E2513F00DCD162 /* SDL_syspower.h */, + ); + path = power; + sourceTree = ""; + }; + A7D8A7E023E2513F00DCD162 /* uikit */ = { + isa = PBXGroup; + children = ( + A7D8A7E123E2513F00DCD162 /* SDL_syspower.m */, + A7D8A7E223E2513F00DCD162 /* SDL_syspower.h */, + ); + path = uikit; + sourceTree = ""; + }; + A7D8A7EA23E2513F00DCD162 /* macos */ = { + isa = PBXGroup; + children = ( + A7D8A7EB23E2513F00DCD162 /* SDL_syspower.c */, + ); + path = macos; + sourceTree = ""; + }; + A7D8A7F623E2513F00DCD162 /* filesystem */ = { + isa = PBXGroup; + children = ( + A7D8A7FD23E2513F00DCD162 /* cocoa */, + A7D8A7F723E2513F00DCD162 /* dummy */, + 00002B010DB1A70931C20000 /* SDL_filesystem.c */, + F37E18612BAA40090098C111 /* SDL_sysfilesystem.h */, + 000050A2BB34616138570000 /* posix */, + ); + path = filesystem; + sourceTree = ""; + }; + A7D8A7F723E2513F00DCD162 /* dummy */ = { + isa = PBXGroup; + children = ( + A7D8A7F823E2513F00DCD162 /* SDL_sysfilesystem.c */, + ); + path = dummy; + sourceTree = ""; + }; + A7D8A7FD23E2513F00DCD162 /* cocoa */ = { + isa = PBXGroup; + children = ( + A7D8A7FE23E2513F00DCD162 /* SDL_sysfilesystem.m */, + ); + path = cocoa; + sourceTree = ""; + }; + A7D8A80923E2513F00DCD162 /* hidapi */ = { + isa = PBXGroup; + children = ( + A75FDAA423E2790500529352 /* ios */, + A75FDB9123E4C8B800529352 /* mac */, + A75FDBA423E4CB6F00529352 /* AUTHORS.txt */, + A75FDB5723E39E6100529352 /* hidapi.h */, + A75FDBA323E4CB6F00529352 /* LICENSE-bsd.txt */, + A75FDBA623E4CB6F00529352 /* LICENSE-gpl3.txt */, + A75FDBA523E4CB6F00529352 /* LICENSE-orig.txt */, + A75FDBA723E4CB6F00529352 /* LICENSE.txt */, + F3990E012A788303000D8759 /* SDL_hidapi_c.h */, + F3990E032A788303000D8759 /* SDL_hidapi_ios.h */, + F3990E022A788303000D8759 /* SDL_hidapi_mac.h */, + A7D8A81423E2513F00DCD162 /* SDL_hidapi.c */, + ); + path = hidapi; + sourceTree = ""; + }; + A7D8A85D23E2513F00DCD162 /* loadso */ = { + isa = PBXGroup; + children = ( + A7D8A86223E2513F00DCD162 /* dlopen */, + A7D8A85E23E2513F00DCD162 /* dummy */, + ); + path = loadso; + sourceTree = ""; + }; + A7D8A85E23E2513F00DCD162 /* dummy */ = { + isa = PBXGroup; + children = ( + A7D8A85F23E2513F00DCD162 /* SDL_sysloadso.c */, + ); + path = dummy; + sourceTree = ""; + }; + A7D8A86223E2513F00DCD162 /* dlopen */ = { + isa = PBXGroup; + children = ( + A7D8A86323E2513F00DCD162 /* SDL_sysloadso.c */, + ); + path = dlopen; + sourceTree = ""; + }; + A7D8A86423E2513F00DCD162 /* audio */ = { + isa = PBXGroup; + children = ( + A7D8A8B923E2513F00DCD162 /* coreaudio */, + A7D8A8AF23E2513F00DCD162 /* disk */, + A7D8A87023E2513F00DCD162 /* dummy */, + A7D8A87323E2513F00DCD162 /* SDL_audio_c.h */, + F32DDAC92AB795A30041EAA5 /* SDL_audio_channel_converters.h */, + F32DDACC2AB795A30041EAA5 /* SDL_audio_resampler_filter.h */, + A7D8A8B823E2513F00DCD162 /* SDL_audio.c */, + A7D8A8A123E2513F00DCD162 /* SDL_audiocvt.c */, + A7D8A87723E2513F00DCD162 /* SDL_audiodev_c.h */, + A7D8A88F23E2513F00DCD162 /* SDL_audiodev.c */, + F32DDACB2AB795A30041EAA5 /* SDL_audioqueue.c */, + F32DDACD2AB795A30041EAA5 /* SDL_audioqueue.h */, + F32DDACE2AB795A30041EAA5 /* SDL_audioresample.c */, + F32DDACA2AB795A30041EAA5 /* SDL_audioresample.h */, + A7D8A8A023E2513F00DCD162 /* SDL_audiotypecvt.c */, + A7D8A86523E2513F00DCD162 /* SDL_mixer.c */, + A7D8A89F23E2513F00DCD162 /* SDL_sysaudio.h */, + A7D8A86623E2513F00DCD162 /* SDL_wave.c */, + A7D8A8A223E2513F00DCD162 /* SDL_wave.h */, + ); + path = audio; + sourceTree = ""; + }; + A7D8A87023E2513F00DCD162 /* dummy */ = { + isa = PBXGroup; + children = ( + A7D8A87123E2513F00DCD162 /* SDL_dummyaudio.h */, + A7D8A87223E2513F00DCD162 /* SDL_dummyaudio.c */, + ); + path = dummy; + sourceTree = ""; + }; + A7D8A8AF23E2513F00DCD162 /* disk */ = { + isa = PBXGroup; + children = ( + A7D8A8B023E2513F00DCD162 /* SDL_diskaudio.h */, + A7D8A8B123E2513F00DCD162 /* SDL_diskaudio.c */, + ); + path = disk; + sourceTree = ""; + }; + A7D8A8B923E2513F00DCD162 /* coreaudio */ = { + isa = PBXGroup; + children = ( + A7D8A8BA23E2513F00DCD162 /* SDL_coreaudio.h */, + A7D8A8BB23E2513F00DCD162 /* SDL_coreaudio.m */, + ); + path = coreaudio; + sourceTree = ""; + }; + A7D8A8D223E2514000DCD162 /* stdlib */ = { + isa = PBXGroup; + children = ( + F3973FA128A59BDD00B84553 /* SDL_crc16.c */, + F395BF6425633B2400942BFF /* SDL_crc32.c */, + A7D8A8D423E2514000DCD162 /* SDL_getenv.c */, + A7D8A8D323E2514000DCD162 /* SDL_iconv.c */, + A7D8A8D923E2514000DCD162 /* SDL_malloc.c */, + F316ABD72B5C3185002EF551 /* SDL_memcpy.c */, + F316ABDA2B5CA721002EF551 /* SDL_memmove.c */, + F316ABD62B5C3185002EF551 /* SDL_memset.c */, + A7D8A8D723E2514000DCD162 /* SDL_qsort.c */, + A7D8A8D823E2514000DCD162 /* SDL_stdlib.c */, + A7D8A8D523E2514000DCD162 /* SDL_string.c */, + A7D8A8D623E2514000DCD162 /* SDL_strtokr.c */, + F3973FA028A59BDD00B84553 /* SDL_vacopy.h */, + ); + path = stdlib; + sourceTree = ""; + }; + A7D8A8DA23E2514000DCD162 /* render */ = { + isa = PBXGroup; + children = ( + A7D8A8DD23E2514000DCD162 /* metal */, + A7D8A90C23E2514000DCD162 /* opengl */, + A7D8A90323E2514000DCD162 /* opengles2 */, + A7D8A8EF23E2514000DCD162 /* software */, + A7D8A8FF23E2514000DCD162 /* SDL_d3dmath.c */, + A7D8A8DC23E2514000DCD162 /* SDL_d3dmath.h */, + A7D8A8DB23E2514000DCD162 /* SDL_render.c */, + E4F7981D2AD8D86A00669F54 /* SDL_render_unsupported.c */, + A7D8A8EE23E2514000DCD162 /* SDL_sysrender.h */, + A7D8A8EC23E2514000DCD162 /* SDL_yuv_sw_c.h */, + A7D8A8ED23E2514000DCD162 /* SDL_yuv_sw.c */, + ); + path = render; + sourceTree = ""; + }; + A7D8A8DD23E2514000DCD162 /* metal */ = { + isa = PBXGroup; + children = ( + A7D8A8DE23E2514000DCD162 /* SDL_render_metal.m */, + A7D8A8DF23E2514000DCD162 /* SDL_shaders_metal_ios.h */, + A7D8A8E223E2514000DCD162 /* SDL_shaders_metal_macos.h */, + A7D8A8E323E2514000DCD162 /* SDL_shaders_metal_tvos.h */, + A7D8A8E023E2514000DCD162 /* SDL_shaders_metal.metal */, + ); + path = metal; + sourceTree = ""; + }; + A7D8A8EF23E2514000DCD162 /* software */ = { + isa = PBXGroup; + children = ( + A1626A512617008C003F1973 /* SDL_triangle.h */, + A1626A3D2617006A003F1973 /* SDL_triangle.c */, + A7D8A8FD23E2514000DCD162 /* SDL_blendfillrect.c */, + A7D8A8F623E2514000DCD162 /* SDL_blendfillrect.h */, + A7D8A8FB23E2514000DCD162 /* SDL_blendline.c */, + A7D8A8F223E2514000DCD162 /* SDL_blendline.h */, + A7D8A8F023E2514000DCD162 /* SDL_blendpoint.c */, + A7D8A8F823E2514000DCD162 /* SDL_blendpoint.h */, + A7D8A8FA23E2514000DCD162 /* SDL_draw.h */, + A7D8A8F123E2514000DCD162 /* SDL_drawline.c */, + A7D8A8F723E2514000DCD162 /* SDL_drawline.h */, + A7D8A8FC23E2514000DCD162 /* SDL_drawpoint.c */, + A7D8A8F323E2514000DCD162 /* SDL_drawpoint.h */, + A7D8A8F523E2514000DCD162 /* SDL_render_sw_c.h */, + A7D8A8F923E2514000DCD162 /* SDL_render_sw.c */, + A7D8A8F423E2514000DCD162 /* SDL_rotate.c */, + A7D8A8FE23E2514000DCD162 /* SDL_rotate.h */, + ); + path = software; + sourceTree = ""; + }; + A7D8A90323E2514000DCD162 /* opengles2 */ = { + isa = PBXGroup; + children = ( + A7D8A90623E2514000DCD162 /* SDL_gles2funcs.h */, + A7D8A90423E2514000DCD162 /* SDL_render_gles2.c */, + A7D8A90723E2514000DCD162 /* SDL_shaders_gles2.c */, + A7D8A90523E2514000DCD162 /* SDL_shaders_gles2.h */, + ); + path = opengles2; + sourceTree = ""; + }; + A7D8A90C23E2514000DCD162 /* opengl */ = { + isa = PBXGroup; + children = ( + A7D8A90E23E2514000DCD162 /* SDL_glfuncs.h */, + A7D8A90F23E2514000DCD162 /* SDL_render_gl.c */, + A7D8A91023E2514000DCD162 /* SDL_shaders_gl.c */, + A7D8A90D23E2514000DCD162 /* SDL_shaders_gl.h */, + ); + path = opengl; + sourceTree = ""; + }; + A7D8A91123E2514000DCD162 /* libm */ = { + isa = PBXGroup; + children = ( + A7D8A91D23E2514000DCD162 /* e_atan2.c */, + A7D8A92123E2514000DCD162 /* e_exp.c */, + A7D8A92023E2514000DCD162 /* e_fmod.c */, + A7D8A92323E2514000DCD162 /* e_log.c */, + A7D8A92223E2514000DCD162 /* e_log10.c */, + A7D8A91C23E2514000DCD162 /* e_pow.c */, + A7D8A91F23E2514000DCD162 /* e_rem_pio2.c */, + A7D8A92423E2514000DCD162 /* e_sqrt.c */, + A7D8A91923E2514000DCD162 /* k_cos.c */, + A7D8A91623E2514000DCD162 /* k_rem_pio2.c */, + A7D8A91723E2514000DCD162 /* k_sin.c */, + A7D8A92723E2514000DCD162 /* k_tan.c */, + A7D8A92623E2514000DCD162 /* math_libm.h */, + A7D8A91B23E2514000DCD162 /* math_private.h */, + A7D8A91823E2514000DCD162 /* s_atan.c */, + A7D8A91423E2514000DCD162 /* s_copysign.c */, + A7D8A91323E2514000DCD162 /* s_cos.c */, + A7D8A91523E2514000DCD162 /* s_fabs.c */, + A7D8A92523E2514000DCD162 /* s_floor.c */, + A7D8A91A23E2514000DCD162 /* s_scalbn.c */, + A7D8A91223E2514000DCD162 /* s_sin.c */, + A7D8A91E23E2514000DCD162 /* s_tan.c */, + ); + path = libm; + sourceTree = ""; + }; + A7D8A92923E2514000DCD162 /* events */ = { + isa = PBXGroup; + children = ( + A7D8A93223E2514000DCD162 /* blank_cursor.h */, + A7D8A93323E2514000DCD162 /* default_cursor.h */, + A7D8A93423E2514000DCD162 /* scancodes_darwin.h */, + A7D8A93623E2514000DCD162 /* scancodes_linux.h */, + A7D8A92C23E2514000DCD162 /* scancodes_windows.h */, + A7D8A94123E2514000DCD162 /* scancodes_xfree86.h */, + A7D8A93923E2514000DCD162 /* SDL_clipboardevents_c.h */, + A7D8A93A23E2514000DCD162 /* SDL_clipboardevents.c */, + A7D8A93123E2514000DCD162 /* SDL_displayevents_c.h */, + A7D8A92D23E2514000DCD162 /* SDL_displayevents.c */, + A7D8A92E23E2514000DCD162 /* SDL_dropevents_c.h */, + A7D8A93B23E2514000DCD162 /* SDL_dropevents.c */, + A7D8A94223E2514000DCD162 /* SDL_events_c.h */, + A7D8A93523E2514000DCD162 /* SDL_events.c */, + A7D8A93D23E2514000DCD162 /* SDL_keyboard_c.h */, + A7D8A93823E2514000DCD162 /* SDL_keyboard.c */, + A7D8A92B23E2514000DCD162 /* SDL_mouse_c.h */, + A7D8A92A23E2514000DCD162 /* SDL_mouse.c */, + 63134A232A7902FD0021E9A6 /* SDL_pen_c.h */, + 63134A242A7902FD0021E9A6 /* SDL_pen.c */, + A7D8A93C23E2514000DCD162 /* SDL_quit.c */, + A7D8A93723E2514000DCD162 /* SDL_touch_c.h */, + A7D8A93E23E2514000DCD162 /* SDL_touch.c */, + A7D8A94323E2514000DCD162 /* SDL_windowevents_c.h */, + A7D8A92F23E2514000DCD162 /* SDL_windowevents.c */, + ); + path = events; + sourceTree = ""; + }; + E2D187D028A5673500D2B4F1 /* SDL3 */ = { + isa = PBXGroup; + children = ( + E2D187D228A5673500D2B4F1 /* Info.plist */, + ); + path = SDL3; + sourceTree = ""; + }; + E47911832BA9555500CE3B7F /* storage */ = { + isa = PBXGroup; + children = ( + E47911872BA9555500CE3B7F /* SDL_storage.c */, + E47911882BA9555500CE3B7F /* SDL_sysstorage.h */, + E47911892BA9555500CE3B7F /* generic */, + ); + path = storage; + sourceTree = ""; + }; + E47911892BA9555500CE3B7F /* generic */ = { + isa = PBXGroup; + children = ( + E479118A2BA9555500CE3B7F /* SDL_genericstorage.c */, + ); + path = generic; + sourceTree = ""; + }; + E4A568B42AF763940062EEC4 /* generic */ = { + isa = PBXGroup; + children = ( + E4A568B52AF763940062EEC4 /* SDL_sysmain_callbacks.c */, + ); + path = generic; + sourceTree = ""; + }; + F36C7ACF294B9F5E004D61C3 /* core */ = { + isa = PBXGroup; + children = ( + E4F798192AD8D84800669F54 /* SDL_core_unsupported.c */, + F36C7AD0294BA009004D61C3 /* SDL_runapp.c */, + ); + path = core; + sourceTree = ""; + }; + F37E18542BA50EB40098C111 /* dialog */ = { + isa = PBXGroup; + children = ( + F37E18552BA50ED50098C111 /* cocoa */, + F37E18562BA50F2A0098C111 /* dummy */, + ); + path = dialog; + sourceTree = ""; + }; + F37E18552BA50ED50098C111 /* cocoa */ = { + isa = PBXGroup; + children = ( + F37E18572BA50F3B0098C111 /* SDL_cocoadialog.m */, + ); + path = cocoa; + sourceTree = ""; + }; + F37E18562BA50F2A0098C111 /* dummy */ = { + isa = PBXGroup; + children = ( + F37E18592BA50F450098C111 /* SDL_dummydialog.c */, + ); + path = dummy; + sourceTree = ""; + }; + F3ADAB8C2576F08500A6B1D9 /* ios */ = { + isa = PBXGroup; + children = ( + F3ADAB8D2576F0B300A6B1D9 /* SDL_sysurl.m */, + ); + path = ios; + sourceTree = ""; + }; + F59C70FC00D5CB5801000001 /* pkg-support */ = { + isa = PBXGroup; + children = ( + F59C710100D5CB5801000001 /* resources */, + F59C710600D5CB5801000001 /* SDL.info */, + ); + path = "pkg-support"; + sourceTree = SOURCE_ROOT; + }; + F59C710100D5CB5801000001 /* resources */ = { + isa = PBXGroup; + children = ( + F37A8E1928405AA100C38E95 /* CMake */, + 00794D3F09D0C461003FC8A1 /* License.txt */, + F59C710300D5CB5801000001 /* ReadMe.txt */, + ); + path = resources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + BECDF5FF0761BA81005FE872 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + F3F7D9812933074E00816151 /* SDL.h in Headers */, + A7D8B39E23E2514200DCD162 /* SDL_RLEaccel_c.h in Headers */, + F3F7D9C52933074E00816151 /* SDL_assert.h in Headers */, + A7D8B61723E2514300DCD162 /* SDL_assert_c.h in Headers */, + F3F7D9292933074E00816151 /* SDL_atomic.h in Headers */, + F3F7D8ED2933074E00816151 /* SDL_audio.h in Headers */, + A7D8B7A023E2514400DCD162 /* SDL_audio_c.h in Headers */, + F32DDACF2AB795A30041EAA5 /* SDL_audio_channel_converters.h in Headers */, + F32DDAD22AB795A30041EAA5 /* SDL_audio_resampler_filter.h in Headers */, + A7D8B7B223E2514400DCD162 /* SDL_audiodev_c.h in Headers */, + F32DDAD32AB795A30041EAA5 /* SDL_audioqueue.h in Headers */, + F32DDAD02AB795A30041EAA5 /* SDL_audioresample.h in Headers */, + F3F7D9E12933074E00816151 /* SDL_begin_code.h in Headers */, + F3F7D9A52933074E00816151 /* SDL_bits.h in Headers */, + A7D8BA0123E2514400DCD162 /* SDL_blendfillrect.h in Headers */, + A7D8B9E923E2514400DCD162 /* SDL_blendline.h in Headers */, + F3F7D97D2933074E00816151 /* SDL_blendmode.h in Headers */, + A7D8BA0D23E2514400DCD162 /* SDL_blendpoint.h in Headers */, + A7D8B3B623E2514200DCD162 /* SDL_blit.h in Headers */, + A7D8B2BA23E2514200DCD162 /* SDL_blit_auto.h in Headers */, + A7D8B39823E2514200DCD162 /* SDL_blit_copy.h in Headers */, + A7D8ADEC23E2514100DCD162 /* SDL_blit_slow.h in Headers */, + F37E184E2B8C097D0098C111 /* SDL_camera.h in Headers */, + F3F7D9A12933074E00816151 /* SDL_clipboard.h in Headers */, + F3DDCC562AFD42B600B0842B /* SDL_clipboard_c.h in Headers */, + A7D8BB6F23E2514500DCD162 /* SDL_clipboardevents_c.h in Headers */, + F3F7D9D92933074E00816151 /* SDL_close_code.h in Headers */, + A7D8AECA23E2514100DCD162 /* SDL_cocoaclipboard.h in Headers */, + A7D8AF1223E2514100DCD162 /* SDL_cocoaevents.h in Headers */, + A7D8AE8E23E2514100DCD162 /* SDL_cocoakeyboard.h in Headers */, + A7D8AF0623E2514100DCD162 /* SDL_cocoamessagebox.h in Headers */, + A7D8AEB223E2514100DCD162 /* SDL_cocoametalview.h in Headers */, + A7D8AEF423E2514100DCD162 /* SDL_cocoamodes.h in Headers */, + A7D8AF1E23E2514100DCD162 /* SDL_cocoamouse.h in Headers */, + A7D8AEDC23E2514100DCD162 /* SDL_cocoaopengl.h in Headers */, + A7D8AEEE23E2514100DCD162 /* SDL_cocoaopengles.h in Headers */, + F3681E812B7AA6240002C6FD /* SDL_cocoashape.h in Headers */, + A7D8AF0023E2514100DCD162 /* SDL_cocoavideo.h in Headers */, + A7D8AEE823E2514100DCD162 /* SDL_cocoavulkan.h in Headers */, + A7D8AEFA23E2514100DCD162 /* SDL_cocoawindow.h in Headers */, + F3F7D9D12933074E00816151 /* SDL_copying.h in Headers */, + A7D8B8CC23E2514400DCD162 /* SDL_coreaudio.h in Headers */, + A7D8A96F23E2514000DCD162 /* SDL_coremotionsensor.h in Headers */, + F3F7D9B92933074E00816151 /* SDL_cpuinfo.h in Headers */, + A7D8B98023E2514400DCD162 /* SDL_d3dmath.h in Headers */, + A7D8B8A223E2514400DCD162 /* SDL_diskaudio.h in Headers */, + A7D8BB3F23E2514500DCD162 /* SDL_displayevents_c.h in Headers */, + A7D8BA1923E2514400DCD162 /* SDL_draw.h in Headers */, + E479118E2BA9555500CE3B7F /* SDL_sysstorage.h in Headers */, + A7D8BA0723E2514400DCD162 /* SDL_drawline.h in Headers */, + A7D8B9EF23E2514400DCD162 /* SDL_drawpoint.h in Headers */, + A7D8BB2D23E2514500DCD162 /* SDL_dropevents_c.h in Headers */, + A7D8B79423E2514400DCD162 /* SDL_dummyaudio.h in Headers */, + A7D8A96323E2514000DCD162 /* SDL_dummysensor.h in Headers */, + A7D8AB0A23E2514100DCD162 /* SDL_dynapi.h in Headers */, + A7D8AB1023E2514100DCD162 /* SDL_dynapi_overrides.h in Headers */, + A7D8AB1C23E2514100DCD162 /* SDL_dynapi_procs.h in Headers */, + E4F7981C2AD8D85500669F54 /* SDL_dynapi_unsupported.h in Headers */, + F3F7D9252933074E00816151 /* SDL_egl.h in Headers */, + A7D8ABD923E2514100DCD162 /* SDL_egl_c.h in Headers */, + F3F7D93D2933074E00816151 /* SDL_endian.h in Headers */, + F3F7D9352933074E00816151 /* SDL_error.h in Headers */, + A7D8A95D23E2514000DCD162 /* SDL_error_c.h in Headers */, + F3F7D9712933074E00816151 /* SDL_events.h in Headers */, + A7D8BBA523E2514500DCD162 /* SDL_events_c.h in Headers */, + F3F7D99D2933074E00816151 /* SDL_filesystem.h in Headers */, + F3F7D9852933074E00816151 /* SDL_gamepad.h in Headers */, + F362B91A2B3349E200D30B94 /* SDL_gamepad_c.h in Headers */, + A7D8B4AC23E2514300DCD162 /* SDL_gamepad_db.h in Headers */, + A7D8BA5523E2514400DCD162 /* SDL_gles2funcs.h in Headers */, + A7D8BA7923E2514400DCD162 /* SDL_glfuncs.h in Headers */, + F3F7D9892933074E00816151 /* SDL_guid.h in Headers */, + F3F7D8F92933074E00816151 /* SDL_haptic.h in Headers */, + A7D8AABC23E2514100DCD162 /* SDL_haptic_c.h in Headers */, + F3F7D96D2933074E00816151 /* SDL_hidapi.h in Headers */, + F3990E042A788303000D8759 /* SDL_hidapi_c.h in Headers */, + F3990E062A788303000D8759 /* SDL_hidapi_ios.h in Headers */, + F3990E052A788303000D8759 /* SDL_hidapi_mac.h in Headers */, + A75FDBC523EA380300529352 /* SDL_hidapi_rumble.h in Headers */, + A7D8B55723E2514300DCD162 /* SDL_hidapijoystick_c.h in Headers */, + F3F7D9112933074E00816151 /* SDL_hints.h in Headers */, + A7D8B94A23E2514400DCD162 /* SDL_hints_c.h in Headers */, + F3B38CD7296E2E52005DA6D3 /* SDL_init.h in Headers */, + A7D8A99923E2514000DCD162 /* SDL_internal.h in Headers */, + F3B38CDF296E2E52005DA6D3 /* SDL_intrin.h in Headers */, + F395C1932569C68F00942BFF /* SDL_iokitjoystick_c.h in Headers */, + F3F7D9912933074E00816151 /* SDL_joystick.h in Headers */, + A7D8B58723E2514300DCD162 /* SDL_joystick_c.h in Headers */, + F3F7D9512933074E00816151 /* SDL_keyboard.h in Headers */, + A7D8BB8723E2514500DCD162 /* SDL_keyboard_c.h in Headers */, + F3F7D9752933074E00816151 /* SDL_keycode.h in Headers */, + A1BB8B6C27F6CF330057CFA8 /* SDL_list.h in Headers */, + F3F7D9A92933074E00816151 /* SDL_loadso.h in Headers */, + F3F7D9552933074E00816151 /* SDL_locale.h in Headers */, + F3F7D9212933074E00816151 /* SDL_log.h in Headers */, + F386F6E72884663E001840AA /* SDL_log_c.h in Headers */, + F3F7D9052933074E00816151 /* SDL_main.h in Headers */, + F3B38CCF296E2E52005DA6D3 /* SDL_main_impl.h in Headers */, + F3F7D91D2933074E00816151 /* SDL_messagebox.h in Headers */, + F3F7D98D2933074E00816151 /* SDL_metal.h in Headers */, + F395C1BA2569C6A000942BFF /* SDL_mfijoystick_c.h in Headers */, + F3F7D9992933074E00816151 /* SDL_misc.h in Headers */, + F3F7D9AD2933074E00816151 /* SDL_mouse.h in Headers */, + A7D8BB1B23E2514500DCD162 /* SDL_mouse_c.h in Headers */, + F3F7D9DD2933074E00816151 /* SDL_mutex.h in Headers */, + A7D8ABFD23E2514100DCD162 /* SDL_nullevents_c.h in Headers */, + A7D8ABE523E2514100DCD162 /* SDL_nullframebuffer_c.h in Headers */, + A7D8ABF723E2514100DCD162 /* SDL_nullvideo.h in Headers */, + A7D8AB5B23E2514100DCD162 /* SDL_offscreenevents_c.h in Headers */, + A7D8AB7F23E2514100DCD162 /* SDL_offscreenframebuffer_c.h in Headers */, + F31A92C828D4CB39003BFD6A /* SDL_offscreenopengles.h in Headers */, + A7D8AB6D23E2514100DCD162 /* SDL_offscreenvideo.h in Headers */, + A7D8AB8523E2514100DCD162 /* SDL_offscreenwindow.h in Headers */, + F37E18642BAA40670098C111 /* SDL_time_c.h in Headers */, + F3B38CDB296E2E52005DA6D3 /* SDL_oldnames.h in Headers */, + F3F7D9C92933074E00816151 /* SDL_opengl.h in Headers */, + F3F7D9452933074E00816151 /* SDL_opengl_glext.h in Headers */, + F3F7D95D2933074E00816151 /* SDL_opengles.h in Headers */, + F3F7D9612933074E00816151 /* SDL_opengles2.h in Headers */, + F3F7D8FD2933074E00816151 /* SDL_opengles2_gl2.h in Headers */, + F3F7D9392933074E00816151 /* SDL_opengles2_gl2ext.h in Headers */, + F3F7D9692933074E00816151 /* SDL_opengles2_gl2platform.h in Headers */, + F3F7D9092933074E00816151 /* SDL_opengles2_khrplatform.h in Headers */, + 63134A222A7902CF0021E9A6 /* SDL_pen.h in Headers */, + 63134A252A7902FD0021E9A6 /* SDL_pen_c.h in Headers */, + F3F7D9192933074E00816151 /* SDL_pixels.h in Headers */, + A7D8B2C023E2514200DCD162 /* SDL_pixels_c.h in Headers */, + F3F7D8F12933074E00816151 /* SDL_platform.h in Headers */, + F3B38CD3296E2E52005DA6D3 /* SDL_platform_defines.h in Headers */, + F3F7D9B12933074E00816151 /* SDL_power.h in Headers */, + F3E5A6ED2AD5E10800293D83 /* SDL_properties.h in Headers */, + F3F7D9C12933074E00816151 /* SDL_quit.h in Headers */, + F37E18622BAA40090098C111 /* SDL_sysfilesystem.h in Headers */, + F3F7D9CD2933074E00816151 /* SDL_rect.h in Headers */, + A7D8AC0323E2514100DCD162 /* SDL_rect_c.h in Headers */, + F3DDCC5D2AFD42B600B0842B /* SDL_rect_impl.h in Headers */, + F3F7D9BD2933074E00816151 /* SDL_render.h in Headers */, + A7D8B9FB23E2514400DCD162 /* SDL_render_sw_c.h in Headers */, + F3F7D9152933074E00816151 /* SDL_revision.h in Headers */, + A7D8BA3123E2514400DCD162 /* SDL_rotate.h in Headers */, + F3F7D9652933074E00816151 /* SDL_iostream.h in Headers */, + A7D8B5C323E2514300DCD162 /* SDL_iostreambundlesupport.h in Headers */, + F3F7D9492933074E00816151 /* SDL_scancode.h in Headers */, + F3F7D94D2933074E00816151 /* SDL_sensor.h in Headers */, + A7D8A98D23E2514000DCD162 /* SDL_sensor_c.h in Headers */, + A7D8BA7323E2514400DCD162 /* SDL_shaders_gl.h in Headers */, + A7D8BA4F23E2514400DCD162 /* SDL_shaders_gles2.h in Headers */, + A7D8B98C23E2514400DCD162 /* SDL_shaders_metal_ios.h in Headers */, + A7D8B99B23E2514400DCD162 /* SDL_shaders_metal_macos.h in Headers */, + A7D8B9A123E2514400DCD162 /* SDL_shaders_metal_tvos.h in Headers */, + F3F7D8F52933074E00816151 /* SDL_stdinc.h in Headers */, + F362B91B2B3349E200D30B94 /* SDL_steam_virtual_gamepad.h in Headers */, + A7D8BBC723E2561500DCD162 /* SDL_steamcontroller.h in Headers */, + F3F7D9312933074E00816151 /* SDL_surface.h in Headers */, + A7D8B85A23E2514400DCD162 /* SDL_sysaudio.h in Headers */, + A7D8AAD423E2514100DCD162 /* SDL_syshaptic.h in Headers */, + A7D8AAE023E2514100DCD162 /* SDL_syshaptic_c.h in Headers */, + A7D8B58123E2514300DCD162 /* SDL_sysjoystick.h in Headers */, + 566E26E1246274CC00718109 /* SDL_syslocale.h in Headers */, + A7D8B44023E2514300DCD162 /* SDL_sysmutex_c.h in Headers */, + A7D8B5D523E2514300DCD162 /* SDL_syspower.h in Headers */, + A7D8B61123E2514300DCD162 /* SDL_syspower.h in Headers */, + A7D8B9D723E2514400DCD162 /* SDL_sysrender.h in Headers */, + A7D8A97B23E2514000DCD162 /* SDL_syssensor.h in Headers */, + F3F7D9E52933074E00816151 /* SDL_system.h in Headers */, + A7D8B3E623E2514300DCD162 /* SDL_systhread.h in Headers */, + A7D8B42823E2514300DCD162 /* SDL_systhread_c.h in Headers */, + 5616CA4D252BB2A6005D5928 /* SDL_sysurl.h in Headers */, + A7D8AC3F23E2514100DCD162 /* SDL_sysvideo.h in Headers */, + F3F7D9792933074E00816151 /* SDL_thread.h in Headers */, + A7D8B3EC23E2514300DCD162 /* SDL_thread_c.h in Headers */, + F3F7D90D2933074E00816151 /* SDL_timer.h in Headers */, + A7D8AB3123E2514100DCD162 /* SDL_timer_c.h in Headers */, + F3F7D9012933074E00816151 /* SDL_touch.h in Headers */, + A7D8BB6323E2514500DCD162 /* SDL_touch_c.h in Headers */, + A1626A522617008D003F1973 /* SDL_triangle.h in Headers */, + A7D8BBD223E2574800DCD162 /* SDL_uikitappdelegate.h in Headers */, + A7D8BBD423E2574800DCD162 /* SDL_uikitclipboard.h in Headers */, + A7D8BBD623E2574800DCD162 /* SDL_uikitevents.h in Headers */, + F37E185C2BAA3EF90098C111 /* SDL_time.h in Headers */, + A7D8BBD823E2574800DCD162 /* SDL_uikitmessagebox.h in Headers */, + A7D8BBDA23E2574800DCD162 /* SDL_uikitmetalview.h in Headers */, + A7D8BBDC23E2574800DCD162 /* SDL_uikitmodes.h in Headers */, + A7D8BBDE23E2574800DCD162 /* SDL_uikitopengles.h in Headers */, + A7D8BBE023E2574800DCD162 /* SDL_uikitopenglview.h in Headers */, + A7D8BBE223E2574800DCD162 /* SDL_uikitvideo.h in Headers */, + A7D8BBE423E2574800DCD162 /* SDL_uikitview.h in Headers */, + A7D8BBE623E2574800DCD162 /* SDL_uikitviewcontroller.h in Headers */, + A7D8BBE823E2574800DCD162 /* SDL_uikitvulkan.h in Headers */, + A7D8BBEA23E2574800DCD162 /* SDL_uikitwindow.h in Headers */, + F386F6F02884663E001840AA /* SDL_utils_c.h in Headers */, + F3973FA228A59BDD00B84553 /* SDL_vacopy.h in Headers */, + F3F7D9D52933074E00816151 /* SDL_version.h in Headers */, + F3F7D9592933074E00816151 /* SDL_video.h in Headers */, + F3DDCC5B2AFD42B600B0842B /* SDL_video_c.h in Headers */, + 75E09163241EA924004729E1 /* SDL_virtualjoystick_c.h in Headers */, + F3F7D9952933074E00816151 /* SDL_vulkan.h in Headers */, + A7D8AD1D23E2514100DCD162 /* SDL_vulkan_internal.h in Headers */, + A7D8B86C23E2514400DCD162 /* SDL_wave.h in Headers */, + A7D8BBAB23E2514500DCD162 /* SDL_windowevents_c.h in Headers */, + A7D8B3B023E2514200DCD162 /* SDL_yuv_c.h in Headers */, + A7D8B9CB23E2514400DCD162 /* SDL_yuv_sw_c.h in Headers */, + A7D8BB4523E2514500DCD162 /* blank_cursor.h in Headers */, + F362B9192B3349E200D30B94 /* controller_list.h in Headers */, + A7D8B5B723E2514300DCD162 /* controller_type.h in Headers */, + A7D8BB4B23E2514500DCD162 /* default_cursor.h in Headers */, + A7D8B23C23E2514200DCD162 /* egl.h in Headers */, + A7D8B24223E2514200DCD162 /* eglext.h in Headers */, + A7D8B24823E2514200DCD162 /* eglplatform.h in Headers */, + A7D8B22A23E2514200DCD162 /* gl2.h in Headers */, + A7D8B22423E2514200DCD162 /* gl2ext.h in Headers */, + A7D8B23023E2514200DCD162 /* gl2platform.h in Headers */, + A75FDB5823E39E6100529352 /* hidapi.h in Headers */, + A7D8B23623E2514200DCD162 /* khrplatform.h in Headers */, + A7D8BB0323E2514500DCD162 /* math_libm.h in Headers */, + A7D8BAC123E2514500DCD162 /* math_private.h in Headers */, + A7D8BB5123E2514500DCD162 /* scancodes_darwin.h in Headers */, + A7D8BB5D23E2514500DCD162 /* scancodes_linux.h in Headers */, + A7D8BB2123E2514500DCD162 /* scancodes_windows.h in Headers */, + A7D8BB9F23E2514500DCD162 /* scancodes_xfree86.h in Headers */, + A7D8B56F23E2514300DCD162 /* usb_ids.h in Headers */, + A7D8B25423E2514200DCD162 /* vk_icd.h in Headers */, + A7D8B24E23E2514200DCD162 /* vk_layer.h in Headers */, + A7D8B26623E2514200DCD162 /* vk_platform.h in Headers */, + A7D8B2AE23E2514200DCD162 /* vk_sdk_platform.h in Headers */, + A7D8B26023E2514200DCD162 /* vulkan.h in Headers */, + A7D8B26C23E2514200DCD162 /* vulkan.hpp in Headers */, + A7D8B2B423E2514200DCD162 /* vulkan_android.h in Headers */, + A7D8B2A823E2514200DCD162 /* vulkan_core.h in Headers */, + E41D20152BA9577D003073FA /* SDL_storage.h in Headers */, + F37E18522BA50E760098C111 /* SDL_dialog.h in Headers */, + A7D8B27223E2514200DCD162 /* vulkan_fuchsia.h in Headers */, + A7D8B2A223E2514200DCD162 /* vulkan_ios.h in Headers */, + A7D8B28423E2514200DCD162 /* vulkan_macos.h in Headers */, + A7D8B29623E2514200DCD162 /* vulkan_mir.h in Headers */, + A7D8B25A23E2514200DCD162 /* vulkan_vi.h in Headers */, + A7D8B27823E2514200DCD162 /* vulkan_wayland.h in Headers */, + A7D8B27E23E2514200DCD162 /* vulkan_win32.h in Headers */, + A7D8B29023E2514200DCD162 /* vulkan_xcb.h in Headers */, + A7D8B29C23E2514200DCD162 /* vulkan_xlib.h in Headers */, + A7D8B28A23E2514200DCD162 /* vulkan_xlib_xrandr.h in Headers */, + A7D8B3D423E2514300DCD162 /* yuv_rgb.h in Headers */, + F3FA5A252B59ACE000FEAD97 /* yuv_rgb_common.h in Headers */, + F3FA5A1D2B59ACE000FEAD97 /* yuv_rgb_internal.h in Headers */, + F3FA5A242B59ACE000FEAD97 /* yuv_rgb_lsx.h in Headers */, + F3FA5A1E2B59ACE000FEAD97 /* yuv_rgb_lsx_func.h in Headers */, + F3FA5A1F2B59ACE000FEAD97 /* yuv_rgb_sse.h in Headers */, + A7D8B3C823E2514200DCD162 /* yuv_rgb_sse_func.h in Headers */, + F3FA5A202B59ACE000FEAD97 /* yuv_rgb_std.h in Headers */, + A7D8B3CE23E2514300DCD162 /* yuv_rgb_std_func.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + BECDF5FE0761BA81005FE872 /* SDL3 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0073177A0858DB0500B2BC32 /* Build configuration list for PBXNativeTarget "SDL3" */; + buildPhases = ( + BECDF5FF0761BA81005FE872 /* Headers */, + BECDF62A0761BA81005FE872 /* Resources */, + BECDF62C0761BA81005FE872 /* Sources */, + BECDF6680761BA81005FE872 /* Frameworks */, + A75FDB9C23E4CAEF00529352 /* Embed Frameworks */, + ); + buildRules = ( + ); + comments = "We recommend installing to /Library/Frameworks\nAn alternative is $(HOME)/Library/Frameworks for per-user if permissions are an issue.\n\nAdd the framework to the Groups & Files panel (under Linked Frameworks is a good place) and enable the check box for the targets that need to link to it. You can also manually add \"-framework SDL\" to your linker flags if you don't like the check box system.\n\nAdd /Library/Frameworks/SDL.framework/Headers to your header search path\nAdd /Library/Frameworks to your library search path\n(Adjust the two above if installed in $(HOME)/Library/Frameworks. You can also list both paths if you want robustness.)\n\nWe used to use an exports file. It was becoming a maintenance issue we kept neglecting, so we have removed it.\n\n"; + dependencies = ( + ); + name = SDL3; + productInstallPath = "@executable_path/../Frameworks"; + productName = SDL; + productReference = BECDF66C0761BA81005FE872 /* SDL3.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 1130; + TargetAttributes = { + F3676F582A7885080091160D = { + CreatedOnToolsVersion = 14.3.1; + }; + F3B38CEC296F63B6005DA6D3 = { + CreatedOnToolsVersion = 14.2; + }; + }; + }; + buildConfigurationList = 0073178E0858DB0500B2BC32 /* Build configuration list for PBXProject "SDL" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + en, + Base, + ); + mainGroup = 0867D691FE84028FC02AAC07 /* SDLFramework */; + productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + BECDF5FE0761BA81005FE872 /* SDL3 */, + F3B38CEC296F63B6005DA6D3 /* SDL3.xcframework */, + F3676F582A7885080091160D /* SDL3.dmg */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + BECDF62A0761BA81005FE872 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F37A8E1A28405AA100C38E95 /* CMake in Resources */, + A75FDBB823E4CBC700529352 /* ReadMe.txt in Resources */, + A75FDBB723E4CBC700529352 /* License.txt in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + F3676F5E2A78852D0091160D /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "mkdir -p build/dmg-tmp/share/cmake/SDL3\ncp -a build/SDL3.xcframework build/dmg-tmp/\n\ncp pkg-support/resources/License.txt build/dmg-tmp\ncp pkg-support/resources/ReadMe.txt build/dmg-tmp\ncp pkg-support/resources/CMake/sdl3-config.cmake build/dmg-tmp/share/cmake/SDL3\ncp pkg-support/resources/CMake/sdl3-config-version.cmake build/dmg-tmp/share/cmake/SDL3\n\n\nmkdir -p \n\n# remove the .DS_Store files if any (we may want to provide one in the future for fancy .dmgs)\nfind build/dmg-tmp -name .DS_Store -exec rm -f \"{}\" \\;\n\n# for fancy .dmg\nmkdir -p build/dmg-tmp/.logo\ncp pkg-support/resources/SDL_DS_Store build/dmg-tmp/.DS_Store\ncp pkg-support/sdl_logo.pdf build/dmg-tmp/.logo\n\n# create the dmg\nhdiutil create -ov -fs HFS+ -volname SDL3 -srcfolder build/dmg-tmp build/SDL3.dmg\n\n# clean up\nrm -rf build/dmg-tmp\n"; + }; + F3B38CF0296F63D1005DA6D3 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Build an xcframework with both device and simulator files for all platforms.\n# Adapted from an answer in\n# https://developer.apple.com/forums/thread/666335?answerId=685927022#685927022\n\nif [ \"$XCODE_VERSION_ACTUAL\" -lt 1100 ]\nthen\n echo \"error: Building an xcframework requires Xcode 11 minimum.\"\n exit 1\nfi\n\nFRAMEWORK_NAME=\"SDL3\"\nPROJECT_NAME=\"SDL\"\nSCHEME=\"SDL3\"\n\nMACOS_ARCHIVE_PATH=\"${BUILD_DIR}/${CONFIGURATION}/${FRAMEWORK_NAME}-macosx.xcarchive\"\nIOS_SIMULATOR_ARCHIVE_PATH=\"${BUILD_DIR}/${CONFIGURATION}/${FRAMEWORK_NAME}-iphonesimulator.xcarchive\"\nIOS_DEVICE_ARCHIVE_PATH=\"${BUILD_DIR}/${CONFIGURATION}/${FRAMEWORK_NAME}-iphoneos.xcarchive\"\nTVOS_SIMULATOR_ARCHIVE_PATH=\"${BUILD_DIR}/${CONFIGURATION}/${FRAMEWORK_NAME}-appletvsimulator.xcarchive\"\nTVOS_DEVICE_ARCHIVE_PATH=\"${BUILD_DIR}/${CONFIGURATION}/${FRAMEWORK_NAME}-appletvos.xcarchive\"\n\nOUTPUT_DIR=\"./build/\"\n\n# macOS\nxcodebuild archive \\\n ONLY_ACTIVE_ARCH=NO \\\n -scheme \"${SCHEME}\" \\\n -project \"${PROJECT_NAME}.xcodeproj\" \\\n -archivePath ${MACOS_ARCHIVE_PATH} \\\n -destination 'generic/platform=macOS,name=Any Mac' \\\n BUILD_LIBRARY_FOR_DISTRIBUTION=YES \\\n SKIP_INSTALL=NO || exit $?\n \n# iOS simulator\nxcodebuild archive \\\n ONLY_ACTIVE_ARCH=NO \\\n -scheme \"${SCHEME}\" \\\n -project \"${PROJECT_NAME}.xcodeproj\" \\\n -archivePath ${IOS_SIMULATOR_ARCHIVE_PATH} \\\n -destination 'generic/platform=iOS Simulator' \\\n BUILD_LIBRARY_FOR_DISTRIBUTION=YES \\\n SKIP_INSTALL=NO || exit $?\n\n# iOS device\nxcodebuild archive \\\n -scheme \"${SCHEME}\" \\\n -project \"${PROJECT_NAME}.xcodeproj\" \\\n -archivePath ${IOS_DEVICE_ARCHIVE_PATH} \\\n -destination 'generic/platform=iOS' \\\n BUILD_LIBRARY_FOR_DISTRIBUTION=YES \\\n SKIP_INSTALL=NO || exit $?\n\n# tvOS simulator\nxcodebuild archive \\\n ONLY_ACTIVE_ARCH=NO \\\n -scheme \"${SCHEME}\" \\\n -project \"${PROJECT_NAME}.xcodeproj\" \\\n -archivePath ${TVOS_SIMULATOR_ARCHIVE_PATH} \\\n -destination 'generic/platform=tvOS Simulator' \\\n BUILD_LIBRARY_FOR_DISTRIBUTION=YES \\\n SKIP_INSTALL=NO || exit $?\n\n# tvOS device\nxcodebuild archive \\\n -scheme \"${SCHEME}\" \\\n -project \"${PROJECT_NAME}.xcodeproj\" \\\n -archivePath ${TVOS_DEVICE_ARCHIVE_PATH} \\\n -destination 'generic/platform=tvOS' \\\n BUILD_LIBRARY_FOR_DISTRIBUTION=YES \\\n SKIP_INSTALL=NO || exit $?\n\n# Clean-up any existing instance of this xcframework from the Products directory\nrm -rf \"${OUTPUT_DIR}${FRAMEWORK_NAME}.xcframework\"\n\n# Create final xcframework\nxcodebuild -create-xcframework \\\n -framework \"${MACOS_ARCHIVE_PATH}\"/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework \\\n -framework \"${IOS_DEVICE_ARCHIVE_PATH}\"/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework \\\n -framework \"${IOS_SIMULATOR_ARCHIVE_PATH}\"/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework \\\n -framework \"${TVOS_DEVICE_ARCHIVE_PATH}\"/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework \\\n -framework \"${TVOS_SIMULATOR_ARCHIVE_PATH}\"/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework \\\n -output ${OUTPUT_DIR}/${FRAMEWORK_NAME}.xcframework\n\n# Ensure git doesn't pick up on our Products folder. \nrm -rf ${OUTPUT_DIR}/.gitignore\necho \"*\" >> ${OUTPUT_DIR}/.gitignore\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + BECDF62C0761BA81005FE872 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A7D8B9E323E2514400DCD162 /* SDL_drawline.c in Sources */, + A7D8AE7C23E2514100DCD162 /* SDL_yuv.c in Sources */, + A7D8B62F23E2514300DCD162 /* SDL_sysfilesystem.m in Sources */, + A7D8BAC723E2514500DCD162 /* e_pow.c in Sources */, + A7D8B41C23E2514300DCD162 /* SDL_systls.c in Sources */, + 9846B07C287A9020000C35C8 /* SDL_hidapi_shield.c in Sources */, + A7D8BBD923E2574800DCD162 /* SDL_uikitmessagebox.m in Sources */, + F32DDAD42AB795A30041EAA5 /* SDL_audioresample.c in Sources */, + F3FA5A212B59ACE000FEAD97 /* yuv_rgb_std.c in Sources */, + A7D8AD2923E2514100DCD162 /* SDL_vulkan_utils.c in Sources */, + A7D8A95123E2514000DCD162 /* SDL_spinlock.c in Sources */, + F34B9895291DEFF500AAC96E /* SDL_hidapi_steam.c in Sources */, + A7D8BAAF23E2514400DCD162 /* s_atan.c in Sources */, + A7D8B75223E2514300DCD162 /* SDL_sysloadso.c in Sources */, + A7D8BBE123E2574800DCD162 /* SDL_uikitopenglview.m in Sources */, + A79745702B2E9D39009D224A /* SDL_hidapi_steamdeck.c in Sources */, + A7D8B98623E2514400DCD162 /* SDL_render_metal.m in Sources */, + A7D8AE7623E2514100DCD162 /* SDL_clipboard.c in Sources */, + A7D8AEC423E2514100DCD162 /* SDL_cocoaevents.m in Sources */, + E479118F2BA9555500CE3B7F /* SDL_genericstorage.c in Sources */, + A7D8B86623E2514400DCD162 /* SDL_audiocvt.c in Sources */, + A7D8B9F523E2514400DCD162 /* SDL_rotate.c in Sources */, + A7D8BBE323E2574800DCD162 /* SDL_uikitvideo.m in Sources */, + 5616CA4E252BB2A6005D5928 /* SDL_sysurl.m in Sources */, + A7D8A97523E2514000DCD162 /* SDL_coremotionsensor.m in Sources */, + F382071D284F362F004DD584 /* SDL_guid.c in Sources */, + A7D8BB8D23E2514500DCD162 /* SDL_touch.c in Sources */, + F31A92D228D4CB39003BFD6A /* SDL_offscreenopengles.c in Sources */, + A1626A3E2617006A003F1973 /* SDL_triangle.c in Sources */, + A7D8B3F223E2514300DCD162 /* SDL_thread.c in Sources */, + A7D8B55D23E2514300DCD162 /* SDL_hidapi_xbox360w.c in Sources */, + A7D8A95723E2514000DCD162 /* SDL_atomic.c in Sources */, + A75FDBCE23EA380300529352 /* SDL_hidapi_rumble.c in Sources */, + A7D8BB2723E2514500DCD162 /* SDL_displayevents.c in Sources */, + A7D8AB2523E2514100DCD162 /* SDL_log.c in Sources */, + A7D8AE8823E2514100DCD162 /* SDL_cocoaopengl.m in Sources */, + A7D8AB7323E2514100DCD162 /* SDL_offscreenframebuffer.c in Sources */, + F37E18582BA50F3B0098C111 /* SDL_cocoadialog.m in Sources */, + A7D8B43423E2514300DCD162 /* SDL_systhread.c in Sources */, + A7D8BB3323E2514500DCD162 /* SDL_windowevents.c in Sources */, + A7D8BABB23E2514400DCD162 /* s_scalbn.c in Sources */, + F3973FAB28A59BDD00B84553 /* SDL_crc16.c in Sources */, + A7D8AB2B23E2514100DCD162 /* SDL_timer.c in Sources */, + F3D60A8328C16A1900788A3A /* SDL_hidapi_wii.c in Sources */, + A7D8B9DD23E2514400DCD162 /* SDL_blendpoint.c in Sources */, + A7D8B4EE23E2514300DCD162 /* SDL_gamepad.c in Sources */, + E4A568B62AF763940062EEC4 /* SDL_sysmain_callbacks.c in Sources */, + F316ABD82B5C3185002EF551 /* SDL_memset.c in Sources */, + A7D8BA1323E2514400DCD162 /* SDL_render_sw.c in Sources */, + A7D8B42223E2514300DCD162 /* SDL_syssem.c in Sources */, + A7D8B53923E2514300DCD162 /* SDL_hidapi_xbox360.c in Sources */, + A7D8B8D223E2514400DCD162 /* SDL_coreaudio.m in Sources */, + A7D8BA1F23E2514400DCD162 /* SDL_blendline.c in Sources */, + A7D8BBE723E2574800DCD162 /* SDL_uikitviewcontroller.m in Sources */, + A7D8ADF223E2514100DCD162 /* SDL_blit_A.c in Sources */, + A7D8BBDD23E2574800DCD162 /* SDL_uikitmodes.m in Sources */, + A7D8BA3723E2514400DCD162 /* SDL_d3dmath.c in Sources */, + 75E0915A241EA924004729E1 /* SDL_virtualjoystick.c in Sources */, + A7D8ABEB23E2514100DCD162 /* SDL_nullvideo.c in Sources */, + F3990E072A78833C000D8759 /* hid.m in Sources */, + A7D8AB6723E2514100DCD162 /* SDL_offscreenevents.c in Sources */, + A7D8ABF123E2514100DCD162 /* SDL_nullevents.c in Sources */, + A7D8B81823E2514400DCD162 /* SDL_audiodev.c in Sources */, + E479118D2BA9555500CE3B7F /* SDL_storage.c in Sources */, + A7D8AF0C23E2514100DCD162 /* SDL_cocoaclipboard.m in Sources */, + A7D8BBE523E2574800DCD162 /* SDL_uikitview.m in Sources */, + A7D8BBE923E2574800DCD162 /* SDL_uikitvulkan.m in Sources */, + A7D8ABCD23E2514100DCD162 /* SDL_blit_slow.c in Sources */, + A7D8BA9723E2514400DCD162 /* s_copysign.c in Sources */, + F3984CD025BCC92900374F43 /* SDL_hidapi_stadia.c in Sources */, + A7D8AAB623E2514100DCD162 /* SDL_haptic.c in Sources */, + A7D8AF2423E2514100DCD162 /* SDL_cocoametalview.m in Sources */, + A7D8B86023E2514400DCD162 /* SDL_audiotypecvt.c in Sources */, + A7D8BBC523E2561500DCD162 /* SDL_steamcontroller.c in Sources */, + A7D8AD3223E2514100DCD162 /* SDL_blit_N.c in Sources */, + A7D8BB7B23E2514500DCD162 /* SDL_dropevents.c in Sources */, + A7D8BACD23E2514500DCD162 /* e_atan2.c in Sources */, + A7D8BA8B23E2514400DCD162 /* s_sin.c in Sources */, + A7D8BBEB23E2574800DCD162 /* SDL_uikitwindow.m in Sources */, + F395BF6525633B2400942BFF /* SDL_crc32.c in Sources */, + A7D8B5E723E2514300DCD162 /* SDL_power.c in Sources */, + A7D8AED623E2514100DCD162 /* SDL_cocoakeyboard.m in Sources */, + A7D8AB1623E2514100DCD162 /* SDL_dynapi.c in Sources */, + A7D8BA8523E2514400DCD162 /* SDL_shaders_gl.c in Sources */, + A7D8BAF123E2514500DCD162 /* e_log.c in Sources */, + A7D8AED023E2514100DCD162 /* SDL_cocoamessagebox.m in Sources */, + F376F6552559B4E300CFC0BC /* SDL_hidapi.c in Sources */, + A7D8BA2B23E2514400DCD162 /* SDL_blendfillrect.c in Sources */, + A7D8BBD323E2574800DCD162 /* SDL_uikitappdelegate.m in Sources */, + A7D8AEB823E2514100DCD162 /* SDL_cocoamouse.m in Sources */, + F32DDAD12AB795A30041EAA5 /* SDL_audioqueue.c in Sources */, + A7D8B8E423E2514400DCD162 /* SDL_error.c in Sources */, + A7D8AD6823E2514100DCD162 /* SDL_blit.c in Sources */, + A7D8B5BD23E2514300DCD162 /* SDL_iostream.c in Sources */, + A7D8BA9123E2514400DCD162 /* s_cos.c in Sources */, + A7D8B9D123E2514400DCD162 /* SDL_yuv_sw.c in Sources */, + A7D8B76A23E2514300DCD162 /* SDL_wave.c in Sources */, + 5616CA4C252BB2A6005D5928 /* SDL_url.c in Sources */, + A7D8BAD323E2514500DCD162 /* s_tan.c in Sources */, + F316ABDB2B5CA721002EF551 /* SDL_memmove.c in Sources */, + A7D8AA6523E2514000DCD162 /* SDL_hints.c in Sources */, + A7D8B53F23E2514300DCD162 /* SDL_hidapi_ps4.c in Sources */, + F362B91C2B3349E200D30B94 /* SDL_steam_virtual_gamepad.c in Sources */, + A7D8AD6E23E2514100DCD162 /* SDL_pixels.c in Sources */, + A7D8B75E23E2514300DCD162 /* SDL_sysloadso.c in Sources */, + A7D8BBD723E2574800DCD162 /* SDL_uikitevents.m in Sources */, + A7D8B5F323E2514300DCD162 /* SDL_syspower.c in Sources */, + A7D8B95023E2514400DCD162 /* SDL_iconv.c in Sources */, + F3E5A6EB2AD5E0E600293D83 /* SDL_properties.c in Sources */, + A7D8BA9D23E2514400DCD162 /* s_fabs.c in Sources */, + F395C1B12569C6A000942BFF /* SDL_mfijoystick.m in Sources */, + A7D8B99223E2514400DCD162 /* SDL_shaders_metal.metal in Sources */, + F3990DF52A787C10000D8759 /* SDL_sysurl.m in Sources */, + F316ABD92B5C3185002EF551 /* SDL_memcpy.c in Sources */, + A7D8B97A23E2514400DCD162 /* SDL_render.c in Sources */, + A7D8ABD323E2514100DCD162 /* SDL_stretch.c in Sources */, + A7D8BAFD23E2514500DCD162 /* s_floor.c in Sources */, + A7D8AC3923E2514100DCD162 /* SDL_blit_copy.c in Sources */, + A7D8BADF23E2514500DCD162 /* e_fmod.c in Sources */, + A7D8B5CF23E2514300DCD162 /* SDL_syspower.m in Sources */, + A7D8BAEB23E2514500DCD162 /* e_log10.c in Sources */, + A7D8B76423E2514300DCD162 /* SDL_mixer.c in Sources */, + A7D8BB5723E2514500DCD162 /* SDL_events.c in Sources */, + A7D8ADE623E2514100DCD162 /* SDL_blit_0.c in Sources */, + A7D8BB0923E2514500DCD162 /* k_tan.c in Sources */, + A7D8B8A823E2514400DCD162 /* SDL_diskaudio.c in Sources */, + 56A2373329F9C113003CCA5F /* SDL_sysrwlock.c in Sources */, + 566E26CF246274CC00718109 /* SDL_syslocale.m in Sources */, + A7D8AFC023E2514200DCD162 /* SDL_egl.c in Sources */, + A7D8AC3323E2514100DCD162 /* SDL_RLEaccel.c in Sources */, + A7D8BBB123E2514500DCD162 /* SDL_assert.c in Sources */, + A7D8B3DA23E2514300DCD162 /* SDL_bmp.c in Sources */, + A7D8B96E23E2514400DCD162 /* SDL_stdlib.c in Sources */, + A7D8BBDF23E2574800DCD162 /* SDL_uikitopengles.m in Sources */, + F32305FF28939F6400E66D30 /* SDL_hidapi_combined.c in Sources */, + A7D8B79A23E2514400DCD162 /* SDL_dummyaudio.c in Sources */, + A7D8B3A423E2514200DCD162 /* SDL_fillrect.c in Sources */, + A7D8ABDF23E2514100DCD162 /* SDL_nullframebuffer.c in Sources */, + E4F7981A2AD8D84800669F54 /* SDL_core_unsupported.c in Sources */, + A7D8A96923E2514000DCD162 /* SDL_dummysensor.c in Sources */, + A7D8B95C23E2514400DCD162 /* SDL_string.c in Sources */, + A7D8BA7F23E2514400DCD162 /* SDL_render_gl.c in Sources */, + A7D8AE9423E2514100DCD162 /* SDL_cocoamodes.m in Sources */, + A7D8BAA323E2514400DCD162 /* k_rem_pio2.c in Sources */, + A7D8B95623E2514400DCD162 /* SDL_getenv.c in Sources */, + A7D8B56323E2514300DCD162 /* SDL_hidapi_gamecube.c in Sources */, + A7D8B4DC23E2514300DCD162 /* SDL_joystick.c in Sources */, + A7D8BA4923E2514400DCD162 /* SDL_render_gles2.c in Sources */, + A7D8AC2D23E2514100DCD162 /* SDL_surface.c in Sources */, + A7D8B54B23E2514300DCD162 /* SDL_hidapi_xboxone.c in Sources */, + A7D8AD2323E2514100DCD162 /* SDL_blit_auto.c in Sources */, + F3A4909E2554D38600E92A8B /* SDL_hidapi_ps5.c in Sources */, + A7D8BB6923E2514500DCD162 /* SDL_keyboard.c in Sources */, + A7D8ACE723E2514100DCD162 /* SDL_rect.c in Sources */, + A7D8AE9A23E2514100DCD162 /* SDL_cocoaopengles.m in Sources */, + A7D8B96823E2514400DCD162 /* SDL_qsort.c in Sources */, + F3FA5A222B59ACE000FEAD97 /* yuv_rgb_sse.c in Sources */, + A7D8B55123E2514300DCD162 /* SDL_hidapi_switch.c in Sources */, + A7D8B96223E2514400DCD162 /* SDL_strtokr.c in Sources */, + A7D8BB7523E2514500DCD162 /* SDL_clipboardevents.c in Sources */, + E4F798202AD8D87F00669F54 /* SDL_video_unsupported.c in Sources */, + A1BB8B6327F6CF330057CFA8 /* SDL_list.c in Sources */, + A7D8BAB523E2514400DCD162 /* k_cos.c in Sources */, + A7D8B54523E2514300DCD162 /* SDL_hidapijoystick.c in Sources */, + A7D8B97423E2514400DCD162 /* SDL_malloc.c in Sources */, + A7D8B8C623E2514400DCD162 /* SDL_audio.c in Sources */, + A7D8B61D23E2514300DCD162 /* SDL_sysfilesystem.c in Sources */, + F3820713284F3609004DD584 /* controller_type.c in Sources */, + A7D8AB8B23E2514100DCD162 /* SDL_offscreenvideo.c in Sources */, + A7D8B42E23E2514300DCD162 /* SDL_syscond.c in Sources */, + A7D8AADA23E2514100DCD162 /* SDL_syshaptic.c in Sources */, + A7D8BAE523E2514500DCD162 /* e_exp.c in Sources */, + A7D8BB8123E2514500DCD162 /* SDL_quit.c in Sources */, + F3FA5A232B59ACE000FEAD97 /* yuv_rgb_lsx.c in Sources */, + A7D8AEA623E2514100DCD162 /* SDL_cocoawindow.m in Sources */, + A7D8B43A23E2514300DCD162 /* SDL_sysmutex.c in Sources */, + A7D8AAB023E2514100DCD162 /* SDL_syshaptic.c in Sources */, + F3F07D5A269640160074468B /* SDL_hidapi_luna.c in Sources */, + A7D8BBD523E2574800DCD162 /* SDL_uikitclipboard.m in Sources */, + A7D8B5C923E2514300DCD162 /* SDL_iostreambundlesupport.m in Sources */, + F386F6F92884663E001840AA /* SDL_utils.c in Sources */, + E4F7981E2AD8D86A00669F54 /* SDL_render_unsupported.c in Sources */, + A7D8AC0F23E2514100DCD162 /* SDL_video.c in Sources */, + A7D8BA5B23E2514400DCD162 /* SDL_shaders_gles2.c in Sources */, + A7D8B14023E2514200DCD162 /* SDL_blit_1.c in Sources */, + A7D8BBDB23E2574800DCD162 /* SDL_uikitmetalview.m in Sources */, + A7D8BB1523E2514500DCD162 /* SDL_mouse.c in Sources */, + A7D8BAD923E2514500DCD162 /* e_rem_pio2.c in Sources */, + F395C19C2569C68F00942BFF /* SDL_iokitjoystick.c in Sources */, + A7D8B4B223E2514300DCD162 /* SDL_sysjoystick.c in Sources */, + A7D8B3E023E2514300DCD162 /* SDL_cpuinfo.c in Sources */, + A7D8A99323E2514000DCD162 /* SDL_sensor.c in Sources */, + A7D8BAA923E2514400DCD162 /* k_sin.c in Sources */, + A7D8AB4923E2514100DCD162 /* SDL_systimer.c in Sources */, + F37E185A2BA50F450098C111 /* SDL_dummydialog.c in Sources */, + A7D8BA2523E2514400DCD162 /* SDL_drawpoint.c in Sources */, + F3681E802B7AA6240002C6FD /* SDL_cocoashape.m in Sources */, + F388C95528B5F6F700661ECF /* SDL_hidapi_ps3.c in Sources */, + A7D8BAF723E2514500DCD162 /* e_sqrt.c in Sources */, + F36C7AD1294BA009004D61C3 /* SDL_runapp.c in Sources */, + A7D8AEAC23E2514100DCD162 /* SDL_cocoavideo.m in Sources */, + A7D8A94B23E2514000DCD162 /* SDL.c in Sources */, + A7D8AEA023E2514100DCD162 /* SDL_cocoavulkan.m in Sources */, + A7D8AB6123E2514100DCD162 /* SDL_offscreenwindow.c in Sources */, + 566E26D8246274CC00718109 /* SDL_locale.c in Sources */, + 63134A262A7902FD0021E9A6 /* SDL_pen.c in Sources */, + 000040E76FDC6AE48CBF0000 /* SDL_hashtable.c in Sources */, + 0000A4DA2F45A31DC4F00000 /* SDL_sysmain_callbacks.m in Sources */, + 000028F8113A53F4333E0000 /* SDL_main_callbacks.c in Sources */, + 000098E9DAA43EF6FF7F0000 /* SDL_camera.c in Sources */, + 00001B2471F503DD3C1B0000 /* SDL_camera_dummy.c in Sources */, + 00002B20A48E055EB0350000 /* SDL_camera_coremedia.m in Sources */, + 000080903BC03006F24E0000 /* SDL_filesystem.c in Sources */, + 0000481D255AF155B42C0000 /* SDL_sysfsops.c in Sources */, + 0000494CC93F3E624D3C0000 /* SDL_systime.c in Sources */, + 000095FA1BDE436CF3AF0000 /* SDL_time.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + F3676F5D2A7885130091160D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F3B38CEC296F63B6005DA6D3 /* SDL3.xcframework */; + targetProxy = F3676F5C2A7885130091160D /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 00CFA621106A567900758660 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + DEPLOYMENT_POSTPROCESSING = YES; + DYLIB_COMPATIBILITY_VERSION = 101.0.0; + DYLIB_CURRENT_VERSION = 101.0.0; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_ALTIVEC_EXTENSIONS = YES; + GCC_AUTO_VECTORIZATION = YES; + GCC_ENABLE_SSE3_EXTENSIONS = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 3; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + HEADER_SEARCH_PATHS = ( + ../../include, + ../../src, + ../../src/hidapi/hidapi, + ../../src/video/khronos, + "$(VULKAN_SDK)/include", + /usr/X11R6/include, + ); + INFOPLIST_FILE = "Info-Framework.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( + "@executable_path/../Frameworks", + "@loader_path/Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.11; + MARKETING_VERSION = 3.1.0; + PRODUCT_BUNDLE_IDENTIFIER = org.libsdl.SDL3; + PRODUCT_NAME = SDL3; + STRIP_STYLE = "non-global"; + SUPPORTED_PLATFORMS = "xrsimulator xros macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TVOS_DEPLOYMENT_TARGET = 9.0; + XROS_DEPLOYMENT_TARGET = 1.0; + }; + name = Release; + }; + 00CFA622106A567900758660 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_LINK_OBJC_RUNTIME = NO; + OTHER_LDFLAGS = "-liconv"; + SUPPORTS_MACCATALYST = YES; + }; + name = Release; + }; + 00CFA627106A568900758660 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + DYLIB_COMPATIBILITY_VERSION = 101.0.0; + DYLIB_CURRENT_VERSION = 101.0.0; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_ALTIVEC_EXTENSIONS = YES; + GCC_AUTO_VECTORIZATION = YES; + GCC_ENABLE_SSE3_EXTENSIONS = YES; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + HEADER_SEARCH_PATHS = ( + ../../include, + ../../src, + ../../src/hidapi/hidapi, + ../../src/video/khronos, + "$(VULKAN_SDK)/include", + /usr/X11R6/include, + ); + INFOPLIST_FILE = "Info-Framework.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = ( + "@executable_path/../Frameworks", + "@loader_path/Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 10.11; + MARKETING_VERSION = 3.1.0; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = org.libsdl.SDL3; + PRODUCT_NAME = SDL3; + STRIP_INSTALLED_PRODUCT = NO; + SUPPORTED_PLATFORMS = "xrsimulator xros macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + TVOS_DEPLOYMENT_TARGET = 9.0; + XROS_DEPLOYMENT_TARGET = 1.0; + }; + name = Debug; + }; + 00CFA628106A568900758660 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_LINK_OBJC_RUNTIME = NO; + OTHER_LDFLAGS = "-liconv"; + SUPPORTS_MACCATALYST = YES; + }; + name = Debug; + }; + F3676F5A2A7885080091160D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Debug; + }; + F3676F5B2A7885080091160D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Release; + }; + F3B38CEE296F63B6005DA6D3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Debug; + }; + F3B38CEF296F63B6005DA6D3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0073177A0858DB0500B2BC32 /* Build configuration list for PBXNativeTarget "SDL3" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 00CFA628106A568900758660 /* Debug */, + 00CFA622106A567900758660 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 0073178E0858DB0500B2BC32 /* Build configuration list for PBXProject "SDL" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 00CFA627106A568900758660 /* Debug */, + 00CFA621106A567900758660 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + F3676F592A7885080091160D /* Build configuration list for PBXAggregateTarget "SDL3.dmg" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F3676F5A2A7885080091160D /* Debug */, + F3676F5B2A7885080091160D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + F3B38CED296F63B6005DA6D3 /* Build configuration list for PBXAggregateTarget "SDL3.xcframework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F3B38CEE296F63B6005DA6D3 /* Debug */, + F3B38CEF296F63B6005DA6D3 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/extern/SDL3-3.1.0/Xcode/SDL/SDL3/Info.plist b/extern/SDL3-3.1.0/Xcode/SDL/SDL3/Info.plist new file mode 100644 index 0000000..9bcb244 --- /dev/null +++ b/extern/SDL3-3.1.0/Xcode/SDL/SDL3/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + + diff --git a/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/SDL.info b/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/SDL.info new file mode 100644 index 0000000..326d112 --- /dev/null +++ b/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/SDL.info @@ -0,0 +1,15 @@ +Title SDL 3.1.0 +Version 1 +Description SDL Library for macOS (http://www.libsdl.org) +DefaultLocation /Library/Frameworks +Diskname (null) +DeleteWarning +NeedsAuthorization NO +DisableStop NO +UseUserMask NO +Application NO +Relocatable YES +Required NO +InstallOnly NO +RequiresReboot NO +InstallFat NO diff --git a/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/CMake/sdl3-config-version.cmake b/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/CMake/sdl3-config-version.cmake new file mode 100644 index 0000000..fbc9a3c --- /dev/null +++ b/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/CMake/sdl3-config-version.cmake @@ -0,0 +1,62 @@ +# based on the files generated by CMake's write_basic_package_version_file + +# SDL CMake version configuration file: +# This file is meant to be placed in share/cmake/SDL3, next to SDL3.xcframework + +cmake_minimum_required(VERSION 3.12) + +get_filename_component(_sdl3_xcframework_parent_path "../.." ABSOLUTE) + +set(_sdl3_xcframework "${_sdl3_xcframework_parent_path}/SDL3.xcframework") +set(_sdl3_version_h "${_sdl3_xcframework}/macos-arm64_x86_64/SDL3.framework/Headers/SDL_version.h") + +if(NOT EXISTS "${_sdl3_version_h}") + message(AUTHOR_WARNING "Cannot not find SDL_version.h. This script is meant to be placed in share/cmake/SDL3, next to SDL3.xcframework") + return() +endif() + +file(READ "${_sdl3_version_h}" _sdl_version_h) +string(REGEX MATCH "#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)" _sdl_major_re "${_sdl_version_h}") +set(_sdl_major "${CMAKE_MATCH_1}") +string(REGEX MATCH "#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)" _sdl_minor_re "${_sdl_version_h}") +set(_sdl_minor "${CMAKE_MATCH_1}") +string(REGEX MATCH "#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)" _sdl_patch_re "${_sdl_version_h}") +set(_sdl_patch "${CMAKE_MATCH_1}") +if(_sdl_major_re AND _sdl_minor_re AND _sdl_patch_re) + set(PACKAGE_VERSION "${_sdl_major}.${_sdl_minor}.${_sdl_patch}") +else() + message(AUTHOR_WARNING "Could not extract version from SDL_version.h.") + return() +endif() + +unset(_sdl3_xcframework) +unset(_sdl3_version_h) + +if(PACKAGE_FIND_VERSION_RANGE) + # Package version must be in the requested version range + if ((PACKAGE_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MIN) + OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_GREATER PACKAGE_FIND_VERSION_MAX) + OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_GREATER_EQUAL PACKAGE_FIND_VERSION_MAX))) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + endif() +else() + if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() + endif() +endif() + +# The SDL3.xcframework only contains 64-bit archives +if(NOT "${CMAKE_SIZEOF_VOID_P}" EQUAL "8") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() + +if(NOT CMAKE_SYSTEM_NAME MATCHES "^(Darwin|iOS|tvOS)$") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/CMake/sdl3-config.cmake b/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/CMake/sdl3-config.cmake new file mode 100644 index 0000000..1e5151b --- /dev/null +++ b/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/CMake/sdl3-config.cmake @@ -0,0 +1,156 @@ +# SDL CMake configuration file: +# This file is meant to be placed in share/cmake/SDL3, next to SDL3.xcframework + +# INTERFACE_LINK_OPTIONS needs CMake 3.12 +cmake_minimum_required(VERSION 3.12) + +include(FeatureSummary) +set_package_properties(SDL3 PROPERTIES + URL "https://www.libsdl.org/" + DESCRIPTION "low level access to audio, keyboard, mouse, joystick, and graphics hardware" +) + +# Copied from `configure_package_config_file` +macro(set_and_check _var _file) + set(${_var} "${_file}") + if(NOT EXISTS "${_file}") + message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") + endif() +endmacro() + +# Copied from `configure_package_config_file` +macro(check_required_components _NAME) + foreach(comp ${${_NAME}_FIND_COMPONENTS}) + if(NOT ${_NAME}_${comp}_FOUND) + if(${_NAME}_FIND_REQUIRED_${comp}) + set(${_NAME}_FOUND FALSE) + endif() + endif() + endforeach() +endmacro() + +set(SDL3_FOUND TRUE) + +macro(_check_target_is_simulator) + include(CheckCSourceCompiles) + check_c_source_compiles([===[ + #include + #if defined(TARGET_OS_SIMULATOR) + int target_is_simulator; + #endif + int main(int argc, char *argv[]) { return target_is_simulator; } + ]===] SDL_TARGET_IS_SIMULATOR) +endmacro() + +if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + _check_target_is_simulator() + if(SDL_TARGET_IS_SIMULATOR) + set(_xcfw_target_subdir "ios-arm64_x86_64-simulator") + else() + set(_xcfw_target_subdir "ios-arm64") + endif() +elseif(CMAKE_SYSTEM_NAME STREQUAL "tvOS") + _check_target_is_simulator() + if(SDL_TARGET_IS_SIMULATOR) + set(_xcfw_target_subdir "tvos-arm64_x86_64-simulator") + else() + set(_xcfw_target_subdir "tvos-arm64") + endif() +elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin") + set(_xcfw_target_subdir "macos-arm64_x86_64") +else() + message(WARNING "Unsupported Apple platform (${CMAKE_SYSTEM_NAME}) and broken sdl3-config-version.cmake") + set(SDL3_FOUND FALSE) + return() +endif() + +# Compute the installation prefix relative to this file. +get_filename_component(_sdl3_xcframework_parent_path "${CMAKE_CURRENT_LIST_DIR}" REALPATH) # /share/cmake/SDL3/ +get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" REALPATH) # /share/cmake/SDL3/ +get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # /share/cmake +get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # /share +get_filename_component(_sdl3_xcframework_parent_path "${_sdl3_xcframework_parent_path}" PATH) # / +set_and_check(_sdl3_xcframework_path "${_sdl3_xcframework_parent_path}/SDL3.xcframework") # /SDL3.xcframework +set_and_check(_sdl3_framework_parent_path "${_sdl3_xcframework_path}/${_xcfw_target_subdir}") # /SDL3.xcframework/macos-arm64_x86_64 +set_and_check(_sdl3_framework_path "${_sdl3_framework_parent_path}/SDL3.framework") # /SDL3.xcframework/macos-arm64_x86_64/SDL3.framework +set_and_check(_sdl3_include_dirs "${_sdl3_framework_path}/Headers") + + +# All targets are created, even when some might not be requested though COMPONENTS. +# This is done for compatibility with CMake generated SDL3-target.cmake files. + +if(NOT TARGET SDL3::Headers) + add_library(SDL3::Headers INTERFACE IMPORTED) + set_target_properties(SDL3::Headers + PROPERTIES + INTERFACE_COMPILE_OPTIONS "SHELL:-F \"${_sdl3_framework_parent_path}\"" + INTERFACE_INCLUDE_DIRECTORIES "${_sdl3_include_dirs}" + ) +endif() +set(SDL3_Headers_FOUND TRUE) + +if(NOT TARGET SDL3::SDL3-shared) + add_library(SDL3::SDL3-shared SHARED IMPORTED) + if(CMAKE_VERSION GREATER_EQUAL "3.28") + set_target_properties(SDL3::SDL3-shared + PROPERTIES + FRAMEWORK "TRUE" + IMPORTED_LOCATION "${_sdl3_xcframework_path}" + INTERFACE_LINK_LIBRARIES "SDL3::Headers" + ) + else() + set_target_properties(SDL3::SDL3-shared + PROPERTIES + FRAMEWORK "TRUE" + IMPORTED_LOCATION "${_sdl3_framework_path}/SDL3" + INTERFACE_LINK_LIBRARIES "SDL3::Headers" + ) + endif() + set_target_properties(SDL3::SDL3-shared + PROPERTIES + COMPATIBLE_INTERFACE_BOOL "SDL3_SHARED" + INTERFACE_SDL3_SHARED "ON" + COMPATIBLE_INTERFACE_STRING "SDL_VERSION" + INTERFACE_SDL_VERSION "SDL3" + ) +endif() +set(SDL3_SDL3-shared_FOUND TRUE) + +set(SDL3_SDL3-static FALSE) + +set(SDL3_SDL3_test FALSE) + +unset(_sdl3_xcframework_parent_path) +unset(_sdl3_xcframework_path) +unset(_sdl3_framework_parent_path) +unset(_sdl3_framework_path) +unset(_sdl3_include_dirs) + +if(SDL3_SDL3-shared_FOUND) + set(SDL3_SDL3_FOUND TRUE) +endif() + +function(_sdl_create_target_alias_compat NEW_TARGET TARGET) + if(CMAKE_VERSION VERSION_LESS "3.18") + # Aliasing local targets is not supported on CMake < 3.18, so make it global. + add_library(${NEW_TARGET} INTERFACE IMPORTED) + set_target_properties(${NEW_TARGET} PROPERTIES INTERFACE_LINK_LIBRARIES "${TARGET}") + else() + add_library(${NEW_TARGET} ALIAS ${TARGET}) + endif() +endfunction() + +# Make sure SDL3::SDL3 always exists +if(NOT TARGET SDL3::SDL3) + if(TARGET SDL3::SDL3-shared) + _sdl_create_target_alias_compat(SDL3::SDL3 SDL3::SDL3-shared) + endif() +endif() + +check_required_components(SDL3) + +set(SDL3_LIBRARIES SDL3::SDL3) +set(SDL3_STATIC_LIBRARIES SDL3::SDL3-static) +set(SDL3_STATIC_PRIVATE_LIBS) + +set(SDL3TEST_LIBRARY SDL3::SDL3_test) diff --git a/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/License.txt b/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/License.txt new file mode 100644 index 0000000..42f3736 --- /dev/null +++ b/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/License.txt @@ -0,0 +1,19 @@ + +Simple DirectMedia Layer +Copyright (C) 1997-2024 Sam Lantinga + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. diff --git a/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/ReadMe.txt b/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/ReadMe.txt new file mode 100644 index 0000000..2713088 --- /dev/null +++ b/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/ReadMe.txt @@ -0,0 +1,44 @@ +The Simple DirectMedia Layer (SDL for short) is a cross-platform +library designed to make it easy to write multi-media software, +such as games and emulators. + +The Simple DirectMedia Layer library source code is available from: +http://www.libsdl.org/ + +This library is distributed under the terms of the zlib license: +http://zlib.net/zlib_license.html + + +This packages contains the SDL framework for macOS. +Conforming with Apple guidelines, this framework +contains both the SDL runtime component and development header files. + + +To Install: +Copy the SDL3.framework to /Library/Frameworks + +You may alternatively install it in /Library/Frameworks +if your access privileges are not high enough. + + +Use in CMake projects: +SDL3.framework can be used in CMake projects using the following pattern: +``` +find_package(SDL3 REQUIRED COMPONENTS SDL3) +add_executable(my_game ${MY_SOURCES}) +target_link_libraries(my_game PRIVATE SDL3::SDL3) +``` +If SDL3.framework is installed in a non-standard location, +please refer to the following link for ways to configure CMake: +https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-search-procedure + + +Additional References: + + - Screencast tutorials for getting started with OpenSceneGraph/macOS are + available at: + http://www.openscenegraph.org/projects/osg/wiki/Support/Tutorials/MacOSXTips + Though these are OpenSceneGraph centric, the same exact concepts apply to + SDL, thus the videos are recommended for everybody getting started with + developing on macOS. (You can skim over the PlugIns stuff since SDL + doesn't have any PlugIns to worry about.) diff --git a/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/SDL_DS_Store b/extern/SDL3-3.1.0/Xcode/SDL/pkg-support/resources/SDL_DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..15519334371b712cc92952247564dbf6835bc7da GIT binary patch literal 10244 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 tEoYq39Hd|Co#requ7Ty+ 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�EoRF7msD%W^1O`aqnm}kR-F$Fg@f!@2Rm!I;4Yn+GS1Gb<_lZ zM%w`i9g(5GPSN?yyI37_J9%EYm|anJthmfdm*71BtaFl)sR?8EFAr^FUb7l41>(+` z%Sg`#Jo&DS1^e;|Z2VDxj+VBgPas){9=?Ao5?zgBd4ZoT_pXnox_uJ+h?k&DSi*kN z4YM-S;2+j6uJYZplv6`JC5Fzuj@BhtEH|`TE_k_nj-;*G(*Etf{*x?{^*DRt3xUyT zqPN!dB^cN4Dxt+Nf?(aef@FkXY?TizDgYn0sdAA5I&R2uD|Pz&u&wlU``c5>E-KQTHKK&cR-42K3*6n`SpB zHp->4uv)gIzFF2|NVs^bW3H@*n~PuYYU~i#fg(VBV1Voht)HW9ktweXL4YG?(vXEC zczZ2)d}67l$my`{Gs`HAIbF3z`Gylq#e6CGp-icW57%L~rgG967La(x?lyRf>=((-W|0LW1`_@p?9NB>*STD?~F1EE~HD#sw<1l z&+qTYb#GeIG^=qS5(*CEu8y+TxBM(Mr1Ve$*>T;DP2W?xZT%v`7LU?1 z$9GTYqBDO_UC<*LqEpl`pl3>XoTzD<3?8B;UQeyFzjfJQPD|oiMyB;F`elZXgaMl| z+!xas1W4!?h@~hn3~@NrQBqkB7A!+5baLpc_Hix!s1x5lCe%dmTkaa4^q#Jr?e_P( zctrZHuAP1Y(MNn=d;eGP+RUSkiUw-a0|mIk2AGr*Pm}FJJUj5gJ30v5YS-9>{(E|SuyS*865030(7!oe+VIhtXn73i z10!b{JoP@?8v7haZ*I1M=|8nBq^GgR#3E^&2pfh!i&auM_?i0hkkJ+om^UsEmzWPX z%ym;uD+S#L0kL`U5WDOxQM7k^#)s;S++FhfqXt-ag$!_b#P6GhZx4m%uNF|PP*JFl z53k(-tUZ=HkRAqQLz^Y$@G_ai=F6eS>ZqBs&vY3^amyc?AI zf3hO5B^>p@bf1Ut*>e}B9d;b`#_wng^@3~rHIg(GR*3X=zMW2wcXRG`a zMj4*a6ecP~zKsZV%P&E13MncT9$9>sJe5ze^1ZdSqZ47Fw~M2R6*PWcT;{l<|g+HMQs1ZQ#B-%g419ESK%=)j)czsbRwJ zzBNN_gCo?~$+3C2Zdkj#x4Ch2czH7Ec|CaZHbH}Qe1(6X_-BbPbkQ}~Eyc*<*gn&^ zDUk}*5(?5|nL|NuzlRnTm94UQK51w_7_oB8%UAZyvRKx^F~*D2o78pJ!`FDUf3N3$ z=Y9n8^4k%&+?n@lCuQem;!JzLcyG5(w7g2jI&N>7)A!=;-tPw39=M{s@}@Udgp?r! zd3>WRZwd*B$vH z7-IYFDNJ?EbDGjC-=K_XQhUC)+8~t<73^Gb8Uwd1wH_&HJy+JuQ`w|YmXiRbk_%&O zHVx8)Q|ZX_B?n16wq5YzYH5AFF0G#4&h?(|->YADk6tlB9)`1vivGgk_Z~vZSroxl z4xnIaHw*7TErp(IkjSbkNs@r_6_L`QQv;|)m%X`CR*%CC;DxLhEUxjxdU*?6R4uu2 z{ntx#QmsXM&~|Rd;G;1yuCALdz%%c{Q^o$+><@V3^^IYAOd}*J3?Y2d4QrW4S1+?rOH9kzMYDwO@Ut)ad{q*W_7V2{Td{y*NgV@OSZSiR^2ulSYfwm<0D_oOA&Q0dfxnF&LM@np6IRzBhua#yYT73 zKQc4_S@lM1_%r@w+^AFM*PPeyS8~*AB`U?;F@$AGIWg7g8ZY$2YKx`vBjamy%YJ3H z8rs#5BUACfJG>V!2wYuXs@8hk{^Hx^D%+?r`Ph<`aqrE0+{!7yO@0WZx<4Upzh{jv zUzzt`wTzb`v07HPqL05%`+mG7Y_Hqq^17Tz;Y}&q;RS0VOWB~X^2%Md;oN9JF{Hp; z^8Nbr8VkWx0ftjWd4%q$T^1f zQf5j9)O`%HJe=L292*jV;UX-p)Fd-MCk_an_rs1BDo@Xpw4;R^JRdTNQ-3)=a=1S_ zZ9Sa;sBeSALv$eFzXSe_QRnBX#T0JT`Q_6bI`Y_NZtSD+A{$b3XZlK{sCJ#rx*4Rz z7u_7opxehK#TWry@^i`M)Id}Di^FQ%qc%TwcRD+#*kPZYusX5H@PO<0Be|FqCZOZ!yDP4qnFBaIgr6@$Q zzofZPjrX|he6NZUC|9f9*TujX7?{RxRns2gW36T%c*KflUv2hH3f4teI%_WgHA^9$ zxlS(2R`>)4e-^Rm=S`m@J!1zo`#Rmk_I$@Uxk9bd~S-=o>)RMAr!a_C^56g#+Ioc z#cBSsf1=v&9@eJ0-t+>kD{CAoC0ls`gr zcUV>iziL*Bv)ylx-c_!Fkd^4&=g3gz2O2GMtvJ8C$0%U53QN9TnXdj=G1yEyOk5{u(1!f?Ed5aSQm56wzjmYL zd|7tBb!ja|duo05vmkPOtTGDxHBQTNdg@U4%>T1h8m(gi&HdPS@1%_x=F`!@vTrzz z6}**`WI9<)lBWEbR#PKB+|v8zwffWc%DXDa(Q{z%(>@98gkTX!eLSQFh6Fu{*|TAD znlDjg3C)sgtYfAeE9yjRuuDmMBpuuZTRD=)u`@NQXM{GbD15l_ul$y(#gY5IA7_z2 zCZ1skt4VRmvN!5iu15>#>+LO6Ep-9AT!+Np#s6urKKegQ<_rakW;`j6#E2V~77sQ~ z01+-LgK)wAiq?{a3C`&q@2#h{wL=!(BYS-{l(CdyD}D)abu0Nrk{9)HgTG<@x+j<3 z#jAa`pJfutsOT>k#*^2)~e@-ut6C$|Fm?bNtvc~*NkgET7LX8kXw=|4r!=$Wto~1-q@Cp zy>S*}bX3?+{?oJeN_N+g+%WLBNr`3*@e#YkJ(fGIijvV&J-Q2d(Ory?IFQ2a`C{?i z$JG^=U)Phj&`!$7qvHaQ`p>o(ff`D%)H!7Rig}Xom@Wuhz{!j4+R z5PI!CS!^rB591)Bq;rA0&m&lE@bS8IuCKe;ot?MdxycwMkosTy3jVWc$W@pMjJ?!k zsY1P}SqF`BD+zHmJvG*(^8kjz2l{p8g*MlnPvxEqHWEKx)=UGJB#v9@%A|`uph zN_8Zb0){J=vW8*@4Q*lJq{8$O@jn>0Mh12{~(A zX+0Zz)pg}`i4Tt_1*X3o{|S+guUBV+Qnn`j$jBUYh(0Y?|4djlGKKW^;ObJfChjYJ z95xT+FD1B)B}se*0tsaK_ENg3&8gdEFoWA9uRz92C!>oy`|RjvKE8U-3A{EZ_jrtM-3M{DGU&6tp9s2z?9DyP-}bWS{o|5`GJB$WR!$qlMT z;cw|u*RT|77kwS>K~a3AM`8pSMFGGUPPGyDpP^W#*8lZ6M^vBp$Klmb+!A+ z)}*`K^=Q{f_>oK+WR4~-AZpD2bG9v~S)xO+NbG24ar!X%LA}9;JKmdIc64o4EKdC^ zHdcL=0kCP7TakC8`uMQf<`B3xQ^5zD^$~p6|AOzu+ahgH;SxZ?>f3f5N)!-CDG56TbBKKkOu!bKnr7y1|_2|L8n z`_lKT2qnIfp9+#S9Xb5`Sc%4v*x?=m%PoFuiKyNPS_dk$bAF0{--G@|BqB@CQ?td$ zYUp8{zVIqmkJutoq8yRqdL~fSFfpCk29xE+!3#cUIJvj7PMF?bc4+FvA4^oX7G>tk zIeG5tx|a6*e73gzO#dn!_p+b<%)$RJIvzna_4N#Eb+%mE=>ZrFeYIh(Eb2piQgFja?`<;lEc%LRoegTU|EJmp}7<@Tr~- zFG`oY=bsPGL;q-$WvauPPNMo);mb6uTeF4=*RYTxDPb6Vg2B5fSILn=3UIhZN`y|8 zj(WzqoJN+h8(U5DTZYcQ>@?A=YN4kE^HfDu67w41*meZmKDEL&vXS3QG-dQRTkX!2 zhTwEGOIvw9o4Iec?ROpH>2{CA{=18MZ zRP><6>@#U(gGfG}yrtuu(y0d6Gs~s|w-%F#XdUOQs!tV;3=e3-IB5+iy;X$82=}`C%kMut%3e7E7S= z;l4zN4uIKD=tJ*!ESf$_f;&g?>9?0RYDyMlsN*g)a!Bqsu=uP75H_G(5@`bxUip&j zV4Qf(jqz_QueG>UcmdiU-gczWUL~1E*P#nnur+kSvi3Hl@oneX$=GRx}U z=a*WoDHckj+7t(iAcql@-jQdnMcCokJG`|)Il>r$Ve_|v)uP-y>@j4^CFPp$>B+T0 zKgC|65d@1o4rKY>*%1)5Y}lSh5oBe}_>m5&@6^8QO8h4#Ug!l~F74E5bI_GZ0FA1P zCZ5Wvv>Yu(1@V2?z0cic*-s~E_L7qbm@+Y_0~Mu1@Ezd-Hyb`{fArj@EPT>ID=T!7l`-o{xgyIQVo`3T&r+N#E4DiY zl|+%)t>?wu&P_xtxZLruu5}G96C%Yc-=NLQIdbGfiF?6(Vqc1o6XWF~TnZD}k@&`~ z7d5K?rHbd6?Qu1pu+RC()C+z1x+T8q`T}nQ+n3Dmsbj!3`n**D z|E!h6^?vR8cMLv>WCxP|lNrx{-VdV;bhS#7UM*8E(4_m$^fGah1}*+Q+){Mcwhi}% zAobX2)HA9Bqcl%AvfxZ!_>njP>xvaqER3=NAWnusvFCTdWsEnMOvv^Vp(XQM8$?mS*b8RPcd~2m_ffSjX%$!Ms9c$0|p%XaoY_ z>YnsRh%%N}3?+*{t>|zp5H&v$MIKASu*lnJp^~?tGkQf2CxKlN8inX1e=l8vELr_Q z?O!xy3~45uKdc%4MRA6o#oPvISde*T-fN(mMyssg!kJy0q?&SJ)>+$tK-G}M0>dO` z>u!`}mf8uUSheaqBAWgNIE|AzT|eaIZZa+!gm5_CwE8DSlvyxLm$P0qcW)TWUen41 zwHf^Ao4d>E=jT)1kJ0DPXN%4;q(hDS`X_)ehZQm8;3C0rQo@Mkd*2Sy0?Jsj>0M+n z#FLCeD-VgGJ8~CmyC;S~ki7#dg{y^&N3t9RN>u0{LOH&r6$@6FSM_-8RXVgetceAu z`FijLXtLAe(_fy@m3^zrW=s+51xHyzS(h0tPE{0JBpW2&=pX7ijd8LwN?cM;`sxcc zUR%iuu)Oiby)v)ZQiQprK3lFss%FrN#MTLbu8>7mQ8KaqvI4UuImo5km$xfaY|2UX$vq79 zFouvyU_^5`0>2mw+{jhpK>ibQzK23mYytfMT->L6I1TP7V|qri^D|;B9s;b}{g7;; z>@lLI>`4OftX!{3)`!arho_IT-QT?LomxDX$EZ-DU$;F@?HvArs6gqIQ`-M&{gzLs za>2e`3zWm7ATcp>j;$cuo49h4zPh2LjpI9ulyucyj)-l(Ep5m(+F>3EnAFMUAy)M(Cgv&MeCamwh#@jCfx zc3@C_5YzOu)1o8b5GRt_nDehPyG1d*dvYG>cE`8+SG-BN3zuqY@pqu zAPc_cry9`*`)-`>wH6gUF5I8*M~48+L4|V8%Q)Wcp#GTz{bOATfYW8r9_;!GUZGxU z+pKdHRp;ai)vk~UKWMo; zm%Z9uC5ikij0Vc)ZOHeYUe2v+(t9uONUh+%ut9s<(Y4UqJa??XJ9XO#IPKzP(3GR;A!5&`)*sU*i?vZND#z6`z%mc}V6^g8TTVoCz`_;i92O$lFtHO)tnRGMeRt{ACFZlR55q7A9o zg6>zX{O8}65?i%!l)4N9w1S5<*0@)su1)f(E3;LgzTpnT z!t9&uVlAKfVSlMX;x&cw#xcml#nuri4iTm(y;HUXNgn|fI|SD79e|Q_l9oaakPgHw z+x4JH$&k4^LiCd{Rc2Ft&mUyVk@`+I0sD;ml5#NE`_}7qU&r%$_rNLO{o*E-qi_&{ z=H(;#zfiu})pF9sp0{dRvTiYG4|tKYu{vXPBuFdH5#6a@-BXg+UY1XtXCw9&(WM)s zJql#hqcG1}chaIq05K`CE)|v!*!JT7Y1Bc$v~kHO z%Q<$vKxO;yev|Ln2K51_ldc@EAdS6~HqUU@6>47>`(;Q}$j>RyKM5UJH^Y4q5py*m z%ihFgN=+`yFO2fL2s2$IZTOW~r=TCFfcGhcJQP66TgVQ|%$63CjQacMF1-ak(-&r( zfRRyiL^3gnB&=LM;Q*MxtT^N{U-==})*U+DArwoSFMRPd4I;)o<-D>{;ge2?N(ex! z+Vz(_>9G(wvuLg4eAcX=)o7E|YU(qJ;xE-pX2ps7y|oN5CY3)Z2|%0dXb)Wn@D(%t z?-1$$8+_*Z;*nL|;SaUgO z^_rMSvu)N$pi(#*b`zR4&Nr3;+t(q!7SbCwV>a#WLJSHPAnX#+_+=gvVE8gJ8iE?w zt<6kq^phuAaI7_ZsFoWv0*X$VobLt}K+7(uSWMDZWm=99^-Mb)hvF#=Dy0xA+E_Pq za(l$wBE_sx3&yrMo0s&t9K=*kxyv%8bYdrR%rH`$q)=Vh?lP?64ZTSK_a;833?!SCfL3Kzhi6PUCg2KJ+jCsGy?^xd_ciC1 zLF$1}-+y%iBYQ-Q zCX68;vbWyb2oS+2Nd82k@>#=VjAI;LKg9~D2yE!FmO7$X>c$)qvZ}|g+hXG+pNGDd z^v|iM%f($gB$XO@epMmY0>{9Hey(w!RI$WldwbH=RL@59S6Km5n4Aai>WKW#zeVtj zaJ{y@eRyWUfzjc!jVY8fDWBi?mib@S_#w2R^J)p!+oFSmsivNBmsb!1W}#efB|G1} zN3dCl;SQOfmAK0)6+CPx)231OeMLLd{RbTJGBKhQ`n4@rrRy;H=Ps zPs&szWC|V%6+kJgK8^7d{^X~yHINFKf_@6!Y)UN5+#l?lg&5^13LQ_ z&ZEU!gBfzEsCZ(;N?E7J^)NKJu;B%f+mA_ie#tUpA{Vzb$c-Kj$x5wS8wfk{Z^p^F zjp7z0nn%!f?--M7cx&FsdRsi-e_r$Xvn^r9L{vCua-u^0P2~@w2c3UcRK?(fL5Iny zhE6-)Q5s}x(lq3>r1L{Fx^2EnU1nzTt;u4)M7m)a+T+Y$GbKtDD7||+sOp0P#>6h{C=2*C&iTH`nyv;+Bjir4T z$ombv@w-HZwPS){0`X0b&J$d>d+NchlF#nw!mg`s(u#vJP=z{C%G>pb0RMs$_JK9( z;o4wh?mA}`0U=rjCxA$UDG-;Z#J(2~mV`NUm>w1_wopxE+ZC1xmW5rEQ$j`|S|tk! z8rOn8ACi>A+U!CUp1&9u^~KXZrARJD7&1PmE7_y1*H#~m$5Lgli&A%X6iUq|Hn)Hu z&+eL!Sn-%Kx`HLFDs)SEgaTed3wr&!osP&!W}(PL`=zg+1NjaOW(dd9W6HIc@>g6% z+nzisiXcPrE@+#N-VgSEn1QNQxF9w@)+j)xr6!xSu$Au`SK|f@%=^>f_HE<-{_g9w zMM}j2om-I-urp=-K|1RL)4vwKzTY&h{GRy;Y|P=xfr{gY-UgrEBm|AJjrN!R5)tiA zJ3;X3VxR3KZ6A%yS_ zCkUm5pZE>jUrcW>g5p*5fnip4K-4M{U?~Uh+WlEoiXDG4-s2 z>&en7(>l=^eq`!J3;z~miAW3!obAHoIjQ1y=cxJXSwa<*Bs9a|@0pc~H_E(K6kUE3 zvwG~%=(uzGU1~ps$`Ty|+fj*96tqc1b@##6v*Z?Bi)OAy2BH@j_8o<6sc!=5$1>)yx}clg$)YhW$V_90U73#8Kw1}<==1=mRg@(cSU zlI_&xr!LA|WEfDkB|1wu-u{;CsQfJn>)6@4{>9Zk?s>@YV~W%q zHWyt!;L!ZGRyjdVRB-8LvQ^AMaw#0F?uM}|#k=f6nb}=b&gbT9)QkE*n1f zkXiqX*o}%-U?|2ULSgieB0eIirib?%E{D&PFP{jlT!LrvW7UokS9#~n!KXEq2p5lt zPtq98!8ak^|Ge_3RQMF@u$0DaWAS}QNsfsKKeGZxcMpqxM#NVJ;2{gJpx;&x_(xt} zEu;6)5Fg4;d|&R9R-@nX+nie$7k=8>B5SQspQ0ccv*G;gLv6QhccVeAH#i;$Z_6)3 zom85{B2(<#62b(9sIjQ{a>nPKXr(1}^O&(>ML3>f-Nj^?N%eN9y5Y#`LlCRQPJj4V zqDWxDQn`$jQaDmxG}uztcL)s6SSy((t9zb4pZ7%^rTplnkI2XzTn zlmnXVFfHijVi#+j6-(Lu=o{&=IQ_VvTBMhqs2-p>OYS10jci_ms+GGMxZsy87TQuS z26k)O1TvEJ`F&b^+_>oWE#&BB3zRC-##sNK%Ikl$;ydPrg3t4n=Rpf}OQLhw5tje3 zz$QubkqByVb>TU#SpCYUx3f|G|)X zXXJVSV|5elhAIAHfypDXWXWXRroZIZFE?SR+-Ps9&CG2PdKwOGea@~Lq~ONLd4YMR z5WM1~lM*2*8DO)h{}o$@_J~ma z7uX@HpHtCZx)Lk74YSxzwO_>?n4|6MGpFf6g;xpF8brYnd&2u$dRh$%j*T23)ckje z&%+!}d_4x*CSvj3vCMC~Frw`<%7;RY`zw??|mpzwir98hh@Aay_s7T&WRADvNX{9C%=FNWYxnTIgrrgcX z=!yaL&0@IV{B8saH(^Ea%ptT9U+IP=qL}kFzGQA=_f$DIvV|wKla?%w%uQ_|YCsu{C7hL5^?&UZm0(#+Rg?#2-TfW*x zN3GzX4hN-08D;mk)|bVph|f6d@u%x0A!O+%=?i>t*~h#6{Ve}OG4R@NUFrUx%i88% zUVXic3Hs5`9p~I4hNxnjr4HnAED4^ZTq~TpN{;nZ3#Nx8&Y^DL)l}8n?36xGk{7Mm zL>gaXI1P)(S$S71X}4q=sPf2iuVy)un@BkXS-#SMX;oEvV+EO-QSfU6!uhl6;l*DBc;RC21KkZ?^eFgog z-j^*#`{ijk1p{W=F!p0}DX!~*m9d49MwT`=3|%bh>#d--=Qot)qWBKTW1(hDtLWSD z_1>y4c9$7qb0%V?*;AH-ma>u6WOww0%kPxCwjJ~rl@kotAu}-TJQ)>P9bTI2gTx=G zug_}x{`!A{cNW}vM~CFRJb@lN52*a~`k=O6Obj!^Q}U|vBf^O9Evy%q2U#xXSL?91 zRooJ=N3W73$_^rrYx8g0riAXXQ3|7iUX5m%Rrw_HV=V=F+s7j6S5CLf$6shfO*8gk z#{Q40caDy<`JzTMu{E)6JDF%=+qT)k#L2|AZQC{`>1bkOV%xfzdB5Lx?_I0c>U#d^ zRbBg>eNLTv&aOoWhFO_|qs>!w>y$qnsPpVtV64j@AB3!Y+}~oITl%V#RFIP3yGjI1 z4s7DvEo!=o_QhIEC7*=tZ)9ThzZk}snrTUTN1VoHA82NrB_0=VfudA^@ z;lFXD5o>0^645hV5M2jRs8Xwx|CB;WU{ae609dY+x}<0{Y@tn&^L*kUJup1x29c9IR-UT7&)I8&zQt5t< zv%(y^3ulstMONfj5V<^66v`pb0!!jR9WM3kZB=L52qB z516_#A^IGEe*Wi6P6$6|emn;ryxz&&QaU2_@$z>2|=ZjeXob^L9qsu1VJQ6!Iy?g`UrahX&6!cETj;o?5*zASKqo-{#|!-gO?Yy|1dy?el1`IIdbOe<)7suLQq+VrBc*` zN{cS$Syy52X>oj?teHM)UrinZwQVM961WpT6-~Yoc`t5`G8u~>oBPs5@R*YjO_Cr-f5%~H7Z5AQi&16?5goPS3s~)FmKKxsP5o(w$@jgc;<;{kc6P_= z%tx?h&mwPD z?{xa{m=1^;UTl@pZ7L?7CU=sKlB5=C_Y2*##Rdwiqmn0L@nQT~EZ*Ac?eq_~9Gllp zc`x;ai|);ie+~Z~=W)*&XLy|fABl7_1mNXKa3b*{6*3_{c*d*% zn>bsBG_6m9I*DU@8*1*if?>&6`|y#~X2;hXhCY*s7`$aD8~HuW8Q3)n$84|y;G=PA zYw3Ceca@x)_2O%0>U@0;90q1yV^DjWIpYkSDoMQPNmzjgrm$#$tIA|T#Wriwx{?7O zWgCjt=o~m36bqN5>>f)qm+L}^U>B^ilQAujG!hp{ZrG$FLHZe-Fn%gKX*2hAt)sSY^SbZMJn&HAY-J7;%U_39WrR!Q9K+7dITzJyIG|ZDK%C! z3`<;myeG&U+TG+*2Tj!h041VPMdPMGiSEH15z3asc&Ftyo2`AXG|1!PUr7aqp-wKV zp%ESnKO3lWnF41f9XL-_QE@Yrjp@jlS8Wq`3{ zHa4fMlduGA*br*FH+wg5h{Hsa*rsoA6zv##FpeNl1V#bTwXoh4$sKm*yW~g}nOqW? z{75$gWFCq==F~=}wBZqb!u@QlpHlqbW}woZU$U+I@-8Xsrr_d242oiF*)}pAC{4@`F>Pwhhu$JdhkldUA|?qJVd?drVpcxykh_G^x`9kvz;!j zdaGp-&x?;niAx8;t*+;bb`0f6oUSXOqjh0UlK?lJW?5m%3dy0^Qz0#2sF4bH&`Db^ z;-NekT9WXNhdY8b6OtR#=@xUQwIEMzIM8`w9)z-n`$KW8$4_5oEPPzXzB;9)0muR+ zT7T&8!-q=~b)n8Gj7lfQTx9l?{(f8&r=jgK2JS^gA|R7=_}gWDv14{zB?Kh|!;~aW z#6aTRfYpk6K8vnCn<|mAgv4W9ut_-o^V%RKk32#O417MU#R|Tp*cgXt3|WUz1+TXJAnf}`p!R|kYjTaLmxHGZ}hWK zZ1vQE2@^m}&!9+C<&07=5^uG|xV7FBnHhpt%Ls~wV%Y`%8Iq?Zi-95d{#_@zUZXThXOM@hP% zi|yuDE0#qe&5yBoA*M5~M|rYm;TEJ^hCZecUy_g%x{7qavwx8^lbv}iTvcVI{_=yL zMBkuYVlZV5jN}TW4cBNvvZAWn>RGPJl6Kxe9q-aTfu@2c)A{K6UaUvA=A=e|0r>Fh zm34s3^2ue40VS1q(61qHG^=)aBYBFLVK0U1kw zf`f=$zEGluiIBueki9!`$tZI(!ZF-L0_$b&l$pK+9TOH(lxSrZ2zVgrRD4C6!$y|R z=M=(6irW`o{LX@S>|ce1f@s%vmOuQ=*@vE=c1)2$;D}I851rAl``-JokSLUVT0y(Awe_l(lV0is!Vk;uXar2*@n}wY#W8IVeQ2xcFW*$Jt z=24yPy$l&@nEscWZNFLGlpVHh0FNQROjC~mH-Qv>&6%+->%iA|Xe&DwoIo;)0{di3 zkze$Im4lLDg!Ez465~NPXf9b|Hz3GtZvOE)Xn@eN0lm6Mc-L&YFM>aQix-X9j=B(& z$JyHFC@YM^B^|-kn!46Os!h+uAJ|C_@nQAGx*8qVNA`RZcN)N0eJ6WX5t0vJD(?06 ziF98I7OKmuTYLH=t{7}_%G*S`Qlx+FgZ)FM8qDK~E3y-`+2aS<0K;wOa-tg)HQ;eF z$-$6ZL(Ti{k2xX0Iw3?<)h!RC4bFSpK@r9fyH0W`cq`>oBe)w<)jCUq+X_YHYKdU) zv*~T+VD--X<>buPntk;BQ}5fva{3D4uXO?jWbVhL_zw^ztJc6_m9v;FOr>heUg-9+1R;-lgEUEk$ z!iTZWC_aa^-brJyeZPiX*UWS5z7Rrh&aN?eprbRCSuIxY=fr~jy#i(iW2?RU6YP{M zci%nTEqH74{tGf0GF{8Y#hx5))q{AOJyN?s^FIWyoGK~=7L&R?l0N7A5xwUo@|HNj zwq3LzKg{c!Jr(713E)WrqsUBdbMV22QFu)0GZB|dvyhQ5I;B=FMUY9$BnBzaP@=(~ z$1Jj!mwG;wL^#Hm{;Ev-NUcMAy7`X znT{f3-QribQH(Ags>gU-vYW=*b+Ow3oO4oU0J$2>-Z}DomNyNzz zSnw)v;vPgtn4s*au{|0J{^L1=6&uHOr7?$!P3Sh)Y4VS)>R`LfY2jJ|vXTxVZZ!P7 z+*zZ;A4GxEUF<+W(Gy)~>NM;0OI4DH2Dm=X#)<{-Bx}X%qcdsoq2=uE?D_HJOlos; zvnBp>MS4)O_bUGR-d`}U^oJeO$J{lGf%U(f7?kN3%N9X7a&rzgZkbPaE&Q{q*b!Hbuy^wk4acisHdWG^+FiBs>ORt+4h1bjeNY86KHuIHn zItWDOm`QiFqI8YFD9j88ZAV8`Mngb1uoiu%xofD zOZJ`V3{2|fw4h0PE^pais8b}~6}t-)LKu|wTVaG|)}w72b70mUTkOlXEn_X^R^1v| z)hHP}nZSp42>^ayi;>X#4Bhk9o)(R?-W-K#`tXB`~^4~^1Km2kW~%Gae!4y#S4$I3;$KYM5qXU z`Jehwkw_6p#pYH-BmDJtD(GY)dJ>h*cFEs$P66o70&}F=e%*2BU&UAZvtn zT}Oy!=->kfo|nc^VPhsJP;ikp`@-mA8h@+SSF_A#(f-{ztb?j30~(dv1c-a}bgknz&iwRyfXoumMqjI&GilgY4y6v;c(>GJ8GB($ z=^RFpL#4ue7r%C~Y;dBnRRLrlVUdZ-f#E^)Ca9BemtQ(zU-K5DP-|2!{={H@CBpVA zzoJ%$zkxSJ26($&??|wnokb&xw7hg{(Lo1Xb;I#P-%57PN(#{}267e{R0hp;`j(ww%c{=L%^={oiG(zKqir(3wQNZn7-l#riyYarNlXKdWF z4Gc?KMsh}zsH9-%#;1w~w2?Z9fk%DJwi4jEVPhrimQ=sf1`o$USPZuplWW&>B)Hd0 zr{8~t1n{pDiiOCg$(}v6LodVLJTL(er%fcMA$B&5(74z&jxYU=-g$+#VXxfFmfv*q zx4VA|;ndCIjX|tN1zM>~pn1Wp+F^=*t<=%Ly*aG+S!UIIhb6}TfqJpt05k{^pYq!s z^LXpe_oA3K?0yP$nVPj7{HdUEIfQePYuDjc6;ujlDDWaRL<{ZxaePx}yZ3VU{CNLf z=iSl$`()MSrOpgd?vvMir-c4Xi2jD#lwtR5$MPIt{jKYpOrTJ%*2$u|HmSZ~&HITA zG4`qTt0GjGr^u`JPm@l>pXP04*X0EFr$7+)*=PPGv84z_iS<8>S0Ubh?L)yR;O={q z5$4m}SGiCF6i|$q@sWwZ-HTTZ^g|_yPt!kSbO&pP$RkvWh^qGsOy<^F@Y$@a3nRfb+i-Z zPrp`nQ4(Ypen{*?ix*nQ-!%O?v-21EV}D;^TW7l){70hLrsd-!D=JG1V3J0~-I{QH zUYrub#^oqs720sgyyw-s-zn$BE@c9wn-r)R|_C54hPdBr%)!g7G!~uXyVN zQx2(mk5D#p2~{m>fJ6r#b+=C7l~3l?lRQDOyu zAIU*-Kg%|=mQMm%mz`_!NJt``uZFK6z1QOrL{+rF0S%&fxG2mMQsgx)s}!#FY6=`N<0 zad%~+=jE=R3}4tN9D6OW_>}AglpOA~@?3W5nDYp_y>yBo)DUia$0`qGU}lp_mSu(d zO8$b-zR^6{kT?V5mSo;T%!z^pXv&F;>i{o5tL^2E>(10ugNaA>f#~9hT=Uh*_C-ug zkmASy%G9jN;bY6lh%k;|<2ZX}wD_hImtVGg3D^@JP840IDh4AyV^mF*UBDt5tx#IZYbvHbz0z%4ZqQg=wVoV;7?cmb%htZY^rHc+wqp@-nl%VF{8K}^kzRFD zr@SMF3BXWf$1Kl{Pt?4Kjyu8WwTez>x;LpFW07@>??>frT&l0Yu|3QQ9aWHRz=AuY zhqVJOY0hu`!-sVyKdnv~>9_V}!u{D>mi}bQ)9RD0-udhGJ;#(z!^~eZcvYsiRw{vKXpi)L@B+nPPK$>m|{0uwHRvk17cJ_Mv>@G zaWFi`0AA^(+gs3scOBN3m9_4&YVdc!@LsF23d;rQZ7v&l)#gqAsa-7p#TcaS35=}P zOYW)Lot=2b@&UlwC<*Z18E4$OO<-yPqO?myV^QnG!uJl@S8vWlT( zLUx`tR=clp2(Qa9_G0xjny%mvk>70D_>RdS;gCvfZo*l#zVJy(cQmX2wy;1)Ez80e)?6Zt(q}<*l--5 zbOkA)76KAc=hw}e!y#a)#<{c?d*3SpG;)_HUSCJMKPJkEGaPx{@J!{b*1VLk35Y!#00aTK#^KsE{Op%S+;~R0%)to4~(eRlU7e>seGYt$!+G-xG(WJSdo^D zqup$B3|FPHaExn~xf&QVq?161xV+scEGKuy>|_?Fi!T*&ua;5;-wFI@|xvw_b zvmi_8%5za)XqBLhnpYYPTH?==Oh6^1_x(EhR){f%&8*IE&CZu2>FKe-$J@d}js>q4 ztTT&U(!4JZZLPGh4G^kM_cEt=+6EdCGM()tkBcO^Im_gD8L0!fyc*K>@;v*OAVO!U zocL4+s|WlX7D`Ivh~%@~JvkVKyjHXiMeg8@F&=jED#T}f}F8rw-^?rXp zTyp^D`z=R6f71N@>ZUJokiD4gVPYdYU5iR3pWypSoKNP&kJ_H;%(tw%V%d|ToRoY=3Dtx+o zObXXHX%_Utq|}@#;=Iwq100MuvV!+XV})(YaLkfYj%VX28d1-IbOrF{3m6)bp%nGw zSRGMa1Q2C&>arjApXVp6xzHkTYgp$kkF7kEEza)aW&Ma!8MHi!qY_so+*@HfvbZ8L zV9>-4mbjF|Ep_;vPpq6CoH6Z=EUHUC8b548ifn%}MD5P+>Q8Z;ukiaOoe$av`g<&V z34C;`*Ksj+B2Q|RKQl@z7WKf3^wJ}<7Ovq*s3M1TpuUC7*-y4qTlsZJ`JBcS1YLRd|V;)Oq7E>TrLs$t8vebFEkBrQ@w);ny=8W@cQ*^9s zSWnP}{1*j8{PGo+ntk!HE(IHQmZ15YV`!NvrshLUl^83H=A|TU6z7^EXWkRLD;=Bq zkyc6nWFQdxDR4o`iUD?zRZ^oesj#7pkw6Ts9&U)fg?3x)2rGTk_6>m11us<<3Qo)* zzx{O%U8qQlSwX)NrM4lt%c!!NGT6>q)$&)FUbkIU{P9*Hi$Dc`ZBuygxWs$IEtoUt zu8F9cawD~9HB*xjrMWg@+%jgV_@yu~cMnE) zWBvlg1l7jMy2hAkRDJ?G>&0=7?i%faUCe0_bG~-&kdb6=T(Al_lT~b7hV$HG?>wp4 zT}7-J&+J5f^+7>=MRK&);VMe(G3xg~$0??c*aVYrR2SK@a>L|@k>bk zm#h1MIaB2Rx_ReWauU&wfa7TY4)2|+^iY+N)73kup6t!1mpzsqy-DDWY4?WRH}!vP z(KFI@0rfw_817lB!Pw&fkcK8pjy`=bPDq;1$c;~e-dGt>tLqlU1B;kABzX^h&$3pm z*Y7ERneNuBIm~H!f3eyzjyPT2VGnRj_l{&PT||lm!-F$sVp#6l!E>tbZg>o5jAyS= zZSb~nk#{=B3BmQ#hSDX~VSmHi|5b>34C@r+)X8Ezsf3PKcqwjljEFEYxVko`&kIF% zmI38__$}U!Pq4_32YE}doZesbhlfmJRb#BeoE)b`-k(CM6#Q3*iugDlKH6YN3h@cY z06J9J(Y;7iTCghAtkM+{{Gu@}e4l|f)7^=Q<^51aEbD>%_yJQ96P3Q!qi)g3 zwVix;h^xWf@h@QmoC>g=G{AnL!Za!^k4Y>wLqo2qx}81KPqq7Rq|B61Rvne)P?4#u z#($_nkR}{&X(Il>FSrYRy&Fm@f;WrZN+#WofcwtRGpR(0vzT6~AY3);0N5)7<8I*~ zGz@m$KgXUVDF}o^ib7+NfHX^RQqWlhu{4MzppTW-FEhKG11Uyv0lUMp1kFStS*;dO zqrw-^y83D*r}(Wbb6`52q!)am#VP4;OE z^eWk@PRD4wg}i(PYs(z#00DMqcOf)S(uWdAl7>!_UV6#YB4;!K zTs@hy7W) z3?>}F+;uy1WWKqNA+gMem`fqgaxZa?V}on4>Jw30?MGEeU1-N^S{vrUoMq(qB*i19 zJe8Kx_M(&Mpl%v`3=?EpIfdnM>h}lW0;oQ zyW~euIU}`p&5ol)BE;8R{E}D)lC0}_^m?@@-#oAY1nAIMcZ(?#E080#WR`kFcqp*Y zYGlyPg_dedLl3?(+h=SQpbZ>WzV=akT2io9i1A{5|F9*!DpU=YjIH7iYafbe_qvqm zOU^Gb$>_QJXEeK3ZnRW!5jF^S)8$r@0$V}&4`_699a2F=vr-Yef)v0nk^3S&rn;9J zV!^2E(mT3^EZ@HH^3~2b>sfz#Kf8Z?IU9a3eqUSq4}bkQ`E1z#uSG0hUjR?`{98`Y?Ng*Z zI~GzAMmnHhP*$WzQxo3MAx1dAtV|=~X>*zAVBfr+sb6YNFQm$lX6^w{~Q|2WF=J)WQnFo5|S<~RY|tm zN!R}l!UaD#LoNRuT$WmUIy@<47_^>Oh$cM4lKf&HhOJLT2b!*{GCt_owtjdPOSFFG z(J8Gp?o$XZ!ks@UFqioDMktSU)h*V#Lfe`HY^SoGsz=8R&6g@R8nw+agiR(nB>?L; z1nR+7&6!z+(Jj1)f5jCzNSV(}%88%nw#yNCOF5ig$iS4zajM1wR0io`o{A8SO4Eb} z5mht2D?d7)Me#9gg$UUz2%o`S)gMg?Xm%M0%F?%=)9F9jwgQ}Dr% zX}q8xULBLi0m`m;afT8N%3`bmXY&TxqAR4a-yvHtT#SDW3zr09tjyGnEv#whldB@> zX5HSk!3pu~>X`hlDC4JxK`$4&faUaC&XrjxzI}Ov5;*_d>Yq)R+Xw2QId^sSs~ z{OAAIn6dgFn(hCG1(xgo4nDp-d35Fb>eZy&yS8eifHUxVV=Q}Mn(=zpBwT-Vvk>U;qIlgK9@D9NvT`~)mH~tA>+&p zB01kJ89C8ew4#yhsQ1`%CT>j`^{7aiARF=t`mzAfhUj4A5JArJZSa~q=wx&&zd$9+ zXhY9qW}I7hYEHtT%Hog6uWEm{$xBV*to?lQRZ&Gj130B3$1<(orMwx!B5I0u55>oG z#;$tu2-tO;O+y}qXc(+^v6BYDg>rlye>T6`k6efH73euNgKAI_t+sC2HVtXPr}(_S zQVQ5@J~{UA@t=cWvDPh89mA8y8RZ z_8{JxMD=wo^euX^@@p=+f>)Z~c2+0%t{>|>ONH~6QkZYqcO7vDQ@c&zm`#_n;h!}% zu?7b8fB3qg7%{9u+vR>6z^LP3ht`j~G8$cENoMjb71YhN<95KG{(}5MmZV5>JYs<; z#-diogdLa8tnA@IOfQb=b@N-NY5Xv+(Xg&g5Jim63#;STtjbzH3&Qn+N`PN0GKqxP zPp(#Vbt-3JGQ%JuZxo8Gddpijv2jayE4)9iV~5P5xzA{`^GJ;_U*_vt=e`$F`GeQ* zFN2jLlNSn4DUegK>$AaD`emgLd<}M^7$vdPHRWg07#>5PBdhRPQ^JJ*3>l)aq&aGw%*F+r-oJz2f;7=Gua&JyN&V@DlVWr z28!mSg&JF7n2HODb*88*P^FON8N3TqV*r+aDwck2o~I^TNmTTz7$z5uWH+FI;9KsG z4Wf^DR;kI#Yk)M?mU!N&++h9BMjl>D$}`bCH&Sy4F&bVi*)$8uXzanJm)MBe4Knj+ z0=O8cE1w>L4f}uoyxH@KcI3y^&A}|x)PHpT5vTvbSNH#OYu|dE9YMhpjOvUIc>oCWowp&&LrQ9_~n;qh%?tSO`yth1M&XFpQQRDP=AB z91l14*OqGoDxRm=T^Xw>S_>N>9DcE3O9AE}MM}r{2Mz#>XRGmS6i#gp-vjWaShTTP zFws8=qfpf)_$_;{U~Lx_I)uQjQCMJ|QE^Xh+TMTGPDD4BHJ-_NB2$xyQ}FriJ5Nt% z{zq%|Nt4M&g_e^lRNB3sjy-(F9IHB#SsU0~VgXP7b;ZxOUX? z%C1E=3trz7WW39+&BS-4&j^7ml6s=sXN8D0*c(cZf8`Z4l3cYHykL~=`(e~0wYVx_M?^$${UTtsP%kkC9Fr+XL<(`~cMkt7UKUQc3Mi-) zrms4)sd)Q7j;-+i?3U4Hu0)|se4e6u5a5@>wceznfGDTZF2&kVM7hCI?Yn08Soii` z_vW*9K6SDBaIkY#-t%AiU~BOM!Rr6kE~7q-I`tVm_;O5N<{!=;+N*l9k(zVf3_g9Fj;4vq zN(f)U*80M{7B{V3aC7Pzn}LszLI#>PAHzsfVFy7TkjvKBXkCYtnxPe_uZZXfl@AcZ zYlk-dbuKTFPG0dT^0?~f7CCCZR_by{;XhXNl{W=S9adW@T101li+=S&A*|B2K&@b< zR6oTdj(bij@moq+-C-JYRAogyDz=@A6ggad;4dX+F=4xWo_<}Wy`3)`Af}LE>iTEB zMVQBphO2Eb2l?Qbydtle61UoBJ(QeIh?8GK!RGeQ^ZS9s<=0etkQ&TY2JNHGCuO8E z4Li|86x(;1ez_qG69uOZK-z%caTV0OxGq+{ZZxLW6X;d(z5oqrJlOPb@wz_omZT*u z5N`a$rZiWL5Q30damwQQtFkP9W}`&~0Q#IZd&<)YiPZVq_nnK=ZZA9kP5YLEhgJNX z2PppYAFr*OEq7-_ghPMpL$8z5J>CE6)BjbAKEAbP%6&q+=fQo_awEFYa&hvMzuF9o zrl1&P;EB7kK+%u|J$&PuzqFaaOz5=dZ zXq37jRr0!A&G`bQq)sGCZ8jMeH4=_&|>bdO}VoBi_;%A`6T;^Q(GM8DA4bu~ur z1Tgla@j5kf9aB{i5RAm~c~$z;;|&?;BG!;RCueA-x6>#yy<P=OnFOgiMy;<{JWa&%d+w7KwB~HOUPTJh67|-+ zHw-1uFfemU1(d@043H*q?PFAlk`yIuVaulS#%|4wEiDHKSkabyMQSPw?o|v9sgq>9cmR zwD?l<&q1#^Yv0xD|8JR??VZul!!zOJsq!M_?V)^eR&s+8vnx}sy$jp$WqC6;adXEM zM(N%bcT3Bb9V3*J7W!hjdoHEAuAjl8#ZMO@mj4`QJ;ZUfvfowlBC5*4V3GDNIIQej zv7vsrGKLF!0IdNX_AO(s1{xC8OWTd=vpyZEfqcR4P!2KrOTx|fT+dXN+lrm zlD1j6!i>jDn;J}t$39~wj=2Y)IiOA~d(8{h!xXI=5`vU9j*!RCQ9UHAkxN<8J$SKD z!?KrOBL$F)){vrTmKNJpUsaueof6xwoVOQdi6s>a_$`xaXEm>~o|J}TKe>#mn`I@A zIqaA2=3=ThJGwQ;(aFd1Q)Zp1+N>k!4%;`h!_7S`L=xfOtBvwdjxvkUvE@X z|10?0R{DP6{;w<}w$tKYKKAk#)(E{R%C5{wqbYN5Wzn_O_wPU{rsQA7*-`k1+uqh% zMywTn>#NzY4|?UJP2zA8&=uSV$-RP25+qr8V$5=V zd<=YMH&No%tMYaFlP8QztSH#(%)A6N$TBMJ$U@Z!`vbK?Z^OJKc6TcNWmjnP;Ll+P zZH0(t#_BNpy*l_l(ux5xm~+;ak1Qlc{LNqy^RNCIYhT~=nCG|CxCd_(g5in62aaN# zTZM`Al|YNDx%!MMj$7XHMsx|q^IYtrB1cLc)8}Zp(NhXrTaF?;x)8t5sscFk=Jr;8 zv4g7rbO=D$M-xMJ4X1Ap!gu?o6vHYzHrt2!Zity3(h^yVZs{2fA4`!ijPSHWe21AIs`KVR zJalL9R`;OOGF9<0|6^xcyL+Q2&fwxynh6pIQZ8!;xp1zp2U~_a5@dKdJC3y2?$~6e z33=N2?$Qz%Dr2^D@)$``6DSo;rHq)&ys`uPq*AX;53aY%ODgGtYuqmx)2=T^C#R1Q z>2%~(SG%u+Me0K_ntBbB!GWCBFFM~E3T=#lPX7H20qmCZmiCfi_~hR=lF9wZnK8^| zwG-)aM+waPA>bLyrs_=*iX?~~E4~-dS5ccLpQo7`#)+7|c;|d&Z~K$dA7i0-O{4Ti zZwYbMc{+_r6;&DsJWQv{TFIMyEvKP8syRh`h7`?yJA}l@;4HA3pg>GV6jNb)K{i<$ zIsEQ!QLD)o^JYREUte?O^=Ie3H)aICWdxJIhv0GN=DyS0dvtLsN1X7Vzda)DFn&yO z{!NAc7dNky5HT*}z)W4RY|smSMT_tBTa6kl}Qymj;^?(dj~Za2pt3i3w_@Srbj} z?s+r?0u2`yio6JFokz4T^=lk;J&pfMTTGUse-Kl#9&g+EolM1S@q(NXPcPzc8I%)E zP1dyichVr=%f!rflIBo3m59kSS={g5WnHB$zV-S=>rtyr$hC!JZyy3p z8G|9G)RLKrT`xu6HJHV+B3B@gV1BqLB^A_nk8zb3zU>$#8B5l~Qvi>U7iYMz)nl^}0^L(F9K|Qygdd`x%2+`{+x9~h zzN`O7xazMG%Ozzk1Dq|e|6+Cc;$&s>C85P7Z`N}Ao;bKUYNUqw^egDEqAD?|AKospB&NFO5<_@H;AA`~etEzM!oUvt2L4sYV?Wd$@q`C!Zj24-F z)YU!&4$990ax8J|ctcX#2)wMq77%T{rza}SF9TNY=eI|qgOc-162+(#@*3^=ywxU( zxNI=obJw0sPw_I8rn^2{&NC)>U0cfyuxS^;PdE{@{$}XPn}V2`k-Fg_*<)!jylwR! z;u=mX`MQ361K|t6ajxBjTIX(qOOnF3_uPwyluRn};{!<7de(F-b=-Z+U>SiRYOMr8w%{-_RrWze5$>X^Of5*t70}m!cP3AF&&sG); zg`S8FCha?+jhtYDMM&%zZ4TyEE1DT8b`pTU+3~tfdS#0b>f2~Lb|lkvmr19=$r-(@ ztUjSIPv@nNc39iMag{ocY{G#Ce6wTLr3z= z-EpMKQzm=$68`&Rtm08)^RKUI&KYEq*<|W@UB*Z$gvt!niw~Q1aU~to?c~pbEML(L zo=lpn30?@!9uA)Tfj$K%-2y&dIgVWyt!s9-?rppTF*|Qsf8prw`O5eaO!wED{*&tK z-wfDu&bQTl>UyIChHWfHZ6*gTn&v&&T5me!J|;FWho-^opx48m?{Lgwnq=^5OqmYq zY*K`9@v>*EZ@4WYc>knM!=XUsET)tnQ!yiEKvesRiCFJW9#l=%G1|xU%IkSv&D88t z=7+LdxRcA4tOS2bkvlia{VBvY4G)%?OeUy_Sx&J_76Pv!&mJz(UiadloUnA7Ml9LP zb7UFPE~^PY?6kxt`lO>{nN|!Qkt!jXH!cwmFUcZ)CHo7J6}veT4^ein_+7WrAPGsv zlry~eq+kzXLfHlgQG6#_%;ZkAz)*0;E35{TPbVKnInYTk8Y%U76IY&!=ekn#mgBj_ z9ury3K&XEeOi3GT!K&ZcSbf!U^_KlIutErcs9Wql8B0yrarx7{ZmnirjhT&KoKl6W7=_!@hcEP?Y0*u+peAJWEVu^d2-n>blQ2|5ni zP+}POhA!F!#g2{**May2X~8|^{u&eskk~M3^RzMg8Rhk>*GDUgf*fQK9+{r041_sQ zB*55xJcen`#`k8;orTP>G9xN!B;Gk;E+Xzd!v$x|Pxcr1?rl7t)nLX686=$wfV5IM z{VT$lkuiJucu2jCRfwPFMxmnC5Rh*=9km{hnfM;gT5e<+O{~x_0qIdukq$jC!&y-U zD$md}A8x`fI1yf3i2Q2IjEnEF(a5~0Y+@ix)g-2~g9L|cFW;u7X?7H5T4>n~T^uaBJjN1C(b&fqS0KI>>PHQ!^ShFfzeAom$Xr>}sD z<|}&m{?n&St20cn>o~Iw^jO<&f^Xl-It>9;;~_2}?mvD&rT2{>*W1={YeX=osS4Y8 zYCOfEoEi3n(zdDKOiviOh8LS#M;g!>!4)_Or8-jbazwY@@e*UR3#Y*W5|eS8CJ4g! z#tPGHS%T5}qv`!akPW#eSj= zR1FgYw`kJ@4$8S}iJd=q*$5bAdc>o<3QY|;XB9c%C-ml|*1qma9`7qh zjjSh~5=ZZTuLju-W6nPF$!2U7Ah>ns7Px;2m~5eCXu)6f9$DP;ADJar{kPED=sr&) z2LEx=e~#hFl_huE%+N_sTjSkX)p;4l-yHR_^3o3Y&=Oe%8h{S)6O1G-A7$irJTqz^ zIvH2VgLK@sRlYs*=;7e)KepUSwxl!!38lf`h$v7 zST2>Wp`A&hSV7~*>MG7VA{ZwQE!)gZ&n(A~8;0FvFys_D$|XXSFEfYRpE{R}`K6Nx z@wR^#E~eQOLj-LiSu9E-RF8pLfPrszS2BX2I0G{)G#M~UE#!TKGNHQ92(u^oWQ==X zc7+_&NYT|9gpncc!oh=vA}r^+2A$v)vIJtS(_tv1DkYl5V_N>DN_IL^NCZdurqDqN zE>s`ABqjSU8VOOX3aPtBeT@+5*^yu1`Q`*Lbk@BCSar0s_ROIDNB)r%Y|-i(6dwzUCZyYu{ze@YCn@q`nk9?Gycz7dQYPOIH;3368Jz-*=M9NP9UoI+< zL*1Uabt2`{<9da9G0k5WixyVQEsW24`jF3BN>)J)hJ(&0D{-1B@#N)e<7^IxONNRa zb4)u&jmc;dxV7k>obHghkr7@)oSaAlWUy%(X1;v;AOx-EhzFr3g_?z`}>jnL~@d-&& z+wo2cT|I?W&2rY%?0(3>7KMEk7mx43UNqF(xv%+6Znmq{RYI)fxZbp)2RA>bJ^*xS zojZ$cdl&wx)v;sU*x4%#)cWcg>M+_$KMc<@tcq+GPhRr`J~*;Z5*tCUn;1l@6m8i) zG5P8ozs>fo(df?$sL4Hrv19CO^&ta~l>9?t*Y77=4l_pmgW`#{t*d?z{ye~@|YfhYbav%lS zOG{HfTX+OTw6Az|rX;IKdAjt23odl;^osPc)SUL$19_KTpT&*^n{}eoLsP!NZqjpG zY$J~Lsyo^@G#Q-L+-vl>#@$(8Ha^P7^flkG^z|p@7x=ByjV02f$x=}(`7FnZk1yAa zb*1I5Px$)wo9}bU3fjaA=~L$?uM1!JU)z>!F8Aun+SrF5iw2Z0gdHk>R?I*>zrGD} z5i%ZnGg+^3=l#x~0cRNjg@QG?Xp^^3x9RTM@l_l3+IPmW+Sv#)c6{9yhR^zFd~~tv zz;O;#j}zkyE-MeplN%bPca3Vyy!+;B(3?ItGx?+DtmOFRWxv)<4JrRo-7hy8M-i_5 zTfJCUe)^$Wj+$ypC3-k^WLVrpR2t@88R&1U-g&Y8t%2qqVA;)T1Fwx`bWv-2fDWAXy@BBUUA;Xv_6otX}P9P$+!JY z8C0HDR^lwB9Oor)R4As}obh`hKIvZgBGTE=r%wJZor9gcFe%HQu{zs-_k`D>@XNW* z@wdEt<}llH{aYK4!w}QqTDBMzmT;vS#wRDdI3%bXBOS%UK#H>J{advq3Dv7=QqTc%D`}+jLW#89Mj0))Ek7{#1 z)_y&FA_G%RCkMDn<;ZV&MRAi7s|~9<6($9KG>D51x;IVpDY5B%1oQC+7;YxPwx=_;%bIx!YqedN;H7ewDctiOwyIy&K=-fpP&d690Cd~ID*>7fb#ySdY! z5elaDXONux$#VH=lLg&bT@UsIxn|{bkF$Oa@UmmOlf$#x+HJ~$;uN$OPrn)Y@w%7$ z$CAod*Hj|fDiOnv42A>3YO}6eisT0$sVP;_k0@lNI375O!?n*IP8fXc*ZF9C*IE{d zWr#6$0koE73*Jp!w%Ljk!SfFJ-l`aVt=iytitmcTPc@1-?%;Ih| z8C|;<79E`?w91dXA=-K=@~Vrb$%hLLcfB8&-t2l~e($wRmiFCr$^P>#&$k=bnr9ju zdBL(K?NK$rT`FjeKL0_hYwcx9N~UeNn%)KxCN*)dzVj3(FEEc*;H5j>kuQD@44jG`f`AN5Ab@JP5Wg>sS!`&#`jL42k-SZU+3zSNGFy zMt>L0Q5rlQ#TmxS6ZU5f<1>iJ2dKJP*L21mRDNawd2c~kyIZG`&lfZpdgF}z-Sau0 zn=5wkS(Qvx8$@pt;joS4)t;3fHp$#Ko8C_Eti%u=#K|B3_GU&nsg!>qj97JA#4w6B z2z~wO8u6u<3s0u|&E;auS^wGuy;#+8RTE5%pKJ~-ERm5b?RHO@KdH}3?&^Lo`BCKJ zq3)URT+@>kU4u-@B(pk@T+;o%lm%WZ5$OBzch?Lz|1~E8L~hRNBW;qdtmPy`s%u4% z(I?z&$xlBMCsPw+rVpPbACVr7R%NAMAFeGfSSSDZ44Sq^x!bMFzST2+VP^v}}BspoMmM^`SkX+y0urg8Y18LcI=HI+>pAU;$%5a4?)mY!eZkGj>xsFh_gc>yRddJIMcP*mL>q<^(uv|?2b)76< zy+Hq?sy}&q{$FKmDdAg7T++#9Uf+PDjFk!&PxSt<1Q`F5$SD2evmQi=Mv&7&Om)%^jn(KVBcKdJZ`!BoBv}G%oY2$BJZ6>ol`2rr9z*ffo2@G0BFi4aXe{kDiG;OW(#Nnk-7!Yh`=W=6(W%~PG)8R2Z9%e zMNl{5Fg=0xK19J{O z1QH%xz)J;gf9EgW{^rfuMaxAKuH~i$cY#8nZrV^62vpMzqV1xirRAmrbAiC&Zcva5 zL=&p0BY}s&wcVgPE?OW>Hz<7ZOA!vyc7tiTNDAFx5EpGN$sN>18?567*OWl%xVin4 z`2QJEjgcmc(k)7?36$K}i}(UE3(2N%6g5Fh@-7xHs)9%33OGDPP4H5#iL)XY1Ooj- z_$BJ!LfY~?$vlbL5C5h1BR~w9N|SV$=rBUkTjV1WO>?~jSbrSHc)k5ydS@>Db)K9|r{^S~2H z-zRxaJ;cw+nTvlS3`(m*!tK2sIb|na%sB_KdIzeZz4KRQjvFp)L2N_q^f>YA*vzI# zhH6bWgrV6hqJBb3t%#9Z|5AUsJ&I*{+jV>4)=GVZ{<^ZDL0yA`q`PMrEY}5p^@GJh z9TPw2#`K!5yj^d2xGwblO*Q9=L$}V%Ts^lCH-L$Q;c`Q@JP32^5-=-=_B1Dc2X=8>wjo3LUrCj+FW$*NlMA=zS+igT50(x5BI+4D}p!cl^MAqS>5aJost%;u)$5+Z>($RHmmq&wL&oz#`b;;Pc>v=-wwI(`0{oDLO_mi@y-BB91^DT_N-WA(ntFyM9K6wv6 z-?(eHb<~AkLwM}5&3-D^yAl-FscKqZRI>uSWM(<;YFZ~@&LAIEzo%)q@9dGZ)Q@Th z9A+T7?Y(K6h9>$)HfMSTnjc!Z4tI$wxAENNR2dv*1_XLhT12Irr8vg*awRc}FW*&EUfcq6WFN==-GH~)7!DQe^RmHEmZY08cXwRH`MB+;EVnXP*5j3Asx z#amZyV1%POVU^h$)72`%V376R)F))Oi$$T4M{+d!mN@j(9}s_h3R-K6JrH?!;r#kg z%iLM5Lqd@MzF`%$pT3Re7YVkL?vEZQDqk6XCPPS7OI%^*6uHKF?{!4tDd|3kvkPTcntltLg$Pbz>Y6CX8zi8mpyBWNmN-qP{a zc3+oYuuTAju+J%j#9kp^&rsdh$eVd^^@8Z46Imrr^NdjfL$x*Hr{R67O^9A zt(IcTnFUVA>-WXtcK7JJbgsf7CU1=zTcPg=Y3PbA9E>S#{y865J12P`di2-nU*Cpo^~mKvhZ}qK(mZOOw60AL zx?_0)_;GFfk?s3-(=NKt&gU#liRvB88^ZwQ`k7a=+Qn79lBFY$J^v(<9FAMDXDebZBZQJmV#Tn_(1oP+7NmKjJgaw0wKz~nIi!@T#Y%KkbrRA+6bp&8M5P}-Yv`S8_q{s%fYT-!6F zvrdl`b;GmbV2I*7OpIOo`sCEH&zK$Ecg5QsIx-nCcO&ULqiR*V-C~^X8;IIalwLk% z`#VfSb4t)?Ztsopxt`jY$Kx{#J-u+-6>Ah%nf68eoVcCz?Vf*a*44r7)BACv%k%qj zki1j*Yqhg+p{pyR>kj#yJSjL?uA>>`&~xEIh4V4H4YzxA>2)m;#EHR$lb4CB8Hgd%~c|0)8=RG+FADwk*VMSvq|L3FgtDz+<_1leimbGgI8TkgP4D@e1HnCNA zoDFgW&461P)11@w8r9zgXq8LVJld}QNb$i1=X8g-3wI}lx2F{juDd-XpK|^|_MPQjEGgOgqyhNNT`m4|t2b5nbtzesPnxr}xC$?d)?XYLd~H0$4XDfX!J zo}CZEX|i3`pxsp;ywz{9-lX{i7!hNW3PwBqK6c!nL&+R<(Gq3|tY2LB#c^!`uE;sn{#Xfyy&d8(ruhPmg)~azw z$)EF_QyQ+r)4jgMwSTCOE%)eG^85PkP!`bbTlK_FK(Fg`o5IgWv!jL&aC7y=(|dcm zAJHcLg93wUodUbob{R%mTKbK=oqj!*qwoJ~;_LC5QA6&R#(vwMzVAP#)Lc&ZKJxy4 zgY7`wE^7Jw=eO-cK-c*X7?J6rZcJ5GQ^(r-A%TjNirUU>MBUSS4{tExevx|BQIl&! z*6qii+ZkrG@y>%QN=&WYo7KbO(4Jn}SaHV@m>w7AU-rkv+ zTGK|{$nIY|e{OTf8C&mF3X0M=>>8EJ2lkqKZ%W~=Na#P9NjzBJ$B(P_4Xf}e4F-N) zU0)Fz)OQ>k;`-i0djhnElr1#?lK*l2Y`xK%n6Bbzn|{k(zqTQH&APx92~QZ2 zrTvl4@1=hf_=v_QGmz0CkyT0>L z$6J;Ss~czy_t(OaZj`}KDPJ)qRwZsFrX{!%WC^<8YrmtEW%;io^wD8kw%XMyP%vdc zdVX^dt*~OKb0{djePZAFuA5k!klEmn%7%t zcILo+4oguJcMuL_2WiK;Zh0CQ$uK1UjOM1Y+-K81Vs{{&aWKl^l7^-is$ZqYz>tlk z*VX}+jXyEA2+5^% zScMgx+8ai~%RHTZXzCg?CZA3yk}cG=_9=1ClWV)k)(o@p)c7D-c^0q<(}+b5U}u#~ z5^-)lLb)V-KIv(Ivh&NCft0U>t-(hZOz#?;_PTU=?)={KTh0RjAG4oUZzrf|G*lxi ze#y*j!5@KT-r1S>>AnN`{=Erv+>vabb!JTgGRAK--%TkM9}kkLia)l>m+O2!XjccQ zOwZ|y{hR&8gu{Eyhj7RejcvoxY4!6rW#`KmqSdEEhf3}Vkb#-}l*{`%3mLI3%HaKF zKIzd71?LzVvYU-^JMMvJKc+sX-qgOlj8IrUcT@3^!;$*gWQpq@AJB7<~LKN57s_7_zNA`aR?Et{5o>q_3J0EK2h9$+Tw2h zk3)46O7^SjiKrv}w>KlLugF$exyIqfiZJx-_*LLbN)amaWhr(39$!yuG#22Gyj1}s zNmo}ymKt4-{CveuE%Klo7pT#^zgb>kWJmmELP*@{dh7~=`jMAcytQk)$F?8bx!QS+ zK5kX675Ad193>{+41CE~zYXn{%H@w+&QWrA$N;C4cIv0Ny`E(AJufS!vu9Qy z@X#l-x7!uNbz;@8N{#4T+;Qd94ZeS)qtdnQ(gA)GEBo?>Uc&kNCg87%PL;r1;KRhh zO)oLI7dH$DJ5>w2Ms~bHoy|Q9EJj+svQzfll&`w$;KwFr;I*LTB8Lk#w z(ywk&)@_<9%W21r1a90@mybdiAUGQo*W*rw1Up4UE7uzPYQDw2*dW?8b;tT+Y+z7K z(&gs!r{**cQg(5AQaRq=)o;SO-Jahy&Fko9Up$O`>sy#u=Ms5jgYIj$rot?}US>+h zC#O!w58W;qF=`iCSL?@!M?xOgEvr4ofIi+|=ahc0Jx$SaTlT5Q;jJ5{hDQ_Dkv*}S zS1gBg(3_=EPPlr-H_%!WrFY8qmlhtr*iBYxe@dFTxaM?S{kt3o&#Ov1H$R*eEWa^} zNm8z|*B{9lI`$yttH&FAhvEB@z4DIKq6UM)tFIQAb^{&S5566-jKE$y&ZW-HV;;SD zIsB{Ex3xyc`_|W)$6LCF8uV(0_#@xvW8Lq>xpJJJHT-2mvX zg(+z(PFbWpzVbQ3Is4PP4Np^~q!dqpRCe{uebhf#c_m{b523MQ<(Y(E)MzuwNu4WJ zZfktG?Zi%e`A!kqJ>tyh-lNjbl0uszWVHJ0c3bREgzjc`R0pko*xT`fq zq&sv)2^M?!_PkNxohumtkF|H&(S(j8rt499ZpZi8c&z7taxgAf-RulhNN^gD!$^N$ zh{;~)JFk$IJ8-Q#3pG4_7Wj?XV;LZ}S$Ja?V{$wTr+2q(x<32MlcaMKnjIT=I{RsHimLLv23~WMARaqC+hlX-DK^LC zB$%>NTdFZ9++&qm%fSabcyj@F#89v)>84K0fy4&t;5EFqnthawvepjA${?%jyVfmN z2I4w06s+F5(D*M#ADyxk{=7r?cg_8?1D-uv8_)(Bo_H@*_Dd_ zQQNGL{;LHRjh_v{TkQ+o^%`~)EoYLUR1ndFExOi&gR?sJb}Eq4jvp`nYOfVrW#cF- zh08tU;^>GT*hT(&?z>II_NrrLXD;jw`>`Q$S5-H_w^nD596RT>?o;nupBtH{z(0;m2a0Nt*FO(!vjxR9DdVp=X0-Yf0rUVDm(3#Sy zF8h$qU!Mt3*%E(2#UwHFp|X6nj?1V^`4P;M$KqoZrut`zUas5dfM*^gQ{6`wM##mg z&ibdNwgd59_W^w%m_S;Jy-HtfmcK3{f ztYy+|Vb@e(A;T9UvLw%3SVUwpf8r%x+YTcr~|61#s zJsj-pMjwZvW2hZwqn4$wn?8;f2>er2KXNxUS<_dBAAKMfy7{Tj>DT)`pq=}^imdIG z4o0XO)EzI|VLr z&%fV#_WY-6s1J<0QRmio`{P5i7CV9hfF>sDZ|84p1fJ{5kB;Zq^Pitp@;bZyGWN6j z0~25?eb3gJZ4F=66n^kcdf{nwM`oW-Tc{iUgb_Zk1hd{#Py~B!OHS@(y_L>4^?vqV zIVBCEd&cl z%K21zlyl=nJK*-td(VqcYP?+g{cv*D$u;UqTB8%_sJvRmqSsz_prTjuPe*0rAq}xv zH;{asojNWTUUuqIt@oia2r3E+P?NDASrG%Midef%y}~wC)!_xoSz)7Spc9C&%) zqq6xgJT-Ta57A#gogtqQg$Z)t`&YhD*DG_;3#9QI!VcD&@I0~(uc-{4D?I1<%K*eU zI>SMCQFZ4EFI^5x!E6S~tC=b8<$vBiz5Lk=qg_3>JG5W}ZlTVi_O601sn=&!H>0+O zS{*Z3C)uQaWo6QVeJrO7ck~||B!T$yc{QBvQ|w9&g^f>>Z=bU(b2#?RHS?_kb`^ft ziQSj>#Y|rYpfArJd(0}|O7h=Rk#b#~@;3#L< zIVdGC@aO7;tndE0Ut0&&BG%sDcg|d&qX>AuYh|(rWu!4D|KRmI=Jx3$c@dPCHnAj_ zSLZ34FB?N};}l=G)lLli?T-MoC4$;qTHSAsdFVRx9+8!(7jZ&21wM>d$dnJ~gD(p{ zO)sZLBo~ywWBRQ_oLbiKJ-O@sz?A4c!gzyZ&(0c;hjyaGTfRkdqGyk+ZyGM=HhNBc zc>LJih?@6kS||SaE=A-%CENt$>cK&y;wu{W-dE&2KXv2mP~N7D<>y~<`>l)Lldb^r zogSQNKI%nZxa9ZY!!R?ZwRxBdqpguJaVtsL(#qazhsnXfTW&XTLJ zGVOc1hpyN1zUyV&EzO@X3u)mGKC2Bhz=!l_3Z{B0zUQnst<^1OjQ0qzh)0)0I3^@ObK553inOb))O~_Km1l+vDnQYmj7fwwM*HDl`m}e!AN&>?ZOan0`*< z@W!iT@A>TI?Y)z6LxGs*E!V%-bk5KIte-O&pENi=ZtkWsu}!Nce%q&uCNub6pOJ3K znKLEz=dUYM3yP{|LmuCB!X@zZ;-s26qj>{pmQVA`x2u@Zf~)wJ8s&3IHsl7ef&B| zszc{_8%4V|8XxOts}~f4KHK}M?Zc=6E3+{3CczETu4#MgS5>HfgPR4uGUb=2xHmV$ z*}CQj|e9-1D>!p4@acGqP)7oXz5Cb@?kaFTR!|S-` zHtxRsB1ZlKRH>-a4UZ$g9TC#VzyiaFm zkB&=**`%!7xK2|D&Ia&Sj3-}i+(1=*MI6((z21NCiPt|}`frQezMBXPZMfwkm-i~z z`ZvMjKLn?9w@u14o~9V0hJI+bmZD+QGB+5{Mdow0txs`zQNr?DFzALsxAd zCa`Yqco;F7zKU6_@Nk3`I`Bl{VnOSv(KI7zeUeO*u~+$hc-NW$1?;fKsRZ0-f{ElD z)N{?sxuH_LvAZc7s2!-50lusB6Wd2srMNN6XDfgB9>0B7DSqm13AU`<;~x5K(P{C4 zjrZZRpm~qjZ;iT{`mGVC-X6^}6eO5g->UfKVf(rkJMe=T=lQBDReg5X_a+C}E*3D3 z-=i95GTKAUIvi*6xF@B!>?wGtR4*}f;mX44X7iGhG2MucN75(9T`RBW?w*W!w$|%P zd*9I=E^FH5AELU{nZ}Z(L>n?UJ{v-N$O+d7cY^(wjf(O%Hp-jLdFKVU9HECYt`47K zDCLCRi}mZ@)vnsrBc*5O@?~(-yKl;0wtopY5hA~`Y;C}$;h34I>W=n>?w>(nS}|wy zXPX`-%r*4MNfF9UUn8tUzps`(>J|*mmi#ba)}6TjbC#1_`EL8bZ~G0N{gMkHCnOU} z19hMGWhR(0KIW!=7QWy4_(w^cadJtS^my=o_v;i`k< zFI|`B8Bb<>s&JdK&BjOWrB~d4a`e>Cb3SKz###^L`_WVFxUR^(H(5U_h8q=fza55t zuNn64Fa7C0e1&(B_)T`Ok(6aW)~HnC0vB{{IpTN!g~sRew}0K9ILyipSItWNaXF>* z)(1FLHDSB{*xSU?;Lg293MpJU*@>6i&Ym$3fl3zOR$hC#S+p6rAv`;Nb2(b7OEwT# z8j+sdA0}aKug1EBYB6y#(%4qb)o)FWR$H>%*Rar^^`8F3l`jdlOo#7kQw?FGj_i-5 z?3ESNi}MXpx$}D~3{@w_51$PvxsQQUT^c1Fdx= zrQSzo@ENO3q^mL2te4sB#NIcp%|+S#(PEe4nzQyN&i6#dJXe0~sg&^L)^v1!K_;_0 z!HILCxV>SuWOu0c=*hGEK&6CwvP)^K<{pl5agd^da4!b&Qo-hsOR@CIqC3wzU6paS zc6<}P#UcDLfy*F0Inhy8m17?^oEP*RDlJX0xOZmz&)YG>B_Z3G#{Q}i3SaFJ&h?DF z7M^qVhYAhW-O;c_8@j6>d1-&DIC%NX*IV&f6gArePH{Of*a^c>uuu|2F9&gw?hsLz(n?q*KfP$$#<#={Er!_O?||9?8$%UcL)MtnD&Y- zNtd@gUf#Ht7T))-VcE@Jf|ikj1Ckr>De9{lh5s1KSqA^DANza66^R_1$7o@Mcm?Yd1w>UHUFN7lO?eb=lw+i^1pxIO0D;Omh0 zf@SGpFV6_>N)U9fA$APc3 zPSO#nq)l~+dfvUd@fD}w^RRM}| z~OX$Q@U*GzapZx#RLkFz3|iV!=e3*Oj_iTBO2TW+Oz@s!i(ltjGE?5T zhu{2i@|}DSwzG0D?UR#U`==Y%qK7Yzsy0?T+b!#7SYD3VWuk4D#15u8ge@WcXY%1gYsxVt*__7AY{a+ z7#!_E?H9e!6Hv9{$-5^WKht&2`GVKa=3PC%d3zKhKi?G)aLqfc;3aJM)3I@U)PYw1?Sew(_NXrbFWODMcQ);biavbk{d`)U zvRye~JpNeEuGT_J_s5j(7Z#z5?svIabHhvI0_3fPqH=P{d z$BNVe6eJC*9UeNE0-pAnnQ#a8z6x#|_l1YgV+0pPyW9Btll4kqS;Cly0bXD2UU?N5 zSq-{1D~;bisvRWz>$C3P0a>Q+FO=)og^EcH_xtq1>j-?(b8t-!L_Jvm~T#LKyy#e*a;XG2PPv zHHts~Ia^N~e;|j-=Y>1g+A5>>6yo*LtLs+q6N{ea-EgGj<48ZNMEU0C==iU_@oz## z4wSrkgS1%l;+5W&)ss)uRz2N!RjnZ8G}_@wY6xisGI->wO=oknd6Q~EXNcWSTLlL% zM!LDlnLWX)s#YZ&Q$Vh??>r>r+%rer3NKOR3` zlH2&YFSV%YCrK?caH2fpct8}?>a%R!3@OUfhdfF?aXP<-s6C@Fyy_*evTA%DDtaqE@s>mikK>*Y?!XWSjm0O@7Y*DZc!N+l`ow7;@Og=_~s z8i{=TW&g@Ri*?7$lyg8k-#iaKMSCRG9I+8a8cbXkde{hTdH81i?PmI(Q<2h?<{3On zCCt)+AQi8ZwynaoE^+c@z}s`HvFBp9p0T`<6s^S5SIWzTHfJszjc%M(OFmZ~Mid`l zC#&Vf^^8k(P68foPv`Es$%T$ReT=~nw1@4Yrm=o?A_8&2v~dKV~xxv4?x*P^Dl?x zD|L?6%YBzG3s-o!gIN>)WtCMGYJRujQ`@fx1J5K3964$ebfLjxm+t_4B>2qZMna!x zq%u(MiQ*aVR$!m0&T1fG_W@W~%-0R>RSe-iPT#r*&EWYJ<a4x{BF5@dwPvf@>c5|O zUEkJnX;fYPb>^LC>o$JAHFX6^`BbIFQW{b@-(R=x{%Pi!%)`;dGZDAgsuwO*T~xn6 zc{KelHo-UEMl+ZBZnEpyV75iDJDz^+?c0N3SB>1*6_o>Eav2y>6M5IbCylK58UEo3 zFxOf?rt8@umxH(MyY4(AL?;8wE0t^6*~o*$YsI>;b#XTinxW6bjiPT|BVD?ZOeMd0 zHePsM3$6eclgU?i=TdH5;t6hX+N~S%&yS{h+Ce>)KD~Jnc<96%%~%t50n+=t%}7Mj ziyK45U94+U$V;rs>0?in3liVnG;?}+-MxzT+`;W?#s)+}gsUMXvR*rW+op-j2V~r?c!%QMX^TqT|og?bGNJNB9JyXxesn3-UB_oN#75jUYfU&1R1PEeP zid{W+%_Mr=ySfxT*`iM}4rBFFhk6F)7jidb!D@T1?F=LwJ)NN9VHCf0jr3#sw~#LB zn;shsp<^HR>{_d_;j@q#Aas?p4%_|f)fMA|tv`N6yl*U_?g+ex@Bgg#p8K8k?F06D zf}Fi@e7)}}lSwSo8s?i9rl5z{8sE)VxNoTBm9iVs8+4)UR)>qSBeZ;QL&$|$_W1B; z|J&m)3?7WPmL2&FV2)i$D3q3xKC>RUO=_F_!BTEYf`Z)5>X~i5hDl#mh9D}o{>V`r z8QQoWy6y9NpO8+j@^KTp^Jmi+O6iyDh8${3XV={5J;tNv42x>;~lJE1tCs zpmfvyx|)xwRDujypSfi(C2?eh6)0v)UeU`VF{VcnM((5rylxs{mCf z{cyTH;ES1d!jC>c2KA;Kt=Y55clBwvZpz$PU-B)D+(+kO(~O;yaMYRZ51SQo=6-Dt z*GfxS`QVLlV=>sCbL7;u+u4TquQk~HRC%(jn<^diZ=y{81jkCEX5oJanfxO#_OBq5 z-!ZoT`>06Qh+29jXshYW>;;_iMa6PYsK=(N{e7kiEu(8;O|YFUIai`Wf0gAZC)ovW zKC9<B-i#GlNiKt*=RQr>QG0ca_Gx^_FP^O0#-2d8qp0{jRHybQ zhNlXIg%xACSG(S7{rs>)mzDW&jy|XVA5jgUJ{j08$|>s3Enue%#| zPSwEyVORfow|QAZ!Da>2s_<7YWBG*pUoU&dcFE^It+_wS-2bQ`d|?A<+1-y(x&QxO z&{~Y?{g<#FFa!#P{0ywh6Wps8WI*Ge$|Bpt~zBY)|Ia)2`1K8 zGR9b&DH$4U-f&c?D`at5lC~9vEGC<;E7Vt6s-r7OFJ=Q(6qiT@41E=>jh&)^!(lRL z0!2*?xCU4qtfi(%;Ys3r{Wv^^B3MI5Wf7C-NzuianEgSN-07=$2?ShSAkfdxPs2}3 zgTtc&!EiVn2+{;QF!#g+*~j*mcJ#m9%{sSAOTwIMKVkUE5@MNtQXJz?r_hz?m@5~ECjLx>=d zHUaimdt@Q)AB_G>i;E?{+f-ak>Kb#H9G<GhWn>7uqIST1^AcF{<|dM{*%W4MG#4WL=G)UpGs1?c07)! z4~fjvS3xXViK3mP%a}AGkH8Zt>S*Xl`tm4nQKA3D)_*&vUK|03@5SN%`>y8xRs2W$ zf8Xm`NCMh9JdwW2f4}wwG|K@LQtI8~$5KO`E1e3PpF}MUCpS-vT zL-Gbf(s@2S68U${MMdaRI6M|XU|?xyYJL8#844N2&yT<9$|z;AWVQzG=lGF?&a%g z4i^*5;eJRH8y_14LL1Fsq7VQOV(BtMNaz&hox);1xQ37C52S9sS(1_)QIY6W<+I}8=-NQ#(q?DBP!L}1i`T~_TyMB0h$;g zY)lY-iyyQJLfg(10kbtRvT-moLOYlW{fOp5KFLA|qx}8xGqo`CBcV(XAe^KHoVk}H z#tg$*DqjNpoA942{U_5vm_$%C6~UH>i|{kW{1zF3#30Z%7>Q`62*Q%|7KlaZ&=R7* zFSHrL4{0t@i-j?QArVhfMn#(ZN4npDXoRsuT8UmrNMkg|T0&|pX}|>j*X?U7ZvYiDN&ubJ;+IbanvH!;tUpgVwrGfyrvhIz!LC@&JbUm76$Ce_S7b0xloD)7(mgo zHTA*~ENDoU6-`@&qH_So42ZoGlS{_2@JoQ+M7E_SnGLa`bFG|NTpb$M+uMiFBk1^Y zFbD)vB0kc@2rV%eG|tpmVi3ed-Flgt7#W+|+c=t*v!e2M)EZkTbf`@s9pqnN0BoP2emdf(z3Hhku6QBLQhAAA9YD&OFG`noaV{! zG;`E~dE1KpL{#n)AP8V5_Oi5R2y7f2A$Az1C(hZ4OT?Oi$yhLkiD!9o2+mv{(H!hU z)cik*zXS*{VOlynGa)oQi|a#T<8>$uZ(9bJKwx`YvAn%?L;{{Sz!yl67@EXP5XPp9 zCT0Rdz#X-{p=MazKmS<*{118mrQ0RIe{JKxgoj-M{1=}8lX!eM2JPqM>xF|`!GTPg zH}Frre+S6cg0O&WA_N7a3R%VgCJM@PurjBCSei&1fw>tP#Iw-GF#%*C)r9F|XN>1t zI+$X`UJ!4fpD}3(kP8%}z+`(2%9=q1nTttgPILhW%w%aZOf8rw8w)#Y3e?`pm%zd^ zJW-}3xF!`sBRd#dvtgQcVmlv82TMx`AB=ZKBDfYyfMl`IS`z3f^zjCIF*!mEl# z@zl`)15siai0H&3*om>;JTosefafW8FwrqWia`K6g5*esU>Hm-z7S*qWLr^SU^r?C z(38RwhzUAEV-$_4MdZ*)o<4L5!G4;1+t+s7;K=#eS-mb zUp8IjpUp}DV^$8g}{{&0x%b)Z;MfVNmWCfgB@gJQ)FTo{XPFThZE zd?S>Q=mf($BJ4SK3=06+(E-G@u=eEBSw;|FPpFBbwTUCq)(XJ4rddIk0QnFw#1Cs@ z!m~8jVf*mB?Tu}OG%F$lLv?~Jif)U+LVSTNYX}+!@Y8XEc!G&KbetUyEf$!-u>!oe z$j;J=hZ3=94B`?XhpNeA;khtJJVx@!DiR|l8?i!x9K0P&#}~k*0d+_`6QH*jQ)0Lh zRiUsn5md`pGCPUs7yu5-HW72V<^nAXma`;p36KW^vq@;7CX`G!G7&m~aC|E?*WAR% z7Jy@MgfvSt6u=6D)FO)^bODd=ZpxJd3y?oSQMCq(FF5MVQ`_1pS`)cr9IRKYEE@>a^_lELQR$cjqQ10 zHktw;Is1ySU}qydSKHdb-VBe{v8IR_wgfoBk!tVBwBv(qgb)G?LBx15ymbUXF^vfz zn$b7}O*$XtXlX`9aesRon7xTJQ)2P*i%Km_MXnp6b^t$5}SK5>=;@iBZvS7(ee}$ z$j-baKocDx$(fI1vK_!U9NEgu2Z_S7=|);G8!tN~5(W~|97K3K5)h`XLt&$ces*@2 z5TYjo?S#Wp690kdicnJ$214NXJV<_IqSE4&MmoJ7}!|jA5 zEJ{qagfIjSI^4xM1SO%NQ^|Nc0M1(r2>I=?1uPS90FJ~q5>YVDI6CQ{CvQiTw=LV* zmg{UL}`-JDMgXvV9aQiT3iePq+>$ipd?Sy7)>p-Jwl`d_TiDC0uGd=$uQ-cdV6soW+*h8 zWbA}poJoJ{@Xwqo(gKQESc(|s&6f1I4#>Y-~+-Bx58)QR1*HfhbFg4VkVbvIk%th+?F*JxKs3&=^cJ1dUhlR z1dM{gfM&mSNEhQULJ-l!Na7&bHj)uz;RExQ^q#roDMOoS#Pnh42*`hp4Y-6#n?!+e z@jS^06C*5vBCe6@AbXLcz^-=pio^Wn+io{M#l0*1oJsZ z2j!BlZ-PThSPq(G)y41>t{cSjMnId8nCFJrlFBI`ZQ1#n2+serl1Zim+}ma|(yb~B z1E`1N#Dhe#Nu|dheRxm^5t`G-;&G6?Yudf$O(?yauzbV7w6J|DfF?1WC>n|ZQn~L$ zn|z=!L5Q6Lcgg~uZQdMWSZGXSxu>GcoTEyA{$@8m#>2})Si#%FQymBd4w94Vs(QqC zz7l%JrUuphyepXre!gTM<&bI-pEkU|t#(4fYPamMnJ)ID3G-^hPUSiq25LMDEIRus z;odh7Q{I2AeF68Hv*Tt;akruq&c>TVJI+is#uIMjK{bLk7j&cZ7L7esq*->M*Yv4S zy69OejfNon?p${LtP79W0I$`Ge1TA!QXkY>SbHWQ7TJJ8^~6^kR1;KLbsD@>^NH#^tT_QV|Zy_Y^mPs?+~ z&BG*o0@b?9u@%m?8DT0So0E??yx7|Tr-?2Y2GHyx_@~!zxy{6 zNx_C`gUBwS_e0|8=9{2wHjFv$mMzhj8pM}OCZp!zF$XFyl$bQ!^|@j(5IOAm)`;)cSR4EMMYt2TCK&qzSKV>gi|FQ zJokXI0wEcMM2Q^V2#;%pZwVClB%3G2$LfK5EHZ!Ax+xD7;DuS`Wkzfd^GU0i`Qlkb z<`WaPE!tH4uA2OXzVFQRo_=8Mwq*kqvDwy1uu%CUHtaRNUhA7xO%zb|r!O90_tGRHPJMI8 z$jnm_HS;BRy$T3vT@9q>m;e<^{m0G(` ztS3Lx9`QN}2j}EVF?~}}GHmcCC--&RD_!-7T%oksYTDa8@&Nh5sGrGFzxn2guA*EF z*AGEDlp(uZR{*`C)2aQQ<}A`k(e#inc3$72BEUuNJv(JsoA^O{sT=3ya*YQk?7kZ@ zu$AvAhuu+qs$dFc&rLgOK8s71-4EyL_aU+u)`{7L*4Y8d2qB@R?W@ zWCJ%DiPNQZqS4cvpkgoxuzZ|*xXg4sZ?|zDA0Dw6sXNVF=hRQDJz!m~ZFx?{4~N^~ z5rnrCGhmZ{NF&C)he@Zwr0bL)v4JL5@)d_i0^|(5kpx~d(uIjFc%5y9(;Of^2NNmu zdsJVbD=?<$4jsuu%0S$bX!|nenjL@ zj~>_!WKQGd%mrB1gIy+o(`s9|9BUgk&uHBq0|gs3^T?Jbem)HY!Khq!{1Tsg)rgin);} z924&;Lk3*0tq|WObO*umlrd7|W8b8lCJLJ5;4UFI8k{1zqvVtl3!|NN-M0%z7NW@x zJEGz*jaT zyxssh1Kh{_un+L|rQxdB8Sw~s$X~|w%^@(GFBkIoR&0nkHna z`VcHFX0l4q2>g8Ih$oFgu^!S01%p?RPdpCxoq*+CZ{Hk(@KdR{yt>_PY`2xXb!Io& zp0QT2FVGW+atQB8OHYvNqquup9kdP}&CM$5)Vs0%nIp~=jfv36-L*GC6ua%IbxW_L zujniRQnE+#wFIwN3SL?toZUU|p3>W%kKgH82n14)!2*3lR&S?NU)}`&Mj-XZD*aQ@ zbK~w8ZI(!UK8^f-J0EDNl7+C4uQ#Ya^WCXvtz`cIl0k1^SutaCIwSo~2pZsyv$>P6 z1$T_?zC~)g4m6Pn?>$z-%siOTtxGi6F6=;f(hvIlRAT?5U?~;~*M8mMGiB5w(46{C4VHX0r~5*cXQ5T05VHw5X?drh^uv!NbWcd>bKMY z2_^rNTxiQ%`hawt9p@G)q5XQW`m{fI?2L&WDgwn80&s2}IZa**;5r<+b^}Vov4Gje zfZumCWh&9jcM$XDup;ltW@_#D#nlAjw-;C@w~)I+7&?G|qi2icWZ)9)Auth_r*4zq z!kPT#AQ;w44j@o{69lO`D(akENRCnz9WSx?b%&04TJudZ3ri&TwRd z?0ad(@!1@a9cj?>L%INYEi~`K!E>(`7q%0=urC!!j{CRi@~~-=K4hB)Wx+&=kkO$# zb7F$eiGDVPL62EP8kIxokNR_28v^74NiDJf+R2;RSKwoaoEJO$lf1G5d_qyhXxY`C z=_7vNAc}z#tuv;>0~J|ZJE1@;o}V;+@Ou7SCIR8yr5L~8JdOh)`+Lgw&~Zq_T-pb! z3G8FP0EhrlBPa`C_YM}^IfMn{(I#1m`Sya0z~L)sqAR*AU*Umn%OMSqvNmt+2TVg* z%nQ9H02v=@Hskxn7^|niuhF_gFPjps65i%yjdCttJh{=eNXtxbGr)DZ+l~<`8Wv=t zflr2?c-e97mel9;!eOeG&3OR#CS(KW=`@dpJroEERRsW2DY_VO6hIw;BErRNiZxZN zEhOrXU`9b)W$NpPV5!1@lVbsqKuGo84~hh3r|Zv#-y z)yl-pVpKS|XS=#o0xoQjWZ2CnnTsQd-Y08z=z?oWC8P!`0llsORtzqTR8{Nc$Q4ho zzvu1Al7WAgj)&5a%(B(!c}RE6y0Uvzwuy`>s{lXKZ_W|{lfFpaY7~cgk;0Dloaw15znfy4kT7e^W|nA6MqEeK$HK4P=L z2V({iQ?p+41U!7RK^&sOB7FB@ruR*9-GhgzgB1beT;)L5Rl}MXhpUy^pz46(YXPzs zCXo*x4ujSY$|p208=1!5EzSk29VhlI3qlS2Z7i%o%=<~LRVxWohnq3^3gq?+ao8>S z+~1=oy5Mecnm_Iwm)gR*S5+TO$eue&lw!QZG9RnwFAE!EAgi0)BtqhSL(zfNzus=*e%#x;mwto)zYCPV zpq*TS`vaMy1_ZC+cF4u+f{4ybT9~im5@EN zKw6@^&v~&vO9X;JmXBB&x4usm0en84F>OLtN9scm0l8%VL2M@^)kP+3Ge6^x1Ufzl z^vH+(;VdgI6ufMQiQAFxTB<@I;7Hm&NLbv0Gm@EiwK8ltOFnCeo^u1AGpE&9&p!!z z_}C^pAaaARSnCcFku&5U_Ls;U=|_;_?GB@gP0{lM!>#}tk8pn9;)w}K>w^-DnJR9j z7GPb}1w>r0m+hL}3r{QW?Y#!Uk4By_{~mNbRh;E;mznsUjHJ>!Zxnejq(|$mVi(*{DjZ#kT4LNx0lblNsZZ3HqVm(KZ=??pg=4T2B6I+xf{=e1ytmB$gmKIp_2SOh(6$*ZZW9ALa0LCI~`Rr$BCMj8;fxEe3ODq=7X| ze*td)G^VpqcGCquB5|L{Tq&w_GCRPXdmLw256H=Z(uGGpR?p2e)YxgT4Z~EpQi6fh z&`Cbzn0Je$;5w^@ankXziStE@6R}==p4f)wl-R{yk8scJ8x)}1jR7SOZw^-sTc6Y+ z-RY@trqZpKsMBRqjusO==>&zyz*QbN44aza$TNnmVr~ZVw;;k|ah(Y%RrT~_T?}LS zYznJK+hw;l@YwUnOgaw`<`un@b!n<$-O{ovTpdBwFLn(w#4ku@=g=a^IAnLcWO5P% zVl3vel9})Ub+gH97E4012l^bK4r9d5YHLRBhW!@g6)4C&o~|u(0(ruE_FR(W&aABP z@#Qvz)^LBi=Uif*AllZD4|ET**H3y=r>7y2iM{J(Zc@D0NEmx1`>L*-c8>tqzGDXT zI7Bl80NQ2SIvo_?fhaf4hIY+aoI zeVzoel6Hio4IdU3g-AS}I0L_pR|8jm^7$|}(bHYIAD>D{h06dR3hsP5Y39Z%%xeJ224n26n zT{q|OW>!N=bx7!{LAF-M@hPmAq+fwoSZk;^TW5x+Sh7H-OJ>>+1mmsCo8WXmh#4t> zq-lnk5V`=^lGXm05BScSSfg>B4&g}p-iYY7aXZv!pZ;ccJ_P^rhc65~p6dZ^^&((4 zF~+j{(11J3I}niHsQIa1j^Rc1l!c?2++i{VbH0p}jOHK}CYR_d15c)i_v5O!5Os#+qrgf5pyJR;c~7~4 zv#X~r761|gMnA7mqb`Yydtf6jAff0krWRWRf=xu9oY;66ryBu$pOUzuj~}`I>~bWB z1WMWl4~hlCD+i#2Jcm06%FR~XMFzNicH%}V(-T7obucU4O}&eHF9xX$j`4kBw)#D^ zJ8Aep1S}NYufcgar;iJ+ZjLlJPRje^{kSv1sMkc~W}P=1um);4;3rDv>#FkljGX&I zxuzRC4Af?;N}agpH-|t4yDrqrm;TWq_PGLJWs5==aLX8*0OvT=7|e|ZwPp~-LW!$& zi+mQ+(5a!Zpr*7ir1FyTAeTNhAN4gZDAgMCd7anbemD&xNb0#W6}`2s(EB@vw#SB7 z5a`U>3u{l}xG~SQw5y-}vNwmHQ2V>n^>uRm-LiHSq)UzU`d~$Z7_X!*AS6bf)GHn} zvftxLsCY`DiOpU07xVl9)8sK@5~~7fI+HbMhrR`TRX61Y8CNLUUB|jy>K?p3Jba>`G(VL-Nyd#&$%icfm^WL>mX(Iz*u+^}?S^g@Xwg%p|<;?;&ht9Vr9_D>cj29h~8M@W5Ti1fFHs}@szv+~4bjQR? z0g}z+Q&^miUWunDCyVm%%TrzXF36zPw8G4b;dUnH@D{$b5?$lS^Rvs-NCU7#Gu#p; zlDhS@7HqO-wojM0^uSVSt8WEa3cJ%nj4~@<0A^S>E`J>GBzIO75%~(`YZcMz55W?C z=($ORirp=1;xnsAWh>ukMNkSi*MlyPaU{Mk;rj{+e#;PjSA6&0<-hbl{;Okef`8|i z|6SklCipF?`MW;xw;qP!==aj*Po46oJD{z;+63NJ)vp5SKh#_QcXtrXi)v&s*W^{At!bbYVyf0WJ5RUnZ&Z%IdHUB1 z9LKm%bBX(pcP|Q&6a`%{*uRizntpmwXp)HkB}P#?CJ7QlF;G4J(`WzfGm_oXJ7_6c z0JV23%)f#G(BSfWM+CTr0Ey!`d6CEe6Y}2?dvEF=XZG7<|I@D|V=|7h6ntfd{ME1g zTDjke{kM0OWa)1^I^3uB-ENenaQ?aTU%C2R@eA@Rj{X85-p>#5D@Bqx`D^jZ|M)h9Qop|c z`D_3C*x~0f;2Hk>+}9ZT9X;#-I?P``-_gUEpT{T~+=%qUa|Z@oG4aC~gMf=DejIyU z|MbT(65L(!^B4o}llsGRD2AYaVGRF~mji?1;N1j&_$(Nse)ueklho_ptM8u!V+Ru4 z?eyc=k86tJ6!PQTUSo$JcmZQSt?6s*$GM^Sf%$PwLEAUzhW#TiFTTL-Vz2*vzi;5z zKaQaUb)bJ(129G-KaCyG!*^q#?G;?nHT?oEVzaAf4#W=z5FEHa>wSC3`(iOLLvWFZ z#Qm>-BWXNOQ#60|#=lzQU!C!QliwQS{{uXc<4l2LfAxv~4Xz*qQO>ly#T}(^1PJ^; K{S$ATfB8RpYXpJ- literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj b/extern/SDL3-3.1.0/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj new file mode 100644 index 0000000..2069c22 --- /dev/null +++ b/extern/SDL3-3.1.0/Xcode/SDLTest/SDLTest.xcodeproj/project.pbxproj @@ -0,0 +1,5065 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXAggregateTarget section */ + BEC566920761D90300A33029 /* All */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 001B599808BDB826006539E9 /* Build configuration list for PBXAggregateTarget "All" */; + buildPhases = ( + ); + dependencies = ( + F3E1F8032A78C3C500AC76D3 /* PBXTargetDependency */, + F3E1F8012A78C3BE00AC76D3 /* PBXTargetDependency */, + F3E1F7FF2A78C3AD00AC76D3 /* PBXTargetDependency */, + F35E56E72983133F00A43A5F /* PBXTargetDependency */, + DB0F490517CA5249008798C5 /* PBXTargetDependency */, + DB0F490717CA5249008798C5 /* PBXTargetDependency */, + DB166E9816A1D7CF00A1396C /* PBXTargetDependency */, + DB166E9616A1D7CD00A1396C /* PBXTargetDependency */, + DB166E6C16A1D72000A1396C /* PBXTargetDependency */, + DB166E5616A1D6B800A1396C /* PBXTargetDependency */, + DB166E3B16A1D65A00A1396C /* PBXTargetDependency */, + DB166E2016A1D5D000A1396C /* PBXTargetDependency */, + DB166E0916A1D5A400A1396C /* PBXTargetDependency */, + DB166DF216A1D53700A1396C /* PBXTargetDependency */, + DB166DD916A1D38900A1396C /* PBXTargetDependency */, + 001799481074403E00F5D044 /* PBXTargetDependency */, + 0017994C1074403E00F5D044 /* PBXTargetDependency */, + 001799501074403E00F5D044 /* PBXTargetDependency */, + 001799521074403E00F5D044 /* PBXTargetDependency */, + 0017995A1074403E00F5D044 /* PBXTargetDependency */, + 0017995E1074403E00F5D044 /* PBXTargetDependency */, + 001799601074403E00F5D044 /* PBXTargetDependency */, + 001799661074403E00F5D044 /* PBXTargetDependency */, + 001799681074403E00F5D044 /* PBXTargetDependency */, + 0017996A1074403E00F5D044 /* PBXTargetDependency */, + 0017996C1074403E00F5D044 /* PBXTargetDependency */, + 0017996E1074403E00F5D044 /* PBXTargetDependency */, + 001799701074403E00F5D044 /* PBXTargetDependency */, + 001799741074403E00F5D044 /* PBXTargetDependency */, + 001799761074403E00F5D044 /* PBXTargetDependency */, + 001799781074403E00F5D044 /* PBXTargetDependency */, + 0017997C1074403E00F5D044 /* PBXTargetDependency */, + 001799801074403E00F5D044 /* PBXTargetDependency */, + 001799841074403E00F5D044 /* PBXTargetDependency */, + 001799881074403E00F5D044 /* PBXTargetDependency */, + 0017998A1074403E00F5D044 /* PBXTargetDependency */, + 0017998C1074403E00F5D044 /* PBXTargetDependency */, + 0017998E1074403E00F5D044 /* PBXTargetDependency */, + 001799921074403E00F5D044 /* PBXTargetDependency */, + 001799941074403E00F5D044 /* PBXTargetDependency */, + 001799961074403E00F5D044 /* PBXTargetDependency */, + 0017999E1074403E00F5D044 /* PBXTargetDependency */, + 001799A21074403E00F5D044 /* PBXTargetDependency */, + DB166D7016A1CEAF00A1396C /* PBXTargetDependency */, + DB166D6E16A1CEAA00A1396C /* PBXTargetDependency */, + ); + name = All; + productName = "Build All"; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 001795901074216E00F5D044 /* testatomic.c in Sources */ = {isa = PBXBuildFile; fileRef = 0017958F1074216E00F5D044 /* testatomic.c */; }; + 001795B11074222D00F5D044 /* testaudioinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 001795B01074222D00F5D044 /* testaudioinfo.c */; }; + 0017972810742FB900F5D044 /* testgl.c in Sources */ = {isa = PBXBuildFile; fileRef = 0017972710742FB900F5D044 /* testgl.c */; }; + 0017974F1074315700F5D044 /* testhaptic.c in Sources */ = {isa = PBXBuildFile; fileRef = 0017974E1074315700F5D044 /* testhaptic.c */; }; + 001797721074320D00F5D044 /* testdraw.c in Sources */ = {isa = PBXBuildFile; fileRef = 001797711074320D00F5D044 /* testdraw.c */; }; + 00179792107432FA00F5D044 /* testime.c in Sources */ = {isa = PBXBuildFile; fileRef = 00179791107432FA00F5D044 /* testime.c */; }; + 001797B41074339C00F5D044 /* testintersections.c in Sources */ = {isa = PBXBuildFile; fileRef = 001797B31074339C00F5D044 /* testintersections.c */; }; + 001797D41074343E00F5D044 /* testloadso.c in Sources */ = {isa = PBXBuildFile; fileRef = 001797D31074343E00F5D044 /* testloadso.c */; }; + 001798161074359B00F5D044 /* testmultiaudio.c in Sources */ = {isa = PBXBuildFile; fileRef = 001798151074359B00F5D044 /* testmultiaudio.c */; }; + 0017987F1074392D00F5D044 /* testnative.c in Sources */ = {isa = PBXBuildFile; fileRef = 0017985A107436ED00F5D044 /* testnative.c */; }; + 001798801074392D00F5D044 /* testnativecocoa.m in Sources */ = {isa = PBXBuildFile; fileRef = 0017985C107436ED00F5D044 /* testnativecocoa.m */; }; + 001798BA10743A4900F5D044 /* testpower.c in Sources */ = {isa = PBXBuildFile; fileRef = 001798B910743A4900F5D044 /* testpower.c */; }; + 001798FA10743E9200F5D044 /* testresample.c in Sources */ = {isa = PBXBuildFile; fileRef = 001798F910743E9200F5D044 /* testresample.c */; }; + 0017991A10743F5300F5D044 /* testsprite.c in Sources */ = {isa = PBXBuildFile; fileRef = 0017991910743F5300F5D044 /* testsprite.c */; }; + 0017993C10743FEF00F5D044 /* testwm.c in Sources */ = {isa = PBXBuildFile; fileRef = 0017993B10743FEF00F5D044 /* testwm.c */; }; + 002F341809CA1C5B00EBEB88 /* testfile.c in Sources */ = {isa = PBXBuildFile; fileRef = 002F341709CA1C5B00EBEB88 /* testfile.c */; }; + 002F343709CA1F6F00EBEB88 /* testiconv.c in Sources */ = {isa = PBXBuildFile; fileRef = 002F343609CA1F6F00EBEB88 /* testiconv.c */; }; + 002F345409CA202000EBEB88 /* testoverlay.c in Sources */ = {isa = PBXBuildFile; fileRef = 002F345209CA201C00EBEB88 /* testoverlay.c */; }; + 002F347009CA20A600EBEB88 /* testplatform.c in Sources */ = {isa = PBXBuildFile; fileRef = 002F346F09CA20A600EBEB88 /* testplatform.c */; }; + 00794E6609D20865003FC8A1 /* sample.wav in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00794E6209D20839003FC8A1 /* sample.wav */; }; + 00794EF009D23739003FC8A1 /* utf8.txt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00794E6309D20839003FC8A1 /* utf8.txt */; }; + 00794EF709D237DE003FC8A1 /* moose.dat in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00794E5E09D20839003FC8A1 /* moose.dat */; }; + 453774A5120915E3002F0F45 /* testshape.c in Sources */ = {isa = PBXBuildFile; fileRef = 453774A4120915E3002F0F45 /* testshape.c */; }; + 66E88E8B203B778F0004D44E /* testyuv_cvt.c in Sources */ = {isa = PBXBuildFile; fileRef = 66E88E8A203B778F0004D44E /* testyuv_cvt.c */; }; + AAF02FFA1F90092700B9A9FB /* SDL_test_memory.c in Sources */ = {isa = PBXBuildFile; fileRef = AAF02FF41F90089800B9A9FB /* SDL_test_memory.c */; }; + BBFC08D0164C6876003E6A99 /* testcontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = BBFC088E164C6820003E6A99 /* testcontroller.c */; }; + BEC566B10761D90300A33029 /* checkkeys.c in Sources */ = {isa = PBXBuildFile; fileRef = 092D6D10FFB30A2C7F000001 /* checkkeys.c */; }; + BEC566CB0761D90300A33029 /* loopwave.c in Sources */ = {isa = PBXBuildFile; fileRef = 083E4872006D84C97F000001 /* loopwave.c */; }; + BEC567010761D90300A33029 /* testerror.c in Sources */ = {isa = PBXBuildFile; fileRef = 083E4878006D85357F000001 /* testerror.c */; }; + BEC567290761D90400A33029 /* testthread.c in Sources */ = {isa = PBXBuildFile; fileRef = 092D6D58FFB311A97F000001 /* testthread.c */; }; + BEC567430761D90400A33029 /* testkeys.c in Sources */ = {isa = PBXBuildFile; fileRef = 092D6D6CFFB313437F000001 /* testkeys.c */; }; + BEC567500761D90400A33029 /* testlock.c in Sources */ = {isa = PBXBuildFile; fileRef = 092D6D75FFB313BB7F000001 /* testlock.c */; }; + BEC567780761D90500A33029 /* testsem.c in Sources */ = {isa = PBXBuildFile; fileRef = 083E487E006D86A17F000001 /* testsem.c */; }; + BEC567930761D90500A33029 /* testtimer.c in Sources */ = {isa = PBXBuildFile; fileRef = 083E4880006D86A17F000001 /* testtimer.c */; }; + BEC567AD0761D90500A33029 /* testver.c in Sources */ = {isa = PBXBuildFile; fileRef = 083E4882006D86A17F000001 /* testver.c */; }; + BEC567F00761D90600A33029 /* torturethread.c in Sources */ = {isa = PBXBuildFile; fileRef = 083E4887006D86A17F000001 /* torturethread.c */; }; + DB0F48EE17CA51F8008798C5 /* testdrawchessboard.c in Sources */ = {isa = PBXBuildFile; fileRef = DB0F48D717CA51D2008798C5 /* testdrawchessboard.c */; }; + DB0F490317CA5225008798C5 /* testfilesystem.c in Sources */ = {isa = PBXBuildFile; fileRef = DB0F48D817CA51D2008798C5 /* testfilesystem.c */; }; + DB166D9316A1D1A500A1396C /* SDL_test_assert.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166D8416A1D1A500A1396C /* SDL_test_assert.c */; }; + DB166D9416A1D1A500A1396C /* SDL_test_common.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166D8516A1D1A500A1396C /* SDL_test_common.c */; }; + DB166D9516A1D1A500A1396C /* SDL_test_compare.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166D8616A1D1A500A1396C /* SDL_test_compare.c */; }; + DB166D9616A1D1A500A1396C /* SDL_test_crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166D8716A1D1A500A1396C /* SDL_test_crc32.c */; }; + DB166D9716A1D1A500A1396C /* SDL_test_font.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166D8816A1D1A500A1396C /* SDL_test_font.c */; }; + DB166D9816A1D1A500A1396C /* SDL_test_fuzzer.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166D8916A1D1A500A1396C /* SDL_test_fuzzer.c */; }; + DB166D9916A1D1A500A1396C /* SDL_test_harness.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166D8A16A1D1A500A1396C /* SDL_test_harness.c */; }; + DB166D9F16A1D1A500A1396C /* SDL_test_log.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166D9016A1D1A500A1396C /* SDL_test_log.c */; }; + DB166DA016A1D1A500A1396C /* SDL_test_md5.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166D9116A1D1A500A1396C /* SDL_test_md5.c */; }; + DB166DA116A1D1A500A1396C /* SDL_test_random.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166D9216A1D1A500A1396C /* SDL_test_random.c */; }; + DB166DD716A1D37800A1396C /* testmessage.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166CBD16A1C74100A1396C /* testmessage.c */; }; + DB166DDB16A1D42F00A1396C /* icon.bmp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00794E5D09D20839003FC8A1 /* icon.bmp */; }; + DB166DF016A1D52500A1396C /* testrelative.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166CBF16A1C74100A1396C /* testrelative.c */; }; + DB166E0716A1D59400A1396C /* testrendercopyex.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166CC016A1C74100A1396C /* testrendercopyex.c */; }; + DB166E1E16A1D5C300A1396C /* testrendertarget.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166CC116A1C74100A1396C /* testrendertarget.c */; }; + DB166E2216A1D5EC00A1396C /* sample.bmp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00794E6109D20839003FC8A1 /* sample.bmp */; }; + DB166E2316A1D60B00A1396C /* icon.bmp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00794E5D09D20839003FC8A1 /* icon.bmp */; }; + DB166E2516A1D61900A1396C /* icon.bmp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00794E5D09D20839003FC8A1 /* icon.bmp */; }; + DB166E2616A1D61900A1396C /* sample.bmp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00794E6109D20839003FC8A1 /* sample.bmp */; }; + DB166E3C16A1D66500A1396C /* testrumble.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166CC216A1C74100A1396C /* testrumble.c */; }; + DB166E4D16A1D69000A1396C /* icon.bmp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00794E5D09D20839003FC8A1 /* icon.bmp */; }; + DB166E4E16A1D69000A1396C /* sample.bmp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00794E6109D20839003FC8A1 /* sample.bmp */; }; + DB166E5416A1D6A300A1396C /* testscale.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166CC316A1C74100A1396C /* testscale.c */; }; + DB166E6A16A1D70C00A1396C /* testshader.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166CC416A1C74100A1396C /* testshader.c */; }; + DB166E9316A1D7BC00A1396C /* testspriteminimal.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166CC516A1C74100A1396C /* testspriteminimal.c */; }; + DB166E9416A1D7C700A1396C /* teststreaming.c in Sources */ = {isa = PBXBuildFile; fileRef = DB166CC616A1C74100A1396C /* teststreaming.c */; }; + DB166E9A16A1D7F700A1396C /* moose.dat in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00794E5E09D20839003FC8A1 /* moose.dat */; }; + DB166E9C16A1D80900A1396C /* icon.bmp in CopyFiles */ = {isa = PBXBuildFile; fileRef = 00794E5D09D20839003FC8A1 /* icon.bmp */; }; + DB166ED016A1D88100A1396C /* shapes in CopyFiles */ = {isa = PBXBuildFile; fileRef = DB166ECF16A1D87000A1396C /* shapes */; }; + DB445EFB18184BB600B306B0 /* testdropfile.c in Sources */ = {isa = PBXBuildFile; fileRef = DB445EFA18184BB600B306B0 /* testdropfile.c */; }; + DB89958418A19B130092407C /* testhotplug.c in Sources */ = {isa = PBXBuildFile; fileRef = DB89958318A19B130092407C /* testhotplug.c */; }; + F35E56CF2983130F00A43A5F /* testautomation_main.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56B62983130A00A43A5F /* testautomation_main.c */; }; + F35E56D02983130F00A43A5F /* testautomation_hints.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56B72983130A00A43A5F /* testautomation_hints.c */; }; + F35E56D12983130F00A43A5F /* testautomation_render.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56B82983130A00A43A5F /* testautomation_render.c */; }; + F35E56D22983130F00A43A5F /* testautomation_iostream.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56B92983130B00A43A5F /* testautomation_iostream.c */; }; + F35E56D32983130F00A43A5F /* testautomation_math.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56BA2983130B00A43A5F /* testautomation_math.c */; }; + F35E56D42983130F00A43A5F /* testautomation_events.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56BB2983130B00A43A5F /* testautomation_events.c */; }; + F35E56D52983130F00A43A5F /* testautomation_clipboard.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56BC2983130B00A43A5F /* testautomation_clipboard.c */; }; + F35E56D62983130F00A43A5F /* testautomation_timer.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56BD2983130B00A43A5F /* testautomation_timer.c */; }; + F35E56D72983130F00A43A5F /* testautomation_stdlib.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56BE2983130C00A43A5F /* testautomation_stdlib.c */; }; + F35E56D82983130F00A43A5F /* testautomation_images.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56BF2983130C00A43A5F /* testautomation_images.c */; }; + F35E56D92983130F00A43A5F /* testautomation_pixels.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56C02983130C00A43A5F /* testautomation_pixels.c */; }; + F35E56DA2983130F00A43A5F /* testautomation_video.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56C12983130C00A43A5F /* testautomation_video.c */; }; + F35E56DB2983130F00A43A5F /* testautomation_platform.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56C32983130D00A43A5F /* testautomation_platform.c */; }; + F35E56DC2983130F00A43A5F /* testautomation_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56C42983130D00A43A5F /* testautomation_audio.c */; }; + F35E56DD2983130F00A43A5F /* testautomation_rect.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56C52983130D00A43A5F /* testautomation_rect.c */; }; + F35E56DE2983130F00A43A5F /* testautomation_joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56C62983130D00A43A5F /* testautomation_joystick.c */; }; + F35E56DF2983130F00A43A5F /* testautomation_keyboard.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56C72983130E00A43A5F /* testautomation_keyboard.c */; }; + F35E56E02983130F00A43A5F /* testautomation_sdltest.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56C82983130E00A43A5F /* testautomation_sdltest.c */; }; + F35E56E12983130F00A43A5F /* testautomation_guid.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56C92983130E00A43A5F /* testautomation_guid.c */; }; + F35E56E32983130F00A43A5F /* testautomation_surface.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56CB2983130F00A43A5F /* testautomation_surface.c */; }; + F35E56E42983130F00A43A5F /* testautomation.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56CC2983130F00A43A5F /* testautomation.c */; }; + F35E56E52983130F00A43A5F /* testautomation_mouse.c in Sources */ = {isa = PBXBuildFile; fileRef = F35E56CD2983130F00A43A5F /* testautomation_mouse.c */; }; + F399C64E2A78929400C86979 /* gamepadutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F399C6492A78929400C86979 /* gamepadutils.c */; }; + F399C64F2A78929400C86979 /* gamepadutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F399C6492A78929400C86979 /* gamepadutils.c */; }; + F399C6512A7892D800C86979 /* testautomation_intrinsics.c in Sources */ = {isa = PBXBuildFile; fileRef = F399C6502A7892D800C86979 /* testautomation_intrinsics.c */; }; + F399C6522A7892D800C86979 /* testautomation_intrinsics.c in Sources */ = {isa = PBXBuildFile; fileRef = F399C6502A7892D800C86979 /* testautomation_intrinsics.c */; }; + F399C6552A78933100C86979 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F399C6542A78933000C86979 /* Cocoa.framework */; }; + F3C17C7728E40BC800E1A26D /* testutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17C7328E40ADE00E1A26D /* testutils.c */; }; + F3C17C7928E40C6E00E1A26D /* testutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17C7328E40ADE00E1A26D /* testutils.c */; }; + F3C17C7B28E40D4E00E1A26D /* testutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17C7328E40ADE00E1A26D /* testutils.c */; }; + F3C17C7C28E40D7400E1A26D /* testutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17C7328E40ADE00E1A26D /* testutils.c */; }; + F3C17C7D28E40F9D00E1A26D /* testutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17C7328E40ADE00E1A26D /* testutils.c */; }; + F3C17C7E28E40FDD00E1A26D /* testutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17C7328E40ADE00E1A26D /* testutils.c */; }; + F3C17C7F28E4101000E1A26D /* testutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17C7328E40ADE00E1A26D /* testutils.c */; }; + F3C17C8028E410A400E1A26D /* testutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17C7328E40ADE00E1A26D /* testutils.c */; }; + F3C17C8128E410C900E1A26D /* testutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17C7328E40ADE00E1A26D /* testutils.c */; }; + F3C17C8228E4112900E1A26D /* testutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17C7328E40ADE00E1A26D /* testutils.c */; }; + F3C17C8328E4124400E1A26D /* testutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17C7328E40ADE00E1A26D /* testutils.c */; }; + F3C17C8428E4126400E1A26D /* testutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17C7328E40ADE00E1A26D /* testutils.c */; }; + F3C17C8528E4127D00E1A26D /* testutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17C7328E40ADE00E1A26D /* testutils.c */; }; + F3C17CEB28E4177600E1A26D /* testgeometry.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17CD628E416AC00E1A26D /* testgeometry.c */; }; + F3C17CEC28E417EB00E1A26D /* testutils.c in Sources */ = {isa = PBXBuildFile; fileRef = F3C17C7328E40ADE00E1A26D /* testutils.c */; }; + F3C17D3928E424B800E1A26D /* sample.wav in Resources */ = {isa = PBXBuildFile; fileRef = 00794E6209D20839003FC8A1 /* sample.wav */; }; + F3C17D3B28E4252900E1A26D /* icon.bmp in Resources */ = {isa = PBXBuildFile; fileRef = 00794E5D09D20839003FC8A1 /* icon.bmp */; }; + F3CB56892A7895F800766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB568A2A7895F800766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB568C2A7896BF00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB568D2A7896BF00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56902A7896F900766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56912A7896F900766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56932A78971600766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56942A78971600766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56962A78971F00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56972A78971F00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56992A78972700766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB569A2A78972700766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB569C2A78972F00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB569D2A78972F00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB569F2A78973700766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56A02A78973700766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56A22A78974000766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56A32A78974000766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56A52A78974800766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56A62A78974800766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56A82A78975100766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56A92A78975100766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56AB2A78975A00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56AC2A78975A00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56AE2A78976200766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56AF2A78976200766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56B12A78976800766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56B22A78976800766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56B42A78977000766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56B52A78977000766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56B72A78977D00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56B82A78977D00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56BA2A78978700766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56BB2A78978700766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56BD2A78979000766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56BE2A78979000766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56C02A78979600766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56C12A78979600766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56C32A78979C00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56C42A78979C00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56C62A7897A500766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56C72A7897A500766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56C92A7897AE00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56CA2A7897AE00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56CC2A7897B500766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56CD2A7897B500766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56CF2A7897BE00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56D02A7897BE00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56D22A7897C600766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56D32A7897C600766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56D52A7897CD00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56D62A7897CD00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56D92A7897E200766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56DA2A7897E200766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56DC2A7897E900766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56DD2A7897E900766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56DF2A7897F000766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56E02A7897F000766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56E22A7897F800766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56E32A7897F800766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56E52A7897FE00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56E62A7897FE00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56E82A78980600766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56E92A78980600766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56EB2A78980D00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56EC2A78980D00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56EE2A78981500766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56EF2A78981500766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56F12A78981C00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56F22A78981C00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56F42A78982300766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56F52A78982300766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56F72A78982B00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56F82A78982B00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56FA2A78983200766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56FB2A78983200766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB56FD2A78983C00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB56FE2A78983C00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB57002A78984300766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB57012A78984300766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB57032A78984A00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB57042A78984A00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB57062A78985400766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB57072A78985400766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB57092A78985A00766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB570A2A78985A00766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB570C2A78986000766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB570D2A78986000766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + F3CB570F2A78986700766177 /* SDL3.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; }; + F3CB57102A78986700766177 /* SDL3.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 003FA643093FFD41000C53B3 /* SDL3.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 001799471074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BEC566AB0761D90300A33029; + remoteInfo = checkkeys; + }; + 0017994B1074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BEC566C50761D90300A33029; + remoteInfo = loopwave; + }; + 0017994F1074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0017957410741F7900F5D044; + remoteInfo = testatomic; + }; + 001799511074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 00179595107421BF00F5D044; + remoteInfo = testaudioinfo; + }; + 001799591074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 00179756107431B300F5D044; + remoteInfo = testdraw; + }; + 0017995D1074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BEC566FB0761D90300A33029; + remoteInfo = testerror; + }; + 0017995F1074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 002F340109CA1BFF00EBEB88; + remoteInfo = testfile; + }; + 001799651074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0017970910742F3200F5D044; + remoteInfo = testgl; + }; + 001799671074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 00179730107430D600F5D044; + remoteInfo = testhaptic; + }; + 001799691074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BEC567230761D90400A33029; + remoteInfo = testthread; + }; + 0017996B1074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 002F342009CA1F0300EBEB88; + remoteInfo = testiconv; + }; + 0017996D1074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 00179776107432AE00F5D044; + remoteInfo = testime; + }; + 0017996F1074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 001797961074334C00F5D044; + remoteInfo = testintersections; + }; + 001799731074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BEC5673D0761D90400A33029; + remoteInfo = testkeys; + }; + 001799751074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 001797B8107433C600F5D044; + remoteInfo = testloadso; + }; + 001799771074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BEC5674A0761D90400A33029; + remoteInfo = testlock; + }; + 0017997B1074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 001797FA1074355200F5D044; + remoteInfo = testmultiaudio; + }; + 0017997F1074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 001798781074392D00F5D044; + remoteInfo = testnativex11; + }; + 001799831074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 002F343C09CA1FB300EBEB88; + remoteInfo = testoverlay; + }; + 001799871074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 002F345909CA204F00EBEB88; + remoteInfo = testplatform; + }; + 001799891074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0017989D107439DF00F5D044; + remoteInfo = testpower; + }; + 0017998B1074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 001798DA10743BEC00F5D044; + remoteInfo = testresample; + }; + 0017998D1074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BEC567720761D90500A33029; + remoteInfo = testsem; + }; + 001799911074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 001798FE10743F1000F5D044; + remoteInfo = testsprite; + }; + 001799931074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BEC5678D0761D90500A33029; + remoteInfo = testtimer; + }; + 001799951074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BEC567A70761D90500A33029; + remoteInfo = testversion; + }; + 0017999D1074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0017992010743FB700F5D044; + remoteInfo = testwm; + }; + 001799A11074403E00F5D044 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BEC567EA0761D90600A33029; + remoteInfo = torturethread; + }; + 003FA642093FFD41000C53B3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 003FA63A093FFD41000C53B3 /* SDL.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = BECDF66C0761BA81005FE872; + remoteInfo = Framework; + }; + DB0F490417CA5249008798C5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DB0F48D917CA51E5008798C5; + remoteInfo = testdrawchessboard; + }; + DB0F490617CA5249008798C5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DB0F48EF17CA5212008798C5; + remoteInfo = testfilesystem; + }; + DB166D6D16A1CEAA00A1396C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BBFC08B7164C6862003E6A99; + remoteInfo = testcontroller; + }; + DB166D6F16A1CEAF00A1396C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4537749112091504002F0F45; + remoteInfo = testshape; + }; + DB166DD816A1D38900A1396C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DB166DC416A1D36A00A1396C; + remoteInfo = testmessage; + }; + DB166DF116A1D53700A1396C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DB166DDC16A1D50C00A1396C; + remoteInfo = testrelative; + }; + DB166E0816A1D5A400A1396C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DB166DF316A1D57C00A1396C; + remoteInfo = testrendercopyex; + }; + DB166E1F16A1D5D000A1396C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DB166E0A16A1D5AD00A1396C; + remoteInfo = testrendertarget; + }; + DB166E3A16A1D65A00A1396C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DB166E2716A1D64D00A1396C; + remoteInfo = testrumble; + }; + DB166E5516A1D6B800A1396C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DB166E3D16A1D69000A1396C; + remoteInfo = testscale; + }; + DB166E6B16A1D72000A1396C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DB166E5716A1D6F300A1396C; + remoteInfo = testshader; + }; + DB166E9516A1D7CD00A1396C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DB166E6D16A1D78400A1396C; + remoteInfo = testspriteminimal; + }; + DB166E9716A1D7CF00A1396C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DB166E8016A1D78C00A1396C; + remoteInfo = teststreaming; + }; + F35E56E62983133F00A43A5F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F35E56A2298312CB00A43A5F; + remoteInfo = testautomation; + }; + F3E1F7FE2A78C3AD00AC76D3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DB89956D18A19ABA0092407C; + remoteInfo = testhotplug; + }; + F3E1F8002A78C3BE00AC76D3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = DB445EE618184B7000B306B0; + remoteInfo = testdropfile; + }; + F3E1F8022A78C3C500AC76D3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F3C17CDB28E416CF00E1A26D; + remoteInfo = testgeometry; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 00794E6409D2084F003FC8A1 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + 00794E6609D20865003FC8A1 /* sample.wav in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 00794EEC09D2371F003FC8A1 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + 00794EF009D23739003FC8A1 /* utf8.txt in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 00794EF409D237C7003FC8A1 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + 00794EF709D237DE003FC8A1 /* moose.dat in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166DDA16A1D40F00A1396C /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + DB166DDB16A1D42F00A1396C /* icon.bmp in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E2116A1D5DF00A1396C /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + DB166E2316A1D60B00A1396C /* icon.bmp in CopyFiles */, + DB166E2216A1D5EC00A1396C /* sample.bmp in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E2416A1D61000A1396C /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + DB166E2516A1D61900A1396C /* icon.bmp in CopyFiles */, + DB166E2616A1D61900A1396C /* sample.bmp in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E4C16A1D69000A1396C /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + DB166E4D16A1D69000A1396C /* icon.bmp in CopyFiles */, + DB166E4E16A1D69000A1396C /* sample.bmp in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E9916A1D7EE00A1396C /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + DB166E9A16A1D7F700A1396C /* moose.dat in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E9B16A1D7FC00A1396C /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + DB166E9C16A1D80900A1396C /* icon.bmp in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166ECE16A1D85400A1396C /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + DB166ED016A1D88100A1396C /* shapes in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB568B2A7895F800766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB568A2A7895F800766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB568E2A7896BF00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB568D2A7896BF00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56922A7896F900766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56912A7896F900766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56952A78971600766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56942A78971600766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56982A78971F00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56972A78971F00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB569B2A78972700766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB569A2A78972700766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB569E2A78973000766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB569D2A78972F00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56A12A78973700766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56A02A78973700766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56A42A78974000766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56A32A78974000766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56A72A78974800766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56A62A78974800766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56AA2A78975100766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56A92A78975100766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56AD2A78975A00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56AC2A78975A00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56B02A78976200766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56AF2A78976200766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56B32A78976900766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56B22A78976800766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56B62A78977000766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56B52A78977000766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56B92A78977D00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56B82A78977D00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56BC2A78978800766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56BB2A78978700766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56BF2A78979000766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56BE2A78979000766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56C22A78979600766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56C12A78979600766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56C52A78979C00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56C42A78979C00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56C82A7897A500766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56C72A7897A500766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56CB2A7897AE00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56CA2A7897AE00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56CE2A7897B500766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56CD2A7897B500766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56D12A7897BE00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56D02A7897BE00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56D42A7897C600766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56D32A7897C600766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56D72A7897CE00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56D62A7897CD00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56DB2A7897E200766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56DA2A7897E200766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56DE2A7897E900766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56DD2A7897E900766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56E12A7897F000766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56E02A7897F000766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56E42A7897F800766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56E32A7897F800766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56E72A7897FE00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56E62A7897FE00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56EA2A78980600766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56E92A78980600766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56ED2A78980D00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56EC2A78980D00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56F02A78981500766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56EF2A78981500766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56F32A78981C00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56F22A78981C00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56F62A78982400766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56F52A78982300766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56F92A78982B00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56F82A78982B00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56FC2A78983200766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56FB2A78983200766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB56FF2A78983C00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB56FE2A78983C00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB57022A78984300766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB57012A78984300766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB57052A78984A00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB57042A78984A00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB57082A78985400766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB57072A78985400766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB570B2A78985A00766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB570A2A78985A00766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB570E2A78986000766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB570D2A78986000766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + F3CB57112A78986700766177 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + F3CB57102A78986700766177 /* SDL3.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 0017958C10741F7900F5D044 /* testatomic.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testatomic.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 0017958F1074216E00F5D044 /* testatomic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testatomic.c; sourceTree = ""; }; + 001795AD107421BF00F5D044 /* testaudioinfo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testaudioinfo.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 001795B01074222D00F5D044 /* testaudioinfo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testaudioinfo.c; sourceTree = ""; }; + 0017972110742F3200F5D044 /* testgl.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testgl.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 0017972710742FB900F5D044 /* testgl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testgl.c; sourceTree = ""; }; + 00179748107430D600F5D044 /* testhaptic.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testhaptic.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 0017974E1074315700F5D044 /* testhaptic.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testhaptic.c; sourceTree = ""; }; + 0017976E107431B300F5D044 /* testdraw.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testdraw.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 001797711074320D00F5D044 /* testdraw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testdraw.c; sourceTree = ""; }; + 0017978E107432AE00F5D044 /* testime.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testime.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 00179791107432FA00F5D044 /* testime.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testime.c; sourceTree = ""; }; + 001797AE1074334C00F5D044 /* testintersections.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testintersections.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 001797B31074339C00F5D044 /* testintersections.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testintersections.c; sourceTree = ""; }; + 001797D0107433C600F5D044 /* testloadso.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testloadso.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 001797D31074343E00F5D044 /* testloadso.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testloadso.c; sourceTree = ""; }; + 001798121074355200F5D044 /* testmultiaudio.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testmultiaudio.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 001798151074359B00F5D044 /* testmultiaudio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testmultiaudio.c; sourceTree = ""; }; + 0017985A107436ED00F5D044 /* testnative.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testnative.c; sourceTree = ""; }; + 0017985B107436ED00F5D044 /* testnative.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = testnative.h; sourceTree = ""; }; + 0017985C107436ED00F5D044 /* testnativecocoa.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = testnativecocoa.m; sourceTree = ""; }; + 00179872107438D000F5D044 /* testnativex11.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testnativex11.c; sourceTree = ""; }; + 001798941074392D00F5D044 /* testnative.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testnative.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 001798B5107439DF00F5D044 /* testpower.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testpower.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 001798B910743A4900F5D044 /* testpower.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testpower.c; sourceTree = ""; }; + 001798F210743BEC00F5D044 /* testresample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testresample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 001798F910743E9200F5D044 /* testresample.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testresample.c; sourceTree = ""; }; + 0017991610743F1000F5D044 /* testsprite.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testsprite.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 0017991910743F5300F5D044 /* testsprite.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testsprite.c; sourceTree = ""; }; + 0017993810743FB700F5D044 /* testwm.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testwm.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 0017993B10743FEF00F5D044 /* testwm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testwm.c; sourceTree = ""; }; + 002F341209CA1BFF00EBEB88 /* testfile.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testfile.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 002F341709CA1C5B00EBEB88 /* testfile.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = testfile.c; sourceTree = ""; }; + 002F343109CA1F0300EBEB88 /* testiconv.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testiconv.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 002F343609CA1F6F00EBEB88 /* testiconv.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = testiconv.c; sourceTree = ""; }; + 002F344D09CA1FB300EBEB88 /* testoverlay.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testoverlay.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 002F345209CA201C00EBEB88 /* testoverlay.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = testoverlay.c; sourceTree = ""; }; + 002F346A09CA204F00EBEB88 /* testplatform.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testplatform.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 002F346F09CA20A600EBEB88 /* testplatform.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = testplatform.c; sourceTree = ""; }; + 003FA63A093FFD41000C53B3 /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL.xcodeproj; path = ../SDL/SDL.xcodeproj; sourceTree = SOURCE_ROOT; }; + 00794E5D09D20839003FC8A1 /* icon.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = icon.bmp; sourceTree = ""; }; + 00794E5E09D20839003FC8A1 /* moose.dat */ = {isa = PBXFileReference; lastKnownFileType = file; path = moose.dat; sourceTree = ""; }; + 00794E5F09D20839003FC8A1 /* picture.xbm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = picture.xbm; sourceTree = ""; }; + 00794E6109D20839003FC8A1 /* sample.bmp */ = {isa = PBXFileReference; lastKnownFileType = image.bmp; path = sample.bmp; sourceTree = ""; }; + 00794E6209D20839003FC8A1 /* sample.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = sample.wav; sourceTree = ""; }; + 00794E6309D20839003FC8A1 /* utf8.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = utf8.txt; sourceTree = ""; }; + 083E4872006D84C97F000001 /* loopwave.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = loopwave.c; sourceTree = ""; }; + 083E4878006D85357F000001 /* testerror.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = testerror.c; sourceTree = ""; }; + 083E487E006D86A17F000001 /* testsem.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = testsem.c; sourceTree = ""; }; + 083E4880006D86A17F000001 /* testtimer.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = testtimer.c; sourceTree = ""; }; + 083E4882006D86A17F000001 /* testver.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = testver.c; sourceTree = ""; }; + 083E4887006D86A17F000001 /* torturethread.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = torturethread.c; sourceTree = ""; }; + 092D6D10FFB30A2C7F000001 /* checkkeys.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = checkkeys.c; sourceTree = ""; }; + 092D6D58FFB311A97F000001 /* testthread.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = testthread.c; sourceTree = ""; }; + 092D6D6CFFB313437F000001 /* testkeys.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = testkeys.c; sourceTree = ""; }; + 092D6D75FFB313BB7F000001 /* testlock.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = testlock.c; sourceTree = ""; }; + 4537749212091504002F0F45 /* testshape.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testshape.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 453774A4120915E3002F0F45 /* testshape.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testshape.c; sourceTree = ""; }; + 66E88E8A203B778F0004D44E /* testyuv_cvt.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testyuv_cvt.c; sourceTree = ""; }; + AAF02FF41F90089800B9A9FB /* SDL_test_memory.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_memory.c; sourceTree = ""; }; + BBFC088E164C6820003E6A99 /* testcontroller.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testcontroller.c; sourceTree = ""; }; + BBFC08CD164C6862003E6A99 /* testcontroller.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testcontroller.app; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC566B60761D90300A33029 /* checkkeys.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = checkkeys.app; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC566D10761D90300A33029 /* loopwave.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = loopwave.app; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC567060761D90400A33029 /* testerror.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testerror.app; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC5672E0761D90400A33029 /* testthread.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testthread.app; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC567480761D90400A33029 /* testkeys.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testkeys.app; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC567550761D90400A33029 /* testlock.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testlock.app; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC5677D0761D90500A33029 /* testsem.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testsem.app; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC567980761D90500A33029 /* testtimer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testtimer.app; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC567B20761D90500A33029 /* testversion.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testversion.app; sourceTree = BUILT_PRODUCTS_DIR; }; + BEC567F50761D90600A33029 /* torturethread.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = torturethread.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB0F48D717CA51D2008798C5 /* testdrawchessboard.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testdrawchessboard.c; sourceTree = ""; }; + DB0F48D817CA51D2008798C5 /* testfilesystem.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testfilesystem.c; sourceTree = ""; }; + DB0F48EC17CA51E5008798C5 /* testdrawchessboard.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testdrawchessboard.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB0F490117CA5212008798C5 /* testfilesystem.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testfilesystem.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB166CBC16A1C74100A1396C /* testgles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testgles.c; sourceTree = ""; }; + DB166CBD16A1C74100A1396C /* testmessage.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testmessage.c; sourceTree = ""; }; + DB166CBF16A1C74100A1396C /* testrelative.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testrelative.c; sourceTree = ""; }; + DB166CC016A1C74100A1396C /* testrendercopyex.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testrendercopyex.c; sourceTree = ""; }; + DB166CC116A1C74100A1396C /* testrendertarget.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testrendertarget.c; sourceTree = ""; }; + DB166CC216A1C74100A1396C /* testrumble.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testrumble.c; sourceTree = ""; }; + DB166CC316A1C74100A1396C /* testscale.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testscale.c; sourceTree = ""; }; + DB166CC416A1C74100A1396C /* testshader.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testshader.c; sourceTree = ""; }; + DB166CC516A1C74100A1396C /* testspriteminimal.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testspriteminimal.c; sourceTree = ""; }; + DB166CC616A1C74100A1396C /* teststreaming.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = teststreaming.c; sourceTree = ""; }; + DB166D7F16A1D12400A1396C /* libSDL3_test.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSDL3_test.a; sourceTree = BUILT_PRODUCTS_DIR; }; + DB166D8416A1D1A500A1396C /* SDL_test_assert.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_assert.c; sourceTree = ""; }; + DB166D8516A1D1A500A1396C /* SDL_test_common.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_common.c; sourceTree = ""; }; + DB166D8616A1D1A500A1396C /* SDL_test_compare.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_compare.c; sourceTree = ""; }; + DB166D8716A1D1A500A1396C /* SDL_test_crc32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_crc32.c; sourceTree = ""; }; + DB166D8816A1D1A500A1396C /* SDL_test_font.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_font.c; sourceTree = ""; }; + DB166D8916A1D1A500A1396C /* SDL_test_fuzzer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_fuzzer.c; sourceTree = ""; }; + DB166D8A16A1D1A500A1396C /* SDL_test_harness.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_harness.c; sourceTree = ""; }; + DB166D9016A1D1A500A1396C /* SDL_test_log.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_log.c; sourceTree = ""; }; + DB166D9116A1D1A500A1396C /* SDL_test_md5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_md5.c; sourceTree = ""; }; + DB166D9216A1D1A500A1396C /* SDL_test_random.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_test_random.c; sourceTree = ""; }; + DB166DD516A1D36A00A1396C /* testmessage.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testmessage.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB166DEE16A1D50C00A1396C /* testrelative.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testrelative.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB166E0516A1D57C00A1396C /* testrendercopyex.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testrendercopyex.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB166E1C16A1D5AD00A1396C /* testrendertarget.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testrendertarget.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB166E3816A1D64D00A1396C /* testrumble.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testrumble.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB166E5216A1D69000A1396C /* testscale.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testscale.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB166E6816A1D6F300A1396C /* testshader.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testshader.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB166E7E16A1D78400A1396C /* testspriteminimal.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testspriteminimal.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB166E9116A1D78C00A1396C /* teststreaming.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = teststreaming.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB166ECF16A1D87000A1396C /* shapes */ = {isa = PBXFileReference; lastKnownFileType = folder; path = shapes; sourceTree = ""; }; + DB445EF818184B7000B306B0 /* testdropfile.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testdropfile.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB445EFA18184BB600B306B0 /* testdropfile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testdropfile.c; sourceTree = ""; }; + DB89957E18A19ABA0092407C /* testhotplug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testhotplug.app; sourceTree = BUILT_PRODUCTS_DIR; }; + DB89958318A19B130092407C /* testhotplug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testhotplug.c; sourceTree = ""; }; + F35E56AA298312CB00A43A5F /* testautomation.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testautomation.app; sourceTree = BUILT_PRODUCTS_DIR; }; + F35E56B62983130A00A43A5F /* testautomation_main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_main.c; sourceTree = ""; }; + F35E56B72983130A00A43A5F /* testautomation_hints.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_hints.c; sourceTree = ""; }; + F35E56B82983130A00A43A5F /* testautomation_render.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_render.c; sourceTree = ""; }; + F35E56B92983130B00A43A5F /* testautomation_iostream.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_iostream.c; sourceTree = ""; }; + F35E56BA2983130B00A43A5F /* testautomation_math.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_math.c; sourceTree = ""; }; + F35E56BB2983130B00A43A5F /* testautomation_events.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_events.c; sourceTree = ""; }; + F35E56BC2983130B00A43A5F /* testautomation_clipboard.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_clipboard.c; sourceTree = ""; }; + F35E56BD2983130B00A43A5F /* testautomation_timer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_timer.c; sourceTree = ""; }; + F35E56BE2983130C00A43A5F /* testautomation_stdlib.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_stdlib.c; sourceTree = ""; }; + F35E56BF2983130C00A43A5F /* testautomation_images.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_images.c; sourceTree = ""; }; + F35E56C02983130C00A43A5F /* testautomation_pixels.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_pixels.c; sourceTree = ""; }; + F35E56C12983130C00A43A5F /* testautomation_video.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_video.c; sourceTree = ""; }; + F35E56C32983130D00A43A5F /* testautomation_platform.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_platform.c; sourceTree = ""; }; + F35E56C42983130D00A43A5F /* testautomation_audio.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_audio.c; sourceTree = ""; }; + F35E56C52983130D00A43A5F /* testautomation_rect.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_rect.c; sourceTree = ""; }; + F35E56C62983130D00A43A5F /* testautomation_joystick.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_joystick.c; sourceTree = ""; }; + F35E56C72983130E00A43A5F /* testautomation_keyboard.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_keyboard.c; sourceTree = ""; }; + F35E56C82983130E00A43A5F /* testautomation_sdltest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_sdltest.c; sourceTree = ""; }; + F35E56C92983130E00A43A5F /* testautomation_guid.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_guid.c; sourceTree = ""; }; + F35E56CB2983130F00A43A5F /* testautomation_surface.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_surface.c; sourceTree = ""; }; + F35E56CC2983130F00A43A5F /* testautomation.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation.c; sourceTree = ""; }; + F35E56CD2983130F00A43A5F /* testautomation_mouse.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_mouse.c; sourceTree = ""; }; + F399C6492A78929400C86979 /* gamepadutils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gamepadutils.c; sourceTree = ""; }; + F399C6502A7892D800C86979 /* testautomation_intrinsics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testautomation_intrinsics.c; sourceTree = ""; }; + F399C6542A78933000C86979 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + F3C17C6A28E3FD4400E1A26D /* config.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = config.xcconfig; sourceTree = ""; }; + F3C17C7328E40ADE00E1A26D /* testutils.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = testutils.c; sourceTree = ""; }; + F3C17CD628E416AC00E1A26D /* testgeometry.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = testgeometry.c; sourceTree = ""; }; + F3C17CDC28E416CF00E1A26D /* testgeometry.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = testgeometry.app; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0017957A10741F7900F5D044 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56932A78971600766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017959B107421BF00F5D044 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56962A78971F00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017970F10742F3200F5D044 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56B42A78977000766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 00179736107430D600F5D044 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56B72A78977D00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017975C107431B300F5D044 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB569F2A78973700766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017977C107432AE00F5D044 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56C02A78979600766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017979C1074334C00F5D044 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56C32A78979C00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 001797BE107433C600F5D044 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56C92A7897AE00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 001798001074355200F5D044 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56D22A7897C600766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 001798821074392D00F5D044 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56D52A7897CD00766177 /* SDL3.framework in Frameworks */, + F399C6552A78933100C86979 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 001798A3107439DF00F5D044 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56DF2A7897F000766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 001798E010743BEC00F5D044 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56EB2A78980D00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017990410743F1000F5D044 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56892A7895F800766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017992610743FB700F5D044 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB570C2A78986000766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 002F340809CA1BFF00EBEB88 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56AB2A78975A00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 002F342709CA1F0300EBEB88 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56BD2A78979000766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 002F344309CA1FB300EBEB88 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56D92A7897E200766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 002F346009CA204F00EBEB88 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56DC2A7897E900766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4537749012091504002F0F45 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56FA2A78983200766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BBFC08BE164C6862003E6A99 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB569C2A78972F00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC566B20761D90300A33029 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB568C2A7896BF00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC566CC0761D90300A33029 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56902A7896F900766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC567020761D90300A33029 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56A82A78975100766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC5672A0761D90400A33029 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB57032A78984A00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC567440761D90400A33029 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56C62A7897A500766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC567510761D90400A33029 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56CC2A7897B500766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC567790761D90500A33029 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56F42A78982300766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC567940761D90500A33029 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB57062A78985400766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC567AE0761D90500A33029 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB57092A78985A00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC567F10761D90600A33029 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB570F2A78986700766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB0F48DC17CA51E5008798C5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56A22A78974000766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB0F48F217CA5212008798C5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56AE2A78976200766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166D7C16A1D12400A1396C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166DC716A1D36A00A1396C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56CF2A7897BE00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166DDF16A1D50C00A1396C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56E22A7897F800766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166DF616A1D57C00A1396C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56E52A7897FE00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E0D16A1D5AD00A1396C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56E82A78980600766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E2A16A1D64D00A1396C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56EE2A78981500766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E4016A1D69000A1396C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56F12A78981C00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E5A16A1D6F300A1396C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56F72A78982B00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E7016A1D78400A1396C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56FD2A78983C00766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E8316A1D78C00A1396C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB57002A78984300766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB445EE918184B7000B306B0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56A52A78974800766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB89957018A19ABA0092407C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56BA2A78978700766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F35E56A5298312CB00A43A5F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56992A78972700766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F3C17CD928E416CF00E1A26D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F3CB56B12A78976800766177 /* SDL3.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 003FA63B093FFD41000C53B3 /* Products */ = { + isa = PBXGroup; + children = ( + 003FA643093FFD41000C53B3 /* SDL3.framework */, + ); + name = Products; + sourceTree = ""; + }; + 00794E4609D207B4003FC8A1 /* Resources */ = { + isa = PBXGroup; + children = ( + 00794E5D09D20839003FC8A1 /* icon.bmp */, + 00794E5E09D20839003FC8A1 /* moose.dat */, + 00794E5F09D20839003FC8A1 /* picture.xbm */, + 00794E6109D20839003FC8A1 /* sample.bmp */, + 00794E6209D20839003FC8A1 /* sample.wav */, + DB166ECF16A1D87000A1396C /* shapes */, + 00794E6309D20839003FC8A1 /* utf8.txt */, + ); + name = Resources; + path = ../../test; + sourceTree = ""; + }; + 08FB7794FE84155DC02AAC07 /* SDLTest */ = { + isa = PBXGroup; + children = ( + F3C17C6A28E3FD4400E1A26D /* config.xcconfig */, + 003FA63A093FFD41000C53B3 /* SDL.xcodeproj */, + 08FB7795FE84155DC02AAC07 /* Source */, + DB166D8316A1D17E00A1396C /* SDL_Test */, + 00794E4609D207B4003FC8A1 /* Resources */, + 1AB674ADFE9D54B511CA2CBB /* Products */, + F399C6532A78933000C86979 /* Frameworks */, + ); + comments = "I made these tests link against our \"default\" framework which includes X11 stuff. If you didn't install the X11 headers with Xcode, you might have problems building the SDL.framework (which is a dependency). You can swap the dependencies around to get around this, or you can modify the default SDL.framework target to not include X11 stuff. (Go into its target build options and remove all the Preprocessor macros.)\n\n\n\nWe are sort of in a half-way state at the moment. Going \"all-the-way\" means we copy the SDL.framework inside the app bundle so we can run the test without the step of the user \"installing\" the framework. But there is an oversight/bug in Xcode that doesn't correctly find the location of the framework when in an embedded/nested Xcode project. We could probably try to hack this with a shell script that checks multiple directories for existence, but this is messier and more work than I prefer, so I rather just wait for Apple to fix this. In the meantime...\n\nThe \"All\" target will build the SDL framework from the Xcode project. The other targets do not have this dependency set (for flexibility reasons in case we make changes). If you have not built the framework, you will probably be unable to link. You will either need to build the framework, or you need to add \"-framework SDL\" to the link options and make sure you have the SDL.framework installed somewhere where it can be seen (like /Library/Frameworks...I think we already set this one up.) \n\nTo run though, you should have a copy of the SDL.framework in /Library/Frameworks or ~/Library/Frameworks.\n\n\n\n\ntestgl and testdyngl need -DHAVE_OPENGL\ntestgl needs to link against OpenGL.framework\n\n"; + name = SDLTest; + sourceTree = ""; + }; + 08FB7795FE84155DC02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 092D6D10FFB30A2C7F000001 /* checkkeys.c */, + F399C6492A78929400C86979 /* gamepadutils.c */, + 083E4872006D84C97F000001 /* loopwave.c */, + 0017958F1074216E00F5D044 /* testatomic.c */, + 001795B01074222D00F5D044 /* testaudioinfo.c */, + F35E56C42983130D00A43A5F /* testautomation_audio.c */, + F35E56BC2983130B00A43A5F /* testautomation_clipboard.c */, + F35E56BB2983130B00A43A5F /* testautomation_events.c */, + F35E56C92983130E00A43A5F /* testautomation_guid.c */, + F35E56B72983130A00A43A5F /* testautomation_hints.c */, + F35E56BF2983130C00A43A5F /* testautomation_images.c */, + F399C6502A7892D800C86979 /* testautomation_intrinsics.c */, + F35E56C62983130D00A43A5F /* testautomation_joystick.c */, + F35E56C72983130E00A43A5F /* testautomation_keyboard.c */, + F35E56B62983130A00A43A5F /* testautomation_main.c */, + F35E56BA2983130B00A43A5F /* testautomation_math.c */, + F35E56CD2983130F00A43A5F /* testautomation_mouse.c */, + F35E56C02983130C00A43A5F /* testautomation_pixels.c */, + F35E56C32983130D00A43A5F /* testautomation_platform.c */, + F35E56C52983130D00A43A5F /* testautomation_rect.c */, + F35E56B82983130A00A43A5F /* testautomation_render.c */, + F35E56B92983130B00A43A5F /* testautomation_iostream.c */, + F35E56C82983130E00A43A5F /* testautomation_sdltest.c */, + F35E56BE2983130C00A43A5F /* testautomation_stdlib.c */, + F35E56CB2983130F00A43A5F /* testautomation_surface.c */, + F35E56BD2983130B00A43A5F /* testautomation_timer.c */, + F35E56C12983130C00A43A5F /* testautomation_video.c */, + F35E56CC2983130F00A43A5F /* testautomation.c */, + BBFC088E164C6820003E6A99 /* testcontroller.c */, + 001797711074320D00F5D044 /* testdraw.c */, + DB0F48D717CA51D2008798C5 /* testdrawchessboard.c */, + DB445EFA18184BB600B306B0 /* testdropfile.c */, + 083E4878006D85357F000001 /* testerror.c */, + 002F341709CA1C5B00EBEB88 /* testfile.c */, + DB0F48D817CA51D2008798C5 /* testfilesystem.c */, + F3C17CD628E416AC00E1A26D /* testgeometry.c */, + 0017972710742FB900F5D044 /* testgl.c */, + DB166CBC16A1C74100A1396C /* testgles.c */, + 0017974E1074315700F5D044 /* testhaptic.c */, + DB89958318A19B130092407C /* testhotplug.c */, + 002F343609CA1F6F00EBEB88 /* testiconv.c */, + 00179791107432FA00F5D044 /* testime.c */, + 001797B31074339C00F5D044 /* testintersections.c */, + 092D6D6CFFB313437F000001 /* testkeys.c */, + 001797D31074343E00F5D044 /* testloadso.c */, + 092D6D75FFB313BB7F000001 /* testlock.c */, + DB166CBD16A1C74100A1396C /* testmessage.c */, + 001798151074359B00F5D044 /* testmultiaudio.c */, + 0017985A107436ED00F5D044 /* testnative.c */, + 0017985B107436ED00F5D044 /* testnative.h */, + 0017985C107436ED00F5D044 /* testnativecocoa.m */, + 00179872107438D000F5D044 /* testnativex11.c */, + 002F345209CA201C00EBEB88 /* testoverlay.c */, + 002F346F09CA20A600EBEB88 /* testplatform.c */, + 001798B910743A4900F5D044 /* testpower.c */, + DB166CBF16A1C74100A1396C /* testrelative.c */, + DB166CC016A1C74100A1396C /* testrendercopyex.c */, + DB166CC116A1C74100A1396C /* testrendertarget.c */, + 001798F910743E9200F5D044 /* testresample.c */, + DB166CC216A1C74100A1396C /* testrumble.c */, + DB166CC316A1C74100A1396C /* testscale.c */, + 083E487E006D86A17F000001 /* testsem.c */, + DB166CC416A1C74100A1396C /* testshader.c */, + 453774A4120915E3002F0F45 /* testshape.c */, + 0017991910743F5300F5D044 /* testsprite.c */, + DB166CC516A1C74100A1396C /* testspriteminimal.c */, + DB166CC616A1C74100A1396C /* teststreaming.c */, + 092D6D58FFB311A97F000001 /* testthread.c */, + 083E4880006D86A17F000001 /* testtimer.c */, + F3C17C7328E40ADE00E1A26D /* testutils.c */, + 083E4882006D86A17F000001 /* testver.c */, + 0017993B10743FEF00F5D044 /* testwm.c */, + 66E88E8A203B778F0004D44E /* testyuv_cvt.c */, + 083E4887006D86A17F000001 /* torturethread.c */, + ); + name = Source; + path = ../../test; + sourceTree = ""; + }; + 1AB674ADFE9D54B511CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + BEC566B60761D90300A33029 /* checkkeys.app */, + BEC566D10761D90300A33029 /* loopwave.app */, + BEC567060761D90400A33029 /* testerror.app */, + BEC5672E0761D90400A33029 /* testthread.app */, + BEC567480761D90400A33029 /* testkeys.app */, + BEC567550761D90400A33029 /* testlock.app */, + BEC5677D0761D90500A33029 /* testsem.app */, + BEC567980761D90500A33029 /* testtimer.app */, + BEC567B20761D90500A33029 /* testversion.app */, + BEC567F50761D90600A33029 /* torturethread.app */, + 002F341209CA1BFF00EBEB88 /* testfile.app */, + 002F343109CA1F0300EBEB88 /* testiconv.app */, + 002F344D09CA1FB300EBEB88 /* testoverlay.app */, + 002F346A09CA204F00EBEB88 /* testplatform.app */, + 0017958C10741F7900F5D044 /* testatomic.app */, + 001795AD107421BF00F5D044 /* testaudioinfo.app */, + 0017972110742F3200F5D044 /* testgl.app */, + 00179748107430D600F5D044 /* testhaptic.app */, + 0017976E107431B300F5D044 /* testdraw.app */, + 0017978E107432AE00F5D044 /* testime.app */, + 001797AE1074334C00F5D044 /* testintersections.app */, + 001797D0107433C600F5D044 /* testloadso.app */, + 001798121074355200F5D044 /* testmultiaudio.app */, + 001798941074392D00F5D044 /* testnative.app */, + 001798B5107439DF00F5D044 /* testpower.app */, + 001798F210743BEC00F5D044 /* testresample.app */, + 0017991610743F1000F5D044 /* testsprite.app */, + 0017993810743FB700F5D044 /* testwm.app */, + 4537749212091504002F0F45 /* testshape.app */, + BBFC08CD164C6862003E6A99 /* testcontroller.app */, + DB166D7F16A1D12400A1396C /* libSDL3_test.a */, + DB166DD516A1D36A00A1396C /* testmessage.app */, + DB166DEE16A1D50C00A1396C /* testrelative.app */, + DB166E0516A1D57C00A1396C /* testrendercopyex.app */, + DB166E1C16A1D5AD00A1396C /* testrendertarget.app */, + DB166E3816A1D64D00A1396C /* testrumble.app */, + DB166E5216A1D69000A1396C /* testscale.app */, + DB166E6816A1D6F300A1396C /* testshader.app */, + DB166E7E16A1D78400A1396C /* testspriteminimal.app */, + DB166E9116A1D78C00A1396C /* teststreaming.app */, + DB0F48EC17CA51E5008798C5 /* testdrawchessboard.app */, + DB0F490117CA5212008798C5 /* testfilesystem.app */, + DB89957E18A19ABA0092407C /* testhotplug.app */, + DB445EF818184B7000B306B0 /* testdropfile.app */, + F3C17CDC28E416CF00E1A26D /* testgeometry.app */, + F35E56AA298312CB00A43A5F /* testautomation.app */, + ); + name = Products; + sourceTree = ""; + }; + DB166D8316A1D17E00A1396C /* SDL_Test */ = { + isa = PBXGroup; + children = ( + DB166D8416A1D1A500A1396C /* SDL_test_assert.c */, + DB166D8516A1D1A500A1396C /* SDL_test_common.c */, + DB166D8616A1D1A500A1396C /* SDL_test_compare.c */, + DB166D8716A1D1A500A1396C /* SDL_test_crc32.c */, + DB166D8816A1D1A500A1396C /* SDL_test_font.c */, + DB166D8916A1D1A500A1396C /* SDL_test_fuzzer.c */, + DB166D8A16A1D1A500A1396C /* SDL_test_harness.c */, + DB166D9016A1D1A500A1396C /* SDL_test_log.c */, + DB166D9116A1D1A500A1396C /* SDL_test_md5.c */, + AAF02FF41F90089800B9A9FB /* SDL_test_memory.c */, + DB166D9216A1D1A500A1396C /* SDL_test_random.c */, + ); + name = SDL_Test; + path = ../../src/test; + sourceTree = ""; + }; + F399C6532A78933000C86979 /* Frameworks */ = { + isa = PBXGroup; + children = ( + F399C6542A78933000C86979 /* Cocoa.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + DB166D7D16A1D12400A1396C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 0017957410741F7900F5D044 /* testatomic */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0017958610741F7900F5D044 /* Build configuration list for PBXNativeTarget "testatomic" */; + buildPhases = ( + 0017957910741F7900F5D044 /* Sources */, + 0017957A10741F7900F5D044 /* Frameworks */, + F3CB56952A78971600766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testatomic; + productName = testalpha; + productReference = 0017958C10741F7900F5D044 /* testatomic.app */; + productType = "com.apple.product-type.application"; + }; + 00179595107421BF00F5D044 /* testaudioinfo */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001795A7107421BF00F5D044 /* Build configuration list for PBXNativeTarget "testaudioinfo" */; + buildPhases = ( + 0017959A107421BF00F5D044 /* Sources */, + 0017959B107421BF00F5D044 /* Frameworks */, + F3CB56982A78971F00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testaudioinfo; + productName = testalpha; + productReference = 001795AD107421BF00F5D044 /* testaudioinfo.app */; + productType = "com.apple.product-type.application"; + }; + 0017970910742F3200F5D044 /* testgl */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0017971B10742F3200F5D044 /* Build configuration list for PBXNativeTarget "testgl" */; + buildPhases = ( + 0017970E10742F3200F5D044 /* Sources */, + 0017970F10742F3200F5D044 /* Frameworks */, + F3CB56B62A78977000766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testgl; + productName = testalpha; + productReference = 0017972110742F3200F5D044 /* testgl.app */; + productType = "com.apple.product-type.application"; + }; + 00179730107430D600F5D044 /* testhaptic */ = { + isa = PBXNativeTarget; + buildConfigurationList = 00179742107430D600F5D044 /* Build configuration list for PBXNativeTarget "testhaptic" */; + buildPhases = ( + 00179735107430D600F5D044 /* Sources */, + 00179736107430D600F5D044 /* Frameworks */, + F3CB56B92A78977D00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testhaptic; + productName = testalpha; + productReference = 00179748107430D600F5D044 /* testhaptic.app */; + productType = "com.apple.product-type.application"; + }; + 00179756107431B300F5D044 /* testdraw */ = { + isa = PBXNativeTarget; + buildConfigurationList = 00179768107431B300F5D044 /* Build configuration list for PBXNativeTarget "testdraw" */; + buildPhases = ( + 0017975B107431B300F5D044 /* Sources */, + 0017975C107431B300F5D044 /* Frameworks */, + F3CB56A12A78973700766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testdraw; + productName = testalpha; + productReference = 0017976E107431B300F5D044 /* testdraw.app */; + productType = "com.apple.product-type.application"; + }; + 00179776107432AE00F5D044 /* testime */ = { + isa = PBXNativeTarget; + buildConfigurationList = 00179788107432AE00F5D044 /* Build configuration list for PBXNativeTarget "testime" */; + buildPhases = ( + 0017977B107432AE00F5D044 /* Sources */, + 0017977C107432AE00F5D044 /* Frameworks */, + F3CB56C22A78979600766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testime; + productName = testalpha; + productReference = 0017978E107432AE00F5D044 /* testime.app */; + productType = "com.apple.product-type.application"; + }; + 001797961074334C00F5D044 /* testintersections */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001797A81074334C00F5D044 /* Build configuration list for PBXNativeTarget "testintersections" */; + buildPhases = ( + 0017979B1074334C00F5D044 /* Sources */, + 0017979C1074334C00F5D044 /* Frameworks */, + F3CB56C52A78979C00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testintersections; + productName = testalpha; + productReference = 001797AE1074334C00F5D044 /* testintersections.app */; + productType = "com.apple.product-type.application"; + }; + 001797B8107433C600F5D044 /* testloadso */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001797CA107433C600F5D044 /* Build configuration list for PBXNativeTarget "testloadso" */; + buildPhases = ( + 001797BD107433C600F5D044 /* Sources */, + 001797BE107433C600F5D044 /* Frameworks */, + F3CB56CB2A7897AE00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testloadso; + productName = testalpha; + productReference = 001797D0107433C600F5D044 /* testloadso.app */; + productType = "com.apple.product-type.application"; + }; + 001797FA1074355200F5D044 /* testmultiaudio */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0017980C1074355200F5D044 /* Build configuration list for PBXNativeTarget "testmultiaudio" */; + buildPhases = ( + 001797FF1074355200F5D044 /* Sources */, + 001798001074355200F5D044 /* Frameworks */, + F3C17D3828E424B100E1A26D /* Resources */, + F3CB56D42A7897C600766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testmultiaudio; + productName = testalpha; + productReference = 001798121074355200F5D044 /* testmultiaudio.app */; + productType = "com.apple.product-type.application"; + }; + 001798781074392D00F5D044 /* testnative */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0017988E1074392D00F5D044 /* Build configuration list for PBXNativeTarget "testnative" */; + buildPhases = ( + 0017987E1074392D00F5D044 /* Sources */, + 001798821074392D00F5D044 /* Frameworks */, + DB166DDA16A1D40F00A1396C /* CopyFiles */, + F3CB56D72A7897CE00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testnative; + productName = testalpha; + productReference = 001798941074392D00F5D044 /* testnative.app */; + productType = "com.apple.product-type.application"; + }; + 0017989D107439DF00F5D044 /* testpower */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001798AF107439DF00F5D044 /* Build configuration list for PBXNativeTarget "testpower" */; + buildPhases = ( + 001798A2107439DF00F5D044 /* Sources */, + 001798A3107439DF00F5D044 /* Frameworks */, + F3CB56E12A7897F000766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testpower; + productName = testalpha; + productReference = 001798B5107439DF00F5D044 /* testpower.app */; + productType = "com.apple.product-type.application"; + }; + 001798DA10743BEC00F5D044 /* testresample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001798EC10743BEC00F5D044 /* Build configuration list for PBXNativeTarget "testresample" */; + buildPhases = ( + 001798DF10743BEC00F5D044 /* Sources */, + 001798E010743BEC00F5D044 /* Frameworks */, + F3CB56ED2A78980D00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testresample; + productName = testalpha; + productReference = 001798F210743BEC00F5D044 /* testresample.app */; + productType = "com.apple.product-type.application"; + }; + 001798FE10743F1000F5D044 /* testsprite */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0017991010743F1000F5D044 /* Build configuration list for PBXNativeTarget "testsprite" */; + buildPhases = ( + 0017990310743F1000F5D044 /* Sources */, + 0017990410743F1000F5D044 /* Frameworks */, + F3C17D3A28E4252200E1A26D /* Resources */, + F3CB568B2A7895F800766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testsprite; + productName = testalpha; + productReference = 0017991610743F1000F5D044 /* testsprite.app */; + productType = "com.apple.product-type.application"; + }; + 0017992010743FB700F5D044 /* testwm */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0017993210743FB700F5D044 /* Build configuration list for PBXNativeTarget "testwm" */; + buildPhases = ( + 0017992510743FB700F5D044 /* Sources */, + 0017992610743FB700F5D044 /* Frameworks */, + F3CB570E2A78986000766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testwm; + productName = testalpha; + productReference = 0017993810743FB700F5D044 /* testwm.app */; + productType = "com.apple.product-type.application"; + }; + 002F340109CA1BFF00EBEB88 /* testfile */ = { + isa = PBXNativeTarget; + buildConfigurationList = 002F340E09CA1BFF00EBEB88 /* Build configuration list for PBXNativeTarget "testfile" */; + buildPhases = ( + 002F340709CA1BFF00EBEB88 /* Sources */, + 002F340809CA1BFF00EBEB88 /* Frameworks */, + F3CB56AD2A78975A00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testfile; + productName = testalpha; + productReference = 002F341209CA1BFF00EBEB88 /* testfile.app */; + productType = "com.apple.product-type.application"; + }; + 002F342009CA1F0300EBEB88 /* testiconv */ = { + isa = PBXNativeTarget; + buildConfigurationList = 002F342D09CA1F0300EBEB88 /* Build configuration list for PBXNativeTarget "testiconv" */; + buildPhases = ( + 002F342609CA1F0300EBEB88 /* Sources */, + 002F342709CA1F0300EBEB88 /* Frameworks */, + 00794EEC09D2371F003FC8A1 /* CopyFiles */, + F3CB56BF2A78979000766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testiconv; + productName = testalpha; + productReference = 002F343109CA1F0300EBEB88 /* testiconv.app */; + productType = "com.apple.product-type.application"; + }; + 002F343C09CA1FB300EBEB88 /* testoverlay */ = { + isa = PBXNativeTarget; + buildConfigurationList = 002F344909CA1FB300EBEB88 /* Build configuration list for PBXNativeTarget "testoverlay" */; + buildPhases = ( + 002F344209CA1FB300EBEB88 /* Sources */, + 002F344309CA1FB300EBEB88 /* Frameworks */, + 00794EF409D237C7003FC8A1 /* CopyFiles */, + F3CB56DB2A7897E200766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testoverlay; + productName = testalpha; + productReference = 002F344D09CA1FB300EBEB88 /* testoverlay.app */; + productType = "com.apple.product-type.application"; + }; + 002F345909CA204F00EBEB88 /* testplatform */ = { + isa = PBXNativeTarget; + buildConfigurationList = 002F346609CA204F00EBEB88 /* Build configuration list for PBXNativeTarget "testplatform" */; + buildPhases = ( + 002F345F09CA204F00EBEB88 /* Sources */, + 002F346009CA204F00EBEB88 /* Frameworks */, + F3CB56DE2A7897E900766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testplatform; + productName = testalpha; + productReference = 002F346A09CA204F00EBEB88 /* testplatform.app */; + productType = "com.apple.product-type.application"; + }; + 4537749112091504002F0F45 /* testshape */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4537749A1209150C002F0F45 /* Build configuration list for PBXNativeTarget "testshape" */; + buildPhases = ( + 4537748F12091504002F0F45 /* Sources */, + 4537749012091504002F0F45 /* Frameworks */, + DB166ECE16A1D85400A1396C /* CopyFiles */, + F3CB56FC2A78983200766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testshape; + productName = testshape; + productReference = 4537749212091504002F0F45 /* testshape.app */; + productType = "com.apple.product-type.application"; + }; + BBFC08B7164C6862003E6A99 /* testcontroller */ = { + isa = PBXNativeTarget; + buildConfigurationList = BBFC08CA164C6862003E6A99 /* Build configuration list for PBXNativeTarget "testcontroller" */; + buildPhases = ( + BBFC08BC164C6862003E6A99 /* Sources */, + BBFC08BE164C6862003E6A99 /* Frameworks */, + F3CB569E2A78973000766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testcontroller; + productName = testjoystick; + productReference = BBFC08CD164C6862003E6A99 /* testcontroller.app */; + productType = "com.apple.product-type.application"; + }; + BEC566AB0761D90300A33029 /* checkkeys */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001B593808BDB826006539E9 /* Build configuration list for PBXNativeTarget "checkkeys" */; + buildPhases = ( + BEC566B00761D90300A33029 /* Sources */, + BEC566B20761D90300A33029 /* Frameworks */, + F3CB568E2A7896BF00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = checkkeys; + productName = checkkeys; + productReference = BEC566B60761D90300A33029 /* checkkeys.app */; + productType = "com.apple.product-type.application"; + }; + BEC566C50761D90300A33029 /* loopwave */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001B594008BDB826006539E9 /* Build configuration list for PBXNativeTarget "loopwave" */; + buildPhases = ( + BEC566CA0761D90300A33029 /* Sources */, + BEC566CC0761D90300A33029 /* Frameworks */, + 00794E6409D2084F003FC8A1 /* CopyFiles */, + F3CB56922A7896F900766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = loopwave; + productName = loopwave; + productReference = BEC566D10761D90300A33029 /* loopwave.app */; + productType = "com.apple.product-type.application"; + }; + BEC566FB0761D90300A33029 /* testerror */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001B595008BDB826006539E9 /* Build configuration list for PBXNativeTarget "testerror" */; + buildPhases = ( + BEC567000761D90300A33029 /* Sources */, + BEC567020761D90300A33029 /* Frameworks */, + F3CB56AA2A78975100766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testerror; + productName = testerror; + productReference = BEC567060761D90400A33029 /* testerror.app */; + productType = "com.apple.product-type.application"; + }; + BEC567230761D90400A33029 /* testthread */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001B595C08BDB826006539E9 /* Build configuration list for PBXNativeTarget "testthread" */; + buildPhases = ( + BEC567280761D90400A33029 /* Sources */, + BEC5672A0761D90400A33029 /* Frameworks */, + F3CB57052A78984A00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testthread; + productName = testthread; + productReference = BEC5672E0761D90400A33029 /* testthread.app */; + productType = "com.apple.product-type.application"; + }; + BEC5673D0761D90400A33029 /* testkeys */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001B596408BDB826006539E9 /* Build configuration list for PBXNativeTarget "testkeys" */; + buildPhases = ( + BEC567420761D90400A33029 /* Sources */, + BEC567440761D90400A33029 /* Frameworks */, + F3CB56C82A7897A500766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testkeys; + productName = testkeys; + productReference = BEC567480761D90400A33029 /* testkeys.app */; + productType = "com.apple.product-type.application"; + }; + BEC5674A0761D90400A33029 /* testlock */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001B596808BDB826006539E9 /* Build configuration list for PBXNativeTarget "testlock" */; + buildPhases = ( + BEC5674F0761D90400A33029 /* Sources */, + BEC567510761D90400A33029 /* Frameworks */, + F3CB56CE2A7897B500766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testlock; + productName = testlock; + productReference = BEC567550761D90400A33029 /* testlock.app */; + productType = "com.apple.product-type.application"; + }; + BEC567720761D90500A33029 /* testsem */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001B597008BDB826006539E9 /* Build configuration list for PBXNativeTarget "testsem" */; + buildPhases = ( + BEC567770761D90500A33029 /* Sources */, + BEC567790761D90500A33029 /* Frameworks */, + F3CB56F62A78982400766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testsem; + productName = testsem; + productReference = BEC5677D0761D90500A33029 /* testsem.app */; + productType = "com.apple.product-type.application"; + }; + BEC5678D0761D90500A33029 /* testtimer */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001B597808BDB826006539E9 /* Build configuration list for PBXNativeTarget "testtimer" */; + buildPhases = ( + BEC567920761D90500A33029 /* Sources */, + BEC567940761D90500A33029 /* Frameworks */, + F3CB57082A78985400766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testtimer; + productName = testtimer; + productReference = BEC567980761D90500A33029 /* testtimer.app */; + productType = "com.apple.product-type.application"; + }; + BEC567A70761D90500A33029 /* testversion */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001B598008BDB826006539E9 /* Build configuration list for PBXNativeTarget "testversion" */; + buildPhases = ( + BEC567AC0761D90500A33029 /* Sources */, + BEC567AE0761D90500A33029 /* Frameworks */, + F3CB570B2A78985A00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testversion; + productName = testversion; + productReference = BEC567B20761D90500A33029 /* testversion.app */; + productType = "com.apple.product-type.application"; + }; + BEC567EA0761D90600A33029 /* torturethread */ = { + isa = PBXNativeTarget; + buildConfigurationList = 001B599408BDB826006539E9 /* Build configuration list for PBXNativeTarget "torturethread" */; + buildPhases = ( + BEC567EF0761D90600A33029 /* Sources */, + BEC567F10761D90600A33029 /* Frameworks */, + F3CB57112A78986700766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = torturethread; + productName = torturethread; + productReference = BEC567F50761D90600A33029 /* torturethread.app */; + productType = "com.apple.product-type.application"; + }; + DB0F48D917CA51E5008798C5 /* testdrawchessboard */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB0F48E917CA51E5008798C5 /* Build configuration list for PBXNativeTarget "testdrawchessboard" */; + buildPhases = ( + DB0F48DA17CA51E5008798C5 /* Sources */, + DB0F48DC17CA51E5008798C5 /* Frameworks */, + F3CB56A42A78974000766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testdrawchessboard; + productName = testalpha; + productReference = DB0F48EC17CA51E5008798C5 /* testdrawchessboard.app */; + productType = "com.apple.product-type.application"; + }; + DB0F48EF17CA5212008798C5 /* testfilesystem */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB0F48FE17CA5212008798C5 /* Build configuration list for PBXNativeTarget "testfilesystem" */; + buildPhases = ( + DB0F48F017CA5212008798C5 /* Sources */, + DB0F48F217CA5212008798C5 /* Frameworks */, + F3CB56B02A78976200766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testfilesystem; + productName = testalpha; + productReference = DB0F490117CA5212008798C5 /* testfilesystem.app */; + productType = "com.apple.product-type.application"; + }; + DB166D7E16A1D12400A1396C /* SDL3_test */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB166D8016A1D12400A1396C /* Build configuration list for PBXNativeTarget "SDL3_test" */; + buildPhases = ( + DB166D7B16A1D12400A1396C /* Sources */, + DB166D7C16A1D12400A1396C /* Frameworks */, + DB166D7D16A1D12400A1396C /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SDL3_test; + productName = SDL_test; + productReference = DB166D7F16A1D12400A1396C /* libSDL3_test.a */; + productType = "com.apple.product-type.library.static"; + }; + DB166DC416A1D36A00A1396C /* testmessage */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB166DD216A1D36A00A1396C /* Build configuration list for PBXNativeTarget "testmessage" */; + buildPhases = ( + DB166DC516A1D36A00A1396C /* Sources */, + DB166DC716A1D36A00A1396C /* Frameworks */, + F3CB56D12A7897BE00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testmessage; + productName = testalpha; + productReference = DB166DD516A1D36A00A1396C /* testmessage.app */; + productType = "com.apple.product-type.application"; + }; + DB166DDC16A1D50C00A1396C /* testrelative */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB166DEB16A1D50C00A1396C /* Build configuration list for PBXNativeTarget "testrelative" */; + buildPhases = ( + DB166DDD16A1D50C00A1396C /* Sources */, + DB166DDF16A1D50C00A1396C /* Frameworks */, + F3CB56E42A7897F800766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testrelative; + productName = testalpha; + productReference = DB166DEE16A1D50C00A1396C /* testrelative.app */; + productType = "com.apple.product-type.application"; + }; + DB166DF316A1D57C00A1396C /* testrendercopyex */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB166E0216A1D57C00A1396C /* Build configuration list for PBXNativeTarget "testrendercopyex" */; + buildPhases = ( + DB166DF416A1D57C00A1396C /* Sources */, + DB166DF616A1D57C00A1396C /* Frameworks */, + DB166E2116A1D5DF00A1396C /* CopyFiles */, + F3CB56E72A7897FE00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testrendercopyex; + productName = testalpha; + productReference = DB166E0516A1D57C00A1396C /* testrendercopyex.app */; + productType = "com.apple.product-type.application"; + }; + DB166E0A16A1D5AD00A1396C /* testrendertarget */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB166E1916A1D5AD00A1396C /* Build configuration list for PBXNativeTarget "testrendertarget" */; + buildPhases = ( + DB166E0B16A1D5AD00A1396C /* Sources */, + DB166E0D16A1D5AD00A1396C /* Frameworks */, + DB166E2416A1D61000A1396C /* CopyFiles */, + F3CB56EA2A78980600766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testrendertarget; + productName = testalpha; + productReference = DB166E1C16A1D5AD00A1396C /* testrendertarget.app */; + productType = "com.apple.product-type.application"; + }; + DB166E2716A1D64D00A1396C /* testrumble */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB166E3516A1D64D00A1396C /* Build configuration list for PBXNativeTarget "testrumble" */; + buildPhases = ( + DB166E2816A1D64D00A1396C /* Sources */, + DB166E2A16A1D64D00A1396C /* Frameworks */, + F3CB56F02A78981500766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testrumble; + productName = testalpha; + productReference = DB166E3816A1D64D00A1396C /* testrumble.app */; + productType = "com.apple.product-type.application"; + }; + DB166E3D16A1D69000A1396C /* testscale */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB166E4F16A1D69000A1396C /* Build configuration list for PBXNativeTarget "testscale" */; + buildPhases = ( + DB166E3E16A1D69000A1396C /* Sources */, + DB166E4016A1D69000A1396C /* Frameworks */, + DB166E4C16A1D69000A1396C /* CopyFiles */, + F3CB56F32A78981C00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testscale; + productName = testalpha; + productReference = DB166E5216A1D69000A1396C /* testscale.app */; + productType = "com.apple.product-type.application"; + }; + DB166E5716A1D6F300A1396C /* testshader */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB166E6516A1D6F300A1396C /* Build configuration list for PBXNativeTarget "testshader" */; + buildPhases = ( + DB166E5816A1D6F300A1396C /* Sources */, + DB166E5A16A1D6F300A1396C /* Frameworks */, + F3CB56F92A78982B00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testshader; + productName = testsem; + productReference = DB166E6816A1D6F300A1396C /* testshader.app */; + productType = "com.apple.product-type.application"; + }; + DB166E6D16A1D78400A1396C /* testspriteminimal */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB166E7B16A1D78400A1396C /* Build configuration list for PBXNativeTarget "testspriteminimal" */; + buildPhases = ( + DB166E6E16A1D78400A1396C /* Sources */, + DB166E7016A1D78400A1396C /* Frameworks */, + DB166E9B16A1D7FC00A1396C /* CopyFiles */, + F3CB56FF2A78983C00766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testspriteminimal; + productName = testspriteminimal; + productReference = DB166E7E16A1D78400A1396C /* testspriteminimal.app */; + productType = "com.apple.product-type.application"; + }; + DB166E8016A1D78C00A1396C /* teststreaming */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB166E8E16A1D78C00A1396C /* Build configuration list for PBXNativeTarget "teststreaming" */; + buildPhases = ( + DB166E8116A1D78C00A1396C /* Sources */, + DB166E8316A1D78C00A1396C /* Frameworks */, + DB166E9916A1D7EE00A1396C /* CopyFiles */, + F3CB57022A78984300766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = teststreaming; + productName = teststreaming; + productReference = DB166E9116A1D78C00A1396C /* teststreaming.app */; + productType = "com.apple.product-type.application"; + }; + DB445EE618184B7000B306B0 /* testdropfile */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB445EF518184B7000B306B0 /* Build configuration list for PBXNativeTarget "testdropfile" */; + buildPhases = ( + DB445EE718184B7000B306B0 /* Sources */, + DB445EE918184B7000B306B0 /* Frameworks */, + F3CB56A72A78974800766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testdropfile; + productName = testdropfile; + productReference = DB445EF818184B7000B306B0 /* testdropfile.app */; + productType = "com.apple.product-type.application"; + }; + DB89956D18A19ABA0092407C /* testhotplug */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB89957B18A19ABA0092407C /* Build configuration list for PBXNativeTarget "testhotplug" */; + buildPhases = ( + DB89956E18A19ABA0092407C /* Sources */, + DB89957018A19ABA0092407C /* Frameworks */, + F3CB56BC2A78978800766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testhotplug; + productName = testalpha; + productReference = DB89957E18A19ABA0092407C /* testhotplug.app */; + productType = "com.apple.product-type.application"; + }; + F35E56A2298312CB00A43A5F /* testautomation */ = { + isa = PBXNativeTarget; + buildConfigurationList = F35E56A7298312CB00A43A5F /* Build configuration list for PBXNativeTarget "testautomation" */; + buildPhases = ( + F35E56A3298312CB00A43A5F /* Sources */, + F35E56A5298312CB00A43A5F /* Frameworks */, + F3CB569B2A78972700766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testautomation; + productName = testalpha; + productReference = F35E56AA298312CB00A43A5F /* testautomation.app */; + productType = "com.apple.product-type.application"; + }; + F3C17CDB28E416CF00E1A26D /* testgeometry */ = { + isa = PBXNativeTarget; + buildConfigurationList = F3C17CE828E416D000E1A26D /* Build configuration list for PBXNativeTarget "testgeometry" */; + buildPhases = ( + F3C17CD828E416CF00E1A26D /* Sources */, + F3C17CD928E416CF00E1A26D /* Frameworks */, + F3CB56B32A78976900766177 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = testgeometry; + productName = testgeometry; + productReference = F3C17CDC28E416CF00E1A26D /* testgeometry.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 08FB7793FE84155DC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1400; + LastUpgradeCheck = 0420; + TargetAttributes = { + 0017957410741F7900F5D044 = { + ProvisioningStyle = Automatic; + }; + 00179595107421BF00F5D044 = { + ProvisioningStyle = Automatic; + }; + 0017970910742F3200F5D044 = { + ProvisioningStyle = Automatic; + }; + 00179730107430D600F5D044 = { + ProvisioningStyle = Automatic; + }; + 00179756107431B300F5D044 = { + ProvisioningStyle = Automatic; + }; + 00179776107432AE00F5D044 = { + ProvisioningStyle = Automatic; + }; + 001797961074334C00F5D044 = { + ProvisioningStyle = Automatic; + }; + 001797B8107433C600F5D044 = { + ProvisioningStyle = Automatic; + }; + 001797FA1074355200F5D044 = { + ProvisioningStyle = Automatic; + }; + 001798781074392D00F5D044 = { + ProvisioningStyle = Automatic; + }; + 0017989D107439DF00F5D044 = { + ProvisioningStyle = Automatic; + }; + 001798DA10743BEC00F5D044 = { + ProvisioningStyle = Automatic; + }; + 001798FE10743F1000F5D044 = { + ProvisioningStyle = Automatic; + }; + 0017992010743FB700F5D044 = { + ProvisioningStyle = Automatic; + }; + 002F340109CA1BFF00EBEB88 = { + ProvisioningStyle = Automatic; + }; + 002F342009CA1F0300EBEB88 = { + ProvisioningStyle = Automatic; + }; + 002F343C09CA1FB300EBEB88 = { + ProvisioningStyle = Automatic; + }; + 002F345909CA204F00EBEB88 = { + ProvisioningStyle = Automatic; + }; + 4537749112091504002F0F45 = { + ProvisioningStyle = Automatic; + }; + BBFC08B7164C6862003E6A99 = { + ProvisioningStyle = Automatic; + }; + BEC566AB0761D90300A33029 = { + ProvisioningStyle = Automatic; + }; + BEC566C50761D90300A33029 = { + ProvisioningStyle = Automatic; + }; + BEC566FB0761D90300A33029 = { + ProvisioningStyle = Automatic; + }; + BEC567230761D90400A33029 = { + ProvisioningStyle = Automatic; + }; + BEC5673D0761D90400A33029 = { + ProvisioningStyle = Automatic; + }; + BEC5674A0761D90400A33029 = { + ProvisioningStyle = Automatic; + }; + BEC567720761D90500A33029 = { + ProvisioningStyle = Automatic; + }; + BEC5678D0761D90500A33029 = { + ProvisioningStyle = Automatic; + }; + BEC567A70761D90500A33029 = { + ProvisioningStyle = Automatic; + }; + BEC567EA0761D90600A33029 = { + ProvisioningStyle = Automatic; + }; + DB0F48D917CA51E5008798C5 = { + ProvisioningStyle = Automatic; + }; + DB0F48EF17CA5212008798C5 = { + ProvisioningStyle = Automatic; + }; + DB166DC416A1D36A00A1396C = { + ProvisioningStyle = Automatic; + }; + DB166DDC16A1D50C00A1396C = { + ProvisioningStyle = Automatic; + }; + DB166DF316A1D57C00A1396C = { + ProvisioningStyle = Automatic; + }; + DB166E0A16A1D5AD00A1396C = { + ProvisioningStyle = Automatic; + }; + DB166E2716A1D64D00A1396C = { + ProvisioningStyle = Automatic; + }; + DB166E3D16A1D69000A1396C = { + ProvisioningStyle = Automatic; + }; + DB166E5716A1D6F300A1396C = { + ProvisioningStyle = Automatic; + }; + DB166E6D16A1D78400A1396C = { + ProvisioningStyle = Automatic; + }; + DB166E8016A1D78C00A1396C = { + ProvisioningStyle = Automatic; + }; + DB445EE618184B7000B306B0 = { + ProvisioningStyle = Automatic; + }; + DB89956D18A19ABA0092407C = { + ProvisioningStyle = Automatic; + }; + F35E56A2298312CB00A43A5F = { + ProvisioningStyle = Automatic; + }; + F3C17CDB28E416CF00E1A26D = { + CreatedOnToolsVersion = 14.0.1; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 001B5A0C08BDB826006539E9 /* Build configuration list for PBXProject "SDLTest" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + en, + Base, + ); + mainGroup = 08FB7794FE84155DC02AAC07 /* SDLTest */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 003FA63B093FFD41000C53B3 /* Products */; + ProjectRef = 003FA63A093FFD41000C53B3 /* SDL.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + BEC566920761D90300A33029 /* All */, + DB166D7E16A1D12400A1396C /* SDL3_test */, + BEC566AB0761D90300A33029 /* checkkeys */, + BEC566C50761D90300A33029 /* loopwave */, + 0017957410741F7900F5D044 /* testatomic */, + 00179595107421BF00F5D044 /* testaudioinfo */, + F35E56A2298312CB00A43A5F /* testautomation */, + BBFC08B7164C6862003E6A99 /* testcontroller */, + 00179756107431B300F5D044 /* testdraw */, + DB0F48D917CA51E5008798C5 /* testdrawchessboard */, + DB445EE618184B7000B306B0 /* testdropfile */, + BEC566FB0761D90300A33029 /* testerror */, + 002F340109CA1BFF00EBEB88 /* testfile */, + DB0F48EF17CA5212008798C5 /* testfilesystem */, + F3C17CDB28E416CF00E1A26D /* testgeometry */, + 0017970910742F3200F5D044 /* testgl */, + 00179730107430D600F5D044 /* testhaptic */, + DB89956D18A19ABA0092407C /* testhotplug */, + 002F342009CA1F0300EBEB88 /* testiconv */, + 00179776107432AE00F5D044 /* testime */, + 001797961074334C00F5D044 /* testintersections */, + BEC5673D0761D90400A33029 /* testkeys */, + 001797B8107433C600F5D044 /* testloadso */, + BEC5674A0761D90400A33029 /* testlock */, + DB166DC416A1D36A00A1396C /* testmessage */, + 001797FA1074355200F5D044 /* testmultiaudio */, + 001798781074392D00F5D044 /* testnative */, + 002F343C09CA1FB300EBEB88 /* testoverlay */, + 002F345909CA204F00EBEB88 /* testplatform */, + 0017989D107439DF00F5D044 /* testpower */, + DB166DDC16A1D50C00A1396C /* testrelative */, + DB166DF316A1D57C00A1396C /* testrendercopyex */, + DB166E0A16A1D5AD00A1396C /* testrendertarget */, + 001798DA10743BEC00F5D044 /* testresample */, + DB166E2716A1D64D00A1396C /* testrumble */, + DB166E3D16A1D69000A1396C /* testscale */, + BEC567720761D90500A33029 /* testsem */, + DB166E5716A1D6F300A1396C /* testshader */, + 4537749112091504002F0F45 /* testshape */, + 001798FE10743F1000F5D044 /* testsprite */, + DB166E6D16A1D78400A1396C /* testspriteminimal */, + DB166E8016A1D78C00A1396C /* teststreaming */, + BEC567230761D90400A33029 /* testthread */, + BEC5678D0761D90500A33029 /* testtimer */, + BEC567A70761D90500A33029 /* testversion */, + 0017992010743FB700F5D044 /* testwm */, + BEC567EA0761D90600A33029 /* torturethread */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 003FA643093FFD41000C53B3 /* SDL3.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = SDL3.framework; + remoteRef = 003FA642093FFD41000C53B3 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + F3C17D3828E424B100E1A26D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F3C17D3928E424B800E1A26D /* sample.wav in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F3C17D3A28E4252200E1A26D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F3C17D3B28E4252900E1A26D /* icon.bmp in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0017957910741F7900F5D044 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 001795901074216E00F5D044 /* testatomic.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017959A107421BF00F5D044 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 001795B11074222D00F5D044 /* testaudioinfo.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017970E10742F3200F5D044 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0017972810742FB900F5D044 /* testgl.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 00179735107430D600F5D044 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0017974F1074315700F5D044 /* testhaptic.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017975B107431B300F5D044 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 001797721074320D00F5D044 /* testdraw.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017977B107432AE00F5D044 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 00179792107432FA00F5D044 /* testime.c in Sources */, + F3C17C7C28E40D7400E1A26D /* testutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017979B1074334C00F5D044 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 001797B41074339C00F5D044 /* testintersections.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 001797BD107433C600F5D044 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 001797D41074343E00F5D044 /* testloadso.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 001797FF1074355200F5D044 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 001798161074359B00F5D044 /* testmultiaudio.c in Sources */, + F3C17C7D28E40F9D00E1A26D /* testutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017987E1074392D00F5D044 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0017987F1074392D00F5D044 /* testnative.c in Sources */, + 001798801074392D00F5D044 /* testnativecocoa.m in Sources */, + F3C17C7E28E40FDD00E1A26D /* testutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 001798A2107439DF00F5D044 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 001798BA10743A4900F5D044 /* testpower.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 001798DF10743BEC00F5D044 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 001798FA10743E9200F5D044 /* testresample.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017990310743F1000F5D044 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0017991A10743F5300F5D044 /* testsprite.c in Sources */, + F3C17C8328E4124400E1A26D /* testutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0017992510743FB700F5D044 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0017993C10743FEF00F5D044 /* testwm.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 002F340709CA1BFF00EBEB88 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 002F341809CA1C5B00EBEB88 /* testfile.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 002F342609CA1F0300EBEB88 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 002F343709CA1F6F00EBEB88 /* testiconv.c in Sources */, + F3C17C7B28E40D4E00E1A26D /* testutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 002F344209CA1FB300EBEB88 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 002F345409CA202000EBEB88 /* testoverlay.c in Sources */, + 66E88E8B203B778F0004D44E /* testyuv_cvt.c in Sources */, + F3C17C7F28E4101000E1A26D /* testutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 002F345F09CA204F00EBEB88 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 002F347009CA20A600EBEB88 /* testplatform.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4537748F12091504002F0F45 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 453774A5120915E3002F0F45 /* testshape.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BBFC08BC164C6862003E6A99 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BBFC08D0164C6876003E6A99 /* testcontroller.c in Sources */, + F3C17C7928E40C6E00E1A26D /* testutils.c in Sources */, + F399C64E2A78929400C86979 /* gamepadutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC566B00761D90300A33029 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BEC566B10761D90300A33029 /* checkkeys.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC566CA0761D90300A33029 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BEC566CB0761D90300A33029 /* loopwave.c in Sources */, + F3C17C7728E40BC800E1A26D /* testutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC567000761D90300A33029 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BEC567010761D90300A33029 /* testerror.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC567280761D90400A33029 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BEC567290761D90400A33029 /* testthread.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC567420761D90400A33029 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BEC567430761D90400A33029 /* testkeys.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC5674F0761D90400A33029 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BEC567500761D90400A33029 /* testlock.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC567770761D90500A33029 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BEC567780761D90500A33029 /* testsem.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC567920761D90500A33029 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BEC567930761D90500A33029 /* testtimer.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC567AC0761D90500A33029 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BEC567AD0761D90500A33029 /* testver.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BEC567EF0761D90600A33029 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BEC567F00761D90600A33029 /* torturethread.c in Sources */, + F399C64F2A78929400C86979 /* gamepadutils.c in Sources */, + F399C6522A7892D800C86979 /* testautomation_intrinsics.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB0F48DA17CA51E5008798C5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB0F48EE17CA51F8008798C5 /* testdrawchessboard.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB0F48F017CA5212008798C5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB0F490317CA5225008798C5 /* testfilesystem.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166D7B16A1D12400A1396C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB166D9316A1D1A500A1396C /* SDL_test_assert.c in Sources */, + DB166D9416A1D1A500A1396C /* SDL_test_common.c in Sources */, + DB166D9516A1D1A500A1396C /* SDL_test_compare.c in Sources */, + DB166D9616A1D1A500A1396C /* SDL_test_crc32.c in Sources */, + DB166D9716A1D1A500A1396C /* SDL_test_font.c in Sources */, + DB166D9816A1D1A500A1396C /* SDL_test_fuzzer.c in Sources */, + DB166D9916A1D1A500A1396C /* SDL_test_harness.c in Sources */, + DB166D9F16A1D1A500A1396C /* SDL_test_log.c in Sources */, + DB166DA016A1D1A500A1396C /* SDL_test_md5.c in Sources */, + AAF02FFA1F90092700B9A9FB /* SDL_test_memory.c in Sources */, + DB166DA116A1D1A500A1396C /* SDL_test_random.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166DC516A1D36A00A1396C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB166DD716A1D37800A1396C /* testmessage.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166DDD16A1D50C00A1396C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB166DF016A1D52500A1396C /* testrelative.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166DF416A1D57C00A1396C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB166E0716A1D59400A1396C /* testrendercopyex.c in Sources */, + F3C17C8028E410A400E1A26D /* testutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E0B16A1D5AD00A1396C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB166E1E16A1D5C300A1396C /* testrendertarget.c in Sources */, + F3C17C8128E410C900E1A26D /* testutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E2816A1D64D00A1396C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB166E3C16A1D66500A1396C /* testrumble.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E3E16A1D69000A1396C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB166E5416A1D6A300A1396C /* testscale.c in Sources */, + F3C17C8228E4112900E1A26D /* testutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E5816A1D6F300A1396C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB166E6A16A1D70C00A1396C /* testshader.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E6E16A1D78400A1396C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB166E9316A1D7BC00A1396C /* testspriteminimal.c in Sources */, + F3C17C8428E4126400E1A26D /* testutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB166E8116A1D78C00A1396C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB166E9416A1D7C700A1396C /* teststreaming.c in Sources */, + F3C17C8528E4127D00E1A26D /* testutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB445EE718184B7000B306B0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB445EFB18184BB600B306B0 /* testdropfile.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DB89956E18A19ABA0092407C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + DB89958418A19B130092407C /* testhotplug.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F35E56A3298312CB00A43A5F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F35E56D12983130F00A43A5F /* testautomation_render.c in Sources */, + F399C6512A7892D800C86979 /* testautomation_intrinsics.c in Sources */, + F35E56D22983130F00A43A5F /* testautomation_iostream.c in Sources */, + F35E56E32983130F00A43A5F /* testautomation_surface.c in Sources */, + F35E56DB2983130F00A43A5F /* testautomation_platform.c in Sources */, + F35E56DD2983130F00A43A5F /* testautomation_rect.c in Sources */, + F35E56D52983130F00A43A5F /* testautomation_clipboard.c in Sources */, + F35E56E52983130F00A43A5F /* testautomation_mouse.c in Sources */, + F35E56D72983130F00A43A5F /* testautomation_stdlib.c in Sources */, + F35E56D92983130F00A43A5F /* testautomation_pixels.c in Sources */, + F35E56E42983130F00A43A5F /* testautomation.c in Sources */, + F35E56CF2983130F00A43A5F /* testautomation_main.c in Sources */, + F35E56DE2983130F00A43A5F /* testautomation_joystick.c in Sources */, + F35E56D82983130F00A43A5F /* testautomation_images.c in Sources */, + F35E56DC2983130F00A43A5F /* testautomation_audio.c in Sources */, + F35E56D32983130F00A43A5F /* testautomation_math.c in Sources */, + F35E56E02983130F00A43A5F /* testautomation_sdltest.c in Sources */, + F35E56D42983130F00A43A5F /* testautomation_events.c in Sources */, + F35E56E12983130F00A43A5F /* testautomation_guid.c in Sources */, + F35E56D62983130F00A43A5F /* testautomation_timer.c in Sources */, + F35E56DA2983130F00A43A5F /* testautomation_video.c in Sources */, + F35E56D02983130F00A43A5F /* testautomation_hints.c in Sources */, + F35E56DF2983130F00A43A5F /* testautomation_keyboard.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F3C17CD828E416CF00E1A26D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F3C17CEB28E4177600E1A26D /* testgeometry.c in Sources */, + F3C17CEC28E417EB00E1A26D /* testutils.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 001799481074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BEC566AB0761D90300A33029 /* checkkeys */; + targetProxy = 001799471074403E00F5D044 /* PBXContainerItemProxy */; + }; + 0017994C1074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BEC566C50761D90300A33029 /* loopwave */; + targetProxy = 0017994B1074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799501074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0017957410741F7900F5D044 /* testatomic */; + targetProxy = 0017994F1074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799521074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 00179595107421BF00F5D044 /* testaudioinfo */; + targetProxy = 001799511074403E00F5D044 /* PBXContainerItemProxy */; + }; + 0017995A1074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 00179756107431B300F5D044 /* testdraw */; + targetProxy = 001799591074403E00F5D044 /* PBXContainerItemProxy */; + }; + 0017995E1074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BEC566FB0761D90300A33029 /* testerror */; + targetProxy = 0017995D1074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799601074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 002F340109CA1BFF00EBEB88 /* testfile */; + targetProxy = 0017995F1074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799661074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + platformFilters = ( + macos, + ); + target = 0017970910742F3200F5D044 /* testgl */; + targetProxy = 001799651074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799681074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 00179730107430D600F5D044 /* testhaptic */; + targetProxy = 001799671074403E00F5D044 /* PBXContainerItemProxy */; + }; + 0017996A1074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BEC567230761D90400A33029 /* testthread */; + targetProxy = 001799691074403E00F5D044 /* PBXContainerItemProxy */; + }; + 0017996C1074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 002F342009CA1F0300EBEB88 /* testiconv */; + targetProxy = 0017996B1074403E00F5D044 /* PBXContainerItemProxy */; + }; + 0017996E1074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 00179776107432AE00F5D044 /* testime */; + targetProxy = 0017996D1074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799701074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 001797961074334C00F5D044 /* testintersections */; + targetProxy = 0017996F1074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799741074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BEC5673D0761D90400A33029 /* testkeys */; + targetProxy = 001799731074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799761074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 001797B8107433C600F5D044 /* testloadso */; + targetProxy = 001799751074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799781074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BEC5674A0761D90400A33029 /* testlock */; + targetProxy = 001799771074403E00F5D044 /* PBXContainerItemProxy */; + }; + 0017997C1074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 001797FA1074355200F5D044 /* testmultiaudio */; + targetProxy = 0017997B1074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799801074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + platformFilters = ( + macos, + ); + target = 001798781074392D00F5D044 /* testnative */; + targetProxy = 0017997F1074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799841074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 002F343C09CA1FB300EBEB88 /* testoverlay */; + targetProxy = 001799831074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799881074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 002F345909CA204F00EBEB88 /* testplatform */; + targetProxy = 001799871074403E00F5D044 /* PBXContainerItemProxy */; + }; + 0017998A1074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0017989D107439DF00F5D044 /* testpower */; + targetProxy = 001799891074403E00F5D044 /* PBXContainerItemProxy */; + }; + 0017998C1074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 001798DA10743BEC00F5D044 /* testresample */; + targetProxy = 0017998B1074403E00F5D044 /* PBXContainerItemProxy */; + }; + 0017998E1074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BEC567720761D90500A33029 /* testsem */; + targetProxy = 0017998D1074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799921074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 001798FE10743F1000F5D044 /* testsprite */; + targetProxy = 001799911074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799941074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BEC5678D0761D90500A33029 /* testtimer */; + targetProxy = 001799931074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799961074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BEC567A70761D90500A33029 /* testversion */; + targetProxy = 001799951074403E00F5D044 /* PBXContainerItemProxy */; + }; + 0017999E1074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0017992010743FB700F5D044 /* testwm */; + targetProxy = 0017999D1074403E00F5D044 /* PBXContainerItemProxy */; + }; + 001799A21074403E00F5D044 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BEC567EA0761D90600A33029 /* torturethread */; + targetProxy = 001799A11074403E00F5D044 /* PBXContainerItemProxy */; + }; + DB0F490517CA5249008798C5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DB0F48D917CA51E5008798C5 /* testdrawchessboard */; + targetProxy = DB0F490417CA5249008798C5 /* PBXContainerItemProxy */; + }; + DB0F490717CA5249008798C5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DB0F48EF17CA5212008798C5 /* testfilesystem */; + targetProxy = DB0F490617CA5249008798C5 /* PBXContainerItemProxy */; + }; + DB166D6E16A1CEAA00A1396C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = BBFC08B7164C6862003E6A99 /* testcontroller */; + targetProxy = DB166D6D16A1CEAA00A1396C /* PBXContainerItemProxy */; + }; + DB166D7016A1CEAF00A1396C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4537749112091504002F0F45 /* testshape */; + targetProxy = DB166D6F16A1CEAF00A1396C /* PBXContainerItemProxy */; + }; + DB166DD916A1D38900A1396C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DB166DC416A1D36A00A1396C /* testmessage */; + targetProxy = DB166DD816A1D38900A1396C /* PBXContainerItemProxy */; + }; + DB166DF216A1D53700A1396C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DB166DDC16A1D50C00A1396C /* testrelative */; + targetProxy = DB166DF116A1D53700A1396C /* PBXContainerItemProxy */; + }; + DB166E0916A1D5A400A1396C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DB166DF316A1D57C00A1396C /* testrendercopyex */; + targetProxy = DB166E0816A1D5A400A1396C /* PBXContainerItemProxy */; + }; + DB166E2016A1D5D000A1396C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DB166E0A16A1D5AD00A1396C /* testrendertarget */; + targetProxy = DB166E1F16A1D5D000A1396C /* PBXContainerItemProxy */; + }; + DB166E3B16A1D65A00A1396C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DB166E2716A1D64D00A1396C /* testrumble */; + targetProxy = DB166E3A16A1D65A00A1396C /* PBXContainerItemProxy */; + }; + DB166E5616A1D6B800A1396C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DB166E3D16A1D69000A1396C /* testscale */; + targetProxy = DB166E5516A1D6B800A1396C /* PBXContainerItemProxy */; + }; + DB166E6C16A1D72000A1396C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DB166E5716A1D6F300A1396C /* testshader */; + targetProxy = DB166E6B16A1D72000A1396C /* PBXContainerItemProxy */; + }; + DB166E9616A1D7CD00A1396C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DB166E6D16A1D78400A1396C /* testspriteminimal */; + targetProxy = DB166E9516A1D7CD00A1396C /* PBXContainerItemProxy */; + }; + DB166E9816A1D7CF00A1396C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DB166E8016A1D78C00A1396C /* teststreaming */; + targetProxy = DB166E9716A1D7CF00A1396C /* PBXContainerItemProxy */; + }; + F35E56E72983133F00A43A5F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F35E56A2298312CB00A43A5F /* testautomation */; + targetProxy = F35E56E62983133F00A43A5F /* PBXContainerItemProxy */; + }; + F3E1F7FF2A78C3AD00AC76D3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DB89956D18A19ABA0092407C /* testhotplug */; + targetProxy = F3E1F7FE2A78C3AD00AC76D3 /* PBXContainerItemProxy */; + }; + F3E1F8012A78C3BE00AC76D3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = DB445EE618184B7000B306B0 /* testdropfile */; + targetProxy = F3E1F8002A78C3BE00AC76D3 /* PBXContainerItemProxy */; + }; + F3E1F8032A78C3C500AC76D3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = F3C17CDB28E416CF00E1A26D /* testgeometry */; + targetProxy = F3E1F8022A78C3C500AC76D3 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 0017958910741F7900F5D044 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testatomic; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 0017958A10741F7900F5D044 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testatomic; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 001795AA107421BF00F5D044 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testaudioinfo; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 001795AB107421BF00F5D044 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testaudioinfo; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 0017971E10742F3200F5D044 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + GCC_PREPROCESSOR_DEFINITIONS = HAVE_OPENGL; + PRODUCT_NAME = testgl; + PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = macosx; + }; + name = Debug; + }; + 0017971F10742F3200F5D044 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + GCC_PREPROCESSOR_DEFINITIONS = HAVE_OPENGL; + PRODUCT_NAME = testgl; + PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = macosx; + }; + name = Release; + }; + 00179745107430D600F5D044 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testhaptic; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 00179746107430D600F5D044 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testhaptic; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 0017976B107431B300F5D044 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testdraw; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 0017976C107431B300F5D044 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testdraw; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 0017978B107432AE00F5D044 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testime; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 0017978C107432AE00F5D044 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testime; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 001797AB1074334C00F5D044 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testintersections; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 001797AC1074334C00F5D044 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testintersections; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 001797CD107433C600F5D044 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testloadso; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 001797CE107433C600F5D044 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testloadso; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 0017980F1074355200F5D044 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testmultiaudio; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 001798101074355200F5D044 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testmultiaudio; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 001798911074392D00F5D044 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testnative; + PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = macosx; + }; + name = Debug; + }; + 001798921074392D00F5D044 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testnative; + PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = macosx; + }; + name = Release; + }; + 001798B2107439DF00F5D044 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testpower; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 001798B3107439DF00F5D044 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testpower; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 001798EF10743BEC00F5D044 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testresample; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 001798F010743BEC00F5D044 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testresample; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 0017991310743F1000F5D044 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testsprite; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 0017991410743F1000F5D044 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testsprite; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 0017993510743FB700F5D044 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testwm; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 0017993610743FB700F5D044 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testwm; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 002A85B21073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F3C17C6A28E3FD4400E1A26D /* config.xcconfig */; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_TESTABILITY = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ../../include; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.9; + MARKETING_VERSION = 1.0; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "$(CONFIG_FRAMEWORK_LDFLAGS)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.libsdl.$(PRODUCT_NAME)"; + SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = NO; + TARGETED_DEVICE_FAMILY = "1,2,3"; + TVOS_DEPLOYMENT_TARGET = 9.0; + }; + name = Debug; + }; + 002A85B31073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "Build All"; + }; + name = Debug; + }; + 002A85B41073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = checkkeys; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 002A85B61073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = loopwave; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 002A85BC1073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testerror; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 002A85BD1073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testfile; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 002A85C01073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testiconv; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 002A85C21073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testkeys; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 002A85C31073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testlock; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 002A85C51073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testoverlay; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 002A85C71073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testplatform; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 002A85C81073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testsem; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 002A85CA1073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testthread; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 002A85CB1073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testtimer; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 002A85CC1073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testversion; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 002A85D11073008E007319AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = torturethread; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 002A85D41073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F3C17C6A28E3FD4400E1A26D /* config.xcconfig */; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEPLOYMENT_POSTPROCESSING = YES; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + GENERATE_INFOPLIST_FILE = YES; + HEADER_SEARCH_PATHS = ../../include; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.9; + MARKETING_VERSION = 1.0; + OTHER_LDFLAGS = "$(CONFIG_FRAMEWORK_LDFLAGS)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.libsdl.$(PRODUCT_NAME)"; + SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = NO; + TARGETED_DEVICE_FAMILY = "1,2,3"; + TVOS_DEPLOYMENT_TARGET = 9.0; + }; + name = Release; + }; + 002A85D51073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "Build All"; + }; + name = Release; + }; + 002A85D61073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = checkkeys; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 002A85D81073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = loopwave; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 002A85DE1073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testerror; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 002A85DF1073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testfile; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 002A85E21073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testiconv; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 002A85E41073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testkeys; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 002A85E51073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testlock; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 002A85E71073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testoverlay; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 002A85E91073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testplatform; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 002A85EA1073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testsem; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 002A85EC1073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testthread; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 002A85ED1073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testtimer; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 002A85EE1073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testversion; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 002A85F31073009D007319AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = torturethread; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + 4537749712091509002F0F45 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testshape; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + 4537749812091509002F0F45 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testshape; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + BBFC08CB164C6862003E6A99 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "Steam Controller support"; + PRODUCT_NAME = testcontroller; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + BBFC08CC164C6862003E6A99 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "Steam Controller support"; + PRODUCT_NAME = testcontroller; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + DB0F48EA17CA51E5008798C5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testdrawchessboard; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + DB0F48EB17CA51E5008798C5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testdrawchessboard; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + DB0F48FF17CA5212008798C5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testfilesystem; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + DB0F490017CA5212008798C5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testfilesystem; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + DB166D8116A1D12400A1396C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + EXECUTABLE_PREFIX = lib; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + }; + name = Debug; + }; + DB166D8216A1D12400A1396C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; + EXECUTABLE_PREFIX = lib; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "watchsimulator watchos macosx iphonesimulator iphoneos driverkit appletvsimulator appletvos"; + SUPPORTS_MACCATALYST = YES; + }; + name = Release; + }; + DB166DD316A1D36A00A1396C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testmessage; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + DB166DD416A1D36A00A1396C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testmessage; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + DB166DEC16A1D50C00A1396C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testrelative; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + DB166DED16A1D50C00A1396C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testrelative; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + DB166E0316A1D57C00A1396C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testrendercopyex; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + DB166E0416A1D57C00A1396C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testrendercopyex; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + DB166E1A16A1D5AD00A1396C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testrendertarget; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + DB166E1B16A1D5AD00A1396C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testrendertarget; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + DB166E3616A1D64D00A1396C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testrumble; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + DB166E3716A1D64D00A1396C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testrumble; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + DB166E5016A1D69000A1396C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testscale; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + DB166E5116A1D69000A1396C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testscale; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + DB166E6616A1D6F300A1396C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testshader; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + DB166E6716A1D6F300A1396C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testshader; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + DB166E7C16A1D78400A1396C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testspriteminimal; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + DB166E7D16A1D78400A1396C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testspriteminimal; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + DB166E8F16A1D78C00A1396C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = teststreaming; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + DB166E9016A1D78C00A1396C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = teststreaming; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + DB445EF618184B7000B306B0 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testdropfile; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + DB445EF718184B7000B306B0 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testdropfile; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + DB89957C18A19ABA0092407C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testhotplug; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + DB89957D18A19ABA0092407C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = testhotplug; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + F35E56A8298312CB00A43A5F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + F35E56A9298312CB00A43A5F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; + F3C17CE928E416D000E1A26D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Debug; + }; + F3C17CEA28E416D000E1A26D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0017958610741F7900F5D044 /* Build configuration list for PBXNativeTarget "testatomic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0017958910741F7900F5D044 /* Debug */, + 0017958A10741F7900F5D044 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001795A7107421BF00F5D044 /* Build configuration list for PBXNativeTarget "testaudioinfo" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 001795AA107421BF00F5D044 /* Debug */, + 001795AB107421BF00F5D044 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 0017971B10742F3200F5D044 /* Build configuration list for PBXNativeTarget "testgl" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0017971E10742F3200F5D044 /* Debug */, + 0017971F10742F3200F5D044 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 00179742107430D600F5D044 /* Build configuration list for PBXNativeTarget "testhaptic" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 00179745107430D600F5D044 /* Debug */, + 00179746107430D600F5D044 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 00179768107431B300F5D044 /* Build configuration list for PBXNativeTarget "testdraw" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0017976B107431B300F5D044 /* Debug */, + 0017976C107431B300F5D044 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 00179788107432AE00F5D044 /* Build configuration list for PBXNativeTarget "testime" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0017978B107432AE00F5D044 /* Debug */, + 0017978C107432AE00F5D044 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001797A81074334C00F5D044 /* Build configuration list for PBXNativeTarget "testintersections" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 001797AB1074334C00F5D044 /* Debug */, + 001797AC1074334C00F5D044 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001797CA107433C600F5D044 /* Build configuration list for PBXNativeTarget "testloadso" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 001797CD107433C600F5D044 /* Debug */, + 001797CE107433C600F5D044 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 0017980C1074355200F5D044 /* Build configuration list for PBXNativeTarget "testmultiaudio" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0017980F1074355200F5D044 /* Debug */, + 001798101074355200F5D044 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 0017988E1074392D00F5D044 /* Build configuration list for PBXNativeTarget "testnative" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 001798911074392D00F5D044 /* Debug */, + 001798921074392D00F5D044 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001798AF107439DF00F5D044 /* Build configuration list for PBXNativeTarget "testpower" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 001798B2107439DF00F5D044 /* Debug */, + 001798B3107439DF00F5D044 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001798EC10743BEC00F5D044 /* Build configuration list for PBXNativeTarget "testresample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 001798EF10743BEC00F5D044 /* Debug */, + 001798F010743BEC00F5D044 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 0017991010743F1000F5D044 /* Build configuration list for PBXNativeTarget "testsprite" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0017991310743F1000F5D044 /* Debug */, + 0017991410743F1000F5D044 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 0017993210743FB700F5D044 /* Build configuration list for PBXNativeTarget "testwm" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0017993510743FB700F5D044 /* Debug */, + 0017993610743FB700F5D044 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001B593808BDB826006539E9 /* Build configuration list for PBXNativeTarget "checkkeys" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85B41073008E007319AE /* Debug */, + 002A85D61073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001B594008BDB826006539E9 /* Build configuration list for PBXNativeTarget "loopwave" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85B61073008E007319AE /* Debug */, + 002A85D81073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001B595008BDB826006539E9 /* Build configuration list for PBXNativeTarget "testerror" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85BC1073008E007319AE /* Debug */, + 002A85DE1073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001B595C08BDB826006539E9 /* Build configuration list for PBXNativeTarget "testthread" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85CA1073008E007319AE /* Debug */, + 002A85EC1073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001B596408BDB826006539E9 /* Build configuration list for PBXNativeTarget "testkeys" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85C21073008E007319AE /* Debug */, + 002A85E41073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001B596808BDB826006539E9 /* Build configuration list for PBXNativeTarget "testlock" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85C31073008E007319AE /* Debug */, + 002A85E51073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001B597008BDB826006539E9 /* Build configuration list for PBXNativeTarget "testsem" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85C81073008E007319AE /* Debug */, + 002A85EA1073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001B597808BDB826006539E9 /* Build configuration list for PBXNativeTarget "testtimer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85CB1073008E007319AE /* Debug */, + 002A85ED1073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001B598008BDB826006539E9 /* Build configuration list for PBXNativeTarget "testversion" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85CC1073008E007319AE /* Debug */, + 002A85EE1073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001B599408BDB826006539E9 /* Build configuration list for PBXNativeTarget "torturethread" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85D11073008E007319AE /* Debug */, + 002A85F31073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001B599808BDB826006539E9 /* Build configuration list for PBXAggregateTarget "All" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85B31073008E007319AE /* Debug */, + 002A85D51073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 001B5A0C08BDB826006539E9 /* Build configuration list for PBXProject "SDLTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85B21073008E007319AE /* Debug */, + 002A85D41073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 002F340E09CA1BFF00EBEB88 /* Build configuration list for PBXNativeTarget "testfile" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85BD1073008E007319AE /* Debug */, + 002A85DF1073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 002F342D09CA1F0300EBEB88 /* Build configuration list for PBXNativeTarget "testiconv" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85C01073008E007319AE /* Debug */, + 002A85E21073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 002F344909CA1FB300EBEB88 /* Build configuration list for PBXNativeTarget "testoverlay" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85C51073008E007319AE /* Debug */, + 002A85E71073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 002F346609CA204F00EBEB88 /* Build configuration list for PBXNativeTarget "testplatform" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 002A85C71073008E007319AE /* Debug */, + 002A85E91073009D007319AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + 4537749A1209150C002F0F45 /* Build configuration list for PBXNativeTarget "testshape" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4537749712091509002F0F45 /* Debug */, + 4537749812091509002F0F45 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + BBFC08CA164C6862003E6A99 /* Build configuration list for PBXNativeTarget "testcontroller" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BBFC08CB164C6862003E6A99 /* Debug */, + BBFC08CC164C6862003E6A99 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DB0F48E917CA51E5008798C5 /* Build configuration list for PBXNativeTarget "testdrawchessboard" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB0F48EA17CA51E5008798C5 /* Debug */, + DB0F48EB17CA51E5008798C5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DB0F48FE17CA5212008798C5 /* Build configuration list for PBXNativeTarget "testfilesystem" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB0F48FF17CA5212008798C5 /* Debug */, + DB0F490017CA5212008798C5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DB166D8016A1D12400A1396C /* Build configuration list for PBXNativeTarget "SDL3_test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB166D8116A1D12400A1396C /* Debug */, + DB166D8216A1D12400A1396C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DB166DD216A1D36A00A1396C /* Build configuration list for PBXNativeTarget "testmessage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB166DD316A1D36A00A1396C /* Debug */, + DB166DD416A1D36A00A1396C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DB166DEB16A1D50C00A1396C /* Build configuration list for PBXNativeTarget "testrelative" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB166DEC16A1D50C00A1396C /* Debug */, + DB166DED16A1D50C00A1396C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DB166E0216A1D57C00A1396C /* Build configuration list for PBXNativeTarget "testrendercopyex" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB166E0316A1D57C00A1396C /* Debug */, + DB166E0416A1D57C00A1396C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DB166E1916A1D5AD00A1396C /* Build configuration list for PBXNativeTarget "testrendertarget" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB166E1A16A1D5AD00A1396C /* Debug */, + DB166E1B16A1D5AD00A1396C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DB166E3516A1D64D00A1396C /* Build configuration list for PBXNativeTarget "testrumble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB166E3616A1D64D00A1396C /* Debug */, + DB166E3716A1D64D00A1396C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DB166E4F16A1D69000A1396C /* Build configuration list for PBXNativeTarget "testscale" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB166E5016A1D69000A1396C /* Debug */, + DB166E5116A1D69000A1396C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DB166E6516A1D6F300A1396C /* Build configuration list for PBXNativeTarget "testshader" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB166E6616A1D6F300A1396C /* Debug */, + DB166E6716A1D6F300A1396C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DB166E7B16A1D78400A1396C /* Build configuration list for PBXNativeTarget "testspriteminimal" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB166E7C16A1D78400A1396C /* Debug */, + DB166E7D16A1D78400A1396C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DB166E8E16A1D78C00A1396C /* Build configuration list for PBXNativeTarget "teststreaming" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB166E8F16A1D78C00A1396C /* Debug */, + DB166E9016A1D78C00A1396C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DB445EF518184B7000B306B0 /* Build configuration list for PBXNativeTarget "testdropfile" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB445EF618184B7000B306B0 /* Debug */, + DB445EF718184B7000B306B0 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + DB89957B18A19ABA0092407C /* Build configuration list for PBXNativeTarget "testhotplug" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DB89957C18A19ABA0092407C /* Debug */, + DB89957D18A19ABA0092407C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + F35E56A7298312CB00A43A5F /* Build configuration list for PBXNativeTarget "testautomation" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F35E56A8298312CB00A43A5F /* Debug */, + F35E56A9298312CB00A43A5F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; + F3C17CE828E416D000E1A26D /* Build configuration list for PBXNativeTarget "testgeometry" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F3C17CE928E416D000E1A26D /* Debug */, + F3C17CEA28E416D000E1A26D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Debug; + }; +/* End XCConfigurationList section */ + }; + rootObject = 08FB7793FE84155DC02AAC07 /* Project object */; +} diff --git a/extern/SDL3-3.1.0/Xcode/SDLTest/config.xcconfig b/extern/SDL3-3.1.0/Xcode/SDLTest/config.xcconfig new file mode 100644 index 0000000..6447922 --- /dev/null +++ b/extern/SDL3-3.1.0/Xcode/SDLTest/config.xcconfig @@ -0,0 +1,14 @@ +// +// config.xcconfig +// SDL tests +// + +// Configuration settings file format documentation can be found at: +// https://help.apple.com/xcode/#/dev745c5c974 + +// Include any optional config for this build +// This allows you to set DEVELOPMENT_TEAM for all targets, for example. +#include? "build.xcconfig" + +CONFIG_FRAMEWORK_LDFLAGS = -lSDL3_test + diff --git a/extern/SDL3-3.1.0/Xcode/XcodeDocSet/Doxyfile b/extern/SDL3-3.1.0/Xcode/XcodeDocSet/Doxyfile new file mode 100644 index 0000000..961ac98 --- /dev/null +++ b/extern/SDL3-3.1.0/Xcode/XcodeDocSet/Doxyfile @@ -0,0 +1,1558 @@ +# Doxyfile 1.6.1 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = SDL + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = 1.3.0 + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = NO + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = YES + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = YES + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it parses. +# With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this tag. +# The format is ext=language, where ext is a file extension, and language is one of +# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, +# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat +# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran), +# use: inc=Fortran f=C. Note that for custom extensions you also need to set +# FILE_PATTERNS otherwise the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = YES + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = NO + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespace are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = NO + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# If the sources in your project are distributed over multiple directories +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy +# in the documentation. The default is NO. + +SHOW_DIRECTORIES = NO + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = NO + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by +# doxygen. The layout file controls the global structure of the generated output files +# in an output format independent way. The create the layout file that represents +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a +# file name after the option, if omitted DoxygenLayout.xml will be used as the name +# of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = YES + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be abled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = ../../include + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.py \ + *.f90 \ + *.f \ + *.vhd \ + *.vhdl + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix filesystem feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER +# is applied to all files. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information. + +GENERATE_DOCSET = YES + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs for SDL" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.libsdl.sdl + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = SDL.chm + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = "C:/Program Files/HTML Help Workshop/hhc.exe" + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = YES + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER +# are set, an additional index file will be generated that can be used as input for +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated +# HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add. +# For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's +# filter section matches. +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. +# If the tag value is set to YES, a side panel will be generated +# containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). +# Windows users are probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, +# and Class Hierarchy pages using a tree view instead of an ordered list. + +USE_INLINE_TREES = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# When the SEARCHENGINE tag is enable doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP) or Qt help (GENERATE_QHP) +# there is already a search function so this one should typically +# be disabled. + +SEARCHENGINE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = NO + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = YES + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = YES + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = NO + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = DECLSPEC \ + SDLCALL + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse +# the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option is superseded by the HAVE_DOT option below. This is only a +# fallback. It is recommended to install and use dot, since it yields more +# powerful graphs. + +CLASS_DIAGRAMS = NO + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# By default doxygen will write a font called FreeSans.ttf to the output +# directory and reference it in all dot files that doxygen generates. This +# font does not include all possible unicode characters however, so when you need +# these (or just want a differently looking font) you can specify the font name +# using DOT_FONTNAME. You need need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = FreeSans + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = /Applications/Graphviz.app/Contents/MacOS + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 67 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 2 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = NO + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/extern/SDL3-3.1.0/android-project/app/build.gradle b/extern/SDL3-3.1.0/android-project/app/build.gradle new file mode 100644 index 0000000..8dac6e0 --- /dev/null +++ b/extern/SDL3-3.1.0/android-project/app/build.gradle @@ -0,0 +1,76 @@ +def buildAsLibrary = project.hasProperty('BUILD_AS_LIBRARY'); +def buildAsApplication = !buildAsLibrary +if (buildAsApplication) { + apply plugin: 'com.android.application' +} +else { + apply plugin: 'com.android.library' +} + +android { + if (buildAsApplication) { + namespace "org.libsdl.app" + } + compileSdkVersion 34 + defaultConfig { + minSdkVersion 19 + targetSdkVersion 34 + versionCode 1 + versionName "1.0" + externalNativeBuild { + ndkBuild { + arguments "APP_PLATFORM=android-19" + // abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' + abiFilters 'arm64-v8a' + } + cmake { + arguments "-DANDROID_APP_PLATFORM=android-19", "-DANDROID_STL=c++_static" + // abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' + abiFilters 'arm64-v8a' + } + } + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + applicationVariants.all { variant -> + tasks["merge${variant.name.capitalize()}Assets"] + .dependsOn("externalNativeBuild${variant.name.capitalize()}") + } + if (!project.hasProperty('EXCLUDE_NATIVE_LIBS')) { + sourceSets.main { + jniLibs.srcDir 'libs' + } + externalNativeBuild { + ndkBuild { + path 'jni/Android.mk' + } + // cmake { + // path 'jni/CMakeLists.txt' + // } + } + + } + lint { + abortOnError false + } + + if (buildAsLibrary) { + libraryVariants.all { variant -> + variant.outputs.each { output -> + def outputFile = output.outputFile + if (outputFile != null && outputFile.name.endsWith(".aar")) { + def fileName = "org.libsdl.app.aar"; + output.outputFile = new File(outputFile.parent, fileName); + } + } + } + } +} + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') +} diff --git a/extern/SDL3-3.1.0/android-project/app/jni/Android.mk b/extern/SDL3-3.1.0/android-project/app/jni/Android.mk new file mode 100644 index 0000000..5053e7d --- /dev/null +++ b/extern/SDL3-3.1.0/android-project/app/jni/Android.mk @@ -0,0 +1 @@ +include $(call all-subdir-makefiles) diff --git a/extern/SDL3-3.1.0/android-project/app/jni/Application.mk b/extern/SDL3-3.1.0/android-project/app/jni/Application.mk new file mode 100644 index 0000000..023bc20 --- /dev/null +++ b/extern/SDL3-3.1.0/android-project/app/jni/Application.mk @@ -0,0 +1,10 @@ + +# Uncomment this if you're using STL in your project +# You can find more information here: +# https://developer.android.com/ndk/guides/cpp-support +# APP_STL := c++_shared + +APP_ABI := armeabi-v7a arm64-v8a x86 x86_64 + +# Min runtime API level +APP_PLATFORM=android-16 diff --git a/extern/SDL3-3.1.0/android-project/app/jni/CMakeLists.txt b/extern/SDL3-3.1.0/android-project/app/jni/CMakeLists.txt new file mode 100644 index 0000000..3d49cf3 --- /dev/null +++ b/extern/SDL3-3.1.0/android-project/app/jni/CMakeLists.txt @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.6) + +project(GAME) + +# armeabi-v7a requires cpufeatures library +# include(AndroidNdkModules) +# android_ndk_import_module_cpufeatures() + + +# SDL sources are in a subfolder named "SDL" +add_subdirectory(SDL) + +# Compilation of companion libraries +#add_subdirectory(SDL_image) +#add_subdirectory(SDL_mixer) +#add_subdirectory(SDL_ttf) + +# Your game and its CMakeLists.txt are in a subfolder named "src" +add_subdirectory(src) + diff --git a/extern/SDL3-3.1.0/android-project/app/jni/src/Android.mk b/extern/SDL3-3.1.0/android-project/app/jni/src/Android.mk new file mode 100644 index 0000000..982f661 --- /dev/null +++ b/extern/SDL3-3.1.0/android-project/app/jni/src/Android.mk @@ -0,0 +1,18 @@ +LOCAL_PATH := $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_MODULE := main + +SDL_PATH := ../SDL + +LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/include + +# Add your application source files here... +LOCAL_SRC_FILES := YourSourceHere.c + +LOCAL_SHARED_LIBRARIES := SDL3 + +LOCAL_LDLIBS := -lGLESv1_CM -lGLESv2 -lOpenSLES -llog -landroid + +include $(BUILD_SHARED_LIBRARY) diff --git a/extern/SDL3-3.1.0/android-project/app/jni/src/CMakeLists.txt b/extern/SDL3-3.1.0/android-project/app/jni/src/CMakeLists.txt new file mode 100644 index 0000000..aaac0c8 --- /dev/null +++ b/extern/SDL3-3.1.0/android-project/app/jni/src/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 3.6) + +project(MY_APP) + +find_library(SDL3 SDL3) + +add_library(main SHARED) + +target_sources(main PRIVATE YourSourceHere.c) + +target_link_libraries(main SDL3) + + diff --git a/extern/SDL3-3.1.0/android-project/app/proguard-rules.pro b/extern/SDL3-3.1.0/android-project/app/proguard-rules.pro new file mode 100644 index 0000000..0cb79dc --- /dev/null +++ b/extern/SDL3-3.1.0/android-project/app/proguard-rules.pro @@ -0,0 +1,85 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in [sdk]/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +-keep,includedescriptorclasses,allowoptimization class org.libsdl.app.SDLActivity { + void manualBackButton(); + boolean setActivityTitle(java.lang.String); + void setWindowStyle(boolean); + void setOrientation(int, int, boolean, java.lang.String); + void minimizeWindow(); + boolean shouldMinimizeOnFocusLoss(); + boolean isScreenKeyboardShown(); + boolean supportsRelativeMouse(); + boolean setRelativeMouseEnabled(boolean); + boolean sendMessage(int, int); + android.content.Context getContext(); + boolean isAndroidTV(); + boolean isTablet(); + boolean isChromebook(); + boolean isDeXMode(); + boolean getManifestEnvironmentVariables(); + boolean showTextInput(int, int, int, int); + android.view.Surface getNativeSurface(); + void initTouch(); + int messageboxShowMessageBox(int, java.lang.String, java.lang.String, int[], int[], java.lang.String[], int[]); + boolean clipboardHasText(); + java.lang.String clipboardGetText(); + void clipboardSetText(java.lang.String); + int createCustomCursor(int[], int, int, int, int); + void destroyCustomCursor(int); + boolean setCustomCursor(int); + boolean setSystemCursor(int); + void requestPermission(java.lang.String, int); + int openURL(java.lang.String); + int showToast(java.lang.String, int, int, int, int); + native java.lang.String nativeGetHint(java.lang.String); +} + +-keep,includedescriptorclasses,allowoptimization class org.libsdl.app.HIDDeviceManager { + boolean initialize(boolean, boolean); + boolean openDevice(int); + int writeReport(int, byte[], boolean); + boolean readReport(int, byte[], boolean); + void closeDevice(int); +} + +-keep,includedescriptorclasses,allowoptimization class org.libsdl.app.SDLAudioManager { + void registerAudioDeviceCallback(); + void unregisterAudioDeviceCallback(); + int[] audioOpen(int, int, int, int, int); + void audioWriteFloatBuffer(float[]); + void audioWriteShortBuffer(short[]); + void audioWriteByteBuffer(byte[]); + int[] captureOpen(int, int, int, int, int); + int captureReadFloatBuffer(float[], boolean); + int captureReadShortBuffer(short[], boolean); + int captureReadByteBuffer(byte[], boolean); + void audioClose(); + void captureClose(); + void audioSetThreadPriority(boolean, int); + int nativeSetupJNI(); + void removeAudioDevice(boolean, int); + void addAudioDevice(boolean, java.lang.String, int); +} + +-keep,includedescriptorclasses,allowoptimization class org.libsdl.app.SDLControllerManager { + void pollInputDevices(); + void pollHapticDevices(); + void hapticRun(int, float, int); + void hapticStop(int); +} diff --git a/extern/SDL3-3.1.0/android-project/app/src/main/AndroidManifest.xml b/extern/SDL3-3.1.0/android-project/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..9b0a816 --- /dev/null +++ b/extern/SDL3-3.1.0/android-project/app/src/main/AndroidManifest.xml @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDevice.java b/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDevice.java new file mode 100644 index 0000000..f960953 --- /dev/null +++ b/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDevice.java @@ -0,0 +1,21 @@ +package org.libsdl.app; + +import android.hardware.usb.UsbDevice; + +interface HIDDevice +{ + public int getId(); + public int getVendorId(); + public int getProductId(); + public String getSerialNumber(); + public int getVersion(); + public String getManufacturerName(); + public String getProductName(); + public UsbDevice getDevice(); + public boolean open(); + public int writeReport(byte[] report, boolean feature); + public boolean readReport(byte[] report, boolean feature); + public void setFrozen(boolean frozen); + public void close(); + public void shutdown(); +} diff --git a/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java b/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java new file mode 100644 index 0000000..a7b85d0 --- /dev/null +++ b/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java @@ -0,0 +1,645 @@ +package org.libsdl.app; + +import android.content.Context; +import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothGatt; +import android.bluetooth.BluetoothGattCallback; +import android.bluetooth.BluetoothGattCharacteristic; +import android.bluetooth.BluetoothGattDescriptor; +import android.bluetooth.BluetoothManager; +import android.bluetooth.BluetoothProfile; +import android.bluetooth.BluetoothGattService; +import android.hardware.usb.UsbDevice; +import android.os.Handler; +import android.os.Looper; +import android.util.Log; +import android.os.*; + +//import com.android.internal.util.HexDump; + +import java.lang.Runnable; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.UUID; + +class HIDDeviceBLESteamController extends BluetoothGattCallback implements HIDDevice { + + private static final String TAG = "hidapi"; + private HIDDeviceManager mManager; + private BluetoothDevice mDevice; + private int mDeviceId; + private BluetoothGatt mGatt; + private boolean mIsRegistered = false; + private boolean mIsConnected = false; + private boolean mIsChromebook = false; + private boolean mIsReconnecting = false; + private boolean mFrozen = false; + private LinkedList mOperations; + GattOperation mCurrentOperation = null; + private Handler mHandler; + + private static final int TRANSPORT_AUTO = 0; + private static final int TRANSPORT_BREDR = 1; + private static final int TRANSPORT_LE = 2; + + private static final int CHROMEBOOK_CONNECTION_CHECK_INTERVAL = 10000; + + static public final UUID steamControllerService = UUID.fromString("100F6C32-1735-4313-B402-38567131E5F3"); + static public final UUID inputCharacteristic = UUID.fromString("100F6C33-1735-4313-B402-38567131E5F3"); + static public final UUID reportCharacteristic = UUID.fromString("100F6C34-1735-4313-B402-38567131E5F3"); + static private final byte[] enterValveMode = new byte[] { (byte)0xC0, (byte)0x87, 0x03, 0x08, 0x07, 0x00 }; + + static class GattOperation { + private enum Operation { + CHR_READ, + CHR_WRITE, + ENABLE_NOTIFICATION + } + + Operation mOp; + UUID mUuid; + byte[] mValue; + BluetoothGatt mGatt; + boolean mResult = true; + + private GattOperation(BluetoothGatt gatt, GattOperation.Operation operation, UUID uuid) { + mGatt = gatt; + mOp = operation; + mUuid = uuid; + } + + private GattOperation(BluetoothGatt gatt, GattOperation.Operation operation, UUID uuid, byte[] value) { + mGatt = gatt; + mOp = operation; + mUuid = uuid; + mValue = value; + } + + public void run() { + // This is executed in main thread + BluetoothGattCharacteristic chr; + + switch (mOp) { + case CHR_READ: + chr = getCharacteristic(mUuid); + //Log.v(TAG, "Reading characteristic " + chr.getUuid()); + if (!mGatt.readCharacteristic(chr)) { + Log.e(TAG, "Unable to read characteristic " + mUuid.toString()); + mResult = false; + break; + } + mResult = true; + break; + case CHR_WRITE: + chr = getCharacteristic(mUuid); + //Log.v(TAG, "Writing characteristic " + chr.getUuid() + " value=" + HexDump.toHexString(value)); + chr.setValue(mValue); + if (!mGatt.writeCharacteristic(chr)) { + Log.e(TAG, "Unable to write characteristic " + mUuid.toString()); + mResult = false; + break; + } + mResult = true; + break; + case ENABLE_NOTIFICATION: + chr = getCharacteristic(mUuid); + //Log.v(TAG, "Writing descriptor of " + chr.getUuid()); + if (chr != null) { + BluetoothGattDescriptor cccd = chr.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb")); + if (cccd != null) { + int properties = chr.getProperties(); + byte[] value; + if ((properties & BluetoothGattCharacteristic.PROPERTY_NOTIFY) == BluetoothGattCharacteristic.PROPERTY_NOTIFY) { + value = BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE; + } else if ((properties & BluetoothGattCharacteristic.PROPERTY_INDICATE) == BluetoothGattCharacteristic.PROPERTY_INDICATE) { + value = BluetoothGattDescriptor.ENABLE_INDICATION_VALUE; + } else { + Log.e(TAG, "Unable to start notifications on input characteristic"); + mResult = false; + return; + } + + mGatt.setCharacteristicNotification(chr, true); + cccd.setValue(value); + if (!mGatt.writeDescriptor(cccd)) { + Log.e(TAG, "Unable to write descriptor " + mUuid.toString()); + mResult = false; + return; + } + mResult = true; + } + } + } + } + + public boolean finish() { + return mResult; + } + + private BluetoothGattCharacteristic getCharacteristic(UUID uuid) { + BluetoothGattService valveService = mGatt.getService(steamControllerService); + if (valveService == null) + return null; + return valveService.getCharacteristic(uuid); + } + + static public GattOperation readCharacteristic(BluetoothGatt gatt, UUID uuid) { + return new GattOperation(gatt, Operation.CHR_READ, uuid); + } + + static public GattOperation writeCharacteristic(BluetoothGatt gatt, UUID uuid, byte[] value) { + return new GattOperation(gatt, Operation.CHR_WRITE, uuid, value); + } + + static public GattOperation enableNotification(BluetoothGatt gatt, UUID uuid) { + return new GattOperation(gatt, Operation.ENABLE_NOTIFICATION, uuid); + } + } + + public HIDDeviceBLESteamController(HIDDeviceManager manager, BluetoothDevice device) { + mManager = manager; + mDevice = device; + mDeviceId = mManager.getDeviceIDForIdentifier(getIdentifier()); + mIsRegistered = false; + mIsChromebook = mManager.getContext().getPackageManager().hasSystemFeature("org.chromium.arc.device_management"); + mOperations = new LinkedList(); + mHandler = new Handler(Looper.getMainLooper()); + + mGatt = connectGatt(); + // final HIDDeviceBLESteamController finalThis = this; + // mHandler.postDelayed(new Runnable() { + // @Override + // public void run() { + // finalThis.checkConnectionForChromebookIssue(); + // } + // }, CHROMEBOOK_CONNECTION_CHECK_INTERVAL); + } + + public String getIdentifier() { + return String.format("SteamController.%s", mDevice.getAddress()); + } + + public BluetoothGatt getGatt() { + return mGatt; + } + + // Because on Chromebooks we show up as a dual-mode device, it will attempt to connect TRANSPORT_AUTO, which will use TRANSPORT_BREDR instead + // of TRANSPORT_LE. Let's force ourselves to connect low energy. + private BluetoothGatt connectGatt(boolean managed) { + if (Build.VERSION.SDK_INT >= 23 /* Android 6.0 (M) */) { + try { + return mDevice.connectGatt(mManager.getContext(), managed, this, TRANSPORT_LE); + } catch (Exception e) { + return mDevice.connectGatt(mManager.getContext(), managed, this); + } + } else { + return mDevice.connectGatt(mManager.getContext(), managed, this); + } + } + + private BluetoothGatt connectGatt() { + return connectGatt(false); + } + + protected int getConnectionState() { + + Context context = mManager.getContext(); + if (context == null) { + // We are lacking any context to get our Bluetooth information. We'll just assume disconnected. + return BluetoothProfile.STATE_DISCONNECTED; + } + + BluetoothManager btManager = (BluetoothManager)context.getSystemService(Context.BLUETOOTH_SERVICE); + if (btManager == null) { + // This device doesn't support Bluetooth. We should never be here, because how did + // we instantiate a device to start with? + return BluetoothProfile.STATE_DISCONNECTED; + } + + return btManager.getConnectionState(mDevice, BluetoothProfile.GATT); + } + + public void reconnect() { + + if (getConnectionState() != BluetoothProfile.STATE_CONNECTED) { + mGatt.disconnect(); + mGatt = connectGatt(); + } + + } + + protected void checkConnectionForChromebookIssue() { + if (!mIsChromebook) { + // We only do this on Chromebooks, because otherwise it's really annoying to just attempt + // over and over. + return; + } + + int connectionState = getConnectionState(); + + switch (connectionState) { + case BluetoothProfile.STATE_CONNECTED: + if (!mIsConnected) { + // We are in the Bad Chromebook Place. We can force a disconnect + // to try to recover. + Log.v(TAG, "Chromebook: We are in a very bad state; the controller shows as connected in the underlying Bluetooth layer, but we never received a callback. Forcing a reconnect."); + mIsReconnecting = true; + mGatt.disconnect(); + mGatt = connectGatt(false); + break; + } + else if (!isRegistered()) { + if (mGatt.getServices().size() > 0) { + Log.v(TAG, "Chromebook: We are connected to a controller, but never got our registration. Trying to recover."); + probeService(this); + } + else { + Log.v(TAG, "Chromebook: We are connected to a controller, but never discovered services. Trying to recover."); + mIsReconnecting = true; + mGatt.disconnect(); + mGatt = connectGatt(false); + break; + } + } + else { + Log.v(TAG, "Chromebook: We are connected, and registered. Everything's good!"); + return; + } + break; + + case BluetoothProfile.STATE_DISCONNECTED: + Log.v(TAG, "Chromebook: We have either been disconnected, or the Chromebook BtGatt.ContextMap bug has bitten us. Attempting a disconnect/reconnect, but we may not be able to recover."); + + mIsReconnecting = true; + mGatt.disconnect(); + mGatt = connectGatt(false); + break; + + case BluetoothProfile.STATE_CONNECTING: + Log.v(TAG, "Chromebook: We're still trying to connect. Waiting a bit longer."); + break; + } + + final HIDDeviceBLESteamController finalThis = this; + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + finalThis.checkConnectionForChromebookIssue(); + } + }, CHROMEBOOK_CONNECTION_CHECK_INTERVAL); + } + + private boolean isRegistered() { + return mIsRegistered; + } + + private void setRegistered() { + mIsRegistered = true; + } + + private boolean probeService(HIDDeviceBLESteamController controller) { + + if (isRegistered()) { + return true; + } + + if (!mIsConnected) { + return false; + } + + Log.v(TAG, "probeService controller=" + controller); + + for (BluetoothGattService service : mGatt.getServices()) { + if (service.getUuid().equals(steamControllerService)) { + Log.v(TAG, "Found Valve steam controller service " + service.getUuid()); + + for (BluetoothGattCharacteristic chr : service.getCharacteristics()) { + if (chr.getUuid().equals(inputCharacteristic)) { + Log.v(TAG, "Found input characteristic"); + // Start notifications + BluetoothGattDescriptor cccd = chr.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb")); + if (cccd != null) { + enableNotification(chr.getUuid()); + } + } + } + return true; + } + } + + if ((mGatt.getServices().size() == 0) && mIsChromebook && !mIsReconnecting) { + Log.e(TAG, "Chromebook: Discovered services were empty; this almost certainly means the BtGatt.ContextMap bug has bitten us."); + mIsConnected = false; + mIsReconnecting = true; + mGatt.disconnect(); + mGatt = connectGatt(false); + } + + return false; + } + + ////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////////// + + private void finishCurrentGattOperation() { + GattOperation op = null; + synchronized (mOperations) { + if (mCurrentOperation != null) { + op = mCurrentOperation; + mCurrentOperation = null; + } + } + if (op != null) { + boolean result = op.finish(); // TODO: Maybe in main thread as well? + + // Our operation failed, let's add it back to the beginning of our queue. + if (!result) { + mOperations.addFirst(op); + } + } + executeNextGattOperation(); + } + + private void executeNextGattOperation() { + synchronized (mOperations) { + if (mCurrentOperation != null) + return; + + if (mOperations.isEmpty()) + return; + + mCurrentOperation = mOperations.removeFirst(); + } + + // Run in main thread + mHandler.post(new Runnable() { + @Override + public void run() { + synchronized (mOperations) { + if (mCurrentOperation == null) { + Log.e(TAG, "Current operation null in executor?"); + return; + } + + mCurrentOperation.run(); + // now wait for the GATT callback and when it comes, finish this operation + } + } + }); + } + + private void queueGattOperation(GattOperation op) { + synchronized (mOperations) { + mOperations.add(op); + } + executeNextGattOperation(); + } + + private void enableNotification(UUID chrUuid) { + GattOperation op = HIDDeviceBLESteamController.GattOperation.enableNotification(mGatt, chrUuid); + queueGattOperation(op); + } + + public void writeCharacteristic(UUID uuid, byte[] value) { + GattOperation op = HIDDeviceBLESteamController.GattOperation.writeCharacteristic(mGatt, uuid, value); + queueGattOperation(op); + } + + public void readCharacteristic(UUID uuid) { + GattOperation op = HIDDeviceBLESteamController.GattOperation.readCharacteristic(mGatt, uuid); + queueGattOperation(op); + } + + ////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////// BluetoothGattCallback overridden methods + ////////////////////////////////////////////////////////////////////////////////////////////////////// + + public void onConnectionStateChange(BluetoothGatt g, int status, int newState) { + //Log.v(TAG, "onConnectionStateChange status=" + status + " newState=" + newState); + mIsReconnecting = false; + if (newState == 2) { + mIsConnected = true; + // Run directly, without GattOperation + if (!isRegistered()) { + mHandler.post(new Runnable() { + @Override + public void run() { + mGatt.discoverServices(); + } + }); + } + } + else if (newState == 0) { + mIsConnected = false; + } + + // Disconnection is handled in SteamLink using the ACTION_ACL_DISCONNECTED Intent. + } + + public void onServicesDiscovered(BluetoothGatt gatt, int status) { + //Log.v(TAG, "onServicesDiscovered status=" + status); + if (status == 0) { + if (gatt.getServices().size() == 0) { + Log.v(TAG, "onServicesDiscovered returned zero services; something has gone horribly wrong down in Android's Bluetooth stack."); + mIsReconnecting = true; + mIsConnected = false; + gatt.disconnect(); + mGatt = connectGatt(false); + } + else { + probeService(this); + } + } + } + + public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { + //Log.v(TAG, "onCharacteristicRead status=" + status + " uuid=" + characteristic.getUuid()); + + if (characteristic.getUuid().equals(reportCharacteristic) && !mFrozen) { + mManager.HIDDeviceReportResponse(getId(), characteristic.getValue()); + } + + finishCurrentGattOperation(); + } + + public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) { + //Log.v(TAG, "onCharacteristicWrite status=" + status + " uuid=" + characteristic.getUuid()); + + if (characteristic.getUuid().equals(reportCharacteristic)) { + // Only register controller with the native side once it has been fully configured + if (!isRegistered()) { + Log.v(TAG, "Registering Steam Controller with ID: " + getId()); + mManager.HIDDeviceConnected(getId(), getIdentifier(), getVendorId(), getProductId(), getSerialNumber(), getVersion(), getManufacturerName(), getProductName(), 0, 0, 0, 0); + setRegistered(); + } + } + + finishCurrentGattOperation(); + } + + public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) { + // Enable this for verbose logging of controller input reports + //Log.v(TAG, "onCharacteristicChanged uuid=" + characteristic.getUuid() + " data=" + HexDump.dumpHexString(characteristic.getValue())); + + if (characteristic.getUuid().equals(inputCharacteristic) && !mFrozen) { + mManager.HIDDeviceInputReport(getId(), characteristic.getValue()); + } + } + + public void onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) { + //Log.v(TAG, "onDescriptorRead status=" + status); + } + + public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) { + BluetoothGattCharacteristic chr = descriptor.getCharacteristic(); + //Log.v(TAG, "onDescriptorWrite status=" + status + " uuid=" + chr.getUuid() + " descriptor=" + descriptor.getUuid()); + + if (chr.getUuid().equals(inputCharacteristic)) { + boolean hasWrittenInputDescriptor = true; + BluetoothGattCharacteristic reportChr = chr.getService().getCharacteristic(reportCharacteristic); + if (reportChr != null) { + Log.v(TAG, "Writing report characteristic to enter valve mode"); + reportChr.setValue(enterValveMode); + gatt.writeCharacteristic(reportChr); + } + } + + finishCurrentGattOperation(); + } + + public void onReliableWriteCompleted(BluetoothGatt gatt, int status) { + //Log.v(TAG, "onReliableWriteCompleted status=" + status); + } + + public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) { + //Log.v(TAG, "onReadRemoteRssi status=" + status); + } + + public void onMtuChanged(BluetoothGatt gatt, int mtu, int status) { + //Log.v(TAG, "onMtuChanged status=" + status); + } + + ////////////////////////////////////////////////////////////////////////////////////////////////////// + //////// Public API + ////////////////////////////////////////////////////////////////////////////////////////////////////// + + @Override + public int getId() { + return mDeviceId; + } + + @Override + public int getVendorId() { + // Valve Corporation + final int VALVE_USB_VID = 0x28DE; + return VALVE_USB_VID; + } + + @Override + public int getProductId() { + // We don't have an easy way to query from the Bluetooth device, but we know what it is + final int D0G_BLE2_PID = 0x1106; + return D0G_BLE2_PID; + } + + @Override + public String getSerialNumber() { + // This will be read later via feature report by Steam + return "12345"; + } + + @Override + public int getVersion() { + return 0; + } + + @Override + public String getManufacturerName() { + return "Valve Corporation"; + } + + @Override + public String getProductName() { + return "Steam Controller"; + } + + @Override + public UsbDevice getDevice() { + return null; + } + + @Override + public boolean open() { + return true; + } + + @Override + public int writeReport(byte[] report, boolean feature) { + if (!isRegistered()) { + Log.e(TAG, "Attempted writeReport before Steam Controller is registered!"); + if (mIsConnected) { + probeService(this); + } + return -1; + } + + if (feature) { + // We need to skip the first byte, as that doesn't go over the air + byte[] actual_report = Arrays.copyOfRange(report, 1, report.length - 1); + //Log.v(TAG, "writeFeatureReport " + HexDump.dumpHexString(actual_report)); + writeCharacteristic(reportCharacteristic, actual_report); + return report.length; + } else { + //Log.v(TAG, "writeOutputReport " + HexDump.dumpHexString(report)); + writeCharacteristic(reportCharacteristic, report); + return report.length; + } + } + + @Override + public boolean readReport(byte[] report, boolean feature) { + if (!isRegistered()) { + Log.e(TAG, "Attempted readReport before Steam Controller is registered!"); + if (mIsConnected) { + probeService(this); + } + return false; + } + + if (feature) { + readCharacteristic(reportCharacteristic); + return true; + } else { + // Not implemented + return false; + } + } + + @Override + public void close() { + } + + @Override + public void setFrozen(boolean frozen) { + mFrozen = frozen; + } + + @Override + public void shutdown() { + close(); + + BluetoothGatt g = mGatt; + if (g != null) { + g.disconnect(); + g.close(); + mGatt = null; + } + mManager = null; + mIsRegistered = false; + mIsConnected = false; + mOperations.clear(); + } + +} + diff --git a/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java b/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java new file mode 100644 index 0000000..8b6d5ba --- /dev/null +++ b/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java @@ -0,0 +1,682 @@ +package org.libsdl.app; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.PendingIntent; +import android.bluetooth.BluetoothAdapter; +import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothManager; +import android.bluetooth.BluetoothProfile; +import android.os.Build; +import android.util.Log; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.SharedPreferences; +import android.content.pm.PackageManager; +import android.hardware.usb.*; +import android.os.Handler; +import android.os.Looper; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +public class HIDDeviceManager { + private static final String TAG = "hidapi"; + private static final String ACTION_USB_PERMISSION = "org.libsdl.app.USB_PERMISSION"; + + private static HIDDeviceManager sManager; + private static int sManagerRefCount = 0; + + public static HIDDeviceManager acquire(Context context) { + if (sManagerRefCount == 0) { + sManager = new HIDDeviceManager(context); + } + ++sManagerRefCount; + return sManager; + } + + public static void release(HIDDeviceManager manager) { + if (manager == sManager) { + --sManagerRefCount; + if (sManagerRefCount == 0) { + sManager.close(); + sManager = null; + } + } + } + + private Context mContext; + private HashMap mDevicesById = new HashMap(); + private HashMap mBluetoothDevices = new HashMap(); + private int mNextDeviceId = 0; + private SharedPreferences mSharedPreferences = null; + private boolean mIsChromebook = false; + private UsbManager mUsbManager; + private Handler mHandler; + private BluetoothManager mBluetoothManager; + private List mLastBluetoothDevices; + + private final BroadcastReceiver mUsbBroadcast = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + if (action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) { + UsbDevice usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); + handleUsbDeviceAttached(usbDevice); + } else if (action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED)) { + UsbDevice usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); + handleUsbDeviceDetached(usbDevice); + } else if (action.equals(HIDDeviceManager.ACTION_USB_PERMISSION)) { + UsbDevice usbDevice = intent.getParcelableExtra(UsbManager.EXTRA_DEVICE); + handleUsbDevicePermission(usbDevice, intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)); + } + } + }; + + private final BroadcastReceiver mBluetoothBroadcast = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + // Bluetooth device was connected. If it was a Steam Controller, handle it + if (action.equals(BluetoothDevice.ACTION_ACL_CONNECTED)) { + BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); + Log.d(TAG, "Bluetooth device connected: " + device); + + if (isSteamController(device)) { + connectBluetoothDevice(device); + } + } + + // Bluetooth device was disconnected, remove from controller manager (if any) + if (action.equals(BluetoothDevice.ACTION_ACL_DISCONNECTED)) { + BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); + Log.d(TAG, "Bluetooth device disconnected: " + device); + + disconnectBluetoothDevice(device); + } + } + }; + + private HIDDeviceManager(final Context context) { + mContext = context; + + HIDDeviceRegisterCallback(); + + mSharedPreferences = mContext.getSharedPreferences("hidapi", Context.MODE_PRIVATE); + mIsChromebook = mContext.getPackageManager().hasSystemFeature("org.chromium.arc.device_management"); + +// if (shouldClear) { +// SharedPreferences.Editor spedit = mSharedPreferences.edit(); +// spedit.clear(); +// spedit.commit(); +// } +// else + { + mNextDeviceId = mSharedPreferences.getInt("next_device_id", 0); + } + } + + public Context getContext() { + return mContext; + } + + public int getDeviceIDForIdentifier(String identifier) { + SharedPreferences.Editor spedit = mSharedPreferences.edit(); + + int result = mSharedPreferences.getInt(identifier, 0); + if (result == 0) { + result = mNextDeviceId++; + spedit.putInt("next_device_id", mNextDeviceId); + } + + spedit.putInt(identifier, result); + spedit.commit(); + return result; + } + + private void initializeUSB() { + mUsbManager = (UsbManager)mContext.getSystemService(Context.USB_SERVICE); + if (mUsbManager == null) { + return; + } + + /* + // Logging + for (UsbDevice device : mUsbManager.getDeviceList().values()) { + Log.i(TAG,"Path: " + device.getDeviceName()); + Log.i(TAG,"Manufacturer: " + device.getManufacturerName()); + Log.i(TAG,"Product: " + device.getProductName()); + Log.i(TAG,"ID: " + device.getDeviceId()); + Log.i(TAG,"Class: " + device.getDeviceClass()); + Log.i(TAG,"Protocol: " + device.getDeviceProtocol()); + Log.i(TAG,"Vendor ID " + device.getVendorId()); + Log.i(TAG,"Product ID: " + device.getProductId()); + Log.i(TAG,"Interface count: " + device.getInterfaceCount()); + Log.i(TAG,"---------------------------------------"); + + // Get interface details + for (int index = 0; index < device.getInterfaceCount(); index++) { + UsbInterface mUsbInterface = device.getInterface(index); + Log.i(TAG," ***** *****"); + Log.i(TAG," Interface index: " + index); + Log.i(TAG," Interface ID: " + mUsbInterface.getId()); + Log.i(TAG," Interface class: " + mUsbInterface.getInterfaceClass()); + Log.i(TAG," Interface subclass: " + mUsbInterface.getInterfaceSubclass()); + Log.i(TAG," Interface protocol: " + mUsbInterface.getInterfaceProtocol()); + Log.i(TAG," Endpoint count: " + mUsbInterface.getEndpointCount()); + + // Get endpoint details + for (int epi = 0; epi < mUsbInterface.getEndpointCount(); epi++) + { + UsbEndpoint mEndpoint = mUsbInterface.getEndpoint(epi); + Log.i(TAG," ++++ ++++ ++++"); + Log.i(TAG," Endpoint index: " + epi); + Log.i(TAG," Attributes: " + mEndpoint.getAttributes()); + Log.i(TAG," Direction: " + mEndpoint.getDirection()); + Log.i(TAG," Number: " + mEndpoint.getEndpointNumber()); + Log.i(TAG," Interval: " + mEndpoint.getInterval()); + Log.i(TAG," Packet size: " + mEndpoint.getMaxPacketSize()); + Log.i(TAG," Type: " + mEndpoint.getType()); + } + } + } + Log.i(TAG," No more devices connected."); + */ + + // Register for USB broadcasts and permission completions + IntentFilter filter = new IntentFilter(); + filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED); + filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED); + filter.addAction(HIDDeviceManager.ACTION_USB_PERMISSION); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + mContext.registerReceiver(mUsbBroadcast, filter, Context.RECEIVER_EXPORTED); + } else { + mContext.registerReceiver(mUsbBroadcast, filter); + } + + for (UsbDevice usbDevice : mUsbManager.getDeviceList().values()) { + handleUsbDeviceAttached(usbDevice); + } + } + + UsbManager getUSBManager() { + return mUsbManager; + } + + private void shutdownUSB() { + try { + mContext.unregisterReceiver(mUsbBroadcast); + } catch (Exception e) { + // We may not have registered, that's okay + } + } + + private boolean isHIDDeviceInterface(UsbDevice usbDevice, UsbInterface usbInterface) { + if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_HID) { + return true; + } + if (isXbox360Controller(usbDevice, usbInterface) || isXboxOneController(usbDevice, usbInterface)) { + return true; + } + return false; + } + + private boolean isXbox360Controller(UsbDevice usbDevice, UsbInterface usbInterface) { + final int XB360_IFACE_SUBCLASS = 93; + final int XB360_IFACE_PROTOCOL = 1; // Wired + final int XB360W_IFACE_PROTOCOL = 129; // Wireless + final int[] SUPPORTED_VENDORS = { + 0x0079, // GPD Win 2 + 0x044f, // Thrustmaster + 0x045e, // Microsoft + 0x046d, // Logitech + 0x056e, // Elecom + 0x06a3, // Saitek + 0x0738, // Mad Catz + 0x07ff, // Mad Catz + 0x0e6f, // PDP + 0x0f0d, // Hori + 0x1038, // SteelSeries + 0x11c9, // Nacon + 0x12ab, // Unknown + 0x1430, // RedOctane + 0x146b, // BigBen + 0x1532, // Razer Sabertooth + 0x15e4, // Numark + 0x162e, // Joytech + 0x1689, // Razer Onza + 0x1949, // Lab126, Inc. + 0x1bad, // Harmonix + 0x20d6, // PowerA + 0x24c6, // PowerA + 0x2c22, // Qanba + 0x2dc8, // 8BitDo + 0x9886, // ASTRO Gaming + }; + + if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_VENDOR_SPEC && + usbInterface.getInterfaceSubclass() == XB360_IFACE_SUBCLASS && + (usbInterface.getInterfaceProtocol() == XB360_IFACE_PROTOCOL || + usbInterface.getInterfaceProtocol() == XB360W_IFACE_PROTOCOL)) { + int vendor_id = usbDevice.getVendorId(); + for (int supportedVid : SUPPORTED_VENDORS) { + if (vendor_id == supportedVid) { + return true; + } + } + } + return false; + } + + private boolean isXboxOneController(UsbDevice usbDevice, UsbInterface usbInterface) { + final int XB1_IFACE_SUBCLASS = 71; + final int XB1_IFACE_PROTOCOL = 208; + final int[] SUPPORTED_VENDORS = { + 0x03f0, // HP + 0x044f, // Thrustmaster + 0x045e, // Microsoft + 0x0738, // Mad Catz + 0x0e6f, // PDP + 0x0f0d, // Hori + 0x10f5, // Turtle Beach + 0x1532, // Razer Wildcat + 0x20d6, // PowerA + 0x24c6, // PowerA + 0x2dc8, // 8BitDo + 0x2e24, // Hyperkin + 0x3537, // GameSir + }; + + if (usbInterface.getId() == 0 && + usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_VENDOR_SPEC && + usbInterface.getInterfaceSubclass() == XB1_IFACE_SUBCLASS && + usbInterface.getInterfaceProtocol() == XB1_IFACE_PROTOCOL) { + int vendor_id = usbDevice.getVendorId(); + for (int supportedVid : SUPPORTED_VENDORS) { + if (vendor_id == supportedVid) { + return true; + } + } + } + return false; + } + + private void handleUsbDeviceAttached(UsbDevice usbDevice) { + connectHIDDeviceUSB(usbDevice); + } + + private void handleUsbDeviceDetached(UsbDevice usbDevice) { + List devices = new ArrayList(); + for (HIDDevice device : mDevicesById.values()) { + if (usbDevice.equals(device.getDevice())) { + devices.add(device.getId()); + } + } + for (int id : devices) { + HIDDevice device = mDevicesById.get(id); + mDevicesById.remove(id); + device.shutdown(); + HIDDeviceDisconnected(id); + } + } + + private void handleUsbDevicePermission(UsbDevice usbDevice, boolean permission_granted) { + for (HIDDevice device : mDevicesById.values()) { + if (usbDevice.equals(device.getDevice())) { + boolean opened = false; + if (permission_granted) { + opened = device.open(); + } + HIDDeviceOpenResult(device.getId(), opened); + } + } + } + + private void connectHIDDeviceUSB(UsbDevice usbDevice) { + synchronized (this) { + int interface_mask = 0; + for (int interface_index = 0; interface_index < usbDevice.getInterfaceCount(); interface_index++) { + UsbInterface usbInterface = usbDevice.getInterface(interface_index); + if (isHIDDeviceInterface(usbDevice, usbInterface)) { + // Check to see if we've already added this interface + // This happens with the Xbox Series X controller which has a duplicate interface 0, which is inactive + int interface_id = usbInterface.getId(); + if ((interface_mask & (1 << interface_id)) != 0) { + continue; + } + interface_mask |= (1 << interface_id); + + HIDDeviceUSB device = new HIDDeviceUSB(this, usbDevice, interface_index); + int id = device.getId(); + mDevicesById.put(id, device); + HIDDeviceConnected(id, device.getIdentifier(), device.getVendorId(), device.getProductId(), device.getSerialNumber(), device.getVersion(), device.getManufacturerName(), device.getProductName(), usbInterface.getId(), usbInterface.getInterfaceClass(), usbInterface.getInterfaceSubclass(), usbInterface.getInterfaceProtocol()); + } + } + } + } + + private void initializeBluetooth() { + Log.d(TAG, "Initializing Bluetooth"); + + if (Build.VERSION.SDK_INT >= 31 /* Android 12 */ && + mContext.getPackageManager().checkPermission(android.Manifest.permission.BLUETOOTH_CONNECT, mContext.getPackageName()) != PackageManager.PERMISSION_GRANTED) { + Log.d(TAG, "Couldn't initialize Bluetooth, missing android.permission.BLUETOOTH_CONNECT"); + return; + } + + if (Build.VERSION.SDK_INT <= 30 /* Android 11.0 (R) */ && + mContext.getPackageManager().checkPermission(android.Manifest.permission.BLUETOOTH, mContext.getPackageName()) != PackageManager.PERMISSION_GRANTED) { + Log.d(TAG, "Couldn't initialize Bluetooth, missing android.permission.BLUETOOTH"); + return; + } + + if (!mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE) || (Build.VERSION.SDK_INT < 18 /* Android 4.3 (JELLY_BEAN_MR2) */)) { + Log.d(TAG, "Couldn't initialize Bluetooth, this version of Android does not support Bluetooth LE"); + return; + } + + // Find bonded bluetooth controllers and create SteamControllers for them + mBluetoothManager = (BluetoothManager)mContext.getSystemService(Context.BLUETOOTH_SERVICE); + if (mBluetoothManager == null) { + // This device doesn't support Bluetooth. + return; + } + + BluetoothAdapter btAdapter = mBluetoothManager.getAdapter(); + if (btAdapter == null) { + // This device has Bluetooth support in the codebase, but has no available adapters. + return; + } + + // Get our bonded devices. + for (BluetoothDevice device : btAdapter.getBondedDevices()) { + + Log.d(TAG, "Bluetooth device available: " + device); + if (isSteamController(device)) { + connectBluetoothDevice(device); + } + + } + + // NOTE: These don't work on Chromebooks, to my undying dismay. + IntentFilter filter = new IntentFilter(); + filter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); + filter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + mContext.registerReceiver(mBluetoothBroadcast, filter, Context.RECEIVER_EXPORTED); + } else { + mContext.registerReceiver(mBluetoothBroadcast, filter); + } + + if (mIsChromebook) { + mHandler = new Handler(Looper.getMainLooper()); + mLastBluetoothDevices = new ArrayList(); + + // final HIDDeviceManager finalThis = this; + // mHandler.postDelayed(new Runnable() { + // @Override + // public void run() { + // finalThis.chromebookConnectionHandler(); + // } + // }, 5000); + } + } + + private void shutdownBluetooth() { + try { + mContext.unregisterReceiver(mBluetoothBroadcast); + } catch (Exception e) { + // We may not have registered, that's okay + } + } + + // Chromebooks do not pass along ACTION_ACL_CONNECTED / ACTION_ACL_DISCONNECTED properly. + // This function provides a sort of dummy version of that, watching for changes in the + // connected devices and attempting to add controllers as things change. + public void chromebookConnectionHandler() { + if (!mIsChromebook) { + return; + } + + ArrayList disconnected = new ArrayList(); + ArrayList connected = new ArrayList(); + + List currentConnected = mBluetoothManager.getConnectedDevices(BluetoothProfile.GATT); + + for (BluetoothDevice bluetoothDevice : currentConnected) { + if (!mLastBluetoothDevices.contains(bluetoothDevice)) { + connected.add(bluetoothDevice); + } + } + for (BluetoothDevice bluetoothDevice : mLastBluetoothDevices) { + if (!currentConnected.contains(bluetoothDevice)) { + disconnected.add(bluetoothDevice); + } + } + + mLastBluetoothDevices = currentConnected; + + for (BluetoothDevice bluetoothDevice : disconnected) { + disconnectBluetoothDevice(bluetoothDevice); + } + for (BluetoothDevice bluetoothDevice : connected) { + connectBluetoothDevice(bluetoothDevice); + } + + final HIDDeviceManager finalThis = this; + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + finalThis.chromebookConnectionHandler(); + } + }, 10000); + } + + public boolean connectBluetoothDevice(BluetoothDevice bluetoothDevice) { + Log.v(TAG, "connectBluetoothDevice device=" + bluetoothDevice); + synchronized (this) { + if (mBluetoothDevices.containsKey(bluetoothDevice)) { + Log.v(TAG, "Steam controller with address " + bluetoothDevice + " already exists, attempting reconnect"); + + HIDDeviceBLESteamController device = mBluetoothDevices.get(bluetoothDevice); + device.reconnect(); + + return false; + } + HIDDeviceBLESteamController device = new HIDDeviceBLESteamController(this, bluetoothDevice); + int id = device.getId(); + mBluetoothDevices.put(bluetoothDevice, device); + mDevicesById.put(id, device); + + // The Steam Controller will mark itself connected once initialization is complete + } + return true; + } + + public void disconnectBluetoothDevice(BluetoothDevice bluetoothDevice) { + synchronized (this) { + HIDDeviceBLESteamController device = mBluetoothDevices.get(bluetoothDevice); + if (device == null) + return; + + int id = device.getId(); + mBluetoothDevices.remove(bluetoothDevice); + mDevicesById.remove(id); + device.shutdown(); + HIDDeviceDisconnected(id); + } + } + + public boolean isSteamController(BluetoothDevice bluetoothDevice) { + // Sanity check. If you pass in a null device, by definition it is never a Steam Controller. + if (bluetoothDevice == null) { + return false; + } + + // If the device has no local name, we really don't want to try an equality check against it. + if (bluetoothDevice.getName() == null) { + return false; + } + + return bluetoothDevice.getName().equals("SteamController") && ((bluetoothDevice.getType() & BluetoothDevice.DEVICE_TYPE_LE) != 0); + } + + private void close() { + shutdownUSB(); + shutdownBluetooth(); + synchronized (this) { + for (HIDDevice device : mDevicesById.values()) { + device.shutdown(); + } + mDevicesById.clear(); + mBluetoothDevices.clear(); + HIDDeviceReleaseCallback(); + } + } + + public void setFrozen(boolean frozen) { + synchronized (this) { + for (HIDDevice device : mDevicesById.values()) { + device.setFrozen(frozen); + } + } + } + + ////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////////////////////////////////// + + private HIDDevice getDevice(int id) { + synchronized (this) { + HIDDevice result = mDevicesById.get(id); + if (result == null) { + Log.v(TAG, "No device for id: " + id); + Log.v(TAG, "Available devices: " + mDevicesById.keySet()); + } + return result; + } + } + + ////////////////////////////////////////////////////////////////////////////////////////////////////// + ////////// JNI interface functions + ////////////////////////////////////////////////////////////////////////////////////////////////////// + + public boolean initialize(boolean usb, boolean bluetooth) { + Log.v(TAG, "initialize(" + usb + ", " + bluetooth + ")"); + + if (usb) { + initializeUSB(); + } + if (bluetooth) { + initializeBluetooth(); + } + return true; + } + + public boolean openDevice(int deviceID) { + Log.v(TAG, "openDevice deviceID=" + deviceID); + HIDDevice device = getDevice(deviceID); + if (device == null) { + HIDDeviceDisconnected(deviceID); + return false; + } + + // Look to see if this is a USB device and we have permission to access it + UsbDevice usbDevice = device.getDevice(); + if (usbDevice != null && !mUsbManager.hasPermission(usbDevice)) { + HIDDeviceOpenPending(deviceID); + try { + final int FLAG_MUTABLE = 0x02000000; // PendingIntent.FLAG_MUTABLE, but don't require SDK 31 + int flags; + if (Build.VERSION.SDK_INT >= 31 /* Android 12.0 (S) */) { + flags = FLAG_MUTABLE; + } else { + flags = 0; + } + mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, new Intent(HIDDeviceManager.ACTION_USB_PERMISSION), flags)); + } catch (Exception e) { + Log.v(TAG, "Couldn't request permission for USB device " + usbDevice); + HIDDeviceOpenResult(deviceID, false); + } + return false; + } + + try { + return device.open(); + } catch (Exception e) { + Log.e(TAG, "Got exception: " + Log.getStackTraceString(e)); + } + return false; + } + + public int writeReport(int deviceID, byte[] report, boolean feature) { + try { + //Log.v(TAG, "writeReport deviceID=" + deviceID + " length=" + report.length); + HIDDevice device; + device = getDevice(deviceID); + if (device == null) { + HIDDeviceDisconnected(deviceID); + return -1; + } + + return device.writeReport(report, feature); + } catch (Exception e) { + Log.e(TAG, "Got exception: " + Log.getStackTraceString(e)); + } + return -1; + } + + public boolean readReport(int deviceID, byte[] report, boolean feature) { + try { + //Log.v(TAG, "readReport deviceID=" + deviceID); + HIDDevice device; + device = getDevice(deviceID); + if (device == null) { + HIDDeviceDisconnected(deviceID); + return false; + } + + return device.readReport(report, feature); + } catch (Exception e) { + Log.e(TAG, "Got exception: " + Log.getStackTraceString(e)); + } + return false; + } + + public void closeDevice(int deviceID) { + try { + Log.v(TAG, "closeDevice deviceID=" + deviceID); + HIDDevice device; + device = getDevice(deviceID); + if (device == null) { + HIDDeviceDisconnected(deviceID); + return; + } + + device.close(); + } catch (Exception e) { + Log.e(TAG, "Got exception: " + Log.getStackTraceString(e)); + } + } + + + ////////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////// Native methods + ////////////////////////////////////////////////////////////////////////////////////////////////////// + + private native void HIDDeviceRegisterCallback(); + private native void HIDDeviceReleaseCallback(); + + native void HIDDeviceConnected(int deviceID, String identifier, int vendorId, int productId, String serial_number, int release_number, String manufacturer_string, String product_string, int interface_number, int interface_class, int interface_subclass, int interface_protocol); + native void HIDDeviceOpenPending(int deviceID); + native void HIDDeviceOpenResult(int deviceID, boolean opened); + native void HIDDeviceDisconnected(int deviceID); + + native void HIDDeviceInputReport(int deviceID, byte[] report); + native void HIDDeviceReportResponse(int deviceID, byte[] report); +} diff --git a/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDeviceUSB.java b/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDeviceUSB.java new file mode 100644 index 0000000..5b5d201 --- /dev/null +++ b/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/HIDDeviceUSB.java @@ -0,0 +1,308 @@ +package org.libsdl.app; + +import android.hardware.usb.*; +import android.os.Build; +import android.util.Log; +import java.util.Arrays; + +class HIDDeviceUSB implements HIDDevice { + + private static final String TAG = "hidapi"; + + protected HIDDeviceManager mManager; + protected UsbDevice mDevice; + protected int mInterfaceIndex; + protected int mInterface; + protected int mDeviceId; + protected UsbDeviceConnection mConnection; + protected UsbEndpoint mInputEndpoint; + protected UsbEndpoint mOutputEndpoint; + protected InputThread mInputThread; + protected boolean mRunning; + protected boolean mFrozen; + + public HIDDeviceUSB(HIDDeviceManager manager, UsbDevice usbDevice, int interface_index) { + mManager = manager; + mDevice = usbDevice; + mInterfaceIndex = interface_index; + mInterface = mDevice.getInterface(mInterfaceIndex).getId(); + mDeviceId = manager.getDeviceIDForIdentifier(getIdentifier()); + mRunning = false; + } + + public String getIdentifier() { + return String.format("%s/%x/%x/%d", mDevice.getDeviceName(), mDevice.getVendorId(), mDevice.getProductId(), mInterfaceIndex); + } + + @Override + public int getId() { + return mDeviceId; + } + + @Override + public int getVendorId() { + return mDevice.getVendorId(); + } + + @Override + public int getProductId() { + return mDevice.getProductId(); + } + + @Override + public String getSerialNumber() { + String result = null; + if (Build.VERSION.SDK_INT >= 21 /* Android 5.0 (LOLLIPOP) */) { + try { + result = mDevice.getSerialNumber(); + } + catch (SecurityException exception) { + //Log.w(TAG, "App permissions mean we cannot get serial number for device " + getDeviceName() + " message: " + exception.getMessage()); + } + } + if (result == null) { + result = ""; + } + return result; + } + + @Override + public int getVersion() { + return 0; + } + + @Override + public String getManufacturerName() { + String result = null; + if (Build.VERSION.SDK_INT >= 21 /* Android 5.0 (LOLLIPOP) */) { + result = mDevice.getManufacturerName(); + } + if (result == null) { + result = String.format("%x", getVendorId()); + } + return result; + } + + @Override + public String getProductName() { + String result = null; + if (Build.VERSION.SDK_INT >= 21 /* Android 5.0 (LOLLIPOP) */) { + result = mDevice.getProductName(); + } + if (result == null) { + result = String.format("%x", getProductId()); + } + return result; + } + + @Override + public UsbDevice getDevice() { + return mDevice; + } + + public String getDeviceName() { + return getManufacturerName() + " " + getProductName() + "(0x" + String.format("%x", getVendorId()) + "/0x" + String.format("%x", getProductId()) + ")"; + } + + @Override + public boolean open() { + mConnection = mManager.getUSBManager().openDevice(mDevice); + if (mConnection == null) { + Log.w(TAG, "Unable to open USB device " + getDeviceName()); + return false; + } + + // Force claim our interface + UsbInterface iface = mDevice.getInterface(mInterfaceIndex); + if (!mConnection.claimInterface(iface, true)) { + Log.w(TAG, "Failed to claim interfaces on USB device " + getDeviceName()); + close(); + return false; + } + + // Find the endpoints + for (int j = 0; j < iface.getEndpointCount(); j++) { + UsbEndpoint endpt = iface.getEndpoint(j); + switch (endpt.getDirection()) { + case UsbConstants.USB_DIR_IN: + if (mInputEndpoint == null) { + mInputEndpoint = endpt; + } + break; + case UsbConstants.USB_DIR_OUT: + if (mOutputEndpoint == null) { + mOutputEndpoint = endpt; + } + break; + } + } + + // Make sure the required endpoints were present + if (mInputEndpoint == null || mOutputEndpoint == null) { + Log.w(TAG, "Missing required endpoint on USB device " + getDeviceName()); + close(); + return false; + } + + // Start listening for input + mRunning = true; + mInputThread = new InputThread(); + mInputThread.start(); + + return true; + } + + @Override + public int writeReport(byte[] report, boolean feature) { + if (feature) { + int res = -1; + int offset = 0; + int length = report.length; + boolean skipped_report_id = false; + byte report_number = report[0]; + + if (report_number == 0x0) { + ++offset; + --length; + skipped_report_id = true; + } + + res = mConnection.controlTransfer( + UsbConstants.USB_TYPE_CLASS | 0x01 /*RECIPIENT_INTERFACE*/ | UsbConstants.USB_DIR_OUT, + 0x09/*HID set_report*/, + (3/*HID feature*/ << 8) | report_number, + mInterface, + report, offset, length, + 1000/*timeout millis*/); + + if (res < 0) { + Log.w(TAG, "writeFeatureReport() returned " + res + " on device " + getDeviceName()); + return -1; + } + + if (skipped_report_id) { + ++length; + } + return length; + } else { + int res = mConnection.bulkTransfer(mOutputEndpoint, report, report.length, 1000); + if (res != report.length) { + Log.w(TAG, "writeOutputReport() returned " + res + " on device " + getDeviceName()); + } + return res; + } + } + + @Override + public boolean readReport(byte[] report, boolean feature) { + int res = -1; + int offset = 0; + int length = report.length; + boolean skipped_report_id = false; + byte report_number = report[0]; + + if (report_number == 0x0) { + /* Offset the return buffer by 1, so that the report ID + will remain in byte 0. */ + ++offset; + --length; + skipped_report_id = true; + } + + res = mConnection.controlTransfer( + UsbConstants.USB_TYPE_CLASS | 0x01 /*RECIPIENT_INTERFACE*/ | UsbConstants.USB_DIR_IN, + 0x01/*HID get_report*/, + ((feature ? 3/*HID feature*/ : 1/*HID Input*/) << 8) | report_number, + mInterface, + report, offset, length, + 1000/*timeout millis*/); + + if (res < 0) { + Log.w(TAG, "getFeatureReport() returned " + res + " on device " + getDeviceName()); + return false; + } + + if (skipped_report_id) { + ++res; + ++length; + } + + byte[] data; + if (res == length) { + data = report; + } else { + data = Arrays.copyOfRange(report, 0, res); + } + mManager.HIDDeviceReportResponse(mDeviceId, data); + + return true; + } + + @Override + public void close() { + mRunning = false; + if (mInputThread != null) { + while (mInputThread.isAlive()) { + mInputThread.interrupt(); + try { + mInputThread.join(); + } catch (InterruptedException e) { + // Keep trying until we're done + } + } + mInputThread = null; + } + if (mConnection != null) { + UsbInterface iface = mDevice.getInterface(mInterfaceIndex); + mConnection.releaseInterface(iface); + mConnection.close(); + mConnection = null; + } + } + + @Override + public void shutdown() { + close(); + mManager = null; + } + + @Override + public void setFrozen(boolean frozen) { + mFrozen = frozen; + } + + protected class InputThread extends Thread { + @Override + public void run() { + int packetSize = mInputEndpoint.getMaxPacketSize(); + byte[] packet = new byte[packetSize]; + while (mRunning) { + int r; + try + { + r = mConnection.bulkTransfer(mInputEndpoint, packet, packetSize, 1000); + } + catch (Exception e) + { + Log.v(TAG, "Exception in UsbDeviceConnection bulktransfer: " + e); + break; + } + if (r < 0) { + // Could be a timeout or an I/O error + } + if (r > 0) { + byte[] data; + if (r == packetSize) { + data = packet; + } else { + data = Arrays.copyOfRange(packet, 0, r); + } + + if (!mFrozen) { + mManager.HIDDeviceInputReport(mDeviceId, data); + } + } + } + } + } +} diff --git a/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/SDL.java b/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/SDL.java new file mode 100644 index 0000000..3e3ec94 --- /dev/null +++ b/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/SDL.java @@ -0,0 +1,86 @@ +package org.libsdl.app; + +import android.content.Context; + +import java.lang.Class; +import java.lang.reflect.Method; + +/** + SDL library initialization +*/ +public class SDL { + + // This function should be called first and sets up the native code + // so it can call into the Java classes + public static void setupJNI() { + SDLActivity.nativeSetupJNI(); + SDLAudioManager.nativeSetupJNI(); + SDLControllerManager.nativeSetupJNI(); + } + + // This function should be called each time the activity is started + public static void initialize() { + setContext(null); + + SDLActivity.initialize(); + SDLAudioManager.initialize(); + SDLControllerManager.initialize(); + } + + // This function stores the current activity (SDL or not) + public static void setContext(Context context) { + SDLAudioManager.setContext(context); + mContext = context; + } + + public static Context getContext() { + return mContext; + } + + public static void loadLibrary(String libraryName) throws UnsatisfiedLinkError, SecurityException, NullPointerException { + + if (libraryName == null) { + throw new NullPointerException("No library name provided."); + } + + try { + // Let's see if we have ReLinker available in the project. This is necessary for + // some projects that have huge numbers of local libraries bundled, and thus may + // trip a bug in Android's native library loader which ReLinker works around. (If + // loadLibrary works properly, ReLinker will simply use the normal Android method + // internally.) + // + // To use ReLinker, just add it as a dependency. For more information, see + // https://github.com/KeepSafe/ReLinker for ReLinker's repository. + // + Class relinkClass = mContext.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker"); + Class relinkListenerClass = mContext.getClassLoader().loadClass("com.getkeepsafe.relinker.ReLinker$LoadListener"); + Class contextClass = mContext.getClassLoader().loadClass("android.content.Context"); + Class stringClass = mContext.getClassLoader().loadClass("java.lang.String"); + + // Get a 'force' instance of the ReLinker, so we can ensure libraries are reinstalled if + // they've changed during updates. + Method forceMethod = relinkClass.getDeclaredMethod("force"); + Object relinkInstance = forceMethod.invoke(null); + Class relinkInstanceClass = relinkInstance.getClass(); + + // Actually load the library! + Method loadMethod = relinkInstanceClass.getDeclaredMethod("loadLibrary", contextClass, stringClass, stringClass, relinkListenerClass); + loadMethod.invoke(relinkInstance, mContext, libraryName, null, null); + } + catch (final Throwable e) { + // Fall back + try { + System.loadLibrary(libraryName); + } + catch (final UnsatisfiedLinkError ule) { + throw ule; + } + catch (final SecurityException se) { + throw se; + } + } + } + + protected static Context mContext; +} diff --git a/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java b/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java new file mode 100644 index 0000000..a560662 --- /dev/null +++ b/extern/SDL3-3.1.0/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java @@ -0,0 +1,2016 @@ +package org.libsdl.app; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.UiModeManager; +import android.content.ClipboardManager; +import android.content.ClipData; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.pm.ActivityInfo; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageManager; +import android.content.res.Configuration; +import android.graphics.Bitmap; +import android.graphics.Color; +import android.graphics.PorterDuff; +import android.graphics.drawable.Drawable; +import android.hardware.Sensor; +import android.net.Uri; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.util.DisplayMetrics; +import android.util.Log; +import android.util.SparseArray; +import android.view.Display; +import android.view.Gravity; +import android.view.InputDevice; +import android.view.KeyEvent; +import android.view.PointerIcon; +import android.view.Surface; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.WindowManager; +import android.view.inputmethod.InputConnection; +import android.view.inputmethod.InputMethodManager; +import android.widget.Button; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; +import android.widget.Toast; + +import java.util.Hashtable; +import java.util.Locale; + + +/** + SDL Activity +*/ +public class SDLActivity extends Activity implements View.OnSystemUiVisibilityChangeListener { + private static final String TAG = "SDL"; + private static final int SDL_MAJOR_VERSION = 3; + private static final int SDL_MINOR_VERSION = 1; + private static final int SDL_MICRO_VERSION = 0; +/* + // Display InputType.SOURCE/CLASS of events and devices + // + // SDLActivity.debugSource(device.getSources(), "device[" + device.getName() + "]"); + // SDLActivity.debugSource(event.getSource(), "event"); + public static void debugSource(int sources, String prefix) { + int s = sources; + int s_copy = sources; + String cls = ""; + String src = ""; + int tst = 0; + int FLAG_TAINTED = 0x80000000; + + if ((s & InputDevice.SOURCE_CLASS_BUTTON) != 0) cls += " BUTTON"; + if ((s & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) cls += " JOYSTICK"; + if ((s & InputDevice.SOURCE_CLASS_POINTER) != 0) cls += " POINTER"; + if ((s & InputDevice.SOURCE_CLASS_POSITION) != 0) cls += " POSITION"; + if ((s & InputDevice.SOURCE_CLASS_TRACKBALL) != 0) cls += " TRACKBALL"; + + + int s2 = s_copy & ~InputDevice.SOURCE_ANY; // keep class bits + s2 &= ~( InputDevice.SOURCE_CLASS_BUTTON + | InputDevice.SOURCE_CLASS_JOYSTICK + | InputDevice.SOURCE_CLASS_POINTER + | InputDevice.SOURCE_CLASS_POSITION + | InputDevice.SOURCE_CLASS_TRACKBALL); + + if (s2 != 0) cls += "Some_Unkown"; + + s2 = s_copy & InputDevice.SOURCE_ANY; // keep source only, no class; + + if (Build.VERSION.SDK_INT >= 23) { + tst = InputDevice.SOURCE_BLUETOOTH_STYLUS; + if ((s & tst) == tst) src += " BLUETOOTH_STYLUS"; + s2 &= ~tst; + } + + tst = InputDevice.SOURCE_DPAD; + if ((s & tst) == tst) src += " DPAD"; + s2 &= ~tst; + + tst = InputDevice.SOURCE_GAMEPAD; + if ((s & tst) == tst) src += " GAMEPAD"; + s2 &= ~tst; + + if (Build.VERSION.SDK_INT >= 21) { + tst = InputDevice.SOURCE_HDMI; + if ((s & tst) == tst) src += " HDMI"; + s2 &= ~tst; + } + + tst = InputDevice.SOURCE_JOYSTICK; + if ((s & tst) == tst) src += " JOYSTICK"; + s2 &= ~tst; + + tst = InputDevice.SOURCE_KEYBOARD; + if ((s & tst) == tst) src += " KEYBOARD"; + s2 &= ~tst; + + tst = InputDevice.SOURCE_MOUSE; + if ((s & tst) == tst) src += " MOUSE"; + s2 &= ~tst; + + if (Build.VERSION.SDK_INT >= 26) { + tst = InputDevice.SOURCE_MOUSE_RELATIVE; + if ((s & tst) == tst) src += " MOUSE_RELATIVE"; + s2 &= ~tst; + + tst = InputDevice.SOURCE_ROTARY_ENCODER; + if ((s & tst) == tst) src += " ROTARY_ENCODER"; + s2 &= ~tst; + } + tst = InputDevice.SOURCE_STYLUS; + if ((s & tst) == tst) src += " STYLUS"; + s2 &= ~tst; + + tst = InputDevice.SOURCE_TOUCHPAD; + if ((s & tst) == tst) src += " TOUCHPAD"; + s2 &= ~tst; + + tst = InputDevice.SOURCE_TOUCHSCREEN; + if ((s & tst) == tst) src += " TOUCHSCREEN"; + s2 &= ~tst; + + if (Build.VERSION.SDK_INT >= 18) { + tst = InputDevice.SOURCE_TOUCH_NAVIGATION; + if ((s & tst) == tst) src += " TOUCH_NAVIGATION"; + s2 &= ~tst; + } + + tst = InputDevice.SOURCE_TRACKBALL; + if ((s & tst) == tst) src += " TRACKBALL"; + s2 &= ~tst; + + tst = InputDevice.SOURCE_ANY; + if ((s & tst) == tst) src += " ANY"; + s2 &= ~tst; + + if (s == FLAG_TAINTED) src += " FLAG_TAINTED"; + s2 &= ~FLAG_TAINTED; + + if (s2 != 0) src += " Some_Unkown"; + + Log.v(TAG, prefix + "int=" + s_copy + " CLASS={" + cls + " } source(s):" + src); + } +*/ + + public static boolean mIsResumedCalled, mHasFocus; + public static final boolean mHasMultiWindow = (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */); + + // Cursor types + // private static final int SDL_SYSTEM_CURSOR_NONE = -1; + private static final int SDL_SYSTEM_CURSOR_ARROW = 0; + private static final int SDL_SYSTEM_CURSOR_IBEAM = 1; + private static final int SDL_SYSTEM_CURSOR_WAIT = 2; + private static final int SDL_SYSTEM_CURSOR_CROSSHAIR = 3; + private static final int SDL_SYSTEM_CURSOR_WAITARROW = 4; + private static final int SDL_SYSTEM_CURSOR_SIZENWSE = 5; + private static final int SDL_SYSTEM_CURSOR_SIZENESW = 6; + private static final int SDL_SYSTEM_CURSOR_SIZEWE = 7; + private static final int SDL_SYSTEM_CURSOR_SIZENS = 8; + private static final int SDL_SYSTEM_CURSOR_SIZEALL = 9; + private static final int SDL_SYSTEM_CURSOR_NO = 10; + private static final int SDL_SYSTEM_CURSOR_HAND = 11; + private static final int SDL_SYSTEM_CURSOR_WINDOW_TOPLEFT = 12; + private static final int SDL_SYSTEM_CURSOR_WINDOW_TOP = 13; + private static final int SDL_SYSTEM_CURSOR_WINDOW_TOPRIGHT = 14; + private static final int SDL_SYSTEM_CURSOR_WINDOW_RIGHT = 15; + private static final int SDL_SYSTEM_CURSOR_WINDOW_BOTTOMRIGHT = 16; + private static final int SDL_SYSTEM_CURSOR_WINDOW_BOTTOM = 17; + private static final int SDL_SYSTEM_CURSOR_WINDOW_BOTTOMLEFT = 18; + private static final int SDL_SYSTEM_CURSOR_WINDOW_LEFT = 19; + + protected static final int SDL_ORIENTATION_UNKNOWN = 0; + protected static final int SDL_ORIENTATION_LANDSCAPE = 1; + protected static final int SDL_ORIENTATION_LANDSCAPE_FLIPPED = 2; + protected static final int SDL_ORIENTATION_PORTRAIT = 3; + protected static final int SDL_ORIENTATION_PORTRAIT_FLIPPED = 4; + + protected static int mCurrentRotation; + protected static Locale mCurrentLocale; + + // Handle the state of the native layer + public enum NativeState { + INIT, RESUMED, PAUSED + } + + public static NativeState mNextNativeState; + public static NativeState mCurrentNativeState; + + /** If shared libraries (e.g. SDL or the native application) could not be loaded. */ + public static boolean mBrokenLibraries = true; + + // Main components + protected static SDLActivity mSingleton; + protected static SDLSurface mSurface; + protected static SDLDummyEdit mTextEdit; + protected static boolean mScreenKeyboardShown; + protected static ViewGroup mLayout; + protected static SDLClipboardHandler mClipboardHandler; + protected static Hashtable mCursors; + protected static int mLastCursorID; + protected static SDLGenericMotionListener_API12 mMotionListener; + protected static HIDDeviceManager mHIDDeviceManager; + + // This is what SDL runs in. It invokes SDL_main(), eventually + protected static Thread mSDLThread; + protected static boolean mSDLMainFinished = false; + protected static boolean mActivityCreated = false; + + protected static SDLGenericMotionListener_API12 getMotionListener() { + if (mMotionListener == null) { + if (Build.VERSION.SDK_INT >= 26 /* Android 8.0 (O) */) { + mMotionListener = new SDLGenericMotionListener_API26(); + } else if (Build.VERSION.SDK_INT >= 24 /* Android 7.0 (N) */) { + mMotionListener = new SDLGenericMotionListener_API24(); + } else { + mMotionListener = new SDLGenericMotionListener_API12(); + } + } + + return mMotionListener; + } + + /** + * This method creates a Runnable which invokes SDL_main. The default implementation + * uses the getMainSharedObject() and getMainFunction() methods to invoke native + * code from the specified shared library. + */ + protected Runnable createSDLMainRunnable() { + return new SDLMain(); + } + + /** + * This method returns the name of the shared object with the application entry point + * It can be overridden by derived classes. + */ + protected String getMainSharedObject() { + String library; + String[] libraries = SDLActivity.mSingleton.getLibraries(); + if (libraries.length > 0) { + library = "lib" + libraries[libraries.length - 1] + ".so"; + } else { + library = "libmain.so"; + } + return getContext().getApplicationInfo().nativeLibraryDir + "/" + library; + } + + /** + * This method returns the name of the application entry point + * It can be overridden by derived classes. + */ + protected String getMainFunction() { + return "SDL_main"; + } + + /** + * This method is called by SDL before loading the native shared libraries. + * It can be overridden to provide names of shared libraries to be loaded. + * The default implementation returns the defaults. It never returns null. + * An array returned by a new implementation must at least contain "SDL3". + * Also keep in mind that the order the libraries are loaded may matter. + * @return names of shared libraries to be loaded (e.g. "SDL3", "main"). + */ + protected String[] getLibraries() { + return new String[] { + "SDL3", + // "SDL3_image", + // "SDL3_mixer", + // "SDL3_net", + // "SDL3_ttf", + "main" + }; + } + + // Load the .so + public void loadLibraries() { + for (String lib : getLibraries()) { + SDL.loadLibrary(lib); + } + } + + /** + * This method is called by SDL before starting the native application thread. + * It can be overridden to provide the arguments after the application name. + * The default implementation returns an empty array. It never returns null. + * @return arguments for the native application. + */ + protected String[] getArguments() { + return new String[0]; + } + + public static void initialize() { + // The static nature of the singleton and Android quirkyness force us to initialize everything here + // Otherwise, when exiting the app and returning to it, these variables *keep* their pre exit values + mSingleton = null; + mSurface = null; + mTextEdit = null; + mLayout = null; + mClipboardHandler = null; + mCursors = new Hashtable(); + mLastCursorID = 0; + mSDLThread = null; + mIsResumedCalled = false; + mHasFocus = true; + mNextNativeState = NativeState.INIT; + mCurrentNativeState = NativeState.INIT; + } + + protected SDLSurface createSDLSurface(Context context) { + return new SDLSurface(context); + } + + // Setup + @Override + protected void onCreate(Bundle savedInstanceState) { + Log.v(TAG, "Device: " + Build.DEVICE); + Log.v(TAG, "Model: " + Build.MODEL); + Log.v(TAG, "onCreate()"); + super.onCreate(savedInstanceState); + + + /* Control activity re-creation */ + if (mSDLMainFinished || mActivityCreated) { + boolean allow_recreate = SDLActivity.nativeAllowRecreateActivity(); + if (mSDLMainFinished) { + Log.v(TAG, "SDL main() finished"); + } + if (allow_recreate) { + Log.v(TAG, "activity re-created"); + } else { + Log.v(TAG, "activity finished"); + System.exit(0); + return; + } + } + + mActivityCreated = true; + + try { + Thread.currentThread().setName("SDLActivity"); + } catch (Exception e) { + Log.v(TAG, "modify thread properties failed " + e.toString()); + } + + // Load shared libraries + String errorMsgBrokenLib = ""; + try { + loadLibraries(); + mBrokenLibraries = false; /* success */ + } catch(UnsatisfiedLinkError e) { + System.err.println(e.getMessage()); + mBrokenLibraries = true; + errorMsgBrokenLib = e.getMessage(); + } catch(Exception e) { + System.err.println(e.getMessage()); + mBrokenLibraries = true; + errorMsgBrokenLib = e.getMessage(); + } + + if (!mBrokenLibraries) { + String expected_version = String.valueOf(SDL_MAJOR_VERSION) + "." + + String.valueOf(SDL_MINOR_VERSION) + "." + + String.valueOf(SDL_MICRO_VERSION); + String version = nativeGetVersion(); + if (!version.equals(expected_version)) { + mBrokenLibraries = true; + errorMsgBrokenLib = "SDL C/Java version mismatch (expected " + expected_version + ", got " + version + ")"; + } + } + + if (mBrokenLibraries) { + mSingleton = this; + AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this); + dlgAlert.setMessage("An error occurred while trying to start the application. Please try again and/or reinstall." + + System.getProperty("line.separator") + + System.getProperty("line.separator") + + "Error: " + errorMsgBrokenLib); + dlgAlert.setTitle("SDL Error"); + dlgAlert.setPositiveButton("Exit", + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog,int id) { + // if this button is clicked, close current activity + SDLActivity.mSingleton.finish(); + } + }); + dlgAlert.setCancelable(false); + dlgAlert.create().show(); + + return; + } + + + /* Control activity re-creation */ + /* Robustness: check that the native code is run for the first time. + * (Maybe Activity was reset, but not the native code.) */ + { + int run_count = SDLActivity.nativeCheckSDLThreadCounter(); /* get and increment a native counter */ + if (run_count != 0) { + boolean allow_recreate = SDLActivity.nativeAllowRecreateActivity(); + if (allow_recreate) { + Log.v(TAG, "activity re-created // run_count: " + run_count); + } else { + Log.v(TAG, "activity finished // run_count: " + run_count); + System.exit(0); + return; + } + } + } + + // Set up JNI + SDL.setupJNI(); + + // Initialize state + SDL.initialize(); + + // So we can call stuff from static callbacks + mSingleton = this; + SDL.setContext(this); + + mClipboardHandler = new SDLClipboardHandler(); + + mHIDDeviceManager = HIDDeviceManager.acquire(this); + + // Set up the surface + mSurface = createSDLSurface(this); + + mLayout = new RelativeLayout(this); + mLayout.addView(mSurface); + + // Get our current screen orientation and pass it down. + SDLActivity.nativeSetNaturalOrientation(SDLActivity.getNaturalOrientation()); + mCurrentRotation = SDLActivity.getCurrentRotation(); + SDLActivity.onNativeRotationChanged(mCurrentRotation); + + try { + if (Build.VERSION.SDK_INT < 24 /* Android 7.0 (N) */) { + mCurrentLocale = getContext().getResources().getConfiguration().locale; + } else { + mCurrentLocale = getContext().getResources().getConfiguration().getLocales().get(0); + } + } catch(Exception ignored) { + } + + switch (getContext().getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) { + case Configuration.UI_MODE_NIGHT_NO: + SDLActivity.onNativeDarkModeChanged(false); + break; + case Configuration.UI_MODE_NIGHT_YES: + SDLActivity.onNativeDarkModeChanged(true); + break; + } + + setContentView(mLayout); + + setWindowStyle(false); + + getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(this); + + // Get filename from "Open with" of another application + Intent intent = getIntent(); + if (intent != null && intent.getData() != null) { + String filename = intent.getData().getPath(); + if (filename != null) { + Log.v(TAG, "Got filename: " + filename); + SDLActivity.onNativeDropFile(filename); + } + } + } + + protected void pauseNativeThread() { + mNextNativeState = NativeState.PAUSED; + mIsResumedCalled = false; + + if (SDLActivity.mBrokenLibraries) { + return; + } + + SDLActivity.handleNativeState(); + } + + protected void resumeNativeThread() { + mNextNativeState = NativeState.RESUMED; + mIsResumedCalled = true; + + if (SDLActivity.mBrokenLibraries) { + return; + } + + SDLActivity.handleNativeState(); + } + + // Events + @Override + protected void onPause() { + Log.v(TAG, "onPause()"); + super.onPause(); + + if (mHIDDeviceManager != null) { + mHIDDeviceManager.setFrozen(true); + } + if (!mHasMultiWindow) { + pauseNativeThread(); + } + } + + @Override + protected void onResume() { + Log.v(TAG, "onResume()"); + super.onResume(); + + if (mHIDDeviceManager != null) { + mHIDDeviceManager.setFrozen(false); + } + if (!mHasMultiWindow) { + resumeNativeThread(); + } + } + + @Override + protected void onStop() { + Log.v(TAG, "onStop()"); + super.onStop(); + if (mHasMultiWindow) { + pauseNativeThread(); + } + } + + @Override + protected void onStart() { + Log.v(TAG, "onStart()"); + super.onStart(); + if (mHasMultiWindow) { + resumeNativeThread(); + } + } + + public static int getNaturalOrientation() { + int result = SDL_ORIENTATION_UNKNOWN; + + Activity activity = (Activity)getContext(); + if (activity != null) { + Configuration config = activity.getResources().getConfiguration(); + Display display = activity.getWindowManager().getDefaultDisplay(); + int rotation = display.getRotation(); + if (((rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) && + config.orientation == Configuration.ORIENTATION_LANDSCAPE) || + ((rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) && + config.orientation == Configuration.ORIENTATION_PORTRAIT)) { + result = SDL_ORIENTATION_LANDSCAPE; + } else { + result = SDL_ORIENTATION_PORTRAIT; + } + } + return result; + } + + public static int getCurrentRotation() { + int result = 0; + + Activity activity = (Activity)getContext(); + if (activity != null) { + Display display = activity.getWindowManager().getDefaultDisplay(); + switch (display.getRotation()) { + case Surface.ROTATION_0: + result = 0; + break; + case Surface.ROTATION_90: + result = 90; + break; + case Surface.ROTATION_180: + result = 180; + break; + case Surface.ROTATION_270: + result = 270; + break; + } + } + return result; + } + + @Override + public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + Log.v(TAG, "onWindowFocusChanged(): " + hasFocus); + + if (SDLActivity.mBrokenLibraries) { + return; + } + + mHasFocus = hasFocus; + if (hasFocus) { + mNextNativeState = NativeState.RESUMED; + SDLActivity.getMotionListener().reclaimRelativeMouseModeIfNeeded(); + + SDLActivity.handleNativeState(); + nativeFocusChanged(true); + + } else { + nativeFocusChanged(false); + if (!mHasMultiWindow) { + mNextNativeState = NativeState.PAUSED; + SDLActivity.handleNativeState(); + } + } + } + + @Override + public void onLowMemory() { + Log.v(TAG, "onLowMemory()"); + super.onLowMemory(); + + if (SDLActivity.mBrokenLibraries) { + return; + } + + SDLActivity.nativeLowMemory(); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + Log.v(TAG, "onConfigurationChanged()"); + super.onConfigurationChanged(newConfig); + + if (SDLActivity.mBrokenLibraries) { + return; + } + + if (mCurrentLocale == null || !mCurrentLocale.equals(newConfig.locale)) { + mCurrentLocale = newConfig.locale; + SDLActivity.onNativeLocaleChanged(); + } + + switch (newConfig.uiMode & Configuration.UI_MODE_NIGHT_MASK) { + case Configuration.UI_MODE_NIGHT_NO: + SDLActivity.onNativeDarkModeChanged(false); + break; + case Configuration.UI_MODE_NIGHT_YES: + SDLActivity.onNativeDarkModeChanged(true); + break; + } + } + + @Override + protected void onDestroy() { + Log.v(TAG, "onDestroy()"); + + if (mHIDDeviceManager != null) { + HIDDeviceManager.release(mHIDDeviceManager); + mHIDDeviceManager = null; + } + + SDLAudioManager.release(this); + + if (SDLActivity.mBrokenLibraries) { + super.onDestroy(); + return; + } + + if (SDLActivity.mSDLThread != null) { + + // Send Quit event to "SDLThread" thread + SDLActivity.nativeSendQuit(); + + // Wait for "SDLThread" thread to end + try { + // Use a timeout because: + // C SDLmain() thread might have started (mSDLThread.start() called) + // while the SDL_Init() might not have been called yet, + // and so the previous QUIT event will be discarded by SDL_Init() and app is running, not exiting. + SDLActivity.mSDLThread.join(1000); + } catch(Exception e) { + Log.v(TAG, "Problem stopping SDLThread: " + e); + } + } + + SDLActivity.nativeQuit(); + + super.onDestroy(); + } + + @Override + public void onBackPressed() { + // Check if we want to block the back button in case of mouse right click. + // + // If we do, the normal hardware back button will no longer work and people have to use home, + // but the mouse right click will work. + // + boolean trapBack = SDLActivity.nativeGetHintBoolean("SDL_ANDROID_TRAP_BACK_BUTTON", false); + if (trapBack) { + // Exit and let the mouse handler handle this button (if appropriate) + return; + } + + // Default system back button behavior. + if (!isFinishing()) { + super.onBackPressed(); + } + } + + // Called by JNI from SDL. + public static void manualBackButton() { + mSingleton.pressBackButton(); + } + + // Used to get us onto the activity's main thread + public void pressBackButton() { + runOnUiThread(new Runnable() { + @Override + public void run() { + if (!SDLActivity.this.isFinishing()) { + SDLActivity.this.superOnBackPressed(); + } + } + }); + } + + // Used to access the system back behavior. + public void superOnBackPressed() { + super.onBackPressed(); + } + + @Override + public boolean dispatchKeyEvent(KeyEvent event) { + + if (SDLActivity.mBrokenLibraries) { + return false; + } + + int keyCode = event.getKeyCode(); + // Ignore certain special keys so they're handled by Android + if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || + keyCode == KeyEvent.KEYCODE_VOLUME_UP || + keyCode == KeyEvent.KEYCODE_CAMERA || + keyCode == KeyEvent.KEYCODE_ZOOM_IN || /* API 11 */ + keyCode == KeyEvent.KEYCODE_ZOOM_OUT /* API 11 */ + ) { + return false; + } + return super.dispatchKeyEvent(event); + } + + /* Transition to next state */ + public static void handleNativeState() { + + if (mNextNativeState == mCurrentNativeState) { + // Already in same state, discard. + return; + } + + // Try a transition to init state + if (mNextNativeState == NativeState.INIT) { + + mCurrentNativeState = mNextNativeState; + return; + } + + // Try a transition to paused state + if (mNextNativeState == NativeState.PAUSED) { + if (mSDLThread != null) { + nativePause(); + } + if (mSurface != null) { + mSurface.handlePause(); + } + mCurrentNativeState = mNextNativeState; + return; + } + + // Try a transition to resumed state + if (mNextNativeState == NativeState.RESUMED) { + if (mSurface.mIsSurfaceReady && (mHasFocus || mHasMultiWindow) && mIsResumedCalled) { + if (mSDLThread == null) { + // This is the entry point to the C app. + // Start up the C app thread and enable sensor input for the first time + // FIXME: Why aren't we enabling sensor input at start? + + mSDLThread = new Thread(SDLActivity.mSingleton.createSDLMainRunnable(), "SDLThread"); + mSurface.enableSensor(Sensor.TYPE_ACCELEROMETER, true); + mSDLThread.start(); + + // No nativeResume(), don't signal Android_ResumeSem + } else { + nativeResume(); + } + mSurface.handleResume(); + + mCurrentNativeState = mNextNativeState; + } + } + } + + // Messages from the SDLMain thread + protected static final int COMMAND_CHANGE_TITLE = 1; + protected static final int COMMAND_CHANGE_WINDOW_STYLE = 2; + protected static final int COMMAND_TEXTEDIT_HIDE = 3; + protected static final int COMMAND_SET_KEEP_SCREEN_ON = 5; + protected static final int COMMAND_USER = 0x8000; + + protected static boolean mFullscreenModeActive; + + /** + * This method is called by SDL if SDL did not handle a message itself. + * This happens if a received message contains an unsupported command. + * Method can be overwritten to handle Messages in a different class. + * @param command the command of the message. + * @param param the parameter of the message. May be null. + * @return if the message was handled in overridden method. + */ + protected boolean onUnhandledMessage(int command, Object param) { + return false; + } + + /** + * A Handler class for Messages from native SDL applications. + * It uses current Activities as target (e.g. for the title). + * static to prevent implicit references to enclosing object. + */ + protected static class SDLCommandHandler extends Handler { + @Override + public void handleMessage(Message msg) { + Context context = SDL.getContext(); + if (context == null) { + Log.e(TAG, "error handling message, getContext() returned null"); + return; + } + switch (msg.arg1) { + case COMMAND_CHANGE_TITLE: + if (context instanceof Activity) { + ((Activity) context).setTitle((String)msg.obj); + } else { + Log.e(TAG, "error handling message, getContext() returned no Activity"); + } + break; + case COMMAND_CHANGE_WINDOW_STYLE: + if (Build.VERSION.SDK_INT >= 19 /* Android 4.4 (KITKAT) */) { + if (context instanceof Activity) { + Window window = ((Activity) context).getWindow(); + if (window != null) { + if ((msg.obj instanceof Integer) && ((Integer) msg.obj != 0)) { + int flags = View.SYSTEM_UI_FLAG_FULLSCREEN | + View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | + View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | + View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | + View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | + View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.INVISIBLE; + window.getDecorView().setSystemUiVisibility(flags); + window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); + SDLActivity.mFullscreenModeActive = true; + } else { + int flags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_VISIBLE; + window.getDecorView().setSystemUiVisibility(flags); + window.addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); + window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + SDLActivity.mFullscreenModeActive = false; + } + } + } else { + Log.e(TAG, "error handling message, getContext() returned no Activity"); + } + } + break; + case COMMAND_TEXTEDIT_HIDE: + if (mTextEdit != null) { + // Note: On some devices setting view to GONE creates a flicker in landscape. + // Setting the View's sizes to 0 is similar to GONE but without the flicker. + // The sizes will be set to useful values when the keyboard is shown again. + mTextEdit.setLayoutParams(new RelativeLayout.LayoutParams(0, 0)); + + InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(mTextEdit.getWindowToken(), 0); + + mScreenKeyboardShown = false; + + mSurface.requestFocus(); + } + break; + case COMMAND_SET_KEEP_SCREEN_ON: + { + if (context instanceof Activity) { + Window window = ((Activity) context).getWindow(); + if (window != null) { + if ((msg.obj instanceof Integer) && ((Integer) msg.obj != 0)) { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } else { + window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } + } + break; + } + default: + if ((context instanceof SDLActivity) && !((SDLActivity) context).onUnhandledMessage(msg.arg1, msg.obj)) { + Log.e(TAG, "error handling message, command is " + msg.arg1); + } + } + } + } + + // Handler for the messages + Handler commandHandler = new SDLCommandHandler(); + + // Send a message from the SDLMain thread + protected boolean sendCommand(int command, Object data) { + Message msg = commandHandler.obtainMessage(); + msg.arg1 = command; + msg.obj = data; + boolean result = commandHandler.sendMessage(msg); + + if (Build.VERSION.SDK_INT >= 19 /* Android 4.4 (KITKAT) */) { + if (command == COMMAND_CHANGE_WINDOW_STYLE) { + // Ensure we don't return until the resize has actually happened, + // or 500ms have passed. + + boolean bShouldWait = false; + + if (data instanceof Integer) { + // Let's figure out if we're already laid out fullscreen or not. + Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); + DisplayMetrics realMetrics = new DisplayMetrics(); + display.getRealMetrics(realMetrics); + + boolean bFullscreenLayout = ((realMetrics.widthPixels == mSurface.getWidth()) && + (realMetrics.heightPixels == mSurface.getHeight())); + + if ((Integer) data == 1) { + // If we aren't laid out fullscreen or actively in fullscreen mode already, we're going + // to change size and should wait for surfaceChanged() before we return, so the size + // is right back in native code. If we're already laid out fullscreen, though, we're + // not going to change size even if we change decor modes, so we shouldn't wait for + // surfaceChanged() -- which may not even happen -- and should return immediately. + bShouldWait = !bFullscreenLayout; + } else { + // If we're laid out fullscreen (even if the status bar and nav bar are present), + // or are actively in fullscreen, we're going to change size and should wait for + // surfaceChanged before we return, so the size is right back in native code. + bShouldWait = bFullscreenLayout; + } + } + + if (bShouldWait && (SDLActivity.getContext() != null)) { + // We'll wait for the surfaceChanged() method, which will notify us + // when called. That way, we know our current size is really the + // size we need, instead of grabbing a size that's still got + // the navigation and/or status bars before they're hidden. + // + // We'll wait for up to half a second, because some devices + // take a surprisingly long time for the surface resize, but + // then we'll just give up and return. + // + synchronized (SDLActivity.getContext()) { + try { + SDLActivity.getContext().wait(500); + } catch (InterruptedException ie) { + ie.printStackTrace(); + } + } + } + } + } + + return result; + } + + // C functions we call + public static native String nativeGetVersion(); + public static native int nativeSetupJNI(); + public static native int nativeRunMain(String library, String function, Object arguments); + public static native void nativeLowMemory(); + public static native void nativeSendQuit(); + public static native void nativeQuit(); + public static native void nativePause(); + public static native void nativeResume(); + public static native void nativeFocusChanged(boolean hasFocus); + public static native void onNativeDropFile(String filename); + public static native void nativeSetScreenResolution(int surfaceWidth, int surfaceHeight, int deviceWidth, int deviceHeight, float density, float rate); + public static native void onNativeResize(); + public static native void onNativeKeyDown(int keycode); + public static native void onNativeKeyUp(int keycode); + public static native boolean onNativeSoftReturnKey(); + public static native void onNativeKeyboardFocusLost(); + public static native void onNativeMouse(int button, int action, float x, float y, boolean relative); + public static native void onNativeTouch(int touchDevId, int pointerFingerId, + int action, float x, + float y, float p); + public static native void onNativeAccel(float x, float y, float z); + public static native void onNativeClipboardChanged(); + public static native void onNativeSurfaceCreated(); + public static native void onNativeSurfaceChanged(); + public static native void onNativeSurfaceDestroyed(); + public static native String nativeGetHint(String name); + public static native boolean nativeGetHintBoolean(String name, boolean default_value); + public static native void nativeSetenv(String name, String value); + public static native void nativeSetNaturalOrientation(int orientation); + public static native void onNativeRotationChanged(int rotation); + public static native void nativeAddTouch(int touchId, String name); + public static native void nativePermissionResult(int requestCode, boolean result); + public static native void onNativeLocaleChanged(); + public static native void onNativeDarkModeChanged(boolean enabled); + public static native boolean nativeAllowRecreateActivity(); + public static native int nativeCheckSDLThreadCounter(); + + /** + * This method is called by SDL using JNI. + */ + public static boolean setActivityTitle(String title) { + // Called from SDLMain() thread and can't directly affect the view + return mSingleton.sendCommand(COMMAND_CHANGE_TITLE, title); + } + + /** + * This method is called by SDL using JNI. + */ + public static void setWindowStyle(boolean fullscreen) { + // Called from SDLMain() thread and can't directly affect the view + mSingleton.sendCommand(COMMAND_CHANGE_WINDOW_STYLE, fullscreen ? 1 : 0); + } + + /** + * This method is called by SDL using JNI. + * This is a static method for JNI convenience, it calls a non-static method + * so that is can be overridden + */ + public static void setOrientation(int w, int h, boolean resizable, String hint) + { + if (mSingleton != null) { + mSingleton.setOrientationBis(w, h, resizable, hint); + } + } + + /** + * This can be overridden + */ + public void setOrientationBis(int w, int h, boolean resizable, String hint) + { + int orientation_landscape = -1; + int orientation_portrait = -1; + + /* If set, hint "explicitly controls which UI orientations are allowed". */ + if (hint.contains("LandscapeRight") && hint.contains("LandscapeLeft")) { + orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE; + } else if (hint.contains("LandscapeLeft")) { + orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; + } else if (hint.contains("LandscapeRight")) { + orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE; + } + + /* exact match to 'Portrait' to distinguish with PortraitUpsideDown */ + boolean contains_Portrait = hint.contains("Portrait ") || hint.endsWith("Portrait"); + + if (contains_Portrait && hint.contains("PortraitUpsideDown")) { + orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT; + } else if (contains_Portrait) { + orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; + } else if (hint.contains("PortraitUpsideDown")) { + orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT; + } + + boolean is_landscape_allowed = (orientation_landscape != -1); + boolean is_portrait_allowed = (orientation_portrait != -1); + int req; /* Requested orientation */ + + /* No valid hint, nothing is explicitly allowed */ + if (!is_portrait_allowed && !is_landscape_allowed) { + if (resizable) { + /* All orientations are allowed */ + req = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR; + } else { + /* Fixed window and nothing specified. Get orientation from w/h of created window */ + req = (w > h ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); + } + } else { + /* At least one orientation is allowed */ + if (resizable) { + if (is_portrait_allowed && is_landscape_allowed) { + /* hint allows both landscape and portrait, promote to full sensor */ + req = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR; + } else { + /* Use the only one allowed "orientation" */ + req = (is_landscape_allowed ? orientation_landscape : orientation_portrait); + } + } else { + /* Fixed window and both orientations are allowed. Choose one. */ + if (is_portrait_allowed && is_landscape_allowed) { + req = (w > h ? orientation_landscape : orientation_portrait); + } else { + /* Use the only one allowed "orientation" */ + req = (is_landscape_allowed ? orientation_landscape : orientation_portrait); + } + } + } + + Log.v(TAG, "setOrientation() requestedOrientation=" + req + " width=" + w +" height="+ h +" resizable=" + resizable + " hint=" + hint); + mSingleton.setRequestedOrientation(req); + } + + /** + * This method is called by SDL using JNI. + */ + public static void minimizeWindow() { + + if (mSingleton == null) { + return; + } + + Intent startMain = new Intent(Intent.ACTION_MAIN); + startMain.addCategory(Intent.CATEGORY_HOME); + startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mSingleton.startActivity(startMain); + } + + /** + * This method is called by SDL using JNI. + */ + public static boolean shouldMinimizeOnFocusLoss() { + return false; + } + + /** + * This method is called by SDL using JNI. + */ + public static boolean isScreenKeyboardShown() + { + if (mTextEdit == null) { + return false; + } + + if (!mScreenKeyboardShown) { + return false; + } + + InputMethodManager imm = (InputMethodManager) SDL.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + return imm.isAcceptingText(); + + } + + /** + * This method is called by SDL using JNI. + */ + public static boolean supportsRelativeMouse() + { + // DeX mode in Samsung Experience 9.0 and earlier doesn't support relative mice properly under + // Android 7 APIs, and simply returns no data under Android 8 APIs. + // + // This is fixed in Samsung Experience 9.5, which corresponds to Android 8.1.0, and + // thus SDK version 27. If we are in DeX mode and not API 27 or higher, as a result, + // we should stick to relative mode. + // + if (Build.VERSION.SDK_INT < 27 /* Android 8.1 (O_MR1) */ && isDeXMode()) { + return false; + } + + return SDLActivity.getMotionListener().supportsRelativeMouse(); + } + + /** + * This method is called by SDL using JNI. + */ + public static boolean setRelativeMouseEnabled(boolean enabled) + { + if (enabled && !supportsRelativeMouse()) { + return false; + } + + return SDLActivity.getMotionListener().setRelativeMouseEnabled(enabled); + } + + /** + * This method is called by SDL using JNI. + */ + public static boolean sendMessage(int command, int param) { + if (mSingleton == null) { + return false; + } + return mSingleton.sendCommand(command, param); + } + + /** + * This method is called by SDL using JNI. + */ + public static Context getContext() { + return SDL.getContext(); + } + + /** + * This method is called by SDL using JNI. + */ + public static boolean isAndroidTV() { + UiModeManager uiModeManager = (UiModeManager) getContext().getSystemService(UI_MODE_SERVICE); + if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) { + return true; + } + if (Build.MANUFACTURER.equals("MINIX") && Build.MODEL.equals("NEO-U1")) { + return true; + } + if (Build.MANUFACTURER.equals("Amlogic") && Build.MODEL.equals("X96-W")) { + return true; + } + return Build.MANUFACTURER.equals("Amlogic") && Build.MODEL.startsWith("TV"); + } + + public static double getDiagonal() + { + DisplayMetrics metrics = new DisplayMetrics(); + Activity activity = (Activity)getContext(); + if (activity == null) { + return 0.0; + } + activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); + + double dWidthInches = metrics.widthPixels / (double)metrics.xdpi; + double dHeightInches = metrics.heightPixels / (double)metrics.ydpi; + + return Math.sqrt((dWidthInches * dWidthInches) + (dHeightInches * dHeightInches)); + } + + /** + * This method is called by SDL using JNI. + */ + public static boolean isTablet() { + // If our diagonal size is seven inches or greater, we consider ourselves a tablet. + return (getDiagonal() >= 7.0); + } + + /** + * This method is called by SDL using JNI. + */ + public static boolean isChromebook() { + if (getContext() == null) { + return false; + } + return getContext().getPackageManager().hasSystemFeature("org.chromium.arc.device_management"); + } + + /** + * This method is called by SDL using JNI. + */ + public static boolean isDeXMode() { + if (Build.VERSION.SDK_INT < 24 /* Android 7.0 (N) */) { + return false; + } + try { + final Configuration config = getContext().getResources().getConfiguration(); + final Class configClass = config.getClass(); + return configClass.getField("SEM_DESKTOP_MODE_ENABLED").getInt(configClass) + == configClass.getField("semDesktopModeEnabled").getInt(config); + } catch(Exception ignored) { + return false; + } + } + + /** + * This method is called by SDL using JNI. + */ + public static boolean getManifestEnvironmentVariables() { + try { + if (getContext() == null) { + return false; + } + + ApplicationInfo applicationInfo = getContext().getPackageManager().getApplicationInfo(getContext().getPackageName(), PackageManager.GET_META_DATA); + Bundle bundle = applicationInfo.metaData; + if (bundle == null) { + return false; + } + String prefix = "SDL_ENV."; + final int trimLength = prefix.length(); + for (String key : bundle.keySet()) { + if (key.startsWith(prefix)) { + String name = key.substring(trimLength); + String value = bundle.get(key).toString(); + nativeSetenv(name, value); + } + } + /* environment variables set! */ + return true; + } catch (Exception e) { + Log.v(TAG, "exception " + e.toString()); + } + return false; + } + + // This method is called by SDLControllerManager's API 26 Generic Motion Handler. + public static View getContentView() { + return mLayout; + } + + static class ShowTextInputTask implements Runnable { + /* + * This is used to regulate the pan&scan method to have some offset from + * the bottom edge of the input region and the top edge of an input + * method (soft keyboard) + */ + static final int HEIGHT_PADDING = 15; + + public int x, y, w, h; + + public ShowTextInputTask(int x, int y, int w, int h) { + this.x = x; + this.y = y; + this.w = w; + this.h = h; + + /* Minimum size of 1 pixel, so it takes focus. */ + if (this.w <= 0) { + this.w = 1; + } + if (this.h + HEIGHT_PADDING <= 0) { + this.h = 1 - HEIGHT_PADDING; + } + } + + @Override + public void run() { + RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(w, h + HEIGHT_PADDING); + params.leftMargin = x; + params.topMargin = y; + + if (mTextEdit == null) { + mTextEdit = new SDLDummyEdit(SDL.getContext()); + + mLayout.addView(mTextEdit, params); + } else { + mTextEdit.setLayoutParams(params); + } + + mTextEdit.setVisibility(View.VISIBLE); + mTextEdit.requestFocus(); + + InputMethodManager imm = (InputMethodManager) SDL.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.showSoftInput(mTextEdit, 0); + + mScreenKeyboardShown = true; + } + } + + /** + * This method is called by SDL using JNI. + */ + public static boolean showTextInput(int x, int y, int w, int h) { + // Transfer the task to the main thread as a Runnable + return mSingleton.commandHandler.post(new ShowTextInputTask(x, y, w, h)); + } + + public static boolean isTextInputEvent(KeyEvent event) { + + // Key pressed with Ctrl should be sent as SDL_KEYDOWN/SDL_KEYUP and not SDL_TEXTINPUT + if (event.isCtrlPressed()) { + return false; + } + + return event.isPrintingKey() || event.getKeyCode() == KeyEvent.KEYCODE_SPACE; + } + + public static boolean handleKeyEvent(View v, int keyCode, KeyEvent event, InputConnection ic) { + int deviceId = event.getDeviceId(); + int source = event.getSource(); + + if (source == InputDevice.SOURCE_UNKNOWN) { + InputDevice device = InputDevice.getDevice(deviceId); + if (device != null) { + source = device.getSources(); + } + } + +// if (event.getAction() == KeyEvent.ACTION_DOWN) { +// Log.v("SDL", "key down: " + keyCode + ", deviceId = " + deviceId + ", source = " + source); +// } else if (event.getAction() == KeyEvent.ACTION_UP) { +// Log.v("SDL", "key up: " + keyCode + ", deviceId = " + deviceId + ", source = " + source); +// } + + // Dispatch the different events depending on where they come from + // Some SOURCE_JOYSTICK, SOURCE_DPAD or SOURCE_GAMEPAD are also SOURCE_KEYBOARD + // So, we try to process them as JOYSTICK/DPAD/GAMEPAD events first, if that fails we try them as KEYBOARD + // + // Furthermore, it's possible a game controller has SOURCE_KEYBOARD and + // SOURCE_JOYSTICK, while its key events arrive from the keyboard source + // So, retrieve the device itself and check all of its sources + if (SDLControllerManager.isDeviceSDLJoystick(deviceId)) { + // Note that we process events with specific key codes here + if (event.getAction() == KeyEvent.ACTION_DOWN) { + if (SDLControllerManager.onNativePadDown(deviceId, keyCode) == 0) { + return true; + } + } else if (event.getAction() == KeyEvent.ACTION_UP) { + if (SDLControllerManager.onNativePadUp(deviceId, keyCode) == 0) { + return true; + } + } + } + + if ((source & InputDevice.SOURCE_MOUSE) == InputDevice.SOURCE_MOUSE) { + // on some devices key events are sent for mouse BUTTON_BACK/FORWARD presses + // they are ignored here because sending them as mouse input to SDL is messy + if ((keyCode == KeyEvent.KEYCODE_BACK) || (keyCode == KeyEvent.KEYCODE_FORWARD)) { + switch (event.getAction()) { + case KeyEvent.ACTION_DOWN: + case KeyEvent.ACTION_UP: + // mark the event as handled or it will be handled by system + // handling KEYCODE_BACK by system will call onBackPressed() + return true; + } + } + } + + if (event.getAction() == KeyEvent.ACTION_DOWN) { + if (isTextInputEvent(event)) { + if (ic != null) { + ic.commitText(String.valueOf((char) event.getUnicodeChar()), 1); + } else { + SDLInputConnection.nativeCommitText(String.valueOf((char) event.getUnicodeChar()), 1); + } + } + onNativeKeyDown(keyCode); + return true; + } else if (event.getAction() == KeyEvent.ACTION_UP) { + onNativeKeyUp(keyCode); + return true; + } + + return false; + } + + /** + * This method is called by SDL using JNI. + */ + public static Surface getNativeSurface() { + if (SDLActivity.mSurface == null) { + return null; + } + return SDLActivity.mSurface.getNativeSurface(); + } + + // Input + + /** + * This method is called by SDL using JNI. + */ + public static void initTouch() { + int[] ids = InputDevice.getDeviceIds(); + + for (int id : ids) { + InputDevice device = InputDevice.getDevice(id); + /* Allow SOURCE_TOUCHSCREEN and also Virtual InputDevices because they can send TOUCHSCREEN events */ + if (device != null && ((device.getSources() & InputDevice.SOURCE_TOUCHSCREEN) == InputDevice.SOURCE_TOUCHSCREEN + || device.isVirtual())) { + + nativeAddTouch(device.getId(), device.getName()); + } + } + } + + // Messagebox + + /** Result of current messagebox. Also used for blocking the calling thread. */ + protected final int[] messageboxSelection = new int[1]; + + /** + * This method is called by SDL using JNI. + * Shows the messagebox from UI thread and block calling thread. + * buttonFlags, buttonIds and buttonTexts must have same length. + * @param buttonFlags array containing flags for every button. + * @param buttonIds array containing id for every button. + * @param buttonTexts array containing text for every button. + * @param colors null for default or array of length 5 containing colors. + * @return button id or -1. + */ + public int messageboxShowMessageBox( + final int flags, + final String title, + final String message, + final int[] buttonFlags, + final int[] buttonIds, + final String[] buttonTexts, + final int[] colors) { + + messageboxSelection[0] = -1; + + // sanity checks + + if ((buttonFlags.length != buttonIds.length) && (buttonIds.length != buttonTexts.length)) { + return -1; // implementation broken + } + + // collect arguments for Dialog + + final Bundle args = new Bundle(); + args.putInt("flags", flags); + args.putString("title", title); + args.putString("message", message); + args.putIntArray("buttonFlags", buttonFlags); + args.putIntArray("buttonIds", buttonIds); + args.putStringArray("buttonTexts", buttonTexts); + args.putIntArray("colors", colors); + + // trigger Dialog creation on UI thread + + runOnUiThread(new Runnable() { + @Override + public void run() { + messageboxCreateAndShow(args); + } + }); + + // block the calling thread + + synchronized (messageboxSelection) { + try { + messageboxSelection.wait(); + } catch (InterruptedException ex) { + ex.printStackTrace(); + return -1; + } + } + + // return selected value + + return messageboxSelection[0]; + } + + protected void messageboxCreateAndShow(Bundle args) { + + // TODO set values from "flags" to messagebox dialog + + // get colors + + int[] colors = args.getIntArray("colors"); + int backgroundColor; + int textColor; + int buttonBorderColor; + int buttonBackgroundColor; + int buttonSelectedColor; + if (colors != null) { + int i = -1; + backgroundColor = colors[++i]; + textColor = colors[++i]; + buttonBorderColor = colors[++i]; + buttonBackgroundColor = colors[++i]; + buttonSelectedColor = colors[++i]; + } else { + backgroundColor = Color.TRANSPARENT; + textColor = Color.TRANSPARENT; + buttonBorderColor = Color.TRANSPARENT; + buttonBackgroundColor = Color.TRANSPARENT; + buttonSelectedColor = Color.TRANSPARENT; + } + + // create dialog with title and a listener to wake up calling thread + + final AlertDialog dialog = new AlertDialog.Builder(this).create(); + dialog.setTitle(args.getString("title")); + dialog.setCancelable(false); + dialog.setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface unused) { + synchronized (messageboxSelection) { + messageboxSelection.notify(); + } + } + }); + + // create text + + TextView message = new TextView(this); + message.setGravity(Gravity.CENTER); + message.setText(args.getString("message")); + if (textColor != Color.TRANSPARENT) { + message.setTextColor(textColor); + } + + // create buttons + + int[] buttonFlags = args.getIntArray("buttonFlags"); + int[] buttonIds = args.getIntArray("buttonIds"); + String[] buttonTexts = args.getStringArray("buttonTexts"); + + final SparseArray

MY- zf+K}sCe8qU6Ujs`3ua{U0Of$R_gVQBuUA za0v=mu#vIOqiiAZOr&h*$WyOw&k-xr$;G4Ixa!#TJNr>95(h>l%)PUy4p+^SgR(uR zta%k*?ny-+nAr8spEk1fo{J4i!b^Fia`N{_F6@zidA2ZTTrjl#^5Z-2KfB@Cu}l9s z(*|Z2jc?p~vn2f)3y9i*7zJV1L{$?|&q)4oaT;uXi6>1GkRXVTOzAz(RHEmr=eFIi z`}<>-Q?K0GN8!IYxeP1XKXO+jsJbp~o^);Bc;%b7Flpe7;1`Ny@3r7ZR;?R)aJt8C ziNlEC<@3f_lIV4TwV}&e;D!Ee5_|e#g0LUh=5vmYWYm7&2h*M>QPKvGh9-)wfMMW3 z8J9b%1k7dzPzO0_NGQy92BZ^FR6R~6;^6?lqO;-QUP4BY%cG%3vEhbm#>4vIhPBh3 z-+pZGjh$x%Hp{?=FHsMp0&wNPlj00us{&`1ZOZTqs8%4X&xH=UDr*xyBW(Zp&Em94 zf)ZSfn#yg0N)>!1kWdkqJ^S*z0FF5|fj&qcE#Na|%OY0$uO>!&hP+1ywfD_WXk@4J(?MBftK7>$Nvqh@tDuarN%PrTLQ2Uzysx>UV=V zk^RrDSvdQ?0;=hY67EgII-f4`t=+i*yS=Y~!XlqIy_4x&%+OdfbKOFPXS2X5%4R{N z$SQMX^AK6(fA + + + + + + + + + testdraw + Daniel + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/testdraw.vcxproj b/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/testdraw.vcxproj new file mode 100644 index 0000000..f612acf --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/testdraw.vcxproj @@ -0,0 +1,331 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + Debug + ARM + + + Release + ARM + + + Debug + ARM64 + + + Release + ARM64 + + + + {95943bbe-f378-4068-a3fd-dae1b8309b6e} + DirectXApp + testdraw + en-US + 14.0 + true + Windows Store + 10.0.19041.0 + 10.0.17763.0 + 10.0 + false + + + + Application + true + v142 + + + Application + true + v142 + + + Application + true + v142 + true + + + Application + true + v142 + + + Application + false + true + v142 + true + + + Application + false + true + v142 + true + + + Application + false + true + v142 + true + + + Application + false + true + v142 + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + d2d1.lib; d3d11.lib; dxgi.lib; windowscodecs.lib; dwrite.lib; %(AdditionalDependencies) + %(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\arm; $(VCInstallDir)\lib\arm + /nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib %(AdditionalOptions) + + + pch.h + $(IntDir)pch.pch + $(ProjectDir);$(IntermediateOutputPath);..\..\include + /bigobj %(AdditionalOptions) + 4453;28204 + _DEBUG;%(PreprocessorDefinitions) + false + NotUsing + + + + + d2d1.lib; d3d11.lib; dxgi.lib; windowscodecs.lib; dwrite.lib; %(AdditionalDependencies) + %(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\arm; $(VCInstallDir)\lib\arm + /nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib %(AdditionalOptions) + + + pch.h + $(IntDir)pch.pch + $(ProjectDir);$(IntermediateOutputPath);..\..\include + /bigobj %(AdditionalOptions) + 4453;28204 + NDEBUG;%(PreprocessorDefinitions) + false + NotUsing + + + + + d2d1.lib; d3d11.lib; dxgi.lib; windowscodecs.lib; dwrite.lib; %(AdditionalDependencies) + %(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\arm64; $(VCInstallDir)\lib\arm64 + /nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib %(AdditionalOptions) + + + pch.h + $(IntDir)pch.pch + $(ProjectDir);$(IntermediateOutputPath);..\..\include + /bigobj %(AdditionalOptions) + 4453;28204 + _DEBUG;%(PreprocessorDefinitions) + false + NotUsing + + + + + d2d1.lib; d3d11.lib; dxgi.lib; windowscodecs.lib; dwrite.lib; %(AdditionalDependencies) + %(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\arm64; $(VCInstallDir)\lib\arm64 + /nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib %(AdditionalOptions) + + + pch.h + $(IntDir)pch.pch + $(ProjectDir);$(IntermediateOutputPath);..\..\include + /bigobj %(AdditionalOptions) + 4453;28204 + NDEBUG;%(PreprocessorDefinitions) + false + NotUsing + + + + + d2d1.lib; d3d11.lib; dxgi.lib; windowscodecs.lib; dwrite.lib; %(AdditionalDependencies) + %(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store; $(VCInstallDir)\lib + /nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib %(AdditionalOptions) + + + pch.h + $(IntDir)pch.pch + $(ProjectDir);$(IntermediateOutputPath);..\..\include + /bigobj %(AdditionalOptions) + 4453;28204 + _DEBUG;%(PreprocessorDefinitions) + false + NotUsing + + + + + d2d1.lib; d3d11.lib; dxgi.lib; windowscodecs.lib; dwrite.lib; %(AdditionalDependencies) + %(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store; $(VCInstallDir)\lib + /nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib %(AdditionalOptions) + + + pch.h + $(IntDir)pch.pch + $(ProjectDir);$(IntermediateOutputPath);..\..\include + /bigobj %(AdditionalOptions) + 4453;28204 + NDEBUG;%(PreprocessorDefinitions) + false + NotUsing + + + + + d2d1.lib; d3d11.lib; dxgi.lib; windowscodecs.lib; dwrite.lib; %(AdditionalDependencies) + %(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\amd64; $(VCInstallDir)\lib\amd64 + /nodefaultlib:vccorlibd /nodefaultlib:msvcrtd vccorlibd.lib msvcrtd.lib %(AdditionalOptions) + + + pch.h + $(IntDir)pch.pch + $(ProjectDir);$(IntermediateOutputPath);..\..\include + /bigobj %(AdditionalOptions) + 4453;28204 + _DEBUG;%(PreprocessorDefinitions) + false + NotUsing + + + + + d2d1.lib; d3d11.lib; dxgi.lib; windowscodecs.lib; dwrite.lib; %(AdditionalDependencies) + %(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store\amd64; $(VCInstallDir)\lib\amd64 + /nodefaultlib:vccorlib /nodefaultlib:msvcrt vccorlib.lib msvcrt.lib %(AdditionalOptions) + + + pch.h + $(IntDir)pch.pch + $(ProjectDir);$(IntermediateOutputPath);..\..\include + /bigobj %(AdditionalOptions) + 4453;28204 + NDEBUG;%(PreprocessorDefinitions) + false + NotUsing + + + + + + + + + + + + + + Designer + + + + + {89e9b32e-a86a-47c3-a948-d2b1622925ce} + + + + + + + + + + + + + + + + true + true + true + true + true + true + true + true + + + false + false + false + false + false + false + false + false + + + + + + + + + + + + + + + diff --git a/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/testdraw.vcxproj.filters b/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/testdraw.vcxproj.filters new file mode 100644 index 0000000..d41d939 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC-WinRT/testdraw/testdraw.vcxproj.filters @@ -0,0 +1,88 @@ + + + + + 95943bbe-f378-4068-a3fd-dae1b8309b6e + + + dad3d573-ab33-428d-ae70-6098066c27e7 + bmp;fbx;gif;jpg;jpeg;tga;tiff;tif;png + + + e4caa635-e149-44c2-8915-48ffa6ac48f7 + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + + + Assets + + + + + + + + Content + + + Content + + + Common + + + Common + + + Common + + + Common + + + Common + + + Common + + + Common + + + Common + + + Common + + + Common + + + Common + + + + + + + + + diff --git a/extern/SDL3-3.1.0/VisualC/SDL.sln b/extern/SDL3-3.1.0/VisualC/SDL.sln new file mode 100644 index 0000000..f88ed1a --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/SDL.sln @@ -0,0 +1,295 @@ +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{D69D5741-611F-4E14-8541-1FEE94F50B5A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL3", "SDL\SDL.vcxproj", "{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "checkkeys", "tests\checkkeys\checkkeys.vcxproj", "{26828762-C95D-4637-9CB1-7F0979523813}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loopwave", "tests\loopwave\loopwave.vcxproj", "{AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testatomic", "tests\testatomic\testatomic.vcxproj", "{66B32F7E-5716-48D0-B5B9-D832FD052DD5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testautomation", "tests\testautomation\testautomation.vcxproj", "{9C7E8C03-3130-436D-A97E-E8F8ED1AC4EA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testdraw", "tests\testdraw\testdraw.vcxproj", "{8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testfile", "tests\testfile\testfile.vcxproj", "{CAE4F1D0-314F-4B10-805B-0EFD670133A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgl", "tests\testgl\testgl.vcxproj", "{8B5CFB38-CCBA-40A8-AD7A-89C57B070884}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testoverlay", "tests\testoverlay\testoverlay.vcxproj", "{B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testplatform", "tests\testplatform\testplatform.vcxproj", "{26932B24-EFC6-4E3A-B277-ED653DA37968}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testpower", "tests\testpower\testpower.vcxproj", "{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrendertarget", "tests\testrendertarget\testrendertarget.vcxproj", "{2D17C1EB-1157-460E-9A99-A82BFC1F9D1E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testrumble", "tests\testrumble\testrumble.vcxproj", "{BFF40245-E9A6-4297-A425-A554E5D767E8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testscale", "tests\testscale\testscale.vcxproj", "{5D0930C0-7C91-4ECE-9014-7B7DDE9502E6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testshape", "tests\testshape\testshape.vcxproj", "{31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsprite", "tests\testsprite\testsprite.vcxproj", "{40FB7794-D3C3-4CFE-BCF4-A80C96635682}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SDL3_test", "SDL_test\SDL_test.vcxproj", "{DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testcontroller", "tests\testcontroller\testcontroller.vcxproj", "{55812185-D13C-4022-9C81-32E0F4A08305}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testgles2", "tests\testgles2\testgles2.vcxproj", "{E9558DFE-1961-4DD4-B09B-DD0EEFD5C315}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testvulkan", "tests\testvulkan\testvulkan.vcxproj", "{0D604DFD-AAB6-442C-9368-F91A344146AB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testwm", "tests\testwm\testwm.vcxproj", "{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testyuv", "tests\testyuv\testyuv.vcxproj", "{40FB7794-D3C3-4CFE-BCF4-A80C97635682}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsensor", "tests\testsensor\testsensor.vcxproj", "{C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsurround", "tests\testsurround\testsurround.vcxproj", "{70B894A9-E306-49E8-ABC2-932A952A5E5F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testpen", "tests\testpen\testpen.vcxproj", "{C4E04D18-EF76-4B42-B4C2-16A1BACDC1A3}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|Win32.ActiveCfg = Debug|Win32 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|Win32.Build.0 = Debug|Win32 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|x64.ActiveCfg = Debug|x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|x64.Build.0 = Debug|x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|Win32.ActiveCfg = Release|Win32 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|Win32.Build.0 = Release|Win32 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|x64.ActiveCfg = Release|x64 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|x64.Build.0 = Release|x64 + {26828762-C95D-4637-9CB1-7F0979523813}.Debug|Win32.ActiveCfg = Debug|Win32 + {26828762-C95D-4637-9CB1-7F0979523813}.Debug|Win32.Build.0 = Debug|Win32 + {26828762-C95D-4637-9CB1-7F0979523813}.Debug|x64.ActiveCfg = Debug|x64 + {26828762-C95D-4637-9CB1-7F0979523813}.Debug|x64.Build.0 = Debug|x64 + {26828762-C95D-4637-9CB1-7F0979523813}.Release|Win32.ActiveCfg = Release|Win32 + {26828762-C95D-4637-9CB1-7F0979523813}.Release|Win32.Build.0 = Release|Win32 + {26828762-C95D-4637-9CB1-7F0979523813}.Release|x64.ActiveCfg = Release|x64 + {26828762-C95D-4637-9CB1-7F0979523813}.Release|x64.Build.0 = Release|x64 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Debug|Win32.ActiveCfg = Debug|Win32 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Debug|Win32.Build.0 = Debug|Win32 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Debug|x64.ActiveCfg = Debug|x64 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Debug|x64.Build.0 = Debug|x64 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Release|Win32.ActiveCfg = Release|Win32 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Release|Win32.Build.0 = Release|Win32 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Release|x64.ActiveCfg = Release|x64 + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB}.Release|x64.Build.0 = Release|x64 + {66B32F7E-5716-48D0-B5B9-D832FD052DD5}.Debug|Win32.ActiveCfg = Debug|Win32 + {66B32F7E-5716-48D0-B5B9-D832FD052DD5}.Debug|Win32.Build.0 = Debug|Win32 + {66B32F7E-5716-48D0-B5B9-D832FD052DD5}.Debug|x64.ActiveCfg = Debug|x64 + {66B32F7E-5716-48D0-B5B9-D832FD052DD5}.Debug|x64.Build.0 = Debug|x64 + {66B32F7E-5716-48D0-B5B9-D832FD052DD5}.Release|Win32.ActiveCfg = Release|Win32 + {66B32F7E-5716-48D0-B5B9-D832FD052DD5}.Release|Win32.Build.0 = Release|Win32 + {66B32F7E-5716-48D0-B5B9-D832FD052DD5}.Release|x64.ActiveCfg = Release|x64 + {66B32F7E-5716-48D0-B5B9-D832FD052DD5}.Release|x64.Build.0 = Release|x64 + {9C7E8C03-3130-436D-A97E-E8F8ED1AC4EA}.Debug|Win32.ActiveCfg = Debug|Win32 + {9C7E8C03-3130-436D-A97E-E8F8ED1AC4EA}.Debug|Win32.Build.0 = Debug|Win32 + {9C7E8C03-3130-436D-A97E-E8F8ED1AC4EA}.Debug|x64.ActiveCfg = Debug|x64 + {9C7E8C03-3130-436D-A97E-E8F8ED1AC4EA}.Debug|x64.Build.0 = Debug|x64 + {9C7E8C03-3130-436D-A97E-E8F8ED1AC4EA}.Release|Win32.ActiveCfg = Release|Win32 + {9C7E8C03-3130-436D-A97E-E8F8ED1AC4EA}.Release|Win32.Build.0 = Release|Win32 + {9C7E8C03-3130-436D-A97E-E8F8ED1AC4EA}.Release|x64.ActiveCfg = Release|x64 + {9C7E8C03-3130-436D-A97E-E8F8ED1AC4EA}.Release|x64.Build.0 = Release|x64 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Debug|Win32.ActiveCfg = Debug|Win32 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Debug|Win32.Build.0 = Debug|Win32 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Debug|x64.ActiveCfg = Debug|x64 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Debug|x64.Build.0 = Debug|x64 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Release|Win32.ActiveCfg = Release|Win32 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Release|Win32.Build.0 = Release|Win32 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Release|x64.ActiveCfg = Release|x64 + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF}.Release|x64.Build.0 = Release|x64 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Debug|Win32.ActiveCfg = Debug|Win32 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Debug|Win32.Build.0 = Debug|Win32 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Debug|x64.ActiveCfg = Debug|x64 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Debug|x64.Build.0 = Debug|x64 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Release|Win32.ActiveCfg = Release|Win32 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Release|Win32.Build.0 = Release|Win32 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Release|x64.ActiveCfg = Release|x64 + {CAE4F1D0-314F-4B10-805B-0EFD670133A0}.Release|x64.Build.0 = Release|x64 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Debug|Win32.ActiveCfg = Debug|Win32 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Debug|Win32.Build.0 = Debug|Win32 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Debug|x64.ActiveCfg = Debug|x64 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Debug|x64.Build.0 = Debug|x64 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Release|Win32.ActiveCfg = Release|Win32 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Release|Win32.Build.0 = Release|Win32 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Release|x64.ActiveCfg = Release|x64 + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884}.Release|x64.Build.0 = Release|x64 + {B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}.Debug|Win32.ActiveCfg = Debug|Win32 + {B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}.Debug|Win32.Build.0 = Debug|Win32 + {B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}.Debug|x64.ActiveCfg = Debug|x64 + {B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}.Debug|x64.Build.0 = Debug|x64 + {B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}.Release|Win32.ActiveCfg = Release|Win32 + {B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}.Release|Win32.Build.0 = Release|Win32 + {B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}.Release|x64.ActiveCfg = Release|x64 + {B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A}.Release|x64.Build.0 = Release|x64 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Debug|Win32.ActiveCfg = Debug|Win32 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Debug|Win32.Build.0 = Debug|Win32 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Debug|x64.ActiveCfg = Debug|x64 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Debug|x64.Build.0 = Debug|x64 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Release|Win32.ActiveCfg = Release|Win32 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Release|Win32.Build.0 = Release|Win32 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Release|x64.ActiveCfg = Release|x64 + {26932B24-EFC6-4E3A-B277-ED653DA37968}.Release|x64.Build.0 = Release|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Debug|Win32.ActiveCfg = Debug|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Debug|Win32.Build.0 = Debug|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Debug|x64.ActiveCfg = Debug|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Debug|x64.Build.0 = Debug|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Release|Win32.ActiveCfg = Release|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Release|Win32.Build.0 = Release|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Release|x64.ActiveCfg = Release|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3}.Release|x64.Build.0 = Release|x64 + {2D17C1EB-1157-460E-9A99-A82BFC1F9D1E}.Debug|Win32.ActiveCfg = Debug|Win32 + {2D17C1EB-1157-460E-9A99-A82BFC1F9D1E}.Debug|Win32.Build.0 = Debug|Win32 + {2D17C1EB-1157-460E-9A99-A82BFC1F9D1E}.Debug|x64.ActiveCfg = Debug|x64 + {2D17C1EB-1157-460E-9A99-A82BFC1F9D1E}.Debug|x64.Build.0 = Debug|x64 + {2D17C1EB-1157-460E-9A99-A82BFC1F9D1E}.Release|Win32.ActiveCfg = Release|Win32 + {2D17C1EB-1157-460E-9A99-A82BFC1F9D1E}.Release|Win32.Build.0 = Release|Win32 + {2D17C1EB-1157-460E-9A99-A82BFC1F9D1E}.Release|x64.ActiveCfg = Release|x64 + {2D17C1EB-1157-460E-9A99-A82BFC1F9D1E}.Release|x64.Build.0 = Release|x64 + {BFF40245-E9A6-4297-A425-A554E5D767E8}.Debug|Win32.ActiveCfg = Debug|Win32 + {BFF40245-E9A6-4297-A425-A554E5D767E8}.Debug|Win32.Build.0 = Debug|Win32 + {BFF40245-E9A6-4297-A425-A554E5D767E8}.Debug|x64.ActiveCfg = Debug|x64 + {BFF40245-E9A6-4297-A425-A554E5D767E8}.Debug|x64.Build.0 = Debug|x64 + {BFF40245-E9A6-4297-A425-A554E5D767E8}.Release|Win32.ActiveCfg = Release|Win32 + {BFF40245-E9A6-4297-A425-A554E5D767E8}.Release|Win32.Build.0 = Release|Win32 + {BFF40245-E9A6-4297-A425-A554E5D767E8}.Release|x64.ActiveCfg = Release|x64 + {BFF40245-E9A6-4297-A425-A554E5D767E8}.Release|x64.Build.0 = Release|x64 + {5D0930C0-7C91-4ECE-9014-7B7DDE9502E6}.Debug|Win32.ActiveCfg = Debug|Win32 + {5D0930C0-7C91-4ECE-9014-7B7DDE9502E6}.Debug|Win32.Build.0 = Debug|Win32 + {5D0930C0-7C91-4ECE-9014-7B7DDE9502E6}.Debug|x64.ActiveCfg = Debug|x64 + {5D0930C0-7C91-4ECE-9014-7B7DDE9502E6}.Debug|x64.Build.0 = Debug|x64 + {5D0930C0-7C91-4ECE-9014-7B7DDE9502E6}.Release|Win32.ActiveCfg = Release|Win32 + {5D0930C0-7C91-4ECE-9014-7B7DDE9502E6}.Release|Win32.Build.0 = Release|Win32 + {5D0930C0-7C91-4ECE-9014-7B7DDE9502E6}.Release|x64.ActiveCfg = Release|x64 + {5D0930C0-7C91-4ECE-9014-7B7DDE9502E6}.Release|x64.Build.0 = Release|x64 + {31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2}.Debug|Win32.ActiveCfg = Debug|Win32 + {31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2}.Debug|Win32.Build.0 = Debug|Win32 + {31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2}.Debug|x64.ActiveCfg = Debug|x64 + {31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2}.Debug|x64.Build.0 = Debug|x64 + {31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2}.Release|Win32.ActiveCfg = Release|Win32 + {31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2}.Release|Win32.Build.0 = Release|Win32 + {31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2}.Release|x64.ActiveCfg = Release|x64 + {31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2}.Release|x64.Build.0 = Release|x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Win32.ActiveCfg = Debug|Win32 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|Win32.Build.0 = Debug|Win32 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|x64.ActiveCfg = Debug|x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Debug|x64.Build.0 = Debug|x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Win32.ActiveCfg = Release|Win32 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|Win32.Build.0 = Release|Win32 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|x64.ActiveCfg = Release|x64 + {40FB7794-D3C3-4CFE-BCF4-A80C96635682}.Release|x64.Build.0 = Release|x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|Win32.ActiveCfg = Debug|Win32 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|Win32.Build.0 = Debug|Win32 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|x64.ActiveCfg = Debug|x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Debug|x64.Build.0 = Debug|x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Release|Win32.ActiveCfg = Release|Win32 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Release|Win32.Build.0 = Release|Win32 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Release|x64.ActiveCfg = Release|x64 + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A}.Release|x64.Build.0 = Release|x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Debug|Win32.ActiveCfg = Debug|Win32 + {55812185-D13C-4022-9C81-32E0F4A08305}.Debug|Win32.Build.0 = Debug|Win32 + {55812185-D13C-4022-9C81-32E0F4A08305}.Debug|x64.ActiveCfg = Debug|x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Debug|x64.Build.0 = Debug|x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Release|Win32.ActiveCfg = Release|Win32 + {55812185-D13C-4022-9C81-32E0F4A08305}.Release|Win32.Build.0 = Release|Win32 + {55812185-D13C-4022-9C81-32E0F4A08305}.Release|x64.ActiveCfg = Release|x64 + {55812185-D13C-4022-9C81-32E0F4A08305}.Release|x64.Build.0 = Release|x64 + {E9558DFE-1961-4DD4-B09B-DD0EEFD5C315}.Debug|Win32.ActiveCfg = Debug|Win32 + {E9558DFE-1961-4DD4-B09B-DD0EEFD5C315}.Debug|Win32.Build.0 = Debug|Win32 + {E9558DFE-1961-4DD4-B09B-DD0EEFD5C315}.Debug|x64.ActiveCfg = Debug|x64 + {E9558DFE-1961-4DD4-B09B-DD0EEFD5C315}.Debug|x64.Build.0 = Debug|x64 + {E9558DFE-1961-4DD4-B09B-DD0EEFD5C315}.Release|Win32.ActiveCfg = Release|Win32 + {E9558DFE-1961-4DD4-B09B-DD0EEFD5C315}.Release|Win32.Build.0 = Release|Win32 + {E9558DFE-1961-4DD4-B09B-DD0EEFD5C315}.Release|x64.ActiveCfg = Release|x64 + {E9558DFE-1961-4DD4-B09B-DD0EEFD5C315}.Release|x64.Build.0 = Release|x64 + {0D604DFD-AAB6-442C-9368-F91A344146AB}.Debug|Win32.ActiveCfg = Debug|Win32 + {0D604DFD-AAB6-442C-9368-F91A344146AB}.Debug|Win32.Build.0 = Debug|Win32 + {0D604DFD-AAB6-442C-9368-F91A344146AB}.Debug|x64.ActiveCfg = Debug|x64 + {0D604DFD-AAB6-442C-9368-F91A344146AB}.Debug|x64.Build.0 = Debug|x64 + {0D604DFD-AAB6-442C-9368-F91A344146AB}.Release|Win32.ActiveCfg = Release|Win32 + {0D604DFD-AAB6-442C-9368-F91A344146AB}.Release|Win32.Build.0 = Release|Win32 + {0D604DFD-AAB6-442C-9368-F91A344146AB}.Release|x64.ActiveCfg = Release|x64 + {0D604DFD-AAB6-442C-9368-F91A344146AB}.Release|x64.Build.0 = Release|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Debug|Win32.ActiveCfg = Debug|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Debug|Win32.Build.0 = Debug|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Debug|x64.ActiveCfg = Debug|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Debug|x64.Build.0 = Debug|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Release|Win32.ActiveCfg = Release|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Release|Win32.Build.0 = Release|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Release|x64.ActiveCfg = Release|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5}.Release|x64.Build.0 = Release|x64 + {40FB7794-D3C3-4CFE-BCF4-A80C97635682}.Debug|Win32.ActiveCfg = Debug|Win32 + {40FB7794-D3C3-4CFE-BCF4-A80C97635682}.Debug|Win32.Build.0 = Debug|Win32 + {40FB7794-D3C3-4CFE-BCF4-A80C97635682}.Debug|x64.ActiveCfg = Debug|x64 + {40FB7794-D3C3-4CFE-BCF4-A80C97635682}.Debug|x64.Build.0 = Debug|x64 + {40FB7794-D3C3-4CFE-BCF4-A80C97635682}.Release|Win32.ActiveCfg = Release|Win32 + {40FB7794-D3C3-4CFE-BCF4-A80C97635682}.Release|Win32.Build.0 = Release|Win32 + {40FB7794-D3C3-4CFE-BCF4-A80C97635682}.Release|x64.ActiveCfg = Release|x64 + {40FB7794-D3C3-4CFE-BCF4-A80C97635682}.Release|x64.Build.0 = Release|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4}.Debug|Win32.ActiveCfg = Debug|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4}.Debug|Win32.Build.0 = Debug|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4}.Debug|x64.ActiveCfg = Debug|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4}.Debug|x64.Build.0 = Debug|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4}.Release|Win32.ActiveCfg = Release|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4}.Release|Win32.Build.0 = Release|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4}.Release|x64.ActiveCfg = Release|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4}.Release|x64.Build.0 = Release|x64 + {70B894A9-E306-49E8-ABC2-932A952A5E5F}.Debug|Win32.ActiveCfg = Debug|Win32 + {70B894A9-E306-49E8-ABC2-932A952A5E5F}.Debug|Win32.Build.0 = Debug|Win32 + {70B894A9-E306-49E8-ABC2-932A952A5E5F}.Debug|x64.ActiveCfg = Debug|x64 + {70B894A9-E306-49E8-ABC2-932A952A5E5F}.Debug|x64.Build.0 = Debug|x64 + {70B894A9-E306-49E8-ABC2-932A952A5E5F}.Release|Win32.ActiveCfg = Release|Win32 + {70B894A9-E306-49E8-ABC2-932A952A5E5F}.Release|Win32.Build.0 = Release|Win32 + {70B894A9-E306-49E8-ABC2-932A952A5E5F}.Release|x64.ActiveCfg = Release|x64 + {70B894A9-E306-49E8-ABC2-932A952A5E5F}.Release|x64.Build.0 = Release|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC1A3}.Debug|Win32.ActiveCfg = Debug|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC1A3}.Debug|Win32.Build.0 = Debug|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC1A3}.Debug|x64.ActiveCfg = Debug|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC1A3}.Debug|x64.Build.0 = Debug|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC1A3}.Release|Win32.ActiveCfg = Release|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC1A3}.Release|Win32.Build.0 = Release|Win32 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC1A3}.Release|x64.ActiveCfg = Release|x64 + {C4E04D18-EF76-4B42-B4C2-16A1BACDC1A3}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {26828762-C95D-4637-9CB1-7F0979523813} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {66B32F7E-5716-48D0-B5B9-D832FD052DD5} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {9C7E8C03-3130-436D-A97E-E8F8ED1AC4EA} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {CAE4F1D0-314F-4B10-805B-0EFD670133A0} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {26932B24-EFC6-4E3A-B277-ED653DA37968} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {2D17C1EB-1157-460E-9A99-A82BFC1F9D1E} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {BFF40245-E9A6-4297-A425-A554E5D767E8} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {5D0930C0-7C91-4ECE-9014-7B7DDE9502E6} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {40FB7794-D3C3-4CFE-BCF4-A80C96635682} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {55812185-D13C-4022-9C81-32E0F4A08305} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {E9558DFE-1961-4DD4-B09B-DD0EEFD5C315} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {0D604DFD-AAB6-442C-9368-F91A344146AB} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {40FB7794-D3C3-4CFE-BCF4-A80C97635682} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {70B894A9-E306-49E8-ABC2-932A952A5E5F} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + {C4E04D18-EF76-4B42-B4C2-16A1BACDC1A3} = {D69D5741-611F-4E14-8541-1FEE94F50B5A} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C320C9F2-1A8F-41D7-B02B-6338F872BCAD} + EndGlobalSection +EndGlobal diff --git a/extern/SDL3-3.1.0/VisualC/SDL/SDL.vcxproj b/extern/SDL3-3.1.0/VisualC/SDL/SDL.vcxproj new file mode 100644 index 0000000..b82b3d1 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/SDL/SDL.vcxproj @@ -0,0 +1,715 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + SDL3 + {81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68} + SDL + 10.0 + 10.0 + + + + DynamicLibrary + $(DefaultPlatformToolset) + + + DynamicLibrary + $(DefaultPlatformToolset) + + + StaticLibrary + $(DefaultPlatformToolset) + + + StaticLibrary + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + C:\Program Files %28x86%29\Microsoft DirectX SDK %28June 2010%29\Lib\x86;$(LibraryPath) + + + $(ProjectDir)/../../src;$(IncludePath) + + + $(ProjectDir)/../../src;$(IncludePath) + + + $(ProjectDir)/../../src;$(IncludePath) + + + $(ProjectDir)/../../src;$(IncludePath) + + + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/SDL.tlb + + + Disabled + $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + DLL_EXPORT;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + false + StreamingSIMDExtensions + Level3 + OldStyle + OnlyExplicitInline + Use + SDL_internal.h + true + MultiThreadedDebug + + + _DEBUG;%(PreprocessorDefinitions) + + + setupapi.lib;winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/SDL.tlb + + + Disabled + $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + DLL_EXPORT;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + false + Level3 + OldStyle + OnlyExplicitInline + Use + SDL_internal.h + true + MultiThreadedDebug + + + _DEBUG;%(PreprocessorDefinitions) + + + setupapi.lib;winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) + true + Windows + + + winmm.lib;setupapi.lib;version.lib;imm32.lib + + + + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/SDL.tlb + + + $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + DLL_EXPORT;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + false + StreamingSIMDExtensions + Level3 + ProgramDatabase + OnlyExplicitInline + Use + SDL_internal.h + true + MultiThreaded + + + NDEBUG;%(PreprocessorDefinitions) + + + setupapi.lib;winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) + true + Windows + true + true + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/SDL.tlb + + + $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + DLL_EXPORT;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + false + Level3 + ProgramDatabase + OnlyExplicitInline + Use + SDL_internal.h + true + MultiThreaded + + + NDEBUG;%(PreprocessorDefinitions) + + + setupapi.lib;winmm.lib;imm32.lib;version.lib;%(AdditionalDependencies) + true + Windows + true + true + + + winmm.lib;setupapi.lib;version.lib;imm32.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NotUsing + NotUsing + NotUsing + NotUsing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NotUsing + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/SDL/SDL.vcxproj.filters b/extern/SDL3-3.1.0/VisualC/SDL/SDL.vcxproj.filters new file mode 100644 index 0000000..cc5dbfb --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/SDL/SDL.vcxproj.filters @@ -0,0 +1,1486 @@ + + + + + {395b3af0-33d0-411b-b153-de1676bf1ef8} + + + {5a3e3167-75be-414f-8947-a5306df372b2} + + + {546d9ed1-988e-49d3-b1a5-e5b3d19de6c1} + + + {a56247ff-5108-4960-ba6a-6814fd1554ec} + + + {8880dfad-2a06-4e84-ab6e-6583641ad2d1} + + + {2b996a7f-f3e9-4300-a97f-2c907bcd89a9} + + + {5713d682-2bc7-4da4-bcf0-262a98f142eb} + + + {5e27e19f-b3f8-4e2d-b323-b00b2040ec86} + + + {a3ab9cff-8495-4a5c-8af6-27e43199a712} + + + {377061e4-3856-4f05-b916-0d3b360df0f6} + + + {226a6643-1c65-4c7f-92aa-861313d974bb} + + + {ef859522-a7fe-4a00-a511-d6a9896adf5b} + + + {01fd2642-4493-4316-b548-fb829f4c9125} + + + {cce7558f-590a-4f0a-ac0d-e579f76e588e} + + + {7a53c9e4-d4bd-40ed-9265-1625df685121} + + + {4c7a051c-ce7c-426c-bf8c-9187827f9052} + + + {97e2f79f-311b-42ea-81b2-e801649fdd93} + + + {baf97c8c-7e90-41e5-bff8-14051b8d3956} + + + {45e50d3a-56c9-4352-b811-0c60c49a2431} + + + {9d86e0ef-d6f6-4db2-bfc5-b3529406fa8d} + + + {b35fa13c-6ed2-4680-8c56-c7d71b76ceab} + + + {61b61b31-9e26-4171-a3bb-b969f1889726} + + + {f63aa216-6ee7-4143-90d3-32be3787f276} + + + {90bee923-89df-417f-a6c3-3e260a7dd54d} + + + {4c8ad943-c2fb-4014-9ca3-041e0ad08426} + + + {3d68ae70-a9ff-46cf-be69-069f0b02aca0} + + + {ebc2fca3-3c26-45e3-815e-3e0581d5e226} + + + {47c445a2-7014-4e15-9660-7c89a27dddcf} + + + {d008487d-6ed0-4251-848b-79a68e3c1459} + + + {c9e8273e-13ae-47dc-bef8-8ad8e64c9a3e} + + + {c9e8273e-13ae-47dc-bef8-8ad8e64c9a3d} + + + {0b8e136d-56ae-47e7-9981-e863a57ac616} + + + {bf3febd3-9328-43e8-b196-0fd3be8177dd} + + + {1a62dc68-52d2-4c07-9d81-d94dfe1d0d12} + + + {e9f01b22-34b3-4380-ade6-0e96c74e9c90} + + + {f674f22f-7841-4f3a-974e-c36b2d4823fc} + + + {d7ad92de-4e55-4202-9b2b-1bd9a35fe4dc} + + + {8311d79d-9ad5-4369-99fe-b2fb2659d402} + + + {6c4dfb80-fdf9-497c-a6ff-3cd8f22efde9} + + + {4810e35c-33cb-4da2-bfaf-452da20d3c9a} + + + {2cf93f1d-81fd-4bdc-998c-5e2fa43988bc} + + + {5752b7ab-2344-4f38-95ab-b5d3bc150315} + + + {7a0eae3d-f113-4914-b926-6816d1929250} + + + {ee602cbf-96a2-4b0b-92a9-51d38a727411} + + + {a812185b-9060-4a1c-8431-be4f66894626} + + + {31c16cdf-adc4-4950-8293-28ba530f3882} + + + {add61b53-8144-47d6-bd67-3420a87c4905} + + + {e7cdcf36-b462-49c7-98b7-07ea7b3687f4} + + + {82588eef-dcaa-4f69-b2a9-e675940ce54c} + + + {560239c3-8fa1-4d23-a81a-b8408b2f7d3f} + + + {81711059-7575-4ece-9e68-333b63e992c4} + + + {1e44970f-7535-4bfb-b8a5-ea0cea0349e0} + + + {1dd91224-1176-492b-a2cb-e26153394db0} + + + {e3ecfe50-cf22-41d3-8983-2fead5164b47} + + + {5521d22f-1e52-47a6-8c52-06a3b6bdefd7} + + + {4755f3a6-49ac-46d6-86be-21f5c21f2197} + + + {f48c2b17-1bee-4fec-a7c8-24cf619abe08} + + + {00001967ea2801028a046a722a070000} + + + {0000ddc7911820dbe64274d3654f0000} + + + {0000de1b75e1a954834693f1c81e0000} + + + {0000fc2700d453b3c8d79fe81e1c0000} + + + {0000fbfe2d21e4f451142e7d0e870000} + + + {5115ba31-20f8-4eab-a8c5-6a572ab78ff7} + + + {00003288226ff86b99eee5b443e90000} + + + {0000d7fda065b13b0ca4ab262c380000} + + + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + API Headers + + + camera + + + camera + + + filesystem + + + main + + + + + + API Headers + + + API Headers + + + API Headers + + + audio + + + audio + + + audio + + + audio + + + audio + + + audio + + + core\windows + + + core\windows + + + core\windows + + + core\windows + + + core\windows + + + cpuinfo + + + dynapi + + + dynapi + + + dynapi + + + dynapi + + + events + + + events + + + events + + + events + + + events + + + events + + + events + + + events + + + events + + + events + + + events + + + haptic + + + haptic + + + joystick + + + joystick + + + joystick + + + joystick + + + joystick + + + joystick + + + joystick + + + libm + + + libm + + + hidapi\hidapi + + + locale + + + misc + + + audio\directsound + + + audio\disk + + + audio\dummy + + + audio\wasapi + + + haptic\windows + + + haptic\windows + + + joystick\hidapi + + + joystick\hidapi + + + joystick\windows + + + joystick\windows + + + joystick\windows + + + joystick\windows + + + joystick\virtual + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video\dummy + + + video\dummy + + + video\dummy + + + video\yuv2rgb + + + video\yuv2rgb + + + video\yuv2rgb + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + timer + + + thread + + + thread + + + thread\windows + + + thread\windows + + + thread\generic + + + sensor + + + sensor + + + sensor\dummy + + + sensor\windows + + + render + + + render + + + render + + + render\direct3d + + + render\direct3d11 + + + render\opengl + + + render\opengl + + + render\opengles2 + + + render\opengles2 + + + render\software + + + render\software + + + render\software + + + render\software + + + render\software + + + render\software + + + render\software + + + render\software + + + render\software + + + power + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + video\khronos\vulkan + + + + + + + + render\direct3d12 + + + + + + + + + + + render\vulkan + + + + + + + + camera\dummy + + + camera\mediafoundation + + + camera + + + filesystem + + + filesystem\windows + + + main\generic + + + main + + + + + + + + + + + + audio + + + audio + + + audio + + + audio + + + audio + + + audio + + + audio + + + audio + + + atomic + + + atomic + + + core + + + core + + + core\windows + + + core\windows + + + core\windows + + + core\windows + + + cpuinfo + + + dynapi + + + events + + + events + + + events + + + events + + + events + + + events + + + events + + + events + + + events + + + events + + + file + + + filesystem\windows + + + haptic + + + hidapi + + + joystick + + + joystick + + + joystick + + + joystick + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + libm + + + loadso\windows + + + misc + + + misc\windows + + + locale\windows + + + locale + + + audio\directsound + + + audio\disk + + + audio\dummy + + + audio\wasapi + + + audio\wasapi + + + haptic\windows + + + haptic\windows + + + haptic\dummy + + + joystick\dummy + + + joystick\gdk + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\hidapi + + + joystick\windows + + + joystick\windows + + + joystick\windows + + + joystick\windows + + + joystick\windows + + + joystick\virtual + + + time + + + time\windows + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video + + + video\dummy + + + video\dummy + + + video\dummy + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + video\windows + + + timer + + + timer\windows + + + thread + + + thread\windows + + + thread\windows + + + thread\windows + + + thread\windows + + + thread\windows + + + thread\windows + + + thread\generic + + + stdlib + + + stdlib + + + stdlib + + + stdlib + + + stdlib + + + stdlib + + + stdlib + + + stdlib + + + stdlib + + + stdlib + + + stdlib + + + stdlib + + + sensor + + + sensor\dummy + + + sensor\windows + + + render + + + render + + + render + + + render + + + render\direct3d + + + render\direct3d + + + render\direct3d11 + + + render\direct3d11 + + + render\opengl + + + render\opengl + + + render\opengles2 + + + render\opengles2 + + + render\software + + + render\software + + + render\software + + + render\software + + + render\software + + + render\software + + + render\software + + + render\software + + + power + + + + power\windows + + + render\direct3d12 + + + render\direct3d12 + + + core\windows + + + stdlib + + + + + + + render\vulkan + + + render\vulkan + + + + + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/SDL/SDL.vcxproj.user b/extern/SDL3-3.1.0/VisualC/SDL/SDL.vcxproj.user new file mode 100644 index 0000000..966b4ff --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/SDL/SDL.vcxproj.user @@ -0,0 +1,6 @@ + + + + true + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/SDL_test/SDL_test.vcxproj b/extern/SDL3-3.1.0/VisualC/SDL_test/SDL_test.vcxproj new file mode 100644 index 0000000..f652cfc --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/SDL_test/SDL_test.vcxproj @@ -0,0 +1,175 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + SDL3_test + {DA956FD3-E143-46F2-9FE5-C77BEBC56B1A} + SDL_test + 10.0 + + + + StaticLibrary + $(DefaultPlatformToolset) + + + StaticLibrary + $(DefaultPlatformToolset) + + + StaticLibrary + $(DefaultPlatformToolset) + + + StaticLibrary + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + + + + + $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + StreamingSIMDExtensions + Level3 + OldStyle + true + true + + + + + X64 + + + $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + true + MultiThreadedDLL + false + Level3 + OldStyle + true + true + + + + + + + + + Disabled + $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + false + StreamingSIMDExtensions + Level3 + OldStyle + true + true + + + + + X64 + + + Disabled + $(ProjectDir)/../../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + false + Level3 + OldStyle + true + true + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/clean.sh b/extern/SDL3-3.1.0/VisualC/clean.sh new file mode 100644 index 0000000..fd16f9a --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/clean.sh @@ -0,0 +1,4 @@ +#!/bin/sh +find . -type f \( -name '*.user' -o -name '*.sdf' -o -name '*.ncb' -o -name '*.suo' \) -print -delete +find . -type f \( -name '*.bmp' -o -name '*.wav' -o -name '*.dat' \) -print -delete +find . -depth -type d \( -name Win32 -o -name x64 \) -exec rm -rv {} \; diff --git a/extern/SDL3-3.1.0/VisualC/pkg-support/cmake/sdl3-config-version.cmake b/extern/SDL3-3.1.0/VisualC/pkg-support/cmake/sdl3-config-version.cmake new file mode 100644 index 0000000..3c455dc --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/pkg-support/cmake/sdl3-config-version.cmake @@ -0,0 +1,54 @@ +# based on the files generated by CMake's write_basic_package_version_file + +# SDL CMake version configuration file: +# This file is meant to be placed in a cmake subfolder of SDL3-devel-3.x.y-VC + +if(NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/../include/SDL3/SDL_version.h") + message(AUTHOR_WARNING "Could not find SDL3/SDL_version.h. This script is meant to be placed in the root of SDL3-devel-3.x.y-VC") + return() +endif() + +file(READ "${CMAKE_CURRENT_LIST_DIR}/../include/SDL3/SDL_version.h" _sdl_version_h) +string(REGEX MATCH "#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)" _sdl_major_re "${_sdl_version_h}") +set(_sdl_major "${CMAKE_MATCH_1}") +string(REGEX MATCH "#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)" _sdl_minor_re "${_sdl_version_h}") +set(_sdl_minor "${CMAKE_MATCH_1}") +string(REGEX MATCH "#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)" _sdl_patch_re "${_sdl_version_h}") +set(_sdl_patch "${CMAKE_MATCH_1}") +if(_sdl_major_re AND _sdl_minor_re AND _sdl_patch_re) + set(PACKAGE_VERSION "${_sdl_major}.${_sdl_minor}.${_sdl_patch}") +else() + message(AUTHOR_WARNING "Could not extract version from SDL3/SDL_version.h.") + return() +endif() + +if(PACKAGE_FIND_VERSION_RANGE) + # Package version must be in the requested version range + if ((PACKAGE_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MIN) + OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_GREATER PACKAGE_FIND_VERSION_MAX) + OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_GREATER_EQUAL PACKAGE_FIND_VERSION_MAX))) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + endif() +else() + if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() + endif() +endif() + +# if the using project doesn't have CMAKE_SIZEOF_VOID_P set, fail. +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() + +# check that the installed version has the same 32/64bit-ness as the one which is currently searching: +if(NOT (CMAKE_SIZEOF_VOID_P STREQUAL "8" OR CMAKE_SIZEOF_VOID_P STREQUAL "4")) + set(PACKAGE_VERSION "${PACKAGE_VERSION} (32+64bit)") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/extern/SDL3-3.1.0/VisualC/pkg-support/cmake/sdl3-config.cmake b/extern/SDL3-3.1.0/VisualC/pkg-support/cmake/sdl3-config.cmake new file mode 100644 index 0000000..fda40b7 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/pkg-support/cmake/sdl3-config.cmake @@ -0,0 +1,133 @@ +# SDL CMake configuration file: +# This file is meant to be placed in a cmake subfolder of SDL3-devel-3.x.y-VC + +cmake_minimum_required(VERSION 3.0...3.5) + +include(FeatureSummary) +set_package_properties(SDL3 PROPERTIES + URL "https://www.libsdl.org/" + DESCRIPTION "low level access to audio, keyboard, mouse, joystick, and graphics hardware" +) + +# Copied from `configure_package_config_file` +macro(set_and_check _var _file) + set(${_var} "${_file}") + if(NOT EXISTS "${_file}") + message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") + endif() +endmacro() + +# Copied from `configure_package_config_file` +macro(check_required_components _NAME) + foreach(comp ${${_NAME}_FIND_COMPONENTS}) + if(NOT ${_NAME}_${comp}_FOUND) + if(${_NAME}_FIND_REQUIRED_${comp}) + set(${_NAME}_FOUND FALSE) + endif() + endif() + endforeach() +endmacro() + +set(SDL3_FOUND TRUE) + +if(CMAKE_SIZEOF_VOID_P STREQUAL "4") + set(_sdl_arch_subdir "x86") +elseif(CMAKE_SIZEOF_VOID_P STREQUAL "8") + set(_sdl_arch_subdir "x64") +else() + set(SDL3_FOUND FALSE) + return() +endif() + +get_filename_component(_sdl3_prefix "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE) +set_and_check(_sdl3_prefix "${_sdl3_prefix}") +set(_sdl3_include_dirs "${_sdl3_prefix}/include;${_sdl3_prefix}/include/SDL3") + +set(_sdl3_library "${_sdl3_prefix}/lib/${_sdl_arch_subdir}/SDL3.lib") +set(_sdl3_dll_library "${_sdl3_prefix}/lib/${_sdl_arch_subdir}/SDL3.dll") +set(_sdl3test_library "${_sdl3_prefix}/lib/${_sdl_arch_subdir}/SDL3_test.lib") + +unset(_sdl_arch_subdir) +unset(_sdl3_prefix) + +# All targets are created, even when some might not be requested though COMPONENTS. +# This is done for compatibility with CMake generated SDL3-target.cmake files. + +if(NOT TARGET SDL3::Headers) + add_library(SDL3::Headers INTERFACE IMPORTED) + set_target_properties(SDL3::Headers + PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_sdl3_include_dirs}" + ) +endif() +set(SDL3_Headers_FOUND TRUE) +unset(_sdl3_include_dirs) + +if(EXISTS "${_sdl3_library}" AND EXISTS "${_sdl3_dll_library}") + if(NOT TARGET SDL3::SDL3-shared) + add_library(SDL3::SDL3-shared SHARED IMPORTED) + set_target_properties(SDL3::SDL3-shared + PROPERTIES + INTERFACE_LINK_LIBRARIES "SDL3::Headers" + IMPORTED_IMPLIB "${_sdl3_library}" + IMPORTED_LOCATION "${_sdl3_dll_library}" + COMPATIBLE_INTERFACE_BOOL "SDL3_SHARED" + INTERFACE_SDL3_SHARED "ON" + COMPATIBLE_INTERFACE_STRING "SDL_VERSION" + INTERFACE_SDL_VERSION "SDL3" + ) + endif() + set(SDL3_SDL3-shared_FOUND TRUE) +else() + set(SDL3_SDL3-shared_FOUND FALSE) +endif() +unset(_sdl3_library) +unset(_sdl3_dll_library) + +set(SDL3_SDL3-static_FOUND FALSE) + +if(EXISTS "${_sdl3test_library}") + if(NOT TARGET SDL3::SDL3_test) + add_library(SDL3::SDL3_test STATIC IMPORTED) + set_target_properties(SDL3::SDL3_test + PROPERTIES + INTERFACE_LINK_LIBRARIES "SDL3::Headers" + IMPORTED_LOCATION "${_sdl3test_library}" + COMPATIBLE_INTERFACE_STRING "SDL_VERSION" + INTERFACE_SDL_VERSION "SDL3" + ) + endif() + set(SDL3_SDL3_test_FOUND TRUE) +else() + set(SDL3_SDL3_test_FOUND FALSE) +endif() +unset(_sdl3test_library) + +if(SDL3_SDL3-shared_FOUND) + set(SDL3_SDL3_FOUND TRUE) +endif() + +function(_sdl_create_target_alias_compat NEW_TARGET TARGET) + if(CMAKE_VERSION VERSION_LESS "3.18") + # Aliasing local targets is not supported on CMake < 3.18, so make it global. + add_library(${NEW_TARGET} INTERFACE IMPORTED) + set_target_properties(${NEW_TARGET} PROPERTIES INTERFACE_LINK_LIBRARIES "${TARGET}") + else() + add_library(${NEW_TARGET} ALIAS ${TARGET}) + endif() +endfunction() + +# Make sure SDL3::SDL3 always exists +if(NOT TARGET SDL3::SDL3) + if(TARGET SDL3::SDL3-shared) + _sdl_create_target_alias_compat(SDL3::SDL3 SDL3::SDL3-shared) + endif() +endif() + +check_required_components(SDL3) + +set(SDL3_LIBRARIES SDL3::SDL3) +set(SDL3_STATIC_LIBRARIES SDL3::SDL3-static) +set(SDL3_STATIC_PRIVATE_LIBS) + +set(SDL3TEST_LIBRARY SDL3::SDL3_test) diff --git a/extern/SDL3-3.1.0/VisualC/tests/checkkeys/checkkeys.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/checkkeys/checkkeys.vcxproj new file mode 100644 index 0000000..fac6ce5 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/checkkeys/checkkeys.vcxproj @@ -0,0 +1,219 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {26828762-C95D-4637-9CB1-7F0979523813} + checkkeys + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/checkkeys.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/checkkeys.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/checkkeys.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + + + .\Release/checkkeys.pch + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/checkkeys.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + + + .\Release/checkkeys.pch + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + $(SolutionDir)$(Platform)\$(Configuration);%(AdditionalIncludeDirectories) + $(Platform)\$(Configuration)\;%(AdditionalUsingDirectories) + %(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + $(SolutionDir)$(Platform)\$(Configuration);%(AdditionalIncludeDirectories) + $(Platform)\$(Configuration)\;%(AdditionalUsingDirectories) + $(SolutionDir)$(Platform)\$(Configuration);%(AdditionalIncludeDirectories) + $(Platform)\$(Configuration)\;%(AdditionalUsingDirectories) + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/loopwave/loopwave.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/loopwave/loopwave.vcxproj new file mode 100644 index 0000000..aa59a8a --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/loopwave/loopwave.vcxproj @@ -0,0 +1,231 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {AAAD1CB5-7ADA-47AE-85A0-08A6EC48FAFB} + loopwave + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/loopwave.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + + + .\Release/loopwave.pch + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/loopwave.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + + + .\Release/loopwave.pch + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/loopwave.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/loopwave.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/loopwave/sample.wav b/extern/SDL3-3.1.0/VisualC/tests/loopwave/sample.wav new file mode 100644 index 0000000000000000000000000000000000000000..002f8158151d600e52930f63b0e832508b6e2c90 GIT binary patch literal 121946 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 nKM(s*1+Y@>Pbj*5E_Cddif;BJl~&UI2~*D6{q + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {66B32F7E-5716-48D0-B5B9-D832FD052DD5} + testatomic + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testatomic.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testatomic.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testatomic.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testatomic.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testautomation/testautomation.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testautomation/testautomation.vcxproj new file mode 100644 index 0000000..3b157db --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testautomation/testautomation.vcxproj @@ -0,0 +1,239 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {9C7E8C03-3130-436D-A97E-E8F8ED1AC4EA} + testautomation + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testautomation.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testautomation.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testautomation.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testautomation.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + + + + + + + + + + + $(ProjectDir)\..\..\..\src;%(AdditionalIncludeDirectories) + $(ProjectDir)\..\..\..\src;%(AdditionalIncludeDirectories) + $(ProjectDir)\..\..\..\src;%(AdditionalIncludeDirectories) + $(ProjectDir)\..\..\..\src;%(AdditionalIncludeDirectories) + + + + + + + + + + + + + + + + + + + + + + diff --git a/extern/SDL3-3.1.0/VisualC/tests/testcontroller/testcontroller.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testcontroller/testcontroller.vcxproj new file mode 100644 index 0000000..dbc1b44 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testcontroller/testcontroller.vcxproj @@ -0,0 +1,206 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {55812185-D13C-4022-9C81-32E0F4A08305} + testcontroller + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testcontroller.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testcontroller.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testcontroller.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testcontroller.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + + + diff --git a/extern/SDL3-3.1.0/VisualC/tests/testdraw/testdraw.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testdraw/testdraw.vcxproj new file mode 100644 index 0000000..453f51c --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testdraw/testdraw.vcxproj @@ -0,0 +1,204 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {8682FE1E-0CF6-4EDD-9BB5-1733D8C8B4DF} + testdraw + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testdraw.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testdraw.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testdraw.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testdraw.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testfile/testfile.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testfile/testfile.vcxproj new file mode 100644 index 0000000..2f8d8d2 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testfile/testfile.vcxproj @@ -0,0 +1,204 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {CAE4F1D0-314F-4B10-805B-0EFD670133A0} + testfile + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testfile.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testfile.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testfile.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testfile.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testgl/testgl.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testgl/testgl.vcxproj new file mode 100644 index 0000000..7c3c8b9 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testgl/testgl.vcxproj @@ -0,0 +1,208 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {8B5CFB38-CCBA-40A8-AD7A-89C57B070884} + testgl + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testgl.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + _DEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testgl.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + _DEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testgl.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + NDEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testgl.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + NDEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testgles2/testgles2.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testgles2/testgles2.vcxproj new file mode 100644 index 0000000..d018d72 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testgles2/testgles2.vcxproj @@ -0,0 +1,204 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {E9558DFE-1961-4DD4-B09B-DD0EEFD5C315} + testgles2 + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testgles2.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testgles2.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + _DEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + true + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testgles2.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testgles2.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + NDEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + opengl32.lib;%(AdditionalDependencies) + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testoverlay/moose.dat b/extern/SDL3-3.1.0/VisualC/tests/testoverlay/moose.dat new file mode 100644 index 0000000000000000000000000000000000000000..10530046fd7cc7545e5a0c94924ae158e1842a34 GIT binary patch literal 56320 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 ajO)(@=U+hI*Y(c%{+BN=5%}L0f&T+K7G;e9 literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC/tests/testoverlay/testoverlay.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testoverlay/testoverlay.vcxproj new file mode 100644 index 0000000..40a657a --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testoverlay/testoverlay.vcxproj @@ -0,0 +1,225 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {B51E0D74-F0A2-45A2-BD2A-8B7D95B8204A} + testoverlay + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testoverlay.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testoverlay.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testoverlay.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testoverlay.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testpen/testpen.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testpen/testpen.vcxproj new file mode 100644 index 0000000..525021b --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testpen/testpen.vcxproj @@ -0,0 +1,204 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {C4E04D18-EF76-4B42-B4C2-16A1BACDC1A3} + testpower + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testpower.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testpower.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testpower.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testpower.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testplatform/testplatform.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testplatform/testplatform.vcxproj new file mode 100644 index 0000000..4f2dfe9 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testplatform/testplatform.vcxproj @@ -0,0 +1,232 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {26932B24-EFC6-4E3A-B277-ED653DA37968} + testplatform + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testplatform.tlb + + + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + .\Debug/testplatform.pch + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + true + .\Debug/testplatform.bsc + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testplatform.tlb + + + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + .\Debug/testplatform.pch + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + true + .\Debug/testplatform.bsc + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testplatform.tlb + + + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + .\Release/testplatform.pch + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + true + .\Release/testplatform.bsc + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testplatform.tlb + + + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + .\Release/testplatform.pch + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + true + .\Release/testplatform.bsc + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testpower/testpower.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testpower/testpower.vcxproj new file mode 100644 index 0000000..f968a6b --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testpower/testpower.vcxproj @@ -0,0 +1,204 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A3} + testpower + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testpower.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testpower.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testpower.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testpower.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testrendertarget/icon.bmp b/extern/SDL3-3.1.0/VisualC/tests/testrendertarget/icon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cc96356acb521c7f1518acdb2a3b5d59b8a061aa GIT binary patch literal 578 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 literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC/tests/testrendertarget/testrendertarget.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testrendertarget/testrendertarget.vcxproj new file mode 100644 index 0000000..bcd7158 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testrendertarget/testrendertarget.vcxproj @@ -0,0 +1,243 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {2D17C1EB-1157-460E-9A99-A82BFC1F9D1E} + testrendertarget + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testrendertarget.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testrendertarget.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testrendertarget.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testrendertarget.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + + + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testrumble/testrumble.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testrumble/testrumble.vcxproj new file mode 100644 index 0000000..13bbff5 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testrumble/testrumble.vcxproj @@ -0,0 +1,204 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {BFF40245-E9A6-4297-A425-A554E5D767E8} + testrumble + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testrumble.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testrumble.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testrumble.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testrumble.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testscale/icon.bmp b/extern/SDL3-3.1.0/VisualC/tests/testscale/icon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cc96356acb521c7f1518acdb2a3b5d59b8a061aa GIT binary patch literal 578 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 literal 0 HcmV?d00001 diff --git a/extern/SDL3-3.1.0/VisualC/tests/testscale/testscale.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testscale/testscale.vcxproj new file mode 100644 index 0000000..eca24cc --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testscale/testscale.vcxproj @@ -0,0 +1,243 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {5D0930C0-7C91-4ECE-9014-7B7DDE9502E6} + testscale + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testscale.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testscale.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testscale.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testscale.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + + + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testsensor/testsensor.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testsensor/testsensor.vcxproj new file mode 100644 index 0000000..d5fe28e --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testsensor/testsensor.vcxproj @@ -0,0 +1,204 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A4} + testsensor + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testsensor.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testsensor.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testsensor.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testsensor.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testshape/testshape.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testshape/testshape.vcxproj new file mode 100644 index 0000000..41bf2a3 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testshape/testshape.vcxproj @@ -0,0 +1,204 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {31A3E4E1-AAE9-4EF3-9B23-18D0924BE4D2} + testshape + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testshape.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testshape.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testshape.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testshape.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testsprite/icon.bmp b/extern/SDL3-3.1.0/VisualC/tests/testsprite/icon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cc96356acb521c7f1518acdb2a3b5d59b8a061aa GIT binary patch literal 578 zcmcgoK@Nm42&C%Gi}VGyC*RS#Puc$;>j1^7i6@ht1lnN+#Fo7bq$tQ6Vr>y + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {40FB7794-D3C3-4CFE-BCF4-A80C96635682} + testsprite + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testsprite.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testsprite.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testsprite.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testsprite.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + Copying %(Filename)%(Extension) + copy "%(FullPath)" "$(ProjectDir)\" + + $(ProjectDir)\%(Filename)%(Extension);%(Outputs) + + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testsurround/testsurround.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testsurround/testsurround.vcxproj new file mode 100644 index 0000000..47c5cff --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testsurround/testsurround.vcxproj @@ -0,0 +1,210 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {70B894A9-E306-49E8-ABC2-932A952A5E5F} + testsurround + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testsurround.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + + + .\Release/testsurround.pch + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Console + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testsurround.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + + + .\Release/testsurround.pch + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Console + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testsurround.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Console + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testsurround.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Console + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testvulkan/testvulkan.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testvulkan/testvulkan.vcxproj new file mode 100644 index 0000000..d18a509 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testvulkan/testvulkan.vcxproj @@ -0,0 +1,200 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {0D604DFD-AAB6-442C-9368-F91A344146AB} + testvulkan + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testvulkan.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + _DEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testvulkan.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + _DEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testvulkan.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + NDEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testvulkan.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + NDEBUG;WIN32;_WINDOWS;HAVE_OPENGL;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testwm/testwm.vcxproj b/extern/SDL3-3.1.0/VisualC/tests/testwm/testwm.vcxproj new file mode 100644 index 0000000..ac94a49 --- /dev/null +++ b/extern/SDL3-3.1.0/VisualC/tests/testwm/testwm.vcxproj @@ -0,0 +1,204 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {C4E04D18-EF76-4B42-B4C2-16A1BACDC0A5} + testwm + 10.0 + + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + Application + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + AllRules.ruleset + + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Debug/testwm.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + _DEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Debug/testwm.tlb + + + Disabled + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + OldStyle + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + Win32 + .\Release/testwm.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + NDEBUG;%(PreprocessorDefinitions) + true + true + X64 + .\Release/testwm.tlb + + + $(SolutionDir)/../include;%(AdditionalIncludeDirectories) + %(AdditionalUsingDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + Windows + + + + + {81ce8daf-ebb2-4761-8e45-b71abcca8c68} + false + false + true + + + {da956fd3-e143-46f2-9fe5-c77bebc56b1a} + false + false + true + + + + + + + + + \ No newline at end of file diff --git a/extern/SDL3-3.1.0/VisualC/tests/testyuv/testyuv.bmp b/extern/SDL3-3.1.0/VisualC/tests/testyuv/testyuv.bmp new file mode 100644 index 0000000000000000000000000000000000000000..af32034b6b5b858be470f9ef3bb023bc199bf96e GIT binary patch literal 739398 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ŽAD149Wj?1|X01)I4BQdAPsJ(8D&;wq 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