SDL_mixer: cmake: Set CMP0077 to NEW

From b1f3661d308ed5f6fa16ec7cab41ba2c6eeccb17 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Fri, 25 Aug 2023 00:33:38 +0200
Subject: [PATCH] cmake: Set CMP0077 to NEW

This avoids the need for settings CACHE variables, and will now show warnings messages.
---
 CMakeLists.txt | 48 ++++++++++++++++++++++++++----------------------
 1 file changed, 26 insertions(+), 22 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index f3f98c4b..d344b770 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -34,6 +34,10 @@ if(ANDROID)
     set(SDL3MIXER_SAMPLES_DEFAULT OFF)
 endif()
 
+# option() honors normal variables.
+cmake_policy(SET CMP0077 NEW)
+set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
+
 if(POLICY CMP0112)
     # Target file component generator expressions do not add target dependencies.
     cmake_policy(SET CMP0112 NEW)
@@ -383,8 +387,8 @@ if(SDL3MIXER_OGG)
     if(SDL3MIXER_VENDORED)
         message(STATUS "Using vendored libogg")
         set(BUILD_SHARED_LIBS ${SDL3MIXER_OGG_SHARED})
-        set(INSTALL_CMAKE_PACKAGE_MODULE FALSE CACHE BOOL "Don't install cmake module for libogg")
-        set(BUILD_TESTING OFF CACHE BOOL "Build tests")
+        set(INSTALL_CMAKE_PACKAGE_MODULE FALSE)
+        set(BUILD_TESTING OFF)
         sdl_check_project_in_subfolder(external/ogg ogg SDL3MIXER_VENDORED)
         add_subdirectory(external/ogg EXCLUDE_FROM_ALL)
         if(SDL3MIXER_OGG_install)
@@ -402,13 +406,13 @@ if(SDL3MIXER_OPUS)
         endif()
         message(STATUS "Using vendored opus")
         set(BUILD_SHARED_LIBS ${SDL3MIXER_OPUS_SHARED})
-        set(BUILD_PROGRAMS OFF CACHE BOOL "Build programs")
+        set(BUILD_PROGRAMS OFF)
         sdl_check_project_in_subfolder(external/opus opus SDL3MIXER_VENDORED)
         add_subdirectory(external/opus EXCLUDE_FROM_ALL)
 
-        set(OP_DISABLE_DOCS TRUE CACHE BOOL "Disable opusfile documentation")
-        set(OP_DISABLE_EXAMPLES TRUE CACHE BOOL "Disable opusfile examples")
-        set(OP_DISABLE_HTTP TRUE CACHE BOOL "Disable opusfile HTTP SUPPORT")
+        set(OP_DISABLE_DOCS TRUE)
+        set(OP_DISABLE_EXAMPLES TRUE)
+        set(OP_DISABLE_HTTP TRUE)
         message(STATUS "Using vendored opusfile")
         set(BUILD_SHARED_LIBS ${SDL3MIXER_OPUS_SHARED})
         sdl_check_project_in_subfolder(external/opusfile opusfile SDL3MIXER_VENDORED)
@@ -566,13 +570,13 @@ if(SDL3MIXER_FLAC_LIBFLAC)
             message(FATAL_ERROR "ogg target not present")
         endif()
         set(BUILD_SHARED_LIBS "${SDL3MIXER_FLAC_LIBFLAC_SHARED}")
