From a3874ee4f931336fa1ae240fe3288bc648b5d5c2 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 20 Sep 2024 13:19:42 +0200 Subject: Build: Add WITH_WARNINGS_AS_ERRORS cmake option that turns compile warnings into compile errors (cherry picked from commit 7ac0c685dd01bdce2d1ee0bb878e5044b3c1fffa) --- cmake/options.cmake | 1 + cmake/showoptions.cmake | 8 +++++++- src/common/CMakeLists.txt | 15 ++++++--------- src/server/authserver/CMakeLists.txt | 6 +++--- src/server/database/CMakeLists.txt | 11 ++++------- src/server/game/CMakeLists.txt | 11 ++++------- src/server/scripts/CMakeLists.txt | 8 ++++---- src/server/shared/CMakeLists.txt | 11 ++++------- src/server/worldserver/CMakeLists.txt | 6 +++--- src/tools/extractor_common/CMakeLists.txt | 1 + src/tools/map_extractor/CMakeLists.txt | 6 +++--- src/tools/mmaps_generator/CMakeLists.txt | 6 +++--- src/tools/vmap4_assembler/CMakeLists.txt | 6 +++--- src/tools/vmap4_extractor/CMakeLists.txt | 6 +++--- 14 files changed, 49 insertions(+), 53 deletions(-) diff --git a/cmake/options.cmake b/cmake/options.cmake index 0125cff5f85..e939528584f 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -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) diff --git a/cmake/showoptions.cmake b/cmake/showoptions.cmake index 385065a52bb..242b2500cde 100644 --- a/cmake/showoptions.cmake +++ b/cmake/showoptions.cmake @@ -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) diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index c2098260917..e026b7b5302 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -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) diff --git a/src/server/authserver/CMakeLists.txt b/src/server/authserver/CMakeLists.txt index ac887a897e2..32aaadc2b00 100644 --- a/src/server/authserver/CMakeLists.txt +++ b/src/server/authserver/CMakeLists.txt @@ -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) diff --git a/src/server/database/CMakeLists.txt b/src/server/database/CMakeLists.txt index 6d1dd4daa91..9b9dc97ca2c 100644 --- a/src/server/database/CMakeLists.txt +++ b/src/server/database/CMakeLists.txt @@ -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) diff --git a/src/server/game/CMakeLists.txt b/src/server/game/CMakeLists.txt index 8b621a873fd..48731a4ec30 100644 --- a/src/server/game/CMakeLists.txt +++ b/src/server/game/CMakeLists.txt @@ -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) diff --git a/src/server/scripts/CMakeLists.txt b/src/server/scripts/CMakeLists.txt index 337ef999de1..fb4ba169b4c 100644 --- a/src/server/scripts/CMakeLists.txt +++ b/src/server/scripts/CMakeLists.txt @@ -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) diff --git a/src/server/shared/CMakeLists.txt b/src/server/shared/CMakeLists.txt index 56c6ef3789c..9e0bce32b1b 100644 --- a/src/server/shared/CMakeLists.txt +++ b/src/server/shared/CMakeLists.txt @@ -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) diff --git a/src/server/worldserver/CMakeLists.txt b/src/server/worldserver/CMakeLists.txt index 84e247249a7..3f6f76c2d54 100644 --- a/src/server/worldserver/CMakeLists.txt +++ b/src/server/worldserver/CMakeLists.txt @@ -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) diff --git a/src/tools/extractor_common/CMakeLists.txt b/src/tools/extractor_common/CMakeLists.txt index 400f92c83b3..1c806d5ea26 100644 --- a/src/tools/extractor_common/CMakeLists.txt +++ b/src/tools/extractor_common/CMakeLists.txt @@ -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") diff --git a/src/tools/map_extractor/CMakeLists.txt b/src/tools/map_extractor/CMakeLists.txt index 7da1f5fc949..25f981063cc 100644 --- a/src/tools/map_extractor/CMakeLists.txt +++ b/src/tools/map_extractor/CMakeLists.txt @@ -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) diff --git a/src/tools/mmaps_generator/CMakeLists.txt b/src/tools/mmaps_generator/CMakeLists.txt index 007666eb950..88258a6a4b5 100644 --- a/src/tools/mmaps_generator/CMakeLists.txt +++ b/src/tools/mmaps_generator/CMakeLists.txt @@ -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) diff --git a/src/tools/vmap4_assembler/CMakeLists.txt b/src/tools/vmap4_assembler/CMakeLists.txt index 0fc5db86c77..9af81c8519d 100644 --- a/src/tools/vmap4_assembler/CMakeLists.txt +++ b/src/tools/vmap4_assembler/CMakeLists.txt @@ -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) diff --git a/src/tools/vmap4_extractor/CMakeLists.txt b/src/tools/vmap4_extractor/CMakeLists.txt index 1a02ec7c73d..d7521ab0913 100644 --- a/src/tools/vmap4_extractor/CMakeLists.txt +++ b/src/tools/vmap4_extractor/CMakeLists.txt @@ -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) -- cgit v1.2.3