SDL: cmake: only mark SDL_{SHARED,STATIC} as cache variables if they were already cache variables

From 1d587e94e116ec3c87eb7e4ded7bb810370a67b9 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Mon, 19 Jan 2026 22:30:42 +0100
Subject: [PATCH] cmake: only mark SDL_{SHARED,STATIC} as cache variables if
 they were already cache variables

---
 CMakeLists.txt | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 025e652d7a089..80e7fffdfdfb5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -390,8 +390,17 @@ set_option(SDL_CLANG_TIDY          "Run clang-tidy static analysis" OFF)
 
 set(SDL_VENDOR_INFO "" CACHE STRING "Vendor name and/or version to add to SDL_REVISION")
 
-cmake_dependent_option(SDL_SHARED "Build a shared version of the library" ${SDL_SHARED_DEFAULT} ${SDL_SHARED_AVAILABLE} OFF)
-cmake_dependent_option(SDL_STATIC "Build a static version of the library" ${SDL_STATIC_DEFAULT} ${SDL_STATIC_AVAILABLE} OFF)
+if(DEFINED CACHE{SDL_SHARED} OR DEFINED CACHE{SDL_STATIC})
+  cmake_dependent_option(SDL_SHARED "Build a shared version of the library" ${SDL_SHARED_DEFAULT} ${SDL_SHARED_AVAILABLE} OFF)
+  cmake_dependent_option(SDL_STATIC "Build a static version of the library" ${SDL_STATIC_DEFAULT} ${SDL_STATIC_AVAILABLE} OFF)
+else()
+  if(NOT DEFINED SDL_SHARED)
+    set(SDL_SHARED ${SDL_SHARED_DEFAULT})
+  endif()
+  if(NOT DEFINED SDL_STATIC)
+    set(SDL_STATIC ${SDL_STATIC_DEFAULT})
+  endif()
+endif()
 option(SDL_TEST_LIBRARY   "Build the SDL3_test library" ON)
 
 dep_option(SDL_TESTS           "Build the test directory" ${SDL3_MAINPROJECT} SDL_TEST_LIBRARY OFF)