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()