Build: Add WITH_WARNINGS_AS_ERRORS cmake option that turns compile warnings into compile errors

This commit is contained in:
Shauren
2024-09-20 13:19:42 +02:00
parent 24d08307e4
commit 7ac0c685dd
15 changed files with 54 additions and 62 deletions

View File

@@ -47,6 +47,7 @@ else()
set(BUILD_SHARED_LIBS OFF)
endif()
option(WITH_WARNINGS "Show all warnings during compile" 0)
option(WITH_WARNINGS_AS_ERRORS "Treat warnings as errors" 0)
option(WITH_COREDEBUG "Include additional debug-code in core" 0)
option(WITHOUT_METRICS "Disable metrics reporting (i.e. InfluxDB and Grafana)" 0)
option(WITH_DETAILED_METRICS "Enable detailed metrics reporting (i.e. time each session takes to update)" 0)

View File

@@ -61,7 +61,13 @@ endif()
if(WITH_WARNINGS)
message("* Show all warnings : Yes")
else()
message("* Show compile-warnings : No (default)")
message("* Show all warnings : No (default)")
endif()
if(WITH_WARNINGS_AS_ERRORS)
message("* Stop build on warning : Yes")
else()
message("* Stop build on warning : No (default)")
endif()
if(WITH_COREDEBUG)

View File

@@ -53,10 +53,6 @@ target_include_directories(common
PRIVATE
${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(common
PROPERTIES
DEFINE_SYMBOL TRINITY_API_EXPORT_COMMON)
target_link_libraries(common
PRIVATE
trinity-core-interface
@@ -75,12 +71,13 @@ target_link_libraries(common
openssl_ed25519
short_alloc)
add_dependencies(common revision_data.h)
set_target_properties(common
PROPERTIES
FOLDER
"server")
PROPERTIES
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
DEFINE_SYMBOL TRINITY_API_EXPORT_COMMON
FOLDER "server")
add_dependencies(common revision_data.h)
if(BUILD_SHARED_LIBS)
if(UNIX)

View File

@@ -58,9 +58,9 @@ target_include_directories(bnetserver
${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(bnetserver
PROPERTIES
FOLDER
"server")
PROPERTIES
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
FOLDER "server")
add_custom_command(TARGET bnetserver
POST_BUILD

View File

@@ -36,10 +36,6 @@ target_include_directories(database
PRIVATE
${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(database
PROPERTIES
DEFINE_SYMBOL TRINITY_API_EXPORT_DATABASE)
target_link_libraries(database
PRIVATE
trinity-core-interface
@@ -48,9 +44,10 @@ target_link_libraries(database
common)
set_target_properties(database
PROPERTIES
FOLDER
"server")
PROPERTIES
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
DEFINE_SYMBOL TRINITY_API_EXPORT_DATABASE
FOLDER "server")
if(BUILD_SHARED_LIBS)
if(UNIX)

View File

@@ -46,10 +46,6 @@ target_include_directories(game
PRIVATE
${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(game
PROPERTIES
DEFINE_SYMBOL TRINITY_API_EXPORT_GAME)
target_link_libraries(game
PRIVATE
trinity-core-interface
@@ -58,9 +54,10 @@ target_link_libraries(game
game-interface)
set_target_properties(game
PROPERTIES
FOLDER
"server")
PROPERTIES
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
DEFINE_SYMBOL TRINITY_API_EXPORT_GAME
FOLDER "server")
if(BUILD_SHARED_LIBS)
if(UNIX)

View File

@@ -38,10 +38,6 @@ target_include_directories(proto
PRIVATE
${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(proto
PROPERTIES
DEFINE_SYMBOL TRINITY_API_EXPORT_PROTO)
target_link_libraries(proto
PRIVATE
trinity-default-interface
@@ -52,8 +48,9 @@ target_link_libraries(proto
set_target_properties(proto
PROPERTIES
FOLDER
"server")
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
DEFINE_SYMBOL TRINITY_API_EXPORT_PROTO
FOLDER "server")
if( BUILD_SHARED_LIBS )
if( UNIX )

View File

@@ -173,8 +173,8 @@ foreach(SCRIPT_MODULE ${SCRIPT_MODULE_LIST})
set_target_properties(${SCRIPT_MODULE_PROJECT_NAME}
PROPERTIES
FOLDER
"scripts")
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
FOLDER "scripts")
if(UNIX)
install(TARGETS ${SCRIPT_MODULE_PROJECT_NAME}
@@ -220,8 +220,8 @@ target_include_directories(scripts
set_target_properties(scripts
PROPERTIES
FOLDER
"scripts")
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
FOLDER "server")
# Generate precompiled header
if(USE_SCRIPTPCH)

View File

@@ -36,10 +36,6 @@ target_include_directories(shared
PRIVATE
${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(shared
PROPERTIES
DEFINE_SYMBOL TRINITY_API_EXPORT_SHARED)
target_link_libraries(shared
PRIVATE
trinity-core-interface
@@ -50,9 +46,10 @@ target_link_libraries(shared
zlib)
set_target_properties(shared
PROPERTIES
FOLDER
"server")
PROPERTIES
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
DEFINE_SYMBOL TRINITY_API_EXPORT_SHARED
FOLDER "server")
if(BUILD_SHARED_LIBS)
if(UNIX)

View File

@@ -59,9 +59,9 @@ target_include_directories(worldserver
${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(worldserver
PROPERTIES
FOLDER
"server")
PROPERTIES
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
FOLDER "server")
# Add all dynamic projects as dependency to the worldserver
if(WORLDSERVER_DYNAMIC_SCRIPT_MODULES_DEPENDENCIES)

View File

@@ -26,6 +26,6 @@ target_include_directories(extractor_common
${CMAKE_CURRENT_SOURCE_DIR})
set_target_properties(extractor_common
PROPERTIES
FOLDER
"tools")
PROPERTIES
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
FOLDER "tools")

View File

@@ -38,9 +38,9 @@ target_include_directories(mapextractor
${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(mapextractor
PROPERTIES
FOLDER
"tools")
PROPERTIES
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
FOLDER "tools")
if(UNIX)
install(TARGETS mapextractor DESTINATION bin)

View File

@@ -35,9 +35,9 @@ target_include_directories(mmaps_generator
${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(mmaps_generator
PROPERTIES
FOLDER
"tools")
PROPERTIES
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
FOLDER "tools")
if(UNIX)
install(TARGETS mmaps_generator DESTINATION bin)

View File

@@ -24,9 +24,9 @@ target_link_libraries(vmap4assembler
zlib)
set_target_properties(vmap4assembler
PROPERTIES
FOLDER
"tools")
PROPERTIES
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
FOLDER "tools")
if(UNIX)
install(TARGETS vmap4assembler DESTINATION bin)

View File

@@ -31,9 +31,9 @@ target_include_directories(vmap4extractor
${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(vmap4extractor
PROPERTIES
FOLDER
"tools")
PROPERTIES
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
FOLDER "tools")
if(UNIX)
install(TARGETS vmap4extractor DESTINATION bin)