Browse Source

Made SDL_dlopennote.h a public header

Sam Lantinga 1 day ago
parent
commit
ee622c570a

+ 3 - 2
CMakeLists.txt

@@ -1748,9 +1748,10 @@ elseif(UNIX AND NOT APPLE AND NOT RISCOS AND NOT HAIKU)
       return argc + dlnote.hdr.a;
       return argc + dlnote.hdr.a;
     }
     }
     ]==])
     ]==])
+    set(SDL_DISABLE_DLOPEN_NOTES FALSE)
     check_c_source_compiles("${CHECK_ELF_DLNOTES_SRC}" COMPILER_SUPPORTS_ELFNOTES)
     check_c_source_compiles("${CHECK_ELF_DLNOTES_SRC}" COMPILER_SUPPORTS_ELFNOTES)
-    if(COMPILER_SUPPORTS_ELFNOTES)
-      set(HAVE_DLOPEN_NOTES TRUE)
+    if(NOT COMPILER_SUPPORTS_ELFNOTES)
+      set(SDL_DISABLE_DLOPEN_NOTES TRUE)
     endif()
     endif()
   endif()
   endif()
 
 

+ 13 - 7
VisualC-GDK/SDL/SDL.vcxproj

@@ -330,18 +330,21 @@
     </ClCompile>
     </ClCompile>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
   <ItemGroup>
   <ItemGroup>
-    <ClInclude Include="..\..\include\SDL3\SDL_begin_code.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_camera.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_close_code.h" />
     <ClInclude Include="..\..\include\SDL3\SDL.h" />
     <ClInclude Include="..\..\include\SDL3\SDL.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_assert.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_assert.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_asyncio.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_atomic.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_atomic.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_audio.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_audio.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_begin_code.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_bits.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_bits.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_blendmode.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_blendmode.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_camera.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_clipboard.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_clipboard.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_close_code.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_copying.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_copying.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_cpuinfo.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_cpuinfo.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_dialog.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_dlopennote.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_egl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_egl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_endian.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_endian.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_error.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_error.h" />
@@ -351,9 +354,11 @@
     <ClInclude Include="..\..\include\SDL3\SDL_gpu.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_gpu.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_guid.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_guid.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_haptic.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_haptic.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_hints.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_hidapi.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_hidapi.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_asyncio.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_hints.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_init.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_intrin.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_iostream.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_joystick.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_joystick.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_keyboard.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_keyboard.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_keycode.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_keycode.h" />
@@ -361,11 +366,13 @@
     <ClInclude Include="..\..\include\SDL3\SDL_locale.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_locale.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_log.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_log.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_main.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_main.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_main_impl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_messagebox.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_messagebox.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_metal.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_metal.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_misc.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_misc.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_mouse.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_mouse.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_mutex.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_mutex.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_oldnames.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengl_glext.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengl_glext.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengles.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengles.h" />
@@ -384,7 +391,6 @@
     <ClInclude Include="..\..\include\SDL3\SDL_rect.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_rect.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_render.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_render.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_revision.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_revision.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_iostream.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_scancode.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_scancode.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_sensor.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_sensor.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_stdinc.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_stdinc.h" />
@@ -406,7 +412,7 @@
     <ClInclude Include="..\..\include\SDL3\SDL_time.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_time.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_timer.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_timer.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_touch.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_touch.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_types.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_tray.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_version.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_version.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_video.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_video.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_vulkan.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_vulkan.h" />

+ 15 - 5
VisualC-GDK/SDL/SDL.vcxproj.filters

@@ -238,17 +238,21 @@
     <ClCompile Include="..\..\src\video\yuv2rgb\yuv_rgb_std.c" />
     <ClCompile Include="..\..\src\video\yuv2rgb\yuv_rgb_std.c" />
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
-    <ClInclude Include="..\..\include\SDL3\SDL_begin_code.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_close_code.h" />
     <ClInclude Include="..\..\include\SDL3\SDL.h" />
     <ClInclude Include="..\..\include\SDL3\SDL.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_assert.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_assert.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_asyncio.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_atomic.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_atomic.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_audio.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_audio.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_begin_code.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_bits.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_bits.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_blendmode.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_blendmode.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_camera.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_clipboard.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_clipboard.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_close_code.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_copying.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_copying.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_cpuinfo.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_cpuinfo.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_dialog.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_dlopennote.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_egl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_egl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_endian.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_endian.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_error.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_error.h" />
@@ -258,8 +262,11 @@
     <ClInclude Include="..\..\include\SDL3\SDL_gpu.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_gpu.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_guid.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_guid.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_haptic.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_haptic.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_hints.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_hidapi.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_hidapi.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_hints.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_init.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_intrin.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_iostream.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_joystick.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_joystick.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_keyboard.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_keyboard.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_keycode.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_keycode.h" />
