From 3315bad0092d70d691e013bc31b0595eb9f975ea Mon Sep 17 00:00:00 2001 From: gabime Date: Sat, 10 Jul 2021 15:22:44 +0300 Subject: [PATCH] Treat wall warnings as errors if SPDLOG_BUILD_WARNINGS is ON --- cmake/utils.cmake | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/cmake/utils.cmake b/cmake/utils.cmake index da7c6ef4..6a2ad850 100644 --- a/cmake/utils.cmake +++ b/cmake/utils.cmake @@ -2,21 +2,21 @@ function(spdlog_extract_version) file(READ "${CMAKE_CURRENT_LIST_DIR}/include/spdlog/version.h" file_contents) string(REGEX MATCH "SPDLOG_VER_MAJOR ([0-9]+)" _ "${file_contents}") - if(NOT CMAKE_MATCH_COUNT EQUAL 1) + if (NOT CMAKE_MATCH_COUNT EQUAL 1) message(FATAL_ERROR "Could not extract major version number from spdlog/version.h") - endif() + endif () set(ver_major ${CMAKE_MATCH_1}) string(REGEX MATCH "SPDLOG_VER_MINOR ([0-9]+)" _ "${file_contents}") - if(NOT CMAKE_MATCH_COUNT EQUAL 1) + if (NOT CMAKE_MATCH_COUNT EQUAL 1) message(FATAL_ERROR "Could not extract minor version number from spdlog/version.h") - endif() + endif () set(ver_minor ${CMAKE_MATCH_1}) string(REGEX MATCH "SPDLOG_VER_PATCH ([0-9]+)" _ "${file_contents}") - if(NOT CMAKE_MATCH_COUNT EQUAL 1) + if (NOT CMAKE_MATCH_COUNT EQUAL 1) message(FATAL_ERROR "Could not extract patch version number from spdlog/version.h") - endif() + endif () set(ver_patch ${CMAKE_MATCH_1}) set(SPDLOG_VERSION_MAJOR ${ver_major} PARENT_SCOPE) @@ -27,31 +27,32 @@ endfunction() # Turn on warnings on the given target function(spdlog_enable_warnings target_name) - if(SPDLOG_BUILD_WARNINGS) - if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + if (SPDLOG_BUILD_WARNINGS) + if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") list(APPEND MSVC_OPTIONS "/W3") - if(MSVC_VERSION GREATER 1900) # Allow non fatal security warnings for msvc 2015 + if (MSVC_VERSION GREATER 1900) # Allow non fatal security warnings for msvc 2015 list(APPEND MSVC_OPTIONS "/WX") - endif() - endif() + endif () + endif () target_compile_options( - ${target_name} - PRIVATE $<$,$,$>: - -Wall - -Wextra - -Wconversion - -pedantic - -Wfatal-errors> - $<$:${MSVC_OPTIONS}>) - endif() + ${target_name} + PRIVATE $<$,$,$>: + -Wall + -Wextra + -Wconversion + -pedantic + -Werror + -Wfatal-errors> + $<$:${MSVC_OPTIONS}>) + endif () endfunction() # Enable address sanitizer (gcc/clang only) function(spdlog_enable_sanitizer target_name) - if(NOT CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") + if (NOT CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") message(FATAL_ERROR "Sanitizer supported only for gcc/clang") - endif() + endif () message(STATUS "Address sanitizer enabled") target_compile_options(${target_name} PRIVATE -fsanitize=address,undefined) target_compile_options(${target_name} PRIVATE -fno-sanitize=signed-integer-overflow)