SDL_ttf: cmake: add warning options using helper function

From aa042e14460740fc015caa64c8a367783af4e2f4 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Mon, 5 Jun 2023 03:49:34 +0200
Subject: [PATCH] cmake: add warning options using helper function

---
 CMakeLists.txt                  | 17 ++---------------
 cmake/PrivateSdlFunctions.cmake | 16 ++++++++++++++++
 2 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 77f29ae..188b152 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -82,20 +82,6 @@ if(NOT TARGET ${sdl3_target_name})
     find_package(SDL3 ${SDL_REQUIRED_VERSION} REQUIRED)
 endif()
 
-add_library(sdl3ttf_build_options INTERFACE)
-if(MSVC)
-    target_compile_options(sdl3ttf_build_options INTERFACE /W2)
-else()
-    target_compile_options(sdl3ttf_build_options INTERFACE -Wall -Wextra)
-endif()
-if(SDL3TTF_WERROR)
-    if(MSVC)
-        target_compile_options(sdl3ttf_build_options INTERFACE /WX)
-    else()
-        target_compile_options(sdl3ttf_build_options INTERFACE -Werror)
-    endif()
-endif()
-
 # Enable large file support on 32-bit glibc, so that the vendored libraries
 # can access files with large inode numbers
 check_symbol_exists("__GLIBC__" "stdlib.h" LIBC_IS_GLIBC)
@@ -124,7 +110,7 @@ target_compile_definitions(${sdl3_ttf_target_name} PRIVATE
     SDL_BUILD_MICRO_VERSION=${MICRO_VERSION}
 )
 target_link_libraries(${sdl3_ttf_target_name} PRIVATE $<BUILD_INTERFACE:${sdl3_target_name}>)
-target_link_libraries(${sdl3_ttf_target_name} PRIVATE $<BUILD_INTERFACE:sdl3ttf_build_options>)
+sdl_add_warning_options(${sdl3_ttf_target_name} WARNING_AS_ERROR ${SDL3TTF_WERROR})
 if(WIN32 AND SDL3TTF_BUILD_SHARED_LIBS)
     target_sources(${sdl3_ttf_target_name} PRIVATE
         version.rc
@@ -365,6 +351,7 @@ if(SDL3TTF_SAMPLES)
     endif()
 
     foreach(prog glfont showfont testapp)
+        sdl_add_warning_options(${prog} WARNING_AS_ERROR ${SDL3TTF_WERROR})
         target_link_libraries(${prog} PRIVATE SDL3_ttf::${sdl3_ttf_target_name})
         target_link_libraries(${prog} PRIVATE ${sdl3_target_name})
 
diff --git a/cmake/PrivateSdlFunctions.cmake b/cmake/PrivateSdlFunctions.cmake
index 034f2ce..7c1dfc4 100644
--- a/cmake/PrivateSdlFunctions.cmake
+++ b/cmake/PrivateSdlFunctions.cmake
@@ -237,3 +237,19 @@ function(sdl_target_link_option_version_file TARGET VERSION_SCRIPT)
         endif()
     endif()
 endfunction()
+
+function(sdl_add_warning_options TARGET)
+    cmake_parse_arguments(ARGS "" "WARNING_AS_ERROR" "" ${ARGN})
+    if(MSVC)
+        target_compile_options(${TARGET} PRIVATE /W2)
+    else()
+        target_compile_options(${TARGET} PRIVATE -Wall -Wextra)
+    endif()
+    if(ARGS_WARNING_AS_ERROR)
+        if(MSVC)
+            target_compile_options(${TARGET} PRIVATE /WX)
+        else()
+            target_compile_options(${TARGET} PRIVATE -Werror)
+        endif()
+    endif()
+endfunction()