@@ -267,11 +274,13 @@
     <ClInclude Include="..\..\include\SDL3\SDL_locale.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_locale.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_log.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_log.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_main.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_main.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_main_impl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_messagebox.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_messagebox.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_metal.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_metal.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_misc.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_misc.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_mouse.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_mouse.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_mutex.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_mutex.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_oldnames.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengl_glext.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengl_glext.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengles.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengles.h" />
@@ -290,10 +299,10 @@
     <ClInclude Include="..\..\include\SDL3\SDL_rect.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_rect.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_render.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_render.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_revision.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_revision.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_iostream.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_scancode.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_scancode.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_sensor.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_sensor.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_stdinc.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_stdinc.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_storage.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_surface.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_surface.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_system.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_system.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_test.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_test.h" />
@@ -308,9 +317,10 @@
     <ClInclude Include="..\..\include\SDL3\SDL_test_md5.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_test_md5.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_test_memory.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_test_memory.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_thread.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_thread.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_time.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_timer.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_timer.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_touch.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_touch.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_types.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_tray.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_version.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_version.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_video.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_video.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_vulkan.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_vulkan.h" />

+ 13 - 6
VisualC/SDL/SDL.vcxproj

@@ -243,18 +243,21 @@
     </ClCompile>
     </ClCompile>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
   <ItemGroup>
   <ItemGroup>
-    <ClInclude Include="..\..\include\SDL3\SDL_begin_code.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_camera.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_close_code.h" />
     <ClInclude Include="..\..\include\SDL3\SDL.h" />
     <ClInclude Include="..\..\include\SDL3\SDL.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_assert.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_assert.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_asyncio.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_atomic.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_atomic.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_audio.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_audio.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_begin_code.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_bits.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_bits.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_blendmode.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_blendmode.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_camera.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_clipboard.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_clipboard.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_close_code.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_copying.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_copying.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_cpuinfo.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_cpuinfo.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_dialog.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_dlopennote.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_egl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_egl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_endian.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_endian.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_error.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_error.h" />
@@ -264,9 +267,11 @@
     <ClInclude Include="..\..\include\SDL3\SDL_gpu.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_gpu.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_guid.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_guid.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_haptic.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_haptic.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_hints.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_hidapi.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_hidapi.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_asyncio.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_hints.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_init.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_intrin.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_iostream.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_joystick.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_joystick.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_keyboard.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_keyboard.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_keycode.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_keycode.h" />
@@ -274,11 +279,13 @@
     <ClInclude Include="..\..\include\SDL3\SDL_locale.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_locale.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_log.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_log.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_main.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_main.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_main_impl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_messagebox.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_messagebox.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_metal.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_metal.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_misc.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_misc.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_mouse.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_mouse.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_mutex.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_mutex.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_oldnames.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengl.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengl_glext.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengl_glext.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengles.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_opengles.h" />
@@ -297,7 +304,6 @@
     <ClInclude Include="..\..\include\SDL3\SDL_rect.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_rect.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_render.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_render.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_revision.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_revision.h" />
-    <ClInclude Include="..\..\include\SDL3\SDL_iostream.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_scancode.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_scancode.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_sensor.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_sensor.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_stdinc.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_stdinc.h" />
@@ -319,6 +325,7 @@
     <ClInclude Include="..\..\include\SDL3\SDL_time.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_time.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_timer.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_timer.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_touch.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_touch.h" />
+    <ClInclude Include="..\..\include\SDL3\SDL_tray.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_version.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_version.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_video.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_video.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_vulkan.h" />
     <ClInclude Include="..\..\include\SDL3\SDL_vulkan.h" />

+ 53 - 14
VisualC/SDL/SDL.vcxproj.filters

@@ -222,42 +222,51 @@
     </Filter>
     </Filter>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
-    <ClInclude Include="..\..\include\SDL3\SDL_begin_code.h">
-      <Filter>API Headers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\SDL3\SDL_camera.h">
-      <Filter>API Headers</Filter>
-    </ClInclude>
-    <ClInclude Include="..\..\include\SDL3\SDL_close_code.h">
-      <Filter>API Headers</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL.h">
     <ClInclude Include="..\..\include\SDL3\SDL.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_assert.h">
     <ClInclude Include="..\..\include\SDL3\SDL_assert.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_asyncio.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_atomic.h">
     <ClInclude Include="..\..\include\SDL3\SDL_atomic.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_audio.h">
     <ClInclude Include="..\..\include\SDL3\SDL_audio.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_begin_code.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_bits.h">
     <ClInclude Include="..\..\include\SDL3\SDL_bits.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_blendmode.h">
     <ClInclude Include="..\..\include\SDL3\SDL_blendmode.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_camera.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_clipboard.h">
     <ClInclude Include="..\..\include\SDL3\SDL_clipboard.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_close_code.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_copying.h">
     <ClInclude Include="..\..\include\SDL3\SDL_copying.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_cpuinfo.h">
     <ClInclude Include="..\..\include\SDL3\SDL_cpuinfo.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_dialog.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_dlopennote.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_egl.h">
     <ClInclude Include="..\..\include\SDL3\SDL_egl.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
