From 8050f7404b74b66098bba4299ba1c6cab7b46ac8 Mon Sep 17 00:00:00 2001 From: Benoit Blanchon Date: Tue, 28 Apr 2020 09:32:50 +0200 Subject: [PATCH] CMake: gathered all build flags in a dedicated file --- CMakeLists.txt | 30 +--------- extras/CompileOptions.cmake | 100 +++++++++++++++++++++++++++++++++ extras/fuzzing/fuzzer_main.cpp | 2 +- extras/tests/CMakeLists.txt | 74 ------------------------ 4 files changed, 102 insertions(+), 104 deletions(-) create mode 100644 extras/CompileOptions.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 8236a95a..d854fdb9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,35 +13,7 @@ endif() add_subdirectory(src) if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING) - - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.8) - add_compile_options(-g -Og) - else() - add_compile_options(-g -O0) - endif() - endif() - - if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.0) - add_compile_options(-g -Og) - else() - add_compile_options(-g -O0) - endif() - endif() - - if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") - if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 9.0) - add_compile_options(-g -Og) - else() - add_compile_options(-g -O0) - endif() - endif() - - if(${COVERAGE}) - set(CMAKE_CXX_FLAGS "-fprofile-arcs -ftest-coverage") - endif() - + include(extras/CompileOptions.cmake) add_subdirectory(extras/tests) add_subdirectory(extras/fuzzing) endif() diff --git a/extras/CompileOptions.cmake b/extras/CompileOptions.cmake new file mode 100644 index 00000000..a3c87b8a --- /dev/null +++ b/extras/CompileOptions.cmake @@ -0,0 +1,100 @@ +if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") + add_compile_options( + -pedantic + -Wall + -Wcast-align + -Wcast-qual + -Wconversion + -Wctor-dtor-privacy + -Wdisabled-optimization + -Werror + -Wextra + -Wformat=2 + -Winit-self + -Wmissing-include-dirs + -Wnon-virtual-dtor + -Wold-style-cast + -Woverloaded-virtual + -Wparentheses + -Wredundant-decls + -Wshadow + -Wsign-promo + -Wstrict-aliasing + -Wundef + ) + + if(NOT MINGW) + add_compile_options( + -std=c++98 + ) + endif() + + if(${COVERAGE}) + set(CMAKE_CXX_FLAGS "-fprofile-arcs -ftest-coverage") + endif() + +endif() + +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.8) + add_compile_options(-g -Og) + else() + add_compile_options(-g -O0) + endif() + + add_compile_options( + -Wstrict-null-sentinel + -Wno-vla # Allow VLA in tests + ) + add_definitions(-DHAS_VARIABLE_LENGTH_ARRAY) + + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.5) + add_compile_options(-Wlogical-op) # the flag exists in 4.4 but is buggy + endif() + + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.6) + add_compile_options(-Wnoexcept) + endif() +endif() + +if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options( + -Wc++11-compat + -Wdeprecated-register + -Wno-vla-extension # Allow VLA in tests + ) + add_definitions( + -DHAS_VARIABLE_LENGTH_ARRAY + -DSUBSCRIPT_CONFLICTS_WITH_BUILTIN_OPERATOR + ) +endif() + +if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.0) + add_compile_options(-g -Og) + else() + add_compile_options(-g -O0) + endif() +endif() + +if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 9.0) + add_compile_options(-g -Og) + else() + add_compile_options(-g -O0) + endif() +endif() + +if(MSVC) + add_definitions(-D_CRT_SECURE_NO_WARNINGS) + add_compile_options( + /W4 # Set warning level + /WX # Treats all compiler warnings as errors. + ) + + if (NOT MSVC_VERSION LESS 1910) # >= Visual Studio 2017 + add_compile_options( + /Zc:__cplusplus # Enable updated __cplusplus macro + ) + endif() +endif() diff --git a/extras/fuzzing/fuzzer_main.cpp b/extras/fuzzing/fuzzer_main.cpp index a049aa54..22c90a46 100644 --- a/extras/fuzzing/fuzzer_main.cpp +++ b/extras/fuzzing/fuzzer_main.cpp @@ -21,7 +21,7 @@ std::vector read(const char* path) { } fseek(f, 0, SEEK_END); - size_t size = ftell(f); + size_t size = static_cast(ftell(f)); fseek(f, 0, SEEK_SET); std::vector buffer(size); diff --git a/extras/tests/CMakeLists.txt b/extras/tests/CMakeLists.txt index 52474796..b150a953 100644 --- a/extras/tests/CMakeLists.txt +++ b/extras/tests/CMakeLists.txt @@ -4,80 +4,6 @@ add_subdirectory(catch) -if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") - add_compile_options( - -pedantic - -Wall - -Wcast-align - -Wcast-qual - -Wconversion - -Wctor-dtor-privacy - -Wdisabled-optimization - -Werror - -Wextra - -Wformat=2 - -Winit-self - -Wmissing-include-dirs - -Wnon-virtual-dtor - -Wold-style-cast - -Woverloaded-virtual - -Wparentheses - -Wredundant-decls - -Wshadow - -Wsign-promo - -Wstrict-aliasing - -Wundef - ) - - if(NOT MINGW) - add_compile_options( - -std=c++98 - ) - endif() -endif() - -if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") - add_compile_options( - -Wstrict-null-sentinel - -Wno-vla # Allow VLA in tests - ) - add_definitions(-DHAS_VARIABLE_LENGTH_ARRAY) - - if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.5) - add_compile_options(-Wlogical-op) # the flag exists in 4.4 but is buggy - endif() - - if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.6) - add_compile_options(-Wnoexcept) - endif() -endif() - -if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - add_compile_options( - -Wc++11-compat - -Wdeprecated-register - -Wno-vla-extension # Allow VLA in tests - ) - add_definitions( - -DHAS_VARIABLE_LENGTH_ARRAY - -DSUBSCRIPT_CONFLICTS_WITH_BUILTIN_OPERATOR - ) -endif() - -if(MSVC) - add_definitions(-D_CRT_SECURE_NO_WARNINGS) - add_compile_options( - /W4 # Set warning level - /WX # Treats all compiler warnings as errors. - ) - - if (NOT MSVC_VERSION LESS 1910) # >= Visual Studio 2017 - add_compile_options( - /Zc:__cplusplus # Enable updated __cplusplus macro - ) - endif() -endif() - include_directories(Helpers) add_subdirectory(ElementProxy) add_subdirectory(IntegrationTests)