diff --git a/CMakeLists.txt b/CMakeLists.txt index dcfc83a..0e63969 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,8 +36,22 @@ if(${TOML11_TEST_WITH_ASAN} AND ${TOML11_TEST_WITH_UBSAN}) message(FATAL_ERROR "trying to build tests with BOTH asan and ubsan") endif() -include(GNUInstallDirs) +include(CheckCXXCompilerFlag) +check_cxx_compiler_flag("-Wall" TOML11_COMPILER_SUPPORTS_WALL) +check_cxx_compiler_flag("-Wextra" TOML11_COMPILER_SUPPORTS_WEXTRA) +check_cxx_compiler_flag("-Wpedantic" TOML11_COMPILER_SUPPORTS_WPEDANTIC) +check_cxx_compiler_flag("-Werror" TOML11_COMPILER_SUPPORTS_WERROR) +check_cxx_compiler_flag("-Wsign-conversion" TOML11_COMPILER_SUPPORTS_WSIGN_CONVERSION) +check_cxx_compiler_flag("-Wconversion" TOML11_COMPILER_SUPPORTS_WCONVERSION) +check_cxx_compiler_flag("-Wduplicated-cond" TOML11_COMPILER_SUPPORTS_WDUPLICATED_COND) +check_cxx_compiler_flag("-Wduplicated-branches" TOML11_COMPILER_SUPPORTS_WDUPLICATED_BRANCHES) +check_cxx_compiler_flag("-Wlogical-op" TOML11_COMPILER_SUPPORTS_WLOGICAL_OP) +check_cxx_compiler_flag("-Wdouble-promotion" TOML11_COMPILER_SUPPORTS_WDOUBLE_PROMOTION) +check_cxx_compiler_flag("-Wrange-loop-analysis" TOML11_COMPILER_SUPPORTS_WRANGE_LOOP_ANALYSIS) +check_cxx_compiler_flag("-Wundef" TOML11_COMPILER_SUPPORTS_WUNDEF) +check_cxx_compiler_flag("-Wshadow" TOML11_COMPILER_SUPPORTS_WSHADOW) +include(GNUInstallDirs) set(TOML11_INSTALL_CMAKE_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/toml11) set(TOML11_INSTALL_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR}) set(TOML11_CONFIG_DIR ${CMAKE_CURRENT_BINARY_DIR}/cmake) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 43c8636..c83c54f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -99,6 +99,7 @@ if(TOML11_PRECOMPILE) # required options to use toml11 with MSVC if(MSVC) target_compile_options(toml11 PUBLIC "/utf-8") + target_compile_options(toml11 PRIVATE "/W3" "/WX") if(MSVC_VERSION LESS 1910) message(STATUS "MSVC < 1910. DEFINE_CONVERSION_NON_INTRUSIVE is disabled") target_compile_definitions(toml11 PUBLIC -DTOML11_WITHOUT_DEFINE_NON_INTRUSIVE) @@ -107,6 +108,22 @@ if(TOML11_PRECOMPILE) else() # MSVC 2019 target_compile_options(toml11 PUBLIC "/Zc:preprocessor") endif() + else() + target_compile_options(toml11 PRIVATE + $<$: -Wall > + $<$: -Wextra > + $<$: -Wpedantic > + $<$: -Werror > + $<$: -Wsign-conversion > + $<$: -Wconversion > + $<$: -Wduplicated-cond > + $<$: -Wduplicated-branches> + $<$: -Wlogical-op > + $<$: -Wdouble-promotion > + $<$: -Wrange-loop-analysis> + $<$: -Wundef > + $<$: -Wshadow > + ) endif() else() add_library(toml11 INTERFACE) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 2cf41cf..adc2e7a 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -41,23 +41,6 @@ set(TOML11_TEST_NAMES test_visit ) -include(CheckCXXCompilerFlag) - -check_cxx_compiler_flag("-Wall" COMPILER_SUPPORTS_WALL) -check_cxx_compiler_flag("-Wextra" COMPILER_SUPPORTS_WEXTRA) -check_cxx_compiler_flag("-Wpedantic" COMPILER_SUPPORTS_WPEDANTIC) -check_cxx_compiler_flag("-Werror" COMPILER_SUPPORTS_WERROR) - -check_cxx_compiler_flag("-Wsign-conversion" COMPILER_SUPPORTS_WSIGN_CONVERSION) -check_cxx_compiler_flag("-Wconversion" COMPILER_SUPPORTS_WCONVERSION) -check_cxx_compiler_flag("-Wduplicated-cond" COMPILER_SUPPORTS_WDUPLICATED_COND) -check_cxx_compiler_flag("-Wduplicated-branches" COMPILER_SUPPORTS_WDUPLICATED_BRANCHES) -check_cxx_compiler_flag("-Wlogical-op" COMPILER_SUPPORTS_WLOGICAL_OP) -check_cxx_compiler_flag("-Wdouble-promotion" COMPILER_SUPPORTS_WDOUBLE_PROMOTION) -check_cxx_compiler_flag("-Wrange-loop-analysis" COMPILER_SUPPORTS_WRANGE_LOOP_ANALYSIS) -check_cxx_compiler_flag("-Wundef" COMPILER_SUPPORTS_WUNDEF) -check_cxx_compiler_flag("-Wshadow" COMPILER_SUPPORTS_WSHADOW) - if(BUILD_TESTING) add_library(toml11_test_utility STATIC utility.cpp) target_include_directories(toml11_test_utility @@ -72,27 +55,28 @@ if(BUILD_TESTING) ) target_link_libraries(${TEST_NAME} PUBLIC toml11 toml11_test_utility) if(MSVC) - target_compile_options(${TEST_NAME} PRIVATE /W3) + target_compile_options(${TEST_NAME} PRIVATE /W3 /WX) else() target_compile_options(${TEST_NAME} PRIVATE - $<$: -Wall > - $<$: -Wextra > - $<$: -Wpedantic > - $<$: -Wsign-conversion > - $<$: -Wconversion > - $<$: -Wduplicated-cond > - $<$: -Wduplicated-branches> - $<$: -Wlogical-op > - $<$: -Wdouble-promotion > - $<$: -Wrange-loop-analysis> - $<$: -Wundef > - $<$: -Wshadow > - $<$: -fsanitize=address > - $<$: -fsanitize=undefined > + $<$: -Wall > + $<$: -Wextra > + $<$: -Wpedantic > + $<$: -Werror > + $<$: -Wsign-conversion > + $<$: -Wconversion > + $<$: -Wduplicated-cond > + $<$: -Wduplicated-branches> + $<$: -Wlogical-op > + $<$: -Wdouble-promotion > + $<$: -Wrange-loop-analysis> + $<$: -Wundef > + $<$: -Wshadow > + $<$: -fsanitize=address > + $<$: -fsanitize=undefined > ) target_link_options(${TEST_NAME} PRIVATE - $<$: -fsanitize=address > - $<$: -fsanitize=undefined > + $<$: -fsanitize=address > + $<$: -fsanitize=undefined > ) endif() add_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME}) @@ -111,27 +95,27 @@ if(TOML11_BUILD_TOML_TESTS) ) target_link_libraries(toml11_decoder PRIVATE toml11) if(MSVC) - target_compile_options(${TEST_NAME} PRIVATE /W3) + target_compile_options(${TEST_NAME} PRIVATE /W3 /WX) else() target_compile_options(toml11_decoder PRIVATE - $<$: -Wall > - $<$: -Wextra > - $<$: -Wpedantic > - $<$: -Wsign-conversion > - $<$: -Wconversion > - $<$: -Wduplicated-cond > - $<$: -Wduplicated-branches> - $<$: -Wlogical-op > - $<$: -Wdouble-promotion > - $<$: -Wrange-loop-analysis> - $<$: -Wundef > - $<$: -Wshadow > - $<$: -fsanitize=address > - $<$: -fsanitize=undefined > + $<$: -Wall > + $<$: -Wextra > + $<$: -Wpedantic > + $<$: -Wsign-conversion > + $<$: -Wconversion > + $<$: -Wduplicated-cond > + $<$: -Wduplicated-branches> + $<$: -Wlogical-op > + $<$: -Wdouble-promotion > + $<$: -Wrange-loop-analysis> + $<$: -Wundef > + $<$: -Wshadow > + $<$: -fsanitize=address > + $<$: -fsanitize=undefined > ) target_link_options(toml11_decoder PRIVATE - $<$: -fsanitize=address > - $<$: -fsanitize=undefined > + $<$: -fsanitize=address > + $<$: -fsanitize=undefined > ) endif() @@ -143,7 +127,7 @@ if(TOML11_BUILD_TOML_TESTS) target_compile_definitions(toml11_decoder_v1_1_0 PRIVATE -DTOML11_TO_JSON_USE_V1_1_0) target_link_libraries(toml11_decoder_v1_1_0 PRIVATE toml11) if(MSVC) - target_compile_options(${TEST_NAME} PRIVATE /W3) + target_compile_options(${TEST_NAME} PRIVATE /W3 /WX) else() target_compile_options(toml11_decoder_v1_1_0 PRIVATE $<$: -Wall > @@ -174,27 +158,27 @@ if(TOML11_BUILD_TOML_TESTS) ) target_link_libraries(toml11_encoder PRIVATE toml11) if(MSVC) - target_compile_options(${TEST_NAME} PRIVATE /W3) + target_compile_options(${TEST_NAME} PRIVATE /W3 /WX) else() target_compile_options(toml11_encoder PRIVATE - $<$: -Wall > - $<$: -Wextra > - $<$: -Wpedantic > - $<$: -Wsign-conversion > - $<$: -Wconversion > - $<$: -Wduplicated-cond > - $<$: -Wduplicated-branches> - $<$: -Wlogical-op > - $<$: -Wdouble-promotion > - $<$: -Wrange-loop-analysis> - $<$: -Wundef > - $<$: -Wshadow > - $<$: -fsanitize=address > - $<$: -fsanitize=undefined > + $<$: -Wall > + $<$: -Wextra > + $<$: -Wpedantic > + $<$: -Wsign-conversion > + $<$: -Wconversion > + $<$: -Wduplicated-cond > + $<$: -Wduplicated-branches> + $<$: -Wlogical-op > + $<$: -Wdouble-promotion > + $<$: -Wrange-loop-analysis> + $<$: -Wundef > + $<$: -Wshadow > + $<$: -fsanitize=address > + $<$: -fsanitize=undefined > ) target_link_options(toml11_encoder PRIVATE - $<$: -fsanitize=address > - $<$: -fsanitize=undefined > + $<$: -fsanitize=address > + $<$: -fsanitize=undefined > ) endif() endif(TOML11_BUILD_TOML_TESTS)