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