From ad9051ec1afbdf5f28559701f69ad88052074e54 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Mon, 5 Jun 2023 02:30:18 +0200
Subject: [PATCH] cmake: add warning options using helper function
---
CMakeLists.txt | 17 ++---------------
cmake/PrivateSdlFunctions.cmake | 16 ++++++++++++++++
test/CMakeLists.txt | 1 +
3 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3fe21572..510b95a2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -183,20 +183,6 @@ if(NOT DEFINED OpenGL_GL_PREFERENCE)
set(OpenGL_GL_PREFERENCE GLVND)
endif()
-add_library(sdl3image_build_options INTERFACE)
-if(MSVC)
- target_compile_options(sdl3image_build_options INTERFACE /W2)
-else()
- target_compile_options(sdl3image_build_options INTERFACE -Wall -Wextra)
-endif()
-if(SDL3IMAGE_WERROR)
- if(MSVC)
- target_compile_options(sdl3image_build_options INTERFACE /WX)
- else()
- target_compile_options(sdl3image_build_options INTERFACE -Werror)
- endif()
-endif()
-
set(BUILD_SHARED_LIBS ${SDL3IMAGE_BUILD_SHARED_LIBS})
add_library(${sdl3_image_target_name}
IMG.c
@@ -238,7 +224,7 @@ target_compile_definitions(${sdl3_image_target_name} PRIVATE
SDL_BUILD_MICRO_VERSION=${MICRO_VERSION}
)
target_link_libraries(${sdl3_image_target_name} PRIVATE $<BUILD_INTERFACE:${sdl3_target_name}>)
-target_link_libraries(${sdl3_image_target_name} PRIVATE $<BUILD_INTERFACE:sdl3image_build_options>)
+sdl_add_warning_options(${sdl3_image_target_name} WARNING_AS_ERROR ${SDL3IMAGE_WERROR})
if(WIN32 AND SDL3IMAGE_BUILD_SHARED_LIBS)
target_sources(${sdl3_image_target_name} PRIVATE
version.rc
@@ -780,6 +766,7 @@ if(SDL3IMAGE_SAMPLES)
add_executable(showimage showimage.c)
foreach(prog showanim showimage)
+ sdl_add_warning_options(${prog} WARNING_AS_ERROR ${SDL3IMAGE_WERROR})
target_link_libraries(${prog} PRIVATE SDL3_image::${sdl3_image_target_name})
target_link_libraries(${prog} PRIVATE ${sdl3_target_name})
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()
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index d6b690af..d85179fb 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -67,6 +67,7 @@ set(TESTS_ENVIRONMENT
foreach(prog IN LISTS ALL_TESTS)
target_compile_definitions(${prog} PRIVATE $<TARGET_PROPERTY:${sdlimage_target_name},COMPILE_DEFINITIONS>)
+ sdl_add_warning_options(${prog} WARNING_AS_ERROR ${SDL3IMAGE_WERROR})
target_link_libraries(${prog} PRIVATE ${sdlimage_target_name})
target_link_libraries(${prog} PRIVATE SDL3::SDL3_test ${sdl_target_name})
if(TARGET sdl3image_build_options)