From 69557d4623bbb97e2d589089b648a1ce42832118 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 | 38 ++++++++++++++++++++--------------- 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 0e4824b..353b046 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -71,7 +71,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: > @@ -170,7 +171,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 @@ -207,7 +209,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 29dfdbf..65dc001 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 c960c7c..8b95dab 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,23 +77,27 @@ 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 "-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") + 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 (CMAKE_CXX_COMPILER_ID MATCHES "Clang") - target_compile_options(${library} PRIVATE "-Wdocumentation") + if(FTXUI_DEV_WARNINGS) + target_compile_options(${library} PRIVATE "-Wdocumentation") + endif() endif()