From a92cba218d463d83dc220a7c85fdfe09e0b0cd18 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Mon, 5 Jun 2023 03:22:45 +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 c1b0533b..8251fcd1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -208,20 +208,6 @@ if(NOT TARGET ${sdl3_target_name})
find_package(SDL3 ${SDL_REQUIRED_VERSION} REQUIRED)
endif()
-add_library(sdl3mixer_build_options INTERFACE)
-if(MSVC)
- target_compile_options(sdl3mixer_build_options INTERFACE /W2)
-else()
- target_compile_options(sdl3mixer_build_options INTERFACE -Wall -Wextra)
-endif()
-if(SDL3MIXER_WERROR)
- if(MSVC)
- target_compile_options(sdl3mixer_build_options INTERFACE /WX)
- else()
- target_compile_options(sdl3mixer_build_options INTERFACE -Werror)
- endif()
-endif()
-
set(BUILD_SHARED_LIBS ${SDL3MIXER_BUILD_SHARED_LIBS})
add_library(${sdl3_mixer_target_name}
src/codecs/load_aiff.c
@@ -272,7 +258,7 @@ target_compile_definitions(${sdl3_mixer_target_name} PRIVATE
SDL_BUILD_MICRO_VERSION=${MICRO_VERSION}
)
target_link_libraries(${sdl3_mixer_target_name} PRIVATE $<BUILD_INTERFACE:${sdl3_target_name}>)
-target_link_libraries(${sdl3_mixer_target_name} PRIVATE $<BUILD_INTERFACE:sdl3mixer_build_options>)
+sdl_add_warning_options(${sdl3_mixer_target_name} WARNING_AS_ERROR ${SDL3MIXER_WERROR})
if(WIN32 AND BUILD_SHARED_LIBS)
target_sources(${sdl3_mixer_target_name} PRIVATE
version.rc
@@ -1009,6 +995,7 @@ if(SDL3MIXER_SAMPLES)
add_executable(playwave playwave.c)
foreach(prog playmus playwave)
+ sdl_add_warning_options(${prog} WARNING_AS_ERROR ${SDL3MIXER_WERROR})
target_link_libraries(${prog} PRIVATE SDL3_mixer::${sdl3_mixer_target_name})
target_link_libraries(${prog} PRIVATE ${sdl3_target_name})
if(HAVE_SIGNAL_H)
diff --git a/cmake/PrivateSdlFunctions.cmake b/cmake/PrivateSdlFunctions.cmake
index 034f2cef..7c1dfc46 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()