From ee622c570ab2b2eb4580d745eb70833eab4de750 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Fri, 10 Oct 2025 09:26:23 -0700
Subject: [PATCH] Made SDL_dlopennote.h a public header
---
CMakeLists.txt | 5 +-
VisualC-GDK/SDL/SDL.vcxproj | 20 ++-
VisualC-GDK/SDL/SDL.vcxproj.filters | 20 ++-
VisualC/SDL/SDL.vcxproj | 19 ++-
VisualC/SDL/SDL.vcxproj.filters | 67 +++++++--
Xcode/SDL/SDL.xcodeproj/project.pbxproj | 8 +-
include/SDL3/SDL.h | 1 +
.../SDL3/SDL_dlopennote.h | 128 ++++++++++++++++--
include/build_config/SDL_build_config.h.cmake | 2 +-
src/SDL_internal.h | 1 -
10 files changed, 218 insertions(+), 53 deletions(-)
rename src/dynapi/SDL_dynapi_dlopennote.h => include/SDL3/SDL_dlopennote.h (54%)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f26a33a675de3..d7e5d3b409e13 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1748,9 +1748,10 @@ elseif(UNIX AND NOT APPLE AND NOT RISCOS AND NOT HAIKU)
return argc + dlnote.hdr.a;
}
]==])
+ set(SDL_DISABLE_DLOPEN_NOTES FALSE)
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()
diff --git a/VisualC-GDK/SDL/SDL.vcxproj b/VisualC-GDK/SDL/SDL.vcxproj
index fc014c84a3403..cfd8970c0da01 100644
--- a/VisualC-GDK/SDL/SDL.vcxproj
+++ b/VisualC-GDK/SDL/SDL.vcxproj
@@ -330,18 +330,21 @@
</ClCompile>
</ItemDefinitionGroup>
<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_assert.h" />
+ <ClInclude Include="..\..\include\SDL3\SDL_asyncio.h" />
<ClInclude Include="..\..\include\SDL3\SDL_atomic.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_blendmode.h" />
+ <ClInclude Include="..\..\include\SDL3\SDL_camera.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_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_endian.h" />
<ClInclude Include="..\..\include\SDL3\SDL_error.h" />
@@ -351,9 +354,11 @@
<ClInclude Include="..\..\include\SDL3\SDL_gpu.h" />
<ClInclude Include="..\..\include\SDL3\SDL_guid.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_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_keyboard.h" />
<ClInclude Include="..\..\include\SDL3\SDL_keycode.h" />
@@ -361,11 +366,13 @@
<ClInclude Include="..\..\include\SDL3\SDL_locale.h" />
<ClInclude Include="..\..\include\SDL3\SDL_log.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_metal.h" />
<ClInclude Include="..\..\include\SDL3\SDL_misc.h" />
<ClInclude Include="..\..\include\SDL3\SDL_mouse.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_glext.h" />
<ClInclude Include="..\..\include\SDL3\SDL_opengles.h" />
@@ -384,7 +391,6 @@
<ClInclude Include="..\..\include\SDL3\SDL_rect.h" />
<ClInclude Include="..\..\include\SDL3\SDL_render.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_sensor.h" />
<ClInclude Include="..\..\include\SDL3\SDL_stdinc.h" />
@@ -406,7 +412,7 @@
<ClInclude Include="..\..\include\SDL3\SDL_time.h" />
<ClInclude Include="..\..\include\SDL3\SDL_timer.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_video.h" />
<ClInclude Include="..\..\include\SDL3\SDL_vulkan.h" />
diff --git a/VisualC-GDK/SDL/SDL.vcxproj.filters b/VisualC-GDK/SDL/SDL.vcxproj.filters
index aee0794aaab0e..63bcf4bf40528 100644
--- a/VisualC-GDK/SDL/SDL.vcxproj.filters
+++ b/VisualC-GDK/SDL/SDL.vcxproj.filters
@@ -238,17 +238,21 @@
<ClCompile Include="..\..\src\video\yuv2rgb\yuv_rgb_std.c" />
</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_assert.h" />
+ <ClInclude Include="..\..\include\SDL3\SDL_asyncio.h" />
<ClInclude Include="..\..\include\SDL3\SDL_atomic.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_blendmode.h" />
+ <ClInclude Include="..\..\include\SDL3\SDL_camera.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_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_endian.h" />
<ClInclude Include="..\..\include\SDL3\SDL_error.h" />
@@ -258,8 +262,11 @@
<ClInclude Include="..\..\include\SDL3\SDL_gpu.h" />
<ClInclude Include="..\..\include\SDL3\SDL_guid.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_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_keyboard.h" />
<ClInclude Include="..\..\include\SDL3\SDL_keycode.h" />
@@ -267,11 +274,13 @@
<ClInclude Include="..\..\include\SDL3\SDL_locale.h" />
<ClInclude Include="..\..\include\SDL3\SDL_log.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_metal.h" />
<ClInclude Include="..\..\include\SDL3\SDL_misc.h" />
<ClInclude Include="..\..\include\SDL3\SDL_mouse.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_glext.h" />
<ClInclude Include="..\..\include\SDL3\SDL_opengles.h" />
@@ -290,10 +299,10 @@
<ClInclude Include="..\..\include\SDL3\SDL_rect.h" />
<ClInclude Include="..\..\include\SDL3\SDL_render.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_sensor.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_system.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_memory.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_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_video.h" />
<ClInclude Include="..\..\include\SDL3\SDL_vulkan.h" />
diff --git a/VisualC/SDL/SDL.vcxproj b/VisualC/SDL/SDL.vcxproj
index 78539fc5a7bc2..62209777c38b6 100644
--- a/VisualC/SDL/SDL.vcxproj
+++ b/VisualC/SDL/SDL.vcxproj
@@ -243,18 +243,21 @@
</ClCompile>
</ItemDefinitionGroup>
<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_assert.h" />
+ <ClInclude Include="..\..\include\SDL3\SDL_asyncio.h" />
<ClInclude Include="..\..\include\SDL3\SDL_atomic.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_blendmode.h" />
+ <ClInclude Include="..\..\include\SDL3\SDL_camera.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_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_endian.h" />
<ClInclude Include="..\..\include\SDL3\SDL_error.h" />
@@ -264,9 +267,11 @@
<ClInclude Include="..\..\include\SDL3\SDL_gpu.h" />
<ClInclude Include="..\..\include\SDL3\SDL_guid.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_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_keyboard.h" />
<ClInclude Include="..\..\include\SDL3\SDL_keycode.h" />
@@ -274,11 +279,13 @@
<ClInclude Include="..\..\include\SDL3\SDL_locale.h" />
<ClInclude Include="..\..\include\SDL3\SDL_log.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_metal.h" />
<ClInclude Include="..\..\include\SDL3\SDL_misc.h" />
<ClInclude Include="..\..\include\SDL3\SDL_mouse.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_glext.h" />
<ClInclude Include="..\..\include\SDL3\SDL_opengles.h" />
@@ -297,7 +304,6 @@
<ClInclude Include="..\..\include\SDL3\SDL_rect.h" />
<ClInclude Include="..\..\include\SDL3\SDL_render.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_sensor.h" />
<ClInclude Include="..\..\include\SDL3\SDL_stdinc.h" />
@@ -319,6 +325,7 @@
<ClInclude Include="..\..\include\SDL3\SDL_time.h" />
<ClInclude Include="..\..\include\SDL3\SDL_timer.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_video.h" />
<ClInclude Include="..\..\include\SDL3\SDL_vulkan.h" />
diff --git a/VisualC/SDL/SDL.vcxproj.filters b/VisualC/SDL/SDL.vcxproj.filters
index 661206d034acc..9d525279fffe3 100644
--- a/VisualC/SDL/SDL.vcxproj.filters
+++ b/VisualC/SDL/SDL.vcxproj.filters
@@ -222,42 +222,51 @@
</Filter>
</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">
<Filter>API Headers</Filter>
</ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_assert.h">
<Filter>API Headers</Filter>
</ClInclude>
+ <ClInclude Include="..\..\include\SDL3\SDL_asyncio.h">
+ <Filter>API Headers</Filter>
+ </ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_atomic.h">
<Filter>API Headers</Filter>
</ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_audio.h">
<Filter>API Headers</Filter>
</ClInclude>
+ <ClInclude Include="..\..\include\SDL3\SDL_begin_code.h">
+ <Filter>API Headers</Filter>
+ </ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_bits.h">
<Filter>API Headers</Filter>
</ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_blendmode.h">
<Filter>API Headers</Filter>
</ClInclude>
+ <ClInclude Include="..\..\include\SDL3\SDL_camera.h">
+ <Filter>API Headers</Filter>
+ </ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_clipboard.h">
<Filter>API Headers</Filter>
</ClInclude>
+ <ClInclude Include="..\..\include\SDL3\SDL_close_code.h">
+ <Filter>API Headers</Filter>
+ </ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_copying.h">
<Filter>API Headers</Filter>
</ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_cpuinfo.h">
<Filter>API Headers</Filter>
</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">
<Filter>API Headers</Filter>
</ClInclude>
@@ -276,19 +285,28 @@
<ClInclude Include="..\..\include\SDL3\SDL_gamepad.h">
<Filter>API Headers</Filter>
</ClInclude>
+ <ClInclude Include="..\..\include\SDL3\SDL_gpu.h">
+ <Filter>API Headers</Filter>
+ </ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_guid.h">
<Filter>API Headers</Filter>
</ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_haptic.h">
<Filter>API Headers</Filter>
</ClInclude>
+ <ClInclude Include="..\..\include\SDL3\SDL_hidapi.h">
+ <Filter>API Headers</Filter>
+ </ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_hints.h">
<Filter>API Headers</Filter>
</ClInclude>
- <ClInclude Include="..\..\include\SDL3\SDL_hidapi.h">
+ <ClInclude Include="..\..\include\SDL3\SDL_init.h">
<Filter>API Headers</Filter>
</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>
</ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_joystick.h">
@@ -312,15 +330,27 @@
<ClInclude Include="..\..\include\SDL3\SDL_main.h">
<Filter>API Headers</Filter>
</ClInclude>
+ <ClInclude Include="..\..\include\SDL3\SDL_main_impl.h">
+ <Filter>API Headers</Filter>
+ </ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_messagebox.h">
<Filter>API Headers</Filter>
</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">
<Filter>API Headers</Filter>
</ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_mutex.h">
<Filter>API Headers</Filter>
</ClInclude>
+ <ClInclude Include="..\..\include\SDL3\SDL_oldnames.h">
+ <Filter>API Headers</Filter>
+ </ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_opengl.h">
<Filter>API Headers</Filter>
</ClInclude>
@@ -375,9 +405,6 @@
<ClInclude Include="..\..\include\SDL3\SDL_revision.h">
<Filter>API Headers</Filter>
</ClInclude>
- <ClInclude Include="..\..\include\SDL3\SDL_iostream.h">
- <Filter>API Headers</Filter>
- </ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_scancode.h">
<Filter>API Headers</Filter>
</ClInclude>
@@ -387,6 +414,9 @@
<ClInclude Include="..\..\include\SDL3\SDL_stdinc.h">
<Filter>API Headers</Filter>
</ClInclude>
+ <ClInclude Include="..\..\include\SDL3\SDL_storage.h">
+ <Filter>API Headers</Filter>
+ </ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_surface.h">
<Filter>API Headers</Filter>
</ClInclude>
@@ -423,15 +453,24 @@
<ClInclude Include="..\..\include\SDL3\SDL_test_md5.h">
<Filter>API Headers</Filter>
</ClInclude>
+ <ClInclude Include="..\..\include\SDL3\SDL_test_memory.h">
+ <Filter>API Headers</Filter>
+ </ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_thread.h">
<Filter>API Headers</Filter>
</ClInclude>
+ <ClInclude Include="..\..\include\SDL3\SDL_time.h">
+ <Filter>API Headers</Filter>
+ </ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_timer.h">
<Filter>API Headers</Filter>
</ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_touch.h">
<Filter>API Headers</Filter>
</ClInclude>
+ <ClInclude Include="..\..\include\SDL3\SDL_tray.h">
+ <Filter>API Headers</Filter>
+ </ClInclude>
<ClInclude Include="..\..\include\SDL3\SDL_version.h">
<Filter>API Headers</Filter>
</ClInclude>
diff --git a/Xcode/SDL/SDL.xcodeproj/project.pbxproj b/Xcode/SDL/SDL.xcodeproj/project.pbxproj
index a0c52a3dff4f1..eec0c6017e48a 100644
--- a/Xcode/SDL/SDL.xcodeproj/project.pbxproj
+++ b/Xcode/SDL/SDL.xcodeproj/project.pbxproj
@@ -54,6 +54,7 @@
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, ); }; };
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, ); }; };
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, ); }; };
@@ -77,7 +78,6 @@
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 */; };
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 */; };
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 */; };
@@ -417,6 +417,7 @@
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 */; };
+ 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 */; };
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 */; };
@@ -605,6 +606,7 @@
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; };
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; };
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>"; };
@@ -626,7 +628,6 @@
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>"; };
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>"; };
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>"; };
@@ -1000,6 +1001,7 @@
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>"; };
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>"; };
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>"; };
@@ -1267,6 +1269,7 @@
F3D46A8B2D20625800D9CBDF /* SDL_copying.h */,
F3D46A8C2D20625800D9CBDF /* SDL_cpuinfo.h */,
F3D46A8D2D20625800D9CBDF /* SDL_dialog.h */,
+ F39344CD2E99771B0056986F /* SDL_dlopennote.h */,
F3D46A8E2D20625800D9CBDF /* SDL_egl.h */,
F3D46A8F2D20625800D9CBDF /* SDL_endian.h */,
F3D46A902D20625800D9CBDF /* SDL_error.h */,
@@ -2757,6 +2760,7 @@
A7D8B28A23E2514200DCD162 /* vulkan_xlib_xrandr.h in Headers */,
A7D8B3D423E2514300DCD162 /* yuv_rgb.h in Headers */,
F3FA5A252B59ACE000FEAD97 /* yuv_rgb_common.h in Headers */,
+ F39344CE2E99771B0056986F /* SDL_dlopennote.h in Headers */,
F3FA5A1D2B59ACE000FEAD97 /* yuv_rgb_internal.h in Headers */,
F3D8BDFC2D6D2C7000B22FA1 /* SDL_eventwatch_c.h in Headers */,
F3DC38C92E5FC60300CD73DE /* SDL_libusb.h in Headers */,
diff --git a/include/SDL3/SDL.h b/include/SDL3/SDL.h
index ebfcbd11a620c..7cfba76e61b9f 100644
--- a/include/SDL3/SDL.h
+++ b/include/SDL3/SDL.h
@@ -42,6 +42,7 @@
#include <SDL3/SDL_clipboard.h>
#include <SDL3/SDL_cpuinfo.h>
#include <SDL3/SDL_dialog.h>
+#include <SDL3/SDL_dlopennote.h>
#include <SDL3/SDL_endian.h>
#include <SDL3/SDL_error.h>
#include <SDL3/SDL_events.h>
diff --git a/src/dynapi/SDL_dynapi_dlopennote.h b/include/SDL3/SDL_dlopennote.h
similarity index 54%
rename from src/dynapi/SDL_dynapi_dlopennote.h
rename to include/SDL3/SDL_dlopennote.h
index 8a2ec58ed1f76..a12ddbd7e78b2 100644
--- a/src/dynapi/SDL_dynapi_dlopennote.h
+++ b/include/SDL3/SDL_dlopennote.h
@@ -19,14 +19,83 @@
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.
+ *
+
(Patch may be truncated, please check the link at the top of this post.)