From 41c3d4dd5257a7cf95023abb846fa554bd1f4b25 Mon Sep 17 00:00:00 2001 From: SpaceIm <30052553+SpaceIm@users.noreply.github.com> Date: Tue, 23 May 2023 14:38:49 +0200 Subject: [PATCH] add FTXUI_DEV_WARNINGS option in CMakeLists (#648) This option allows to enable warnings as errors, and add more compiler warnings --- .github/workflows/build.yaml | 9 ++++++--- CMakeLists.txt | 1 + cmake/ftxui_set_options.cmake | 28 +++++++++++++++++++--------- 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index ce7a390..7fccd17 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -66,7 +66,8 @@ jobs: -DFTXUI_BUILD_EXAMPLES:BOOL=ON -DFTXUI_BUILD_TESTS:BOOL=ON -DFTXUI_BUILD_TESTS_FUZZER:BOOL=OFF - -DFTXUI_ENABLE_INSTALL:BOOL=ON ; + -DFTXUI_ENABLE_INSTALL:BOOL=ON + -DFTXUI_DEV_WARNINGS:BOOL=ON ; - name: "Build" run: > @@ -160,7 +161,8 @@ jobs: -DFTXUI_BUILD_EXAMPLES=OFF -DFTXUI_BUILD_TESTS=OFF -DFTXUI_BUILD_TESTS_FUZZER=OFF - -DFTXUI_ENABLE_INSTALL=ON; + -DFTXUI_ENABLE_INSTALL=ON + -DFTXUI_DEV_WARNINGS=ON ; cmake --build . --target package; - uses: shogo82148/actions-upload-release-asset@v1 with: @@ -196,7 +198,8 @@ jobs: -DFTXUI_BUILD_EXAMPLES=ON -DFTXUI_BUILD_TESTS=OFF -DFTXUI_BUILD_TESTS_FUZZER=OFF - -DFTXUI_ENABLE_INSTALL=OFF; + -DFTXUI_ENABLE_INSTALL=OFF + -DFTXUI_DEV_WARNINGS=ON ; cmake --build . --target doc; cmake --build . ; rsync -amv diff --git a/CMakeLists.txt b/CMakeLists.txt index fdd393e..4ecd119 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,7 @@ option(FTXUI_BUILD_TESTS_FUZZER "Set to ON to enable fuzzing" OFF) option(FTXUI_ENABLE_INSTALL "Generate the install target" ON) option(FTXUI_CLANG_TIDY "Execute clang-tidy" OFF) option(FTXUI_ENABLE_COVERAGE "Execute code coverage" OFF) +option(FTXUI_DEV_WARNINGS "Enable more compiler warnings and warnings as errors" OFF) set(FTXUI_MICROSOFT_TERMINAL_FALLBACK_HELP_TEXT "On windows, assume the \ terminal used will be one of Microsoft and use a set of reasonnable fallback \ diff --git a/cmake/ftxui_set_options.cmake b/cmake/ftxui_set_options.cmake index 90acde4..6053910 100644 --- a/cmake/ftxui_set_options.cmake +++ b/cmake/ftxui_set_options.cmake @@ -66,8 +66,10 @@ function(ftxui_set_options library) # Add as many warning as possible: if (WIN32) if (MSVC) - target_compile_options(${library} PRIVATE "/W3") - target_compile_options(${library} PRIVATE "/WX") + if(FTXUI_DEV_WARNINGS) + target_compile_options(${library} PRIVATE "/W3") + target_compile_options(${library} PRIVATE "/WX") + endif() target_compile_options(${library} PRIVATE "/wd4244") target_compile_options(${library} PRIVATE "/wd4267") target_compile_options(${library} PRIVATE "/D_CRT_SECURE_NO_WARNINGS") @@ -75,13 +77,21 @@ function(ftxui_set_options library) # Force Win32 to UNICODE target_compile_definitions(${library} PRIVATE UNICODE _UNICODE) else() - target_compile_options(${library} PRIVATE "-Wall") - target_compile_options(${library} PRIVATE "-Wextra") - target_compile_options(${library} PRIVATE "-pedantic") - target_compile_options(${library} PRIVATE "-Werror") - target_compile_options(${library} PRIVATE "-Wmissing-declarations") - target_compile_options(${library} PRIVATE "-Wdeprecated") - target_compile_options(${library} PRIVATE "-Wshadow") + if(FTXUI_DEV_WARNINGS) + target_compile_options(${library} PRIVATE "-Wall") + target_compile_options(${library} PRIVATE "-Werror") + target_compile_options(${library} PRIVATE "-Wextra") + + target_compile_options(${library} PRIVATE "-Wcast-align") + target_compile_options(${library} PRIVATE "-Wdeprecated") + target_compile_options(${library} PRIVATE "-Wmissing-declarations") + target_compile_options(${library} PRIVATE "-Wnon-virtual-dtor") + target_compile_options(${library} PRIVATE "-Wnull-dereference") + target_compile_options(${library} PRIVATE "-Woverloaded-virtual") + target_compile_options(${library} PRIVATE "-Wpedantic") + target_compile_options(${library} PRIVATE "-Wshadow") + target_compile_options(${library} PRIVATE "-Wunused") + endif() endif() if (FTXUI_MICROSOFT_TERMINAL_FALLBACK)