@@ -276,19 +285,28 @@
     <ClInclude Include="..\..\include\SDL3\SDL_gamepad.h">
     <ClInclude Include="..\..\include\SDL3\SDL_gamepad.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_gpu.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_guid.h">
     <ClInclude Include="..\..\include\SDL3\SDL_guid.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_haptic.h">
     <ClInclude Include="..\..\include\SDL3\SDL_haptic.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_hidapi.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_hints.h">
     <ClInclude Include="..\..\include\SDL3\SDL_hints.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
-    <ClInclude Include="..\..\include\SDL3\SDL_hidapi.h">
+    <ClInclude Include="..\..\include\SDL3\SDL_init.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
-    <ClInclude Include="..\..\include\SDL3\SDL_asyncio.h">
+    <ClInclude Include="..\..\include\SDL3\SDL_intrin.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_iostream.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_joystick.h">
     <ClInclude Include="..\..\include\SDL3\SDL_joystick.h">
@@ -312,15 +330,27 @@
     <ClInclude Include="..\..\include\SDL3\SDL_main.h">
     <ClInclude Include="..\..\include\SDL3\SDL_main.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_main_impl.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_messagebox.h">
     <ClInclude Include="..\..\include\SDL3\SDL_messagebox.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_metal.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_misc.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_mouse.h">
     <ClInclude Include="..\..\include\SDL3\SDL_mouse.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_mutex.h">
     <ClInclude Include="..\..\include\SDL3\SDL_mutex.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_oldnames.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_opengl.h">
     <ClInclude Include="..\..\include\SDL3\SDL_opengl.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
@@ -375,9 +405,6 @@
     <ClInclude Include="..\..\include\SDL3\SDL_revision.h">
     <ClInclude Include="..\..\include\SDL3\SDL_revision.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
-    <ClInclude Include="..\..\include\SDL3\SDL_iostream.h">
-      <Filter>API Headers</Filter>
-    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_scancode.h">
     <ClInclude Include="..\..\include\SDL3\SDL_scancode.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
@@ -387,6 +414,9 @@
     <ClInclude Include="..\..\include\SDL3\SDL_stdinc.h">
     <ClInclude Include="..\..\include\SDL3\SDL_stdinc.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_storage.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_surface.h">
     <ClInclude Include="..\..\include\SDL3\SDL_surface.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
@@ -423,15 +453,24 @@
     <ClInclude Include="..\..\include\SDL3\SDL_test_md5.h">
     <ClInclude Include="..\..\include\SDL3\SDL_test_md5.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_test_memory.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_thread.h">
     <ClInclude Include="..\..\include\SDL3\SDL_thread.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_time.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_timer.h">
     <ClInclude Include="..\..\include\SDL3\SDL_timer.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_touch.h">
     <ClInclude Include="..\..\include\SDL3\SDL_touch.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\include\SDL3\SDL_tray.h">
+      <Filter>API Headers</Filter>
+    </ClInclude>
     <ClInclude Include="..\..\include\SDL3\SDL_version.h">
     <ClInclude Include="..\..\include\SDL3\SDL_version.h">
       <Filter>API Headers</Filter>
       <Filter>API Headers</Filter>
     </ClInclude>
     </ClInclude>

+ 6 - 2
Xcode/SDL/SDL.xcodeproj/project.pbxproj

@@ -54,6 +54,7 @@
 		00CFA89D106B4BA100758660 /* ForceFeedback.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00CFA89C106B4BA100758660 /* ForceFeedback.framework */; platformFilters = (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, ); settings = {ATTRIBUTES = (Required, ); }; };
 		00D0D08410675DD9004B05EF /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 00D0D08310675DD9004B05EF /* CoreFoundation.framework */; platformFilters = (ios, maccatalyst, macos, tvos, ); settings = {ATTRIBUTES = (Required, ); }; };
 		00D0D0D810675E46004B05EF /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 007317C10858E15000B2BC32 /* Carbon.framework */; platformFilters = (macos, ); };
 		00D0D0D810675E46004B05EF /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 007317C10858E15000B2BC32 /* Carbon.framework */; platformFilters = (macos, ); };
