SDL_mixer: Require minimum SDL version in SDL_mixer sources + verify this

From c636b052d1e0d422ac3355233523693d12de0089 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Sun, 23 Nov 2025 00:59:54 +0100
Subject: [PATCH] Require minimum SDL version in SDL_mixer sources + verify
 this

---
 build-scripts/test-versioning.sh | 14 +++++++++++++-
 src/SDL_mixer.c                  |  2 ++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/build-scripts/test-versioning.sh b/build-scripts/test-versioning.sh
index 89e298916..ae89b98b0 100755
--- a/build-scripts/test-versioning.sh
+++ b/build-scripts/test-versioning.sh
@@ -15,6 +15,12 @@ ref_minor=$(sed -ne 's/^#define SDL_MIXER_MINOR_VERSION  *//p' $header)
 ref_micro=$(sed -ne 's/^#define SDL_MIXER_MICRO_VERSION  *//p' $header)
 ref_version="${ref_major}.${ref_minor}.${ref_micro}"
 
+ref_reqsdl="$(sed -nEe ':a;N;$!ba;s/[\r\n]/ /g;s/.*SDL_COMPILE_TIME_ASSERT\(SDL_version, SDL_VERSION_ATLEAST\(([0-9]+), ([0-9]+), ([0-9]+)\)\).*/\1.\2.\3/p' src/SDL_mixer.c)"
+if [[ -z "$ref_reqsdl" ]]; then
+    echo "ERROR: SDL_VERSION_ATLEAST(...) not found in $src" >&2
+    exit 1
+fi
+
 tests=0
 failed=0
 
@@ -32,7 +38,7 @@ not_ok () {
 major=$(sed -ne 's/^set(MAJOR_VERSION \([0-9]*\))$/\1/p' CMakeLists.txt)
 minor=$(sed -ne 's/^set(MINOR_VERSION \([0-9]*\))$/\1/p' CMakeLists.txt)
 micro=$(sed -ne 's/^set(MICRO_VERSION \([0-9]*\))$/\1/p' CMakeLists.txt)
-ref_sdl_req=$(sed -ne 's/^set(SDL_REQUIRED_VERSION \([0-9.]*\))$/\1/p' CMakeLists.txt)
+reqsdl=$(sed -ne 's/^set(SDL_REQUIRED_VERSION \([0-9.]*\))$/\1/p' CMakeLists.txt)
 version="${major}.${minor}.${micro}"
 
 if [ "$ref_version" = "$version" ]; then
@@ -41,6 +47,12 @@ else
     not_ok "CMakeLists.txt $version disagrees with SDL_mixer.h $ref_version"
 fi
 
+if [ "$ref_reqsdl" = "$reqsdl" ]; then
+    ok "CMakeLists.txt $reqsdl"
+else
+    not_ok "CMakeLists.txt $reqsdl disagrees with SDL_mixer.h $ref_reqsdl"
+fi
+
 for rcfile in src/version.rc; do
     tuple=$(sed -ne 's/^ *FILEVERSION *//p' "$rcfile" | tr -d '\r')
     ref_tuple="${ref_major},${ref_minor},${ref_micro},0"
diff --git a/src/SDL_mixer.c b/src/SDL_mixer.c
index 3beca55b4..95493b223 100644
--- a/src/SDL_mixer.c
+++ b/src/SDL_mixer.c
@@ -23,6 +23,8 @@
 
 #include "SDL_mixer_internal.h"
 
+SDL_COMPILE_TIME_ASSERT(SDL_version, SDL_VERSION_ATLEAST(3, 3, 3));
+
 // !!! FIXME: remove this once SDL 3.4.0 ships.
 #ifndef SDL_PROP_AUDIOSTREAM_AUTO_CLEANUP_BOOLEAN
 #define SDL_PROP_AUDIOSTREAM_AUTO_CLEANUP_BOOLEAN "SDL.audiostream.auto_cleanup"