| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | 
							
- #              Copyright Catch2 Authors
 
- # Distributed under the Boost Software License, Version 1.0.
 
- #   (See accompanying file LICENSE_1_0.txt or copy at
 
- #        https://www.boost.org/LICENSE_1_0.txt)
 
- # SPDX-License-Identifier: BSL-1.0
 
- include(CheckCXXCompilerFlag)
 
- function(add_cxx_flag_if_supported_to_targets flagname targets)
 
-     string(MAKE_C_IDENTIFIER ${flagname} flag_identifier )
 
-     check_cxx_compiler_flag("${flagname}" HAVE_FLAG_${flag_identifier})
 
-     if (HAVE_FLAG_${flag_identifier})
 
-         foreach(target ${targets})
 
-             target_compile_options(${target} PUBLIC ${flagname})
 
-         endforeach()
 
-     endif()
 
- endfunction()
 
- # Assumes that it is only called for development builds, where warnings
 
- # and Werror is desired, so it also enables Werror.
 
- function(add_warnings_to_targets targets)
 
-     LIST(LENGTH targets TARGETS_LEN)
 
-     # For now we just assume 2 possibilities: msvc and msvc-like compilers,
 
-     # and other.
 
-     if (MSVC)
 
-         foreach(target ${targets})
 
-             # Force MSVC to consider everything as encoded in utf-8
 
-             target_compile_options( ${target} PRIVATE /utf-8 )
 
-             # Enable Werror equivalent
 
-             if (CATCH_ENABLE_WERROR)
 
-                 target_compile_options( ${target} PRIVATE /WX )
 
-             endif()
 
-             # MSVC is currently handled specially
 
-             if ( CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
 
-                 STRING(REGEX REPLACE "/W[0-9]" "/W4" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) # override default warning level
 
-                 target_compile_options( ${target} PRIVATE /w44265 /w44061 /w44062 /w45038 )
 
-             endif()
 
-         endforeach()
 
-     endif()
 
-     if (NOT MSVC)
 
-         set(CHECKED_WARNING_FLAGS
 
-           "-Wabsolute-value"
 
-           "-Wall"
 
-           "-Wc++20-compat"
 
-           "-Wcall-to-pure-virtual-from-ctor-dtor"
 
-           "-Wcast-align"
 
-           "-Wcatch-value"
 
-           "-Wdangling"
 
-           "-Wdeprecated"
 
-           "-Wdeprecated-register"
 
-           "-Wexceptions"
 
-           "-Wexit-time-destructors"
 
-           "-Wextra"
 
-           "-Wextra-semi"
 
-           "-Wfloat-equal"
 
-           "-Wglobal-constructors"
 
-           "-Winit-self"
 
-           "-Wmisleading-indentation"
 
-           "-Wmismatched-new-delete"
 
-           "-Wmismatched-return-types"
 
-           "-Wmismatched-tags"
 
-           "-Wmissing-braces"
 
-           "-Wmissing-declarations"
 
-           "-Wmissing-noreturn"
 
-           "-Wmissing-prototypes"
 
-           "-Wmissing-variable-declarations"
 
-           "-Wnull-dereference"
 
-           "-Wold-style-cast"
 
-           "-Woverloaded-virtual"
 
-           "-Wparentheses"
 
-           "-Wpedantic"
 
-           "-Wreorder"
 
-           "-Wreturn-std-move"
 
-           "-Wshadow"
 
-           "-Wstrict-aliasing"
 
-           "-Wsuggest-destructor-override"
 
-           "-Wsuggest-override"
 
-           "-Wundef"
 
-           "-Wuninitialized"
 
-           "-Wunneeded-internal-declaration"
 
-           "-Wunreachable-code"
 
-           "-Wunused"
 
-           "-Wunused-function"
 
-           "-Wunused-parameter"
 
-           "-Wvla"
 
-           "-Wweak-vtables"
 
-           # This is a useful warning, but our tests sometimes rely on
 
-           # functions being present, but not picked (e.g. various checks
 
-           # for stringification implementation ordering).
 
-           # Ergo, we should use it every now and then, but we cannot
 
-           # enable it by default.
 
-           # "-Wunused-member-function"
 
-         )
 
-         foreach(warning ${CHECKED_WARNING_FLAGS})
 
-             add_cxx_flag_if_supported_to_targets(${warning} "${targets}")
 
-         endforeach()
 
-         if (CATCH_ENABLE_WERROR)
 
-             foreach(target ${targets})
 
-                 # Enable Werror equivalent
 
-                 target_compile_options( ${target} PRIVATE -Werror )
 
-             endforeach()
 
-         endif()
 
-     endif()
 
- endfunction()
 
- # Adds flags required for reproducible build to the target
 
- # Currently only supports GCC and Clang
 
- function(add_build_reproducibility_settings target)
 
-   # Make the build reproducible on versions of g++ and clang that supports -ffile-prefix-map
 
-   if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") OR (CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
 
-     add_cxx_flag_if_supported_to_targets("-ffile-prefix-map=${CATCH_DIR}/=" "${target}")
 
-   endif()
 
- endfunction()
 
 
  |