+		02D6A1C228A84B8F00A7F002 /* SDL_hidapi_sinput.c in Sources */ = {isa = PBXBuildFile; fileRef = 02D6A1C128A84B8F00A7F001 /* SDL_hidapi_sinput.c */; };
 		1485C3312BBA4AF30063985B /* UniformTypeIdentifiers.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1485C32F2BBA4A0C0063985B /* UniformTypeIdentifiers.framework */; platformFilters = (maccatalyst, macos, ); settings = {ATTRIBUTES = (Weak, ); }; };
 		1485C3312BBA4AF30063985B /* UniformTypeIdentifiers.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1485C32F2BBA4A0C0063985B /* UniformTypeIdentifiers.framework */; platformFilters = (maccatalyst, macos, ); settings = {ATTRIBUTES = (Weak, ); }; };
 		557D0CFA254586CA003913E3 /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F37DC5F225350EBC0002E6F7 /* CoreHaptics.framework */; platformFilters = (ios, maccatalyst, macos, tvos, ); settings = {ATTRIBUTES = (Weak, ); }; };
 		557D0CFA254586CA003913E3 /* CoreHaptics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F37DC5F225350EBC0002E6F7 /* CoreHaptics.framework */; platformFilters = (ios, maccatalyst, macos, tvos, ); settings = {ATTRIBUTES = (Weak, ); }; };
 		557D0CFB254586D7003913E3 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A75FDABD23E28B6200529352 /* GameController.framework */; settings = {ATTRIBUTES = (Required, ); }; };
 		557D0CFB254586D7003913E3 /* GameController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A75FDABD23E28B6200529352 /* GameController.framework */; settings = {ATTRIBUTES = (Required, ); }; };
@@ -77,7 +78,6 @@
 		89E580242D03606400DAF6D3 /* SDL_hidapihaptic_lg4ff.c in Sources */ = {isa = PBXBuildFile; fileRef = 89E580212D03606400DAF6D3 /* SDL_hidapihaptic_lg4ff.c */; };
 		89E580242D03606400DAF6D3 /* SDL_hidapihaptic_lg4ff.c in Sources */ = {isa = PBXBuildFile; fileRef = 89E580212D03606400DAF6D3 /* SDL_hidapihaptic_lg4ff.c */; };
 		89E580252D03606400DAF6D3 /* SDL_hidapihaptic_c.h in Headers */ = {isa = PBXBuildFile; fileRef = 89E580202D03606400DAF6D3 /* SDL_hidapihaptic_c.h */; };
 		89E580252D03606400DAF6D3 /* SDL_hidapihaptic_c.h in Headers */ = {isa = PBXBuildFile; fileRef = 89E580202D03606400DAF6D3 /* SDL_hidapihaptic_c.h */; };
 		9846B07C287A9020000C35C8 /* SDL_hidapi_shield.c in Sources */ = {isa = PBXBuildFile; fileRef = 9846B07B287A9020000C35C8 /* SDL_hidapi_shield.c */; };
 		9846B07C287A9020000C35C8 /* SDL_hidapi_shield.c in Sources */ = {isa = PBXBuildFile; fileRef = 9846B07B287A9020000C35C8 /* SDL_hidapi_shield.c */; };
-		02D6A1C228A84B8F00A7F002 /* SDL_hidapi_sinput.c in Sources */ = {isa = PBXBuildFile; fileRef = 02D6A1C128A84B8F00A7F001 /* SDL_hidapi_sinput.c */; };
 		A1626A3E2617006A003F1973 /* SDL_triangle.c in Sources */ = {isa = PBXBuildFile; fileRef = A1626A3D2617006A003F1973 /* SDL_triangle.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 */; };
 		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 */; };
 		A1BB8B6327F6CF330057CFA8 /* SDL_list.c in Sources */ = {isa = PBXBuildFile; fileRef = A1BB8B6127F6CF320057CFA8 /* SDL_list.c */; };
@@ -417,6 +417,7 @@
 		F386F6F02884663E001840AA /* SDL_utils_c.h in Headers */ = {isa = PBXBuildFile; fileRef = F386F6E52884663E001840AA /* SDL_utils_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 */; };
 		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 */; };
 		F388C95528B5F6F700661ECF /* SDL_hidapi_ps3.c in Sources */ = {isa = PBXBuildFile; fileRef = F388C95428B5F6F600661ECF /* SDL_hidapi_ps3.c */; };
