SDL_image: Add ELF dlnotes

From 058729fd8191f5891b23644c37902875ad1da4a3 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Mon, 22 Dec 2025 22:27:26 +0100
Subject: [PATCH] Add ELF dlnotes

---
 src/IMG_avif.c   |  9 +++++++++
 src/IMG_jpg.c    |  9 +++++++++
 src/IMG_jxl.c    |  9 +++++++++
 src/IMG_libpng.c |  9 +++++++++
 src/IMG_tif.c    |  9 +++++++++
 src/IMG_webp.c   | 31 +++++++++++++++++++++++++++++++
 6 files changed, 76 insertions(+)

diff --git a/src/IMG_avif.c b/src/IMG_avif.c
index ccd1a4d1f..5844e2ef8 100644
--- a/src/IMG_avif.c
+++ b/src/IMG_avif.c
@@ -37,6 +37,15 @@
 
 #include <avif/avif.h>
 
+#if defined(LOAD_AVIF_DYNAMIC) && defined(SDL_ELF_NOTE_DLOPEN)
+SDL_ELF_NOTE_DLOPEN(
+    "avif",
+    "Support for AVIF images using libavif",
+    SDL_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+    LOAD_AVIF_DYNAMIC
+);
+#endif
+
 
 /*
  * - `SDL_PROP_SURFACE_MAXCLL_NUMBER`: MaxCLL (Maximum Content Light Level)
diff --git a/src/IMG_jpg.c b/src/IMG_jpg.c
index 0cd57fe38..70df88b96 100644
--- a/src/IMG_jpg.c
+++ b/src/IMG_jpg.c
@@ -50,6 +50,15 @@
 
 #define USE_JPEGLIB
 
+#if defined(LOAD_JPG_DYNAMIC) && defined(SDL_ELF_NOTE_DLOPEN)
+SDL_ELF_NOTE_DLOPEN(
+    "jpeg",
+    "Support for JPEG images using libjpg",
+    SDL_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+    LOAD_JPG_DYNAMIC
+);
+#endif
+
 #include <jpeglib.h>
 
 #ifdef JPEG_TRUE  /* MinGW version of jpeg-8.x renamed TRUE to JPEG_TRUE etc. */
diff --git a/src/IMG_jxl.c b/src/IMG_jxl.c
index 403674593..e1544f1b1 100644
--- a/src/IMG_jxl.c
+++ b/src/IMG_jxl.c
@@ -25,6 +25,15 @@
 
 #ifdef LOAD_JXL
 
+#if defined(LOAD_JXL_DYNAMIC) && defined(SDL_ELF_NOTE_DLOPEN)
+SDL_ELF_NOTE_DLOPEN(
+    "libjxl",
+    "Support for JPEG XL images using libjxl",
+    SDL_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+    LOAD_JXL_DYNAMIC
+);
+#endif
+
 #include <jxl/decode.h>
 
 
diff --git a/src/IMG_libpng.c b/src/IMG_libpng.c
index 44f4498b5..8c7a2853f 100644
--- a/src/IMG_libpng.c
+++ b/src/IMG_libpng.c
@@ -36,6 +36,15 @@
 #ifdef SDL_IMAGE_LIBPNG
 #include <png.h>
 
+#if defined(LOAD_LIBPNG_DYNAMIC) && defined(SDL_ELF_NOTE_DLOPEN)
+SDL_ELF_NOTE_DLOPEN(
+    "png",
+    "Support for PNG images using libpng",
+    SDL_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+    LOAD_LIBPNG_DYNAMIC
+);
+#endif
+
 #ifndef PNG_DISPOSE_OP_NONE
 #define PNG_DISPOSE_OP_NONE 0
 #endif
diff --git a/src/IMG_tif.c b/src/IMG_tif.c
index b4fa247a7..38011dc25 100644
--- a/src/IMG_tif.c
+++ b/src/IMG_tif.c
@@ -29,6 +29,15 @@
 
 #include <tiffio.h>
 
+#if defined(LOAD_TIF_DYNAMIC) && defined(SDL_ELF_NOTE_DLOPEN)
+SDL_ELF_NOTE_DLOPEN(
+    "tiff",
+    "Support for TIFF images using libtiff",
+    SDL_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+    LOAD_TIF_DYNAMIC
+);
+#endif
+
 static struct {
     int loaded;
     void *handle;
diff --git a/src/IMG_webp.c b/src/IMG_webp.c
index ccd22caa5..09ff0348c 100644
--- a/src/IMG_webp.c
+++ b/src/IMG_webp.c
@@ -39,6 +39,37 @@
 
 #ifdef LOAD_WEBP
 
+
+#if (defined(LOAD_WEBP_DYNAMIC) || defined(LOAD_WEBPDEMUX_DYNAMIC) || defined(LOAD_WEBPMUX_DYNAMIC)) && defined(SDL_ELF_NOTE_DLOPEN)
+
+#ifdef LOAD_WEBP_DYNAMIC
+SDL_ELF_NOTE_DLOPEN(
+    "webp",
+    "Support for WebP images using libwebp",
+    SDL_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+    LOAD_WEBP_DYNAMIC
+);
+#endif
+
+#ifdef LOAD_WEBPDEMUX_DYNAMIC
+SDL_ELF_NOTE_DLOPEN(
+    "webp",
+    "Support for WebP images using libwebp",
+    SDL_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+    LOAD_WEBPDEMUX_DYNAMIC
+);
+#endif
+
+#ifdef LOAD_WEBPMUX_DYNAMIC
+SDL_ELF_NOTE_DLOPEN(
+    "webp",
+    "Support for WebP images using libwebp",
+    SDL_ELF_NOTE_DLOPEN_PRIORITY_SUGGESTED,
+    LOAD_WEBPMUX_DYNAMIC
+);
+#endif
+
+#endif
 /*=============================================================================
         File: SDL_webp.c
      Purpose: A WEBP loader for the SDL library