Skip to content

Commit

Permalink
[CMake] Add option to compile with warnings as errors
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=155047

Reviewed by Michael Catanzaro.

Add `DEVELOPER_MODE_FATAL_WARNINGS` as an option to compile everything
defined through `WEBKIT_TARGET` with warnings as errors. For MSVC
`/WX` is added for everything else `-Werror` is used. An additional
flag, `--[no-]fatal-warnings` was added to the `build-webkit` script.

This value should be set to `ON` by default but is currently turned
`OFF` until the build bots invoke `build-webkit` with
`--no-fatal-warnings`. After that it should be turned to `ON`.

* Source/cmake/WebKitCompilerFlags.cmake:
* Source/cmake/WebKitMacros.cmake:
* Tools/Scripts/webkitperl/FeatureList.pm:

Canonical link: https://commits.webkit.org/254583@main
  • Loading branch information
donny-dont committed Sep 17, 2022
1 parent b40f80b commit 1460c15
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 0 deletions.
14 changes: 14 additions & 0 deletions Source/cmake/WebKitCompilerFlags.cmake
Expand Up @@ -87,6 +87,20 @@ macro(WEBKIT_ADD_TARGET_CXX_FLAGS _target)
endmacro()


option(DEVELOPER_MODE_FATAL_WARNINGS "Build with warnings as errors if DEVELOPER_MODE is also enabled" OFF)
if (DEVELOPER_MODE AND DEVELOPER_MODE_FATAL_WARNINGS)
if (MSVC)
set(FATAL_WARNINGS_FLAG /WX)
else ()
set(FATAL_WARNINGS_FLAG -Werror)
endif ()

check_cxx_compiler_flag(${FATAL_WARNINGS_FLAG} CXX_COMPILER_SUPPORTS_WERROR)
if (CXX_COMPILER_SUPPORTS_WERROR)
set(DEVELOPER_MODE_CXX_FLAGS ${FATAL_WARNINGS_FLAG})
endif ()
endif ()

if (COMPILER_IS_GCC_OR_CLANG)
WEBKIT_APPEND_GLOBAL_COMPILER_FLAGS(-fno-strict-aliasing)

Expand Down
4 changes: 4 additions & 0 deletions Source/cmake/WebKitMacros.cmake
Expand Up @@ -143,6 +143,10 @@ macro(_WEBKIT_TARGET _target_logical_name _target_cmake_name)
target_include_directories(${_target_cmake_name} SYSTEM PRIVATE "$<BUILD_INTERFACE:${${_target_logical_name}_SYSTEM_INCLUDE_DIRECTORIES}>")
target_include_directories(${_target_cmake_name} PRIVATE "$<BUILD_INTERFACE:${${_target_logical_name}_PRIVATE_INCLUDE_DIRECTORIES}>")

if (DEVELOPER_MODE_CXX_FLAGS)
target_compile_options(${_target_cmake_name} PRIVATE ${DEVELOPER_MODE_CXX_FLAGS})
endif ()

target_compile_definitions(${_target_cmake_name} PRIVATE "BUILDING_${_target_logical_name}")
if (${_target_logical_name}_DEFINITIONS)
target_compile_definitions(${_target_cmake_name} PUBLIC ${${_target_logical_name}_DEFINITIONS})
Expand Down
4 changes: 4 additions & 0 deletions Tools/Scripts/webkitperl/FeatureList.pm
Expand Up @@ -87,6 +87,7 @@ my (
$downloadAttributeSupport,
$dragSupportSupport,
$encryptedMediaSupport,
$fatalWarnings,
$filtersLevel2Support,
$ftlJITSupport,
$ftpDirSupport,
Expand Down Expand Up @@ -191,6 +192,9 @@ my (
);

my @features = (
{ option => "fatal-warnings", desc => "Toggle warnings as errors (CMake only)",
define => "DEVELOPER_MODE_FATAL_WARNINGS", value => \$fatalWarnings },

{ option => "3d-rendering", desc => "Toggle 3D rendering support",
define => "ENABLE_3D_TRANSFORMS", value => \$threeDTransformsSupport },

Expand Down

0 comments on commit 1460c15

Please sign in to comment.