+		F39344CE2E99771B0056986F /* SDL_dlopennote.h in Headers */ = {isa = PBXBuildFile; fileRef = F39344CD2E99771B0056986F /* SDL_dlopennote.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		F395BF6525633B2400942BFF /* SDL_crc32.c in Sources */ = {isa = PBXBuildFile; fileRef = F395BF6425633B2400942BFF /* SDL_crc32.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 */; };
 		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 */; };
 		F395C19C2569C68F00942BFF /* SDL_iokitjoystick.c in Sources */ = {isa = PBXBuildFile; fileRef = F395C1922569C68E00942BFF /* SDL_iokitjoystick.c */; };
@@ -605,6 +606,7 @@
 		007317C10858E15000B2BC32 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
 		007317C10858E15000B2BC32 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
 		00CFA89C106B4BA100758660 /* ForceFeedback.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ForceFeedback.framework; path = System/Library/Frameworks/ForceFeedback.framework; sourceTree = SDKROOT; };
 		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; };
 		00D0D08310675DD9004B05EF /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
+		02D6A1C128A84B8F00A7F001 /* SDL_hidapi_sinput.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_sinput.c; sourceTree = "<group>"; };
 		1485C32F2BBA4A0C0063985B /* UniformTypeIdentifiers.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UniformTypeIdentifiers.framework; path = System/Library/Frameworks/UniformTypeIdentifiers.framework; sourceTree = SDKROOT; };
 		1485C32F2BBA4A0C0063985B /* UniformTypeIdentifiers.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UniformTypeIdentifiers.framework; path = System/Library/Frameworks/UniformTypeIdentifiers.framework; sourceTree = SDKROOT; };
 		5616CA49252BB2A5005D5928 /* SDL_url.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_url.c; sourceTree = "<group>"; };
 		5616CA49252BB2A5005D5928 /* SDL_url.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_url.c; sourceTree = "<group>"; };
 		5616CA4A252BB2A6005D5928 /* SDL_sysurl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sysurl.h; sourceTree = "<group>"; };
 		5616CA4A252BB2A6005D5928 /* SDL_sysurl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_sysurl.h; sourceTree = "<group>"; };
@@ -626,7 +628,6 @@
 		89E580202D03606400DAF6D3 /* SDL_hidapihaptic_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_hidapihaptic_c.h; sourceTree = "<group>"; };
 		89E580202D03606400DAF6D3 /* SDL_hidapihaptic_c.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_hidapihaptic_c.h; sourceTree = "<group>"; };
 		89E580212D03606400DAF6D3 /* SDL_hidapihaptic_lg4ff.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hidapihaptic_lg4ff.c; sourceTree = "<group>"; };
 		89E580212D03606400DAF6D3 /* SDL_hidapihaptic_lg4ff.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = SDL_hidapihaptic_lg4ff.c; sourceTree = "<group>"; };
 		9846B07B287A9020000C35C8 /* SDL_hidapi_shield.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_shield.c; sourceTree = "<group>"; };
 		9846B07B287A9020000C35C8 /* SDL_hidapi_shield.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_shield.c; sourceTree = "<group>"; };
-		02D6A1C128A84B8F00A7F001 /* SDL_hidapi_sinput.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_sinput.c; sourceTree = "<group>"; };
 		A1626A3D2617006A003F1973 /* SDL_triangle.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_triangle.c; sourceTree = "<group>"; };
 		A1626A3D2617006A003F1973 /* SDL_triangle.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_triangle.c; sourceTree = "<group>"; };
 		A1626A512617008C003F1973 /* SDL_triangle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_triangle.h; sourceTree = "<group>"; };
 		A1626A512617008C003F1973 /* SDL_triangle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_triangle.h; sourceTree = "<group>"; };
 		A1BB8B6127F6CF320057CFA8 /* SDL_list.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_list.c; sourceTree = "<group>"; };
 		A1BB8B6127F6CF320057CFA8 /* SDL_list.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_list.c; sourceTree = "<group>"; };
@@ -1000,6 +1001,7 @@
 		F386F6E52884663E001840AA /* SDL_utils_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_utils_c.h; sourceTree = "<group>"; };
 		F386F6E52884663E001840AA /* SDL_utils_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_utils_c.h; sourceTree = "<group>"; };
 		F386F6E62884663E001840AA /* SDL_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_utils.c; sourceTree = "<group>"; };
 		F386F6E62884663E001840AA /* SDL_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_utils.c; sourceTree = "<group>"; };
 		F388C95428B5F6F600661ECF /* SDL_hidapi_ps3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_ps3.c; sourceTree = "<group>"; };
 		F388C95428B5F6F600661ECF /* SDL_hidapi_ps3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_ps3.c; sourceTree = "<group>"; };
+		F39344CD2E99771B0056986F /* SDL_dlopennote.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_dlopennote.h; sourceTree = "<group>"; };
 		F395BF6425633B2400942BFF /* SDL_crc32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_crc32.c; sourceTree = "<group>"; };
 		F395BF6425633B2400942BFF /* SDL_crc32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_crc32.c; sourceTree = "<group>"; };
 		F395C1912569C68E00942BFF /* SDL_iokitjoystick_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_iokitjoystick_c.h; sourceTree = "<group>"; };
 		F395C1912569C68E00942BFF /* SDL_iokitjoystick_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_iokitjoystick_c.h; sourceTree = "<group>"; };
 		F395C1922569C68E00942BFF /* SDL_iokitjoystick.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_iokitjoystick.c; sourceTree = "<group>"; };
 		F395C1922569C68E00942BFF /* SDL_iokitjoystick.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_iokitjoystick.c; sourceTree = "<group>"; };
@@ -1267,6 +1269,7 @@
 				F3D46A8B2D20625800D9CBDF /* SDL_copying.h */,
 				F3D46A8B2D20625800D9CBDF /* SDL_copying.h */,
 				F3D46A8C2D20625800D9CBDF /* SDL_cpuinfo.h */,
 				F3D46A8C2D20625800D9CBDF /* SDL_cpuinfo.h */,
 				F3D46A8D2D20625800D9CBDF /* SDL_dialog.h */,
 				F3D46A8D2D20625800D9CBDF /* SDL_dialog.h */,