-        set(INSTALL_CMAKE_CONFIG_MODULE OFF CACHE BOOL "Disable libflac installation")
-        set(WITH_OGG OFF CACHE BOOL "Disable finding ogg using `find_package` (we have vendored it)")
-        set(BUILD_CXXLIBS OFF CACHE BOOL "Build FLAC++")
-        set(BUILD_EXAMPLES OFF CACHE BOOL "Build FLAC examples")
-        set(BUILD_PROGRAMS OFF CACHE BOOL "Build programs")
-        set(BUILD_TESTING OFF CACHE BOOL "Build tests")
-        set(INSTALL_MANPAGES OFF CACHE BOOL "Install FLAC manpages")
+        set(INSTALL_CMAKE_CONFIG_MODULE OFF)
+        set(WITH_OGG OFF)
+        set(BUILD_CXXLIBS OFF)
+        set(BUILD_EXAMPLES OFF)
+        set(BUILD_PROGRAMS OFF)
+        set(BUILD_TESTING OFF)
+        set(INSTALL_MANPAGES OFF)
         message(STATUS "Using vendored libflac")
         sdl_check_project_in_subfolder(external/flac libflac SDL3MIXER_VENDORED)
         add_subdirectory(external/flac EXCLUDE_FROM_ALL)
@@ -614,9 +618,9 @@ if(SDL3MIXER_GME)
     target_compile_definitions(${sdl3_mixer_target_name} PRIVATE MUSIC_GME)
     if(SDL3MIXER_VENDORED)
         set(BUILD_SHARED_LIBS "${SDL3MIXER_GME_SHARED}")
-        set(ENABLE_UBSAN OFF CACHE BOOL "UB sanitizer")
-        set(BUILD_FRAMEWORK OFF CACHE BOOL "macos framework")
-        set(GME_ZLIB OFF CACHE BOOL "GME supports compressed formats")
+        set(ENABLE_UBSAN OFF)
+        set(BUILD_FRAMEWORK OFF)
+        set(GME_ZLIB OFF)
         message(STATUS "Using vendored libgme")
         sdl_check_project_in_subfolder(external/libgme libgme SDL3MIXER_VENDORED)
         add_subdirectory(external/libgme EXCLUDE_FROM_ALL)
@@ -755,8 +759,8 @@ if(SDL3MIXER_MP3_MPG123)
     if(SDL3MIXER_VENDORED)
         message(STATUS "Using vendored mpg123")
         sdl_check_project_in_subfolder(external/mpg123/ports/cmake mpg123 SDL3MIXER_VENDORED)
-        set(BUILD_LIBOUT123 FALSE CACHE BOOL "Don't configure libout123")
-        set(BUILD_PROGRAMS OFF CACHE BOOL "Build programs")
+        set(BUILD_LIBOUT123 FALSE)
+        set(BUILD_PROGRAMS OFF)
         set(BUILD_SHARED_LIBS "${SDL3MIXER_MP3_MPG123_SHARED}")
         add_subdirectory(external/mpg123/ports/cmake EXCLUDE_FROM_ALL)
         if(NOT TARGET MPG123::libmpg123)
@@ -864,10 +868,10 @@ if(SDL3MIXER_WAVPACK)
     if(SDL3MIXER_VENDORED)
         message(STATUS "Using vendored WevPack")
         sdl_check_project_in_subfolder(external/wavpack WavPack SDL3MIXER_VENDORED)
-        set(WAVPACK_BUILD_PROGRAMS FALSE CACHE BOOL "Don't build WavPack programs")
-        set(WAVPACK_BUILD_COOLEDIT_PLUGIN OFF CACHE BOOL "Don't build WavPack CoolEdit plugin")
-        set(WAVPACK_BUILD_WINAMP_PLUGIN OFF CACHE BOOL "Don't build WavPack WinAMP plugin")
-        set(WAVPACK_BUILD_DOCS OFF CACHE BOOL "Don't build WavPack documentation")
+        set(WAVPACK_BUILD_PROGRAMS FALSE)
+        set(WAVPACK_BUILD_COOLEDIT_PLUGIN OFF)
+        set(WAVPACK_BUILD_WINAMP_PLUGIN OFF)
+        set(WAVPACK_BUILD_DOCS OFF)
         set(BUILD_SHARED_LIBS "${SDL3MIXER_WAVPACK_SHARED}")
         add_subdirectory(external/wavpack EXCLUDE_FROM_ALL)
         if(SDL3MIXER_WAVPACK_SHARED OR NOT SDL3MIXER_BUILD_SHARED_LIBS)