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

(cherry picked from commit 7ac0c685dd)
This commit is contained in:
Shauren
2024-09-20 13:19:42 +02:00
parent 58f9def30f
commit a3874ee4f9
14 changed files with 49 additions and 53 deletions

View File

@@ -51,6 +51,7 @@ if(WITH_FILESYSTEM_WATCHER OR BUILD_SHARED_LIBS)
set(BUILD_EFSW ON)
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
@@ -74,12 +70,13 @@ target_link_libraries(common
jemalloc
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(authserver
${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(authserver
PROPERTIES
FOLDER
"server")
PROPERTIES
COMPILE_WARNING_AS_ERROR ${WITH_WARNINGS_AS_ERRORS}
FOLDER "server")
if(UNIX)
install(TARGETS authserver DESTINATION bin)

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
@@ -63,9 +59,10 @@ if(TARGET efsw)
endif()
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

@@ -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

@@ -37,10 +37,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
@@ -48,9 +44,10 @@ target_link_libraries(shared
database)
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

@@ -27,4 +27,5 @@ target_include_directories(extractor_common
set_target_properties(extractor_common
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

@@ -34,9 +34,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

@@ -20,9 +20,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

@@ -21,9 +21,9 @@ target_link_libraries(vmap4extractor
extractor_common)
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)