+				F39344CD2E99771B0056986F /* SDL_dlopennote.h */,
 				F3D46A8E2D20625800D9CBDF /* SDL_egl.h */,
 				F3D46A8E2D20625800D9CBDF /* SDL_egl.h */,
 				F3D46A8F2D20625800D9CBDF /* SDL_endian.h */,
 				F3D46A8F2D20625800D9CBDF /* SDL_endian.h */,
 				F3D46A902D20625800D9CBDF /* SDL_error.h */,
 				F3D46A902D20625800D9CBDF /* SDL_error.h */,
@@ -2757,6 +2760,7 @@
 				A7D8B28A23E2514200DCD162 /* vulkan_xlib_xrandr.h in Headers */,
 				A7D8B28A23E2514200DCD162 /* vulkan_xlib_xrandr.h in Headers */,
 				A7D8B3D423E2514300DCD162 /* yuv_rgb.h in Headers */,
 				A7D8B3D423E2514300DCD162 /* yuv_rgb.h in Headers */,
 				F3FA5A252B59ACE000FEAD97 /* yuv_rgb_common.h in Headers */,
 				F3FA5A252B59ACE000FEAD97 /* yuv_rgb_common.h in Headers */,
+				F39344CE2E99771B0056986F /* SDL_dlopennote.h in Headers */,
 				F3FA5A1D2B59ACE000FEAD97 /* yuv_rgb_internal.h in Headers */,
 				F3FA5A1D2B59ACE000FEAD97 /* yuv_rgb_internal.h in Headers */,
 				F3D8BDFC2D6D2C7000B22FA1 /* SDL_eventwatch_c.h in Headers */,
 				F3D8BDFC2D6D2C7000B22FA1 /* SDL_eventwatch_c.h in Headers */,
 				F3DC38C92E5FC60300CD73DE /* SDL_libusb.h in Headers */,
 				F3DC38C92E5FC60300CD73DE /* SDL_libusb.h in Headers */,

+ 1 - 0
include/SDL3/SDL.h

@@ -42,6 +42,7 @@
 #include <SDL3/SDL_clipboard.h>
 #include <SDL3/SDL_clipboard.h>
 #include <SDL3/SDL_cpuinfo.h>
 #include <SDL3/SDL_cpuinfo.h>
 #include <SDL3/SDL_dialog.h>
 #include <SDL3/SDL_dialog.h>
+#include <SDL3/SDL_dlopennote.h>
 #include <SDL3/SDL_endian.h>
 #include <SDL3/SDL_endian.h>
 #include <SDL3/SDL_error.h>
 #include <SDL3/SDL_error.h>
 #include <SDL3/SDL_events.h>
 #include <SDL3/SDL_events.h>

+ 113 - 15
src/dynapi/SDL_dynapi_dlopennote.h → include/SDL3/SDL_dlopennote.h

@@ -19,14 +19,83 @@
   3. This notice may not be removed or altered from any source distribution.
   3. This notice may not be removed or altered from any source distribution.
 */
 */
 
 
