208 lines
11 KiB
CMake
208 lines
11 KiB
CMake
# List of disabled warnings
|
|
# When adding to the list add a short description and link to the warning's text if available
|
|
#
|
|
# https://bugs.webkit.org/show_bug.cgi?id=221508 is for tracking removal of warnings
|
|
add_compile_options(
|
|
/wd4018 # 'token' : signed/unsigned mismatch
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-3-c4018
|
|
|
|
/wd4060 # switch statement contains no 'case' or 'default' labels
|
|
|
|
/wd4068 # unknown pragma
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4068
|
|
|
|
/wd4100 # 'identifier' : unreferenced formal parameter
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4100
|
|
|
|
/wd4127 # conditional expression is constant
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4127
|
|
|
|
/wd4146 # unary minus operator applied to unsigned type, result still unsigned
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-2-c4146
|
|
|
|
/wd4189 # 'identifier' : local variable is initialized but not referenced
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4189
|
|
|
|
/wd4201 # nonstandard extension used : nameless struct/union
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4201
|
|
|
|
/wd4244 # 'argument' : conversion from 'type1' to 'type2', possible loss of data
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-2-c4244
|
|
|
|
/wd4245 # 'conversion' : conversion from 'type1' to 'type2', signed/unsigned mismatch
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4245
|
|
|
|
/wd4251 # 'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2'
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4251
|
|
|
|
/wd4275 # non - DLL-interface class 'class_1' used as base for DLL-interface class 'class_2'
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-2-c4275
|
|
|
|
/wd4267 # 'var' : conversion from 'size_t' to 'type', possible loss of data
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-3-c4267
|
|
|
|
/wd4305 # 'context' : truncation from 'type1' to 'type2'
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4305
|
|
|
|
/wd4309 # 'conversion' : truncation of constant value
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-2-c4309
|
|
|
|
/wd4312 # 'operation' : conversion from 'type1' to 'type2' of greater size
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4312
|
|
|
|
/wd4324 # 'struct_name' : structure was padded due to __declspec(align())
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4324
|
|
|
|
/wd4389 # 'operator' : signed/unsigned mismatch
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4389
|
|
|
|
/wd4456 # declaration of 'identifier' hides previous local declaration
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4456
|
|
|
|
/wd4457 # declaration of 'identifier' hides function parameter
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4457
|
|
|
|
/wd4458 # declaration of 'identifier' hides class member
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4458
|
|
|
|
/wd4459 # declaration of 'identifier' hides global declaration
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4459
|
|
|
|
/wd4505 # 'function' : unreferenced local function has been removed
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4505
|
|
|
|
|
|
/wd4611 # interaction between 'function' and C++ object destruction is non-portable
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4611
|
|
|
|
/wd4646 # function declared with __declspec(noreturn) has non-void return type
|
|
# https://docs.microsoft.com/mt-mt/cpp/error-messages/compiler-warnings/compiler-warning-level-3-c4646
|
|
|
|
/wd4701 # Potentially uninitialized local variable 'name' used
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4701
|
|
|
|
/wd4702 # unreachable code
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4702
|
|
|
|
/wd4706 # assignment within conditional expression
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4706
|
|
# NOTE: Can't fix without changes to style guide
|
|
|
|
/wd4715 # 'function' : not all control paths return a value
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4715
|
|
|
|
/wd4722 # 'function' : destructor never returns, potential memory leak
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4722
|
|
|
|
/wd4838 # conversion from 'type_1' to 'type_2' requires a narrowing conversion
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4838
|
|
|
|
/wd4840 # non-portable use of class 'type' as an argument to a variadic function
|
|
# https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-4-c4840
|
|
|
|
/wd4996 # Your code uses a function, class member, variable, or typedef that's marked deprecated
|
|
|
|
/wd5205 # delete of an abstract class 'type-name' that has a non-virtual destructor results in undefined behavior
|
|
)
|
|
|
|
# Create pdb files for debugging purposes, also for Release builds
|
|
add_compile_options(/Zi /GS)
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /DEBUG /OPT:ICF /OPT:REF")
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /DEBUG /OPT:ICF /OPT:REF")
|
|
|
|
# We do not use exceptions
|
|
add_definitions(-D_HAS_EXCEPTIONS=0)
|
|
add_compile_options(/EHa- /EHc- /EHs- /fp:except-)
|
|
|
|
# We have some very large object files that have to be linked
|
|
add_compile_options(/analyze- /bigobj)
|
|
|
|
# Use CRT security features
|
|
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
|
if (NOT COMPILER_IS_CLANG_CL)
|
|
add_definitions(-D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1)
|
|
endif ()
|
|
|
|
# Specify the source code encoding
|
|
add_compile_options(/utf-8 /validate-charset)
|
|
|
|
if (${CMAKE_BUILD_TYPE} MATCHES "Debug")
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /OPT:NOREF /OPT:NOICF")
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /OPT:NOREF /OPT:NOICF")
|
|
|
|
# To debug linking time issues, uncomment the following three lines:
|
|
#add_compile_options(/Bv)
|
|
#set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /VERBOSE /VERBOSE:INCR /TIME")
|
|
#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /VERBOSE /VERBOSE:INCR /TIME")
|
|
elseif (${CMAKE_BUILD_TYPE} MATCHES "Release")
|
|
add_compile_options(/Oy-)
|
|
endif ()
|
|
|
|
if (NOT ${CMAKE_GENERATOR} MATCHES "Ninja")
|
|
link_directories("${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}")
|
|
add_definitions(/MP)
|
|
endif ()
|
|
if (NOT ${CMAKE_CXX_FLAGS} STREQUAL "")
|
|
string(REGEX REPLACE "(/EH[a-z]+) " "\\1- " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) # Disable C++ exceptions
|
|
string(REGEX REPLACE "/EHsc$" "/EHs- /EHc- " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) # Disable C++ exceptions
|
|
string(REGEX REPLACE "/GR " "/GR- " CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) # Disable RTTI
|
|
# More warnings. /W4 should be specified before -Wno-* options for clang-cl.
|
|
string(REGEX REPLACE "/W3" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
|
|
string(REGEX REPLACE "/W3" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
|
WEBKIT_PREPEND_GLOBAL_COMPILER_FLAGS(/W4)
|
|
endif ()
|
|
|
|
if (MSVC_STATIC_RUNTIME)
|
|
message(STATUS "Using multithreaded, static version of the run-time library")
|
|
set(MSVC_RUNTIME_COMPILE_FLAG "/MT")
|
|
set(MSVC_RUNTIME_LINKER_FLAGS "/NODEFAULTLIB:MSVCRT /NODEFAULTLIB:MSVCRTD")
|
|
else ()
|
|
message(STATUS "Using multithreaded, dynamic version of the run-time library")
|
|
set(MSVC_RUNTIME_COMPILE_FLAG "/MD")
|
|
# No linker flags are required
|
|
endif ()
|
|
|
|
foreach (flag_var
|
|
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
|
|
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
|
|
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
|
|
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
|
|
# Use the multithreaded static runtime library instead of the default DLL runtime.
|
|
string(REGEX REPLACE "/MD" "${MSVC_RUNTIME_COMPILE_FLAG}" ${flag_var} "${${flag_var}}")
|
|
|
|
# No debug runtime, even in debug builds.
|
|
if (NOT DEBUG_SUFFIX)
|
|
string(REGEX REPLACE "${MSVC_RUNTIME_COMPILE_FLAG}d" "${MSVC_RUNTIME_COMPILE_FLAG}" ${flag_var} "${${flag_var}}")
|
|
string(REGEX REPLACE "/D_DEBUG" "" ${flag_var} "${${flag_var}}")
|
|
endif ()
|
|
endforeach ()
|
|
|
|
# Make sure incremental linking is turned off, as it creates unacceptably long link times.
|
|
string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_SHARED_LINKER_FLAGS ${CMAKE_SHARED_LINKER_FLAGS})
|
|
set(CMAKE_SHARED_LINKER_FLAGS "${replace_CMAKE_SHARED_LINKER_FLAGS} /INCREMENTAL:NO")
|
|
string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
|
|
set(CMAKE_EXE_LINKER_FLAGS "${replace_CMAKE_EXE_LINKER_FLAGS} /INCREMENTAL:NO")
|
|
|
|
string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_SHARED_LINKER_FLAGS_DEBUG ${CMAKE_SHARED_LINKER_FLAGS_DEBUG})
|
|
set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${replace_CMAKE_SHARED_LINKER_FLAGS_DEBUG} /INCREMENTAL:NO")
|
|
string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_EXE_LINKER_FLAGS_DEBUG ${CMAKE_EXE_LINKER_FLAGS_DEBUG})
|
|
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${replace_CMAKE_EXE_LINKER_FLAGS_DEBUG} /INCREMENTAL:NO")
|
|
|
|
string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO})
|
|
set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${replace_CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO} /INCREMENTAL:NO")
|
|
string(REPLACE "INCREMENTAL:YES" "INCREMENTAL:NO" replace_CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO})
|
|
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${replace_CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO} /INCREMENTAL:NO")
|
|
|
|
if (COMPILER_IS_CLANG_CL)
|
|
# FIXME: The clang-cl visual studio integration seemed to set
|
|
# this to 1900 explicitly even when building in VS2017 with the
|
|
# newest toolset option, but we want to be versioned to match
|
|
# VS2017.
|
|
add_compile_options(-fmsc-version=1911)
|
|
|
|
# FIXME: Building with clang-cl seemed to fail with 128 bit int support
|
|
set(HAVE_INT128_T OFF)
|
|
list(REMOVE_ITEM _WEBKIT_CONFIG_FILE_VARIABLES HAVE_INT128_T)
|
|
endif ()
|