1
0
mirror of https://github.com/qTox/qTox.git synced 2024-03-22 14:00:36 +08:00

chore(build): Enable lots of compile-time warnings

Taken directly from 9777aa619d/warnings

* Remove Wuseless-cast, because Qt's MOC-generated code hits it.
* Remove Wduplicated-branches, Wduplicated-branches, Wformat-truncation
because they aren't supported on our oldest CI job.
This commit is contained in:
Anthony Bilinski 2022-03-10 17:54:23 -08:00
parent ece26e4a4f
commit aa2e253674
No known key found for this signature in database
GPG Key ID: 2AA8E0DA1B31FB3C
2 changed files with 77 additions and 0 deletions

View File

@ -646,6 +646,7 @@ link_libraries(coverage_config)
add_subdirectory(util)
add_subdirectory(audio)
add_subdirectory(translations)
add_subdirectory(cmake/warnings)
add_library(${PROJECT_NAME}_static
STATIC
@ -659,6 +660,7 @@ target_link_libraries(${PROJECT_NAME}_static
target_link_libraries(${PROJECT_NAME}_static util_library)
target_link_libraries(${PROJECT_NAME}_static audio_library)
target_link_libraries(${PROJECT_NAME}_static translations_library)
target_link_libraries(${PROJECT_NAME}_static qtox::warnings)
add_executable(${PROJECT_NAME}
WIN32

View File

@ -0,0 +1,75 @@
project(qtox_warnings)
add_library(${PROJECT_NAME} INTERFACE)
add_library(qtox::warnings ALIAS ${PROJECT_NAME})
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
if("${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "MSVC")
set(CLANGCL ON)
else()
set(CLANG ON)
endif()
endif()
target_compile_options(${PROJECT_NAME} INTERFACE
$<$<OR:$<BOOL:${CLANG}>,$<CXX_COMPILER_ID:GNU>>:
-fno-common;
-fstrict-overflow;
-ftrapv;
-pedantic-errors;
-Wall;
-Wcast-align;
-Wdouble-promotion;
-Werror;
-Wextra;
-Wformat=2;
-Wmissing-declarations;
-Wnon-virtual-dtor;
-Wnull-dereference;
-Wold-style-cast;
-Woverloaded-virtual;
-Wshadow;
-Wsign-compare;
-Wundef;
>
$<$<CXX_COMPILER_ID:GNU>:
-Wduplicated-cond;
-Wlogical-op;
>
$<$<BOOL:${CLANG}>:
-Wmissing-variable-declarations;
-Wno-gnu-zero-variadic-macro-arguments; # Required for gtest 1.10.
>
$<$<OR:$<BOOL:${CLANGCL}>,$<CXX_COMPILER_ID:MSVC>>:
/permissive-;
/W4;
/w14254; # 'operator': conversion from 'type1:field_bits' to
# 'type2:field_bits', possible loss of data
/w14263; # 'function': member function does not override any base class
# virtual member function
/w14265; # 'classname': class has virtual functions, but destructor is not
# virtual instances of this class may not be destructed correctly
/w14287; # 'operator': unsigned/negative constant mismatch
/w14289; # nonstandard extension used: 'variable': loop control variable
# declared in the for-loop is used outside the for-loop scope
/w14296; # 'operator': expression is always 'boolean_value'
/w14311; # 'variable': pointer truncation from 'type1' to 'type2'
/w14545; # expression before comma evaluates to a function which is missing
# an argument list
/w14546; # function call before comma missing argument list
/w14547; # 'operator': operator before comma has no effect; expected
# operator with side-effect
/w14549; # 'operator': operator before comma has no effect; did you intend
# 'operator'?
/w14555; # expression has no effect; expected expression with side- effect
/w14619; # pragma warning: there is no warning number 'number'
/w14640; # Enable warning on thread un-safe static member initialization
/w14826; # Conversion from 'type1' to 'type_2' is sign-extended. This may
# cause unexpected runtime behavior.
/w14928; # illegal copy-initialization; more than one user-defined
# conversion has been implicitly applied
/wd4244; # 'argument': conversion from 'int' to 'unsigned char', possible
# loss of data # This one is sort of required for gtest.
/WX;
>
)