-#ifndef SDL_dynapi_dlopennote_h
-#define SDL_dynapi_dlopennote_h
+/* WIKI CATEGORY: DlopenNotes */
+
+/**
+ * # CategoryDlopenNotes
+ *
+ * This header allows you to annotate your code so external tools know about
+ * dynamic shared library dependencies.
+ *
+ * If you determine that your toolchain doesn't support dlopen notes, you can
+ * disable this feature by defining `SDL_DISABLE_DLOPEN_NOTES`. You can use this
+ * CMake snippet to check for support:
+ *
+ * ```cmake
+ *  set(CHECK_ELF_DLNOTES_SRC [==[
+ *  #ifndef __ELF__
+ *    ELF DL notes is only supported on ELF platforms
+ *  #endif
+ *  __attribute__ ((used,aligned(4),section(".note.dlopen"))) static const struct {
+ *    struct { int a; int b; int c; } hdr; char name[4]; __attribute__((aligned(4))) char json[24];
+ *  } dlnote = { { 4, 0x407c0c0aU, 16 }, "FDO", "[\\"a\\":{\\"a\\":\\"1\\",\\"b\\":\\"2\\"}]" };
+ *  int main(int argc, char *argv[]) {
+ *    return argc + dlnote.hdr.a;
+ *  }
+ *  ]==])
+ *  check_c_source_compiles("${CHECK_ELF_DLNOTES_SRC}" COMPILER_SUPPORTS_ELFNOTES)
+ *  if(NOT COMPILER_SUPPORTS_ELFNOTES)
+ *    set(SDL_DISABLE_DLOPEN_NOTES TRUE)
+ *  endif()
+ * ```
+ */
+
+#ifndef SDL_dlopennote_h
+#define SDL_dlopennote_h
+
+/**
+ * Use this macro with SDL_ELF_NOTE_DLOPEN() to note that a dynamic shared library dependency is optional.
+ *
+ * Optional functionality uses the dependency, the binary will work and the dependency is only needed for full-featured installations.
+ *
+ * \since This macro is available since SDL 3.4.0.
+ *
+ * \sa SDL_ELF_NOTE_DLOPEN
+ * \sa SDL_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED
+ * \sa SDL_ELF_NOTE_DLOPEN_PRIORITY_REQUIRED
+ */
+#define SDL_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED   "suggested"
 
 
-#define SDL_ELF_NOTE_DLOPEN_PRIORITY_REQUIRED    "required"
+/**
+ * Use this macro with SDL_ELF_NOTE_DLOPEN() to note that a dynamic shared library dependency is recommended.
+ *
+ * Important functionality needs the dependency, the binary will work but in most cases the dependency should be provided.
+ *
+ * \since This macro is available since SDL 3.4.0.
+ *
+ * \sa SDL_ELF_NOTE_DLOPEN
+ * \sa SDL_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED
+ * \sa SDL_ELF_NOTE_DLOPEN_PRIORITY_REQUIRED
+ */
 #define SDL_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED "recommended"
 #define SDL_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED "recommended"
-#define SDL_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED   "suggested"
 
 
-#if defined(__ELF__) && defined(HAVE_DLOPEN_NOTES)
+/**
+ * Use this macro with SDL_ELF_NOTE_DLOPEN() to note that a dynamic shared library dependency is required.
+ *
+ * Core functionality needs the dependency, the binary will not work if it cannot be found.
+ *
+ * \since This macro is available since SDL 3.4.0.
+ *
+ * \sa SDL_ELF_NOTE_DLOPEN
+ * \sa SDL_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED
+ * \sa SDL_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED
+ */
+#define SDL_ELF_NOTE_DLOPEN_PRIORITY_REQUIRED    "required"
+
+
+#if defined(__ELF__) && !defined(SDL_DISABLE_DLOPEN_NOTES)
+
+#include <SDL3/SDL_stdinc.h>
 
 
 #define SDL_ELF_NOTE_DLOPEN_VENDOR "FDO"
 #define SDL_ELF_NOTE_DLOPEN_VENDOR "FDO"
 #define SDL_ELF_NOTE_DLOPEN_TYPE 0x407c0c0aU
 #define SDL_ELF_NOTE_DLOPEN_TYPE 0x407c0c0aU
@@ -75,12 +144,44 @@
          SDL_SONAME_ARRAY1 \
          SDL_SONAME_ARRAY1 \
     )(__VA_ARGS__)
     )(__VA_ARGS__)
 
 
-// Create "unique" variable name using __LINE__,
-// so creating elf notes on the same line is not supported
+/* Create "unique" variable name using __LINE__,
+ * so creating elf notes on the same line is not supported
+ */
 #define SDL_ELF_NOTE_JOIN2(A,B) A##B
 #define SDL_ELF_NOTE_JOIN2(A,B) A##B
 #define SDL_ELF_NOTE_JOIN(A,B) SDL_ELF_NOTE_JOIN2(A,B)
 #define SDL_ELF_NOTE_JOIN(A,B) SDL_ELF_NOTE_JOIN2(A,B)
-#define SDL_ELF_NOTE_UNIQUE_NAME SDL_ELF_NOTE_JOIN(s_dlopen_note_, __LINE__)
-
+#define SDL_ELF_NOTE_UNIQUE_NAME SDL_ELF_NOTE_JOIN(s_SDL_dlopen_note_, __LINE__)
+
+/**
+ * Note that your application has dynamic shared library dependencies.
+ *
+ * You can do this by adding the following to the global scope:
+ *
+ * ```c
+ * SDL_ELF_NOTE_DLOPEN(
+ *     "png",
+ *     "Support for loading PNG images using libpng (required for APNG)",
+ *     SDL_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED,
+ *     "libpng12.so.0"
+ * );
+ * ```
+ *
+ * Or if you support multiple versions of a library, you can list them:
+ * ```c
+ * // Our app supports SDL1, SDL2, and SDL3 by dynamically loading them
+ * SDL_ELF_NOTE_DLOPEN(
+ *     "SDL",
+ *     "Create windows through SDL video backend",
+ *     SDL_ELF_NOTE_DLOPEN_PRIORITY_REQUIRED
+ *     "libSDL-1.2.so.0", "libSDL2-2.0.so.0", "libSDL3.so.0"
+ * );
+ * ```
+ *
+ * \since This macro is available since SDL 3.4.0.
+ *
+ * \sa SDL_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED
+ * \sa SDL_ELF_NOTE_DLOPEN_PRIORITY_RECOMMENDED
+ * \sa SDL_ELF_NOTE_DLOPEN_PRIORITY_REQUIRED
+ */
 #define SDL_ELF_NOTE_DLOPEN(feature, description, priority, ...) \
 #define SDL_ELF_NOTE_DLOPEN(feature, description, priority, ...) \
     SDL_ELF_NOTE_INTERNAL(                                       \
     SDL_ELF_NOTE_INTERNAL(                                       \
         "[{\"feature\":\"" feature                               \
         "[{\"feature\":\"" feature                               \
@@ -89,10 +190,9 @@
         "\",\"soname\":" SDL_SONAME_ARRAY(__VA_ARGS__) "}]",     \
         "\",\"soname\":" SDL_SONAME_ARRAY(__VA_ARGS__) "}]",     \
         SDL_ELF_NOTE_UNIQUE_NAME)
         SDL_ELF_NOTE_UNIQUE_NAME)
 
 
-#else
-
-#if defined (__GNUC__) && __GNUC__ < 3
+#elif defined (__GNUC__) && __GNUC__ < 3
 
 
+/* Variadic macros are not supported */
 #define SDL_ELF_NOTE_DLOPEN
 #define SDL_ELF_NOTE_DLOPEN
 
 
 #else
 #else
@@ -101,6 +201,4 @@
 
 
 #endif
 #endif
 
 
-#endif
-
-#endif
+#endif /* SDL_dlopennote_h */

+ 1 - 1
include/build_config/SDL_build_config.h.cmake

@@ -238,7 +238,7 @@
 #cmakedefine HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR 1
 #cmakedefine HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR 1
 #cmakedefine HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR_NP 1
 #cmakedefine HAVE_POSIX_SPAWN_FILE_ACTIONS_ADDCHDIR_NP 1
 
 
-#cmakedefine HAVE_DLOPEN_NOTES 1
+#cmakedefine SDL_DISABLE_DLOPEN_NOTES 1
 
 
 /* SDL internal assertion support */
 /* SDL internal assertion support */
 #cmakedefine SDL_DEFAULT_ASSERT_LEVEL_CONFIGURED 1
 #cmakedefine SDL_DEFAULT_ASSERT_LEVEL_CONFIGURED 1

+ 0 - 1
src/SDL_internal.h

@@ -63,7 +63,6 @@
 #include "SDL_build_config.h"
 #include "SDL_build_config.h"
 
 
 #include "dynapi/SDL_dynapi.h"
 #include "dynapi/SDL_dynapi.h"
-#include "dynapi/SDL_dynapi_dlopennote.h"
 
 
 #if SDL_DYNAMIC_API
 #if SDL_DYNAMIC_API
 #include "dynapi/SDL_dynapi_overrides.h"
 #include "dynapi/SDL_dynapi_overrides.h"