diff options
author | Kargatum <dowlandtop@yandex.com> | 2019-04-02 03:41:08 +0700 |
---|---|---|
committer | Francesco Borzì <borzifrancesco@gmail.com> | 2019-04-01 22:41:08 +0200 |
commit | eae9affec99181cec14fa4fd0449bb9f8e02565f (patch) | |
tree | 26b106ea2f6268cd2e4e75b63de6e4a0322aaead /src | |
parent | 0f174eff0142c60d3c631c23b5348d3f43fd444b (diff) |
feat(Cmake): Rewrite build and use inherited dependencies (#1652)
Diffstat (limited to 'src')
23 files changed, 475 insertions, 1040 deletions
diff --git a/src/cmake/macros/AutoCollect.cmake b/src/cmake/macros/AutoCollect.cmake new file mode 100644 index 0000000000..ead5ea3d63 --- /dev/null +++ b/src/cmake/macros/AutoCollect.cmake @@ -0,0 +1,72 @@ +# Copyright (C) 2008-2019 TrinityCore <https://www.trinitycore.org/> +# Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL3 v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3 +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# Collects all source files into the given variable, +# which is useful to include all sources in subdirectories. +# Ignores full qualified directories listed in the variadic arguments. +# +# Use it like: +# CollectSourceFiles( +# ${CMAKE_CURRENT_SOURCE_DIR} +# COMMON_PRIVATE_SOURCES +# # Exclude +# ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders +# ${CMAKE_CURRENT_SOURCE_DIR}/Platform) +# +function(CollectSourceFiles current_dir variable) + list(FIND ARGN "${current_dir}" IS_EXCLUDED) + if(IS_EXCLUDED EQUAL -1) + file(GLOB COLLECTED_SOURCES + ${current_dir}/*.c + ${current_dir}/*.cc + ${current_dir}/*.cpp + ${current_dir}/*.inl + ${current_dir}/*.def + ${current_dir}/*.h + ${current_dir}/*.hh + ${current_dir}/*.hpp) + list(APPEND ${variable} ${COLLECTED_SOURCES}) + + file(GLOB SUB_DIRECTORIES ${current_dir}/*) + foreach(SUB_DIRECTORY ${SUB_DIRECTORIES}) + if (IS_DIRECTORY ${SUB_DIRECTORY}) + CollectSourceFiles("${SUB_DIRECTORY}" "${variable}" "${ARGN}") + endif() + endforeach() + set(${variable} ${${variable}} PARENT_SCOPE) + endif() +endfunction() + +# Collects all subdirectoroies into the given variable, +# which is useful to include all subdirectories. +# Ignores full qualified directories listed in the variadic arguments. +# +# Use it like: +# CollectIncludeDirectories( +# ${CMAKE_CURRENT_SOURCE_DIR} +# COMMON_PUBLIC_INCLUDES +# # Exclude +# ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders +# ${CMAKE_CURRENT_SOURCE_DIR}/Platform) +# +function(CollectIncludeDirectories current_dir variable) + list(FIND ARGN "${current_dir}" IS_EXCLUDED) + if(IS_EXCLUDED EQUAL -1) + list(APPEND ${variable} ${current_dir}) + file(GLOB SUB_DIRECTORIES ${current_dir}/*) + foreach(SUB_DIRECTORY ${SUB_DIRECTORIES}) + if (IS_DIRECTORY ${SUB_DIRECTORY}) + CollectIncludeDirectories("${SUB_DIRECTORY}" "${variable}" "${ARGN}") + endif() + endforeach() + set(${variable} ${${variable}} PARENT_SCOPE) + endif() +endfunction() diff --git a/src/cmake/macros/FindPCHSupport.cmake b/src/cmake/macros/FindPCHSupport.cmake index b068b69c26..9c77605616 100644 --- a/src/cmake/macros/FindPCHSupport.cmake +++ b/src/cmake/macros/FindPCHSupport.cmake @@ -1,104 +1,27 @@ -FUNCTION(GET_COMMON_PCH_PARAMS PCH_HEADER PCH_FE INCLUDE_PREFIX) - GET_FILENAME_COMPONENT(PCH_HEADER_N ${PCH_HEADER} NAME) - GET_DIRECTORY_PROPERTY(TARGET_INCLUDES INCLUDE_DIRECTORIES) - - FOREACH(ITEM ${TARGET_INCLUDES}) - LIST(APPEND INCLUDE_FLAGS_LIST "${INCLUDE_PREFIX}\"${ITEM}\" ") - ENDFOREACH(ITEM) - - SET(PCH_HEADER_NAME ${PCH_HEADER_N} PARENT_SCOPE) - SET(PCH_HEADER_OUT ${CMAKE_CURRENT_BINARY_DIR}/${PCH_HEADER_N}.${PCH_FE} PARENT_SCOPE) - SET(INCLUDE_FLAGS ${INCLUDE_FLAGS_LIST} PARENT_SCOPE) -ENDFUNCTION(GET_COMMON_PCH_PARAMS) - -FUNCTION(GENERATE_CXX_PCH_COMMAND TARGET_NAME INCLUDE_FLAGS IN PCH_SRC OUT) - IF (CMAKE_BUILD_TYPE) - STRING(TOUPPER _${CMAKE_BUILD_TYPE} CURRENT_BUILD_TYPE) - ENDIF () - - SET(COMPILE_FLAGS ${CMAKE_CXX_FLAGS${CURRENT_BUILD_TYPE}}) - LIST(APPEND COMPILE_FLAGS ${CMAKE_CXX_FLAGS}) - - IF ("${CMAKE_SYSTEM_NAME}" MATCHES "Darwin") - IF (NOT "${CMAKE_OSX_ARCHITECTURES}" STREQUAL "") - LIST(APPEND COMPILE_FLAGS "-arch ${CMAKE_OSX_ARCHITECTURES}") - ENDIF () - IF (NOT "${CMAKE_OSX_SYSROOT}" STREQUAL "") - LIST(APPEND COMPILE_FLAGS "-isysroot ${CMAKE_OSX_SYSROOT}") - ENDIF () - IF (NOT "${CMAKE_OSX_DEPLOYMENT_TARGET}" STREQUAL "") - LIST(APPEND COMPILE_FLAGS "-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") - ENDIF () - ENDIF () - - GET_DIRECTORY_PROPERTY(TARGET_DEFINITIONS COMPILE_DEFINITIONS) - FOREACH(ITEM ${TARGET_DEFINITIONS}) - LIST(APPEND DEFINITION_FLAGS "-D${ITEM} ") - ENDFOREACH(ITEM) - - SEPARATE_ARGUMENTS(COMPILE_FLAGS) - SEPARATE_ARGUMENTS(INCLUDE_FLAGS) - SEPARATE_ARGUMENTS(DEFINITION_FLAGS) - - GET_FILENAME_COMPONENT(PCH_SRC_N ${PCH_SRC} NAME) - ADD_LIBRARY(${PCH_SRC_N}_dephelp MODULE ${PCH_SRC}) - - ADD_CUSTOM_COMMAND( - OUTPUT ${OUT} - COMMAND ${CMAKE_CXX_COMPILER} - ARGS ${DEFINITION_FLAGS} ${COMPILE_FLAGS} ${INCLUDE_FLAGS} -x c++-header ${IN} -o ${OUT} - DEPENDS ${IN} ${PCH_SRC_N}_dephelp - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ) - - ADD_CUSTOM_TARGET(generate_${PCH_SRC_N} - DEPENDS ${OUT} - ) - - ADD_DEPENDENCIES(${TARGET_NAME} generate_${PCH_SRC_N}) -ENDFUNCTION(GENERATE_CXX_PCH_COMMAND) - -FUNCTION(ADD_CXX_PCH_GCC TARGET_NAME PCH_HEADER PCH_SOURCE) - GET_COMMON_PCH_PARAMS(${PCH_HEADER} "gch" "-I") - GENERATE_CXX_PCH_COMMAND(${TARGET_NAME} "${INCLUDE_FLAGS}" ${PCH_HEADER} ${PCH_SOURCE} ${PCH_HEADER_OUT}) - SET_TARGET_PROPERTIES( - ${TARGET_NAME} PROPERTIES - COMPILE_FLAGS "-include ${CMAKE_CURRENT_BINARY_DIR}/${PCH_HEADER_NAME}" - ) -ENDFUNCTION(ADD_CXX_PCH_GCC) - -FUNCTION(ADD_CXX_PCH_CLANG TARGET_NAME PCH_HEADER PCH_SOURCE) - GET_COMMON_PCH_PARAMS(${PCH_HEADER} "pch" "-I") - GENERATE_CXX_PCH_COMMAND(${TARGET_NAME} "${INCLUDE_FLAGS}" ${PCH_HEADER} ${PCH_SOURCE} ${PCH_HEADER_OUT}) - SET_TARGET_PROPERTIES( - ${TARGET_NAME} PROPERTIES - COMPILE_FLAGS "-include-pch ${PCH_HEADER_OUT}" - ) -ENDFUNCTION(ADD_CXX_PCH_CLANG) - -FUNCTION(ADD_CXX_PCH_MSVC TARGET_NAME PCH_HEADER PCH_SOURCE) - GET_COMMON_PCH_PARAMS(${PCH_HEADER} "pch" "/I") - SET_TARGET_PROPERTIES( - ${TARGET_NAME} PROPERTIES - COMPILE_FLAGS "/FI${PCH_HEADER_NAME} /Yu${PCH_HEADER_NAME}" - ) - SET_SOURCE_FILES_PROPERTIES( - ${PCH_SOURCE} PROPERTIES - COMPILE_FLAGS "/Yc${PCH_HEADER_NAME}" - ) -ENDFUNCTION(ADD_CXX_PCH_MSVC) - -FUNCTION(ADD_CXX_PCH TARGET_NAME PCH_HEADER PCH_SOURCE) - IF (MSVC) - ADD_CXX_PCH_MSVC(${TARGET_NAME} ${PCH_HEADER} ${PCH_SOURCE}) - ELSEIF ("${CMAKE_GENERATOR}" MATCHES "Xcode") - SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES - XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER YES - XCODE_ATTRIBUTE_GCC_PREFIX_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/${PCH_HEADER}" - ) - ELSEIF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") - ADD_CXX_PCH_CLANG(${TARGET_NAME} ${PCH_HEADER} ${PCH_SOURCE}) - ELSEIF ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU") - ADD_CXX_PCH_GCC(${TARGET_NAME} ${PCH_HEADER} ${PCH_SOURCE}) - ENDIF () -ENDFUNCTION(ADD_CXX_PCH) +if (MSVC) + # Specify the maximum PreCompiled Header memory allocation limit + # Fixes a compiler-problem when using PCH - the /Ym flag is adjusted by the compiler in MSVC2012, + # hence we need to set an upper limit with /Zm to avoid discrepancies) + # (And yes, this is a verified, unresolved bug with MSVC... *sigh*) + # + # Note: This workaround was verified to be required on MSVC 2017 as well + set(COTIRE_PCH_MEMORY_SCALING_FACTOR 500) +endif() + +include(cotire) + +function(ADD_CXX_PCH TARGET_NAME_LIST PCH_HEADER) + # Use the header for every target + foreach(TARGET_NAME ${TARGET_NAME_LIST}) + # Disable unity builds + set_target_properties(${TARGET_NAME} PROPERTIES COTIRE_ADD_UNITY_BUILD OFF) + + # Set the prefix header + set_target_properties(${TARGET_NAME} PROPERTIES COTIRE_CXX_PREFIX_HEADER_INIT ${PCH_HEADER}) + + # Workaround for cotire bug: https://github.com/sakra/cotire/issues/138 + set_property(TARGET ${TARGET_NAME} PROPERTY CXX_STANDARD 14) + endforeach() + + cotire(${TARGET_NAME_LIST}) +endfunction(ADD_CXX_PCH) diff --git a/src/cmake/macros/FindReadline.cmake b/src/cmake/macros/FindReadline.cmake deleted file mode 100644 index 07c6b368df..0000000000 --- a/src/cmake/macros/FindReadline.cmake +++ /dev/null @@ -1,18 +0,0 @@ -# find Readline (terminal input library) includes and library -# -# READLINE_INCLUDE_DIR - where the directory containing the READLINE headers can be found -# READLINE_LIBRARY - full path to the READLINE library -# READLINE_FOUND - TRUE if READLINE was found - -FIND_PATH(READLINE_INCLUDE_DIR readline/readline.h) -FIND_LIBRARY(READLINE_LIBRARY NAMES readline) - -IF (READLINE_INCLUDE_DIR AND READLINE_LIBRARY) - SET(READLINE_FOUND TRUE) - MESSAGE(STATUS "Found Readline library: ${READLINE_LIBRARY}") - MESSAGE(STATUS "Include dir is: ${READLINE_INCLUDE_DIR}") - INCLUDE_DIRECTORIES(${READLINE_INCLUDE_DIR}) -ELSE (READLINE_INCLUDE_DIR AND READLINE_LIBRARY) - SET(READLINE_FOUND FALSE) - MESSAGE(FATAL_ERROR "** Readline library not found!\n** Your distro may provide a binary for Readline e.g. for ubuntu try apt-get install libreadline5-dev") -ENDIF (READLINE_INCLUDE_DIR AND READLINE_LIBRARY) diff --git a/src/cmake/platform/win/settings.cmake b/src/cmake/platform/win/settings.cmake index 78aa97b0b0..3f3b175425 100644 --- a/src/cmake/platform/win/settings.cmake +++ b/src/cmake/platform/win/settings.cmake @@ -4,8 +4,6 @@ option(USE_MYSQL_SOURCES "Use included MySQL-sources to build libraries" 0) # Package overloads set(ACE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/deps/acelite) set(ACE_LIBRARY "ace") -set(BZIP2_LIBRARIES "bzip2") -set(ZLIB_LIBRARIES "zlib") if( USE_MYSQL_SOURCES ) set(MYSQL_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/deps/mysqllite/include) diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 8cd73a9fff..69ea281e8c 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -8,91 +8,65 @@ # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -if( USE_COREPCH ) - include_directories(${CMAKE_CURRENT_BINARY_DIR}) -endif() - -file(GLOB_RECURSE sources_Configuration Configuration/*.cpp Configuration/*.h) -file(GLOB_RECURSE sources_Cryptography Cryptography/*.cpp Cryptography/*.h) -file(GLOB_RECURSE sources_Database Database/*.cpp Database/*.h) -file(GLOB_RECURSE sources_DataStores DataStores/*.cpp DataStores/*.h) -file(GLOB_RECURSE sources_Dynamic Dynamic/*.cpp Dynamic/*.h) -file(GLOB_RECURSE sources_Logging Logging/*.cpp Logging/*.h) -file(GLOB_RECURSE sources_Packets Packets/*.cpp Packets/*.h) -file(GLOB_RECURSE sources_Threading Threading/*.cpp Threading/*.h) -file(GLOB_RECURSE sources_Utilities Utilities/*.cpp Utilities/*.h) - -file(GLOB sources_localdir *.cpp *.h) +CollectSourceFiles( + ${CMAKE_CURRENT_SOURCE_DIR} + PRIVATE_SOURCES + # Exclude + ${CMAKE_CURRENT_SOURCE_DIR}/Debugging + ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders) # Manually set sources for Debugging directory as we don't want to include WheatyExceptionReport in shared project # It needs to be included both in authserver and worldserver for the static global variable to be properly initialized # and to handle crash logs on windows -set(sources_Debugging Debugging/Errors.cpp Debugging/Errors.h) - -# -# Build shared sourcelist -# +list(APPEND PRIVATE_SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/Debugging/Errors.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/Debugging/Errors.h) if (USE_COREPCH) - set(shared_STAT_PCH_HDR PrecompiledHeaders/sharedPCH.h) - set(shared_STAT_PCH_SRC PrecompiledHeaders/sharedPCH.cpp) + set(PRIVATE_PCH_HEADER PrecompiledHeaders/sharedPCH.h) endif() -set(shared_STAT_SRCS - ${shared_STAT_SRCS} - ${sources_Configuration} - ${sources_Cryptography} - ${sources_Database} - ${sources_DataStores} - ${sources_Debugging} - ${sources_Dynamic} - ${sources_Logging} - ${sources_Packets} - ${sources_Threading} - ${sources_Utilities} - ${sources_localdir} - Debugging/Errors.h -) - -include_directories( - ${CMAKE_BINARY_DIR} - ${CMAKE_SOURCE_DIR}/deps/recastnavigation/Detour - ${CMAKE_SOURCE_DIR}/deps/SFMT - ${CMAKE_SOURCE_DIR}/deps/sockets/include - ${CMAKE_SOURCE_DIR}/deps/utf8cpp - ${CMAKE_SOURCE_DIR}/src - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/Configuration - ${CMAKE_CURRENT_SOURCE_DIR}/Cryptography - ${CMAKE_CURRENT_SOURCE_DIR}/Database - ${CMAKE_CURRENT_SOURCE_DIR}/DataStores - ${CMAKE_CURRENT_SOURCE_DIR}/Debugging - ${CMAKE_CURRENT_SOURCE_DIR}/Dynamic - ${CMAKE_CURRENT_SOURCE_DIR}/Logging - ${CMAKE_CURRENT_SOURCE_DIR}/Packets - ${CMAKE_CURRENT_SOURCE_DIR}/Threading - ${CMAKE_CURRENT_SOURCE_DIR}/Utilities - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object - ${ACE_INCLUDE_DIR} - ${MYSQL_INCLUDE_DIR} - ${OPENSSL_INCLUDE_DIR} -) - # Group sources GroupSources(${CMAKE_CURRENT_SOURCE_DIR}) -add_library(shared STATIC - ${shared_STAT_SRCS} - ${shared_STAT_PCH_SRC} +add_library(shared + ${PRIVATE_SOURCES} ) +CollectIncludeDirectories( + ${CMAKE_CURRENT_SOURCE_DIR} + PUBLIC_INCLUDES + # Exclude + ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders) + +target_include_directories(shared + PUBLIC + # Provide the binary dir for all child targets + ${CMAKE_BINARY_DIR} + ${PUBLIC_INCLUDES} + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}) + target_link_libraries(shared - ${ACE_LIBRARY} -) + PRIVATE + game-interface + PUBLIC + ace + mysql + g3dlib + Detour + sfmt + utf8cpp + openssl + threads + jemalloc) + +set_target_properties(shared + PROPERTIES + FOLDER + "server") # Generate precompiled header if (USE_COREPCH) - add_cxx_pch(shared ${shared_STAT_PCH_HDR} ${shared_STAT_PCH_SRC}) + add_cxx_pch(shared ${PRIVATE_PCH_HEADER}) endif () - -add_subdirectory(Collision)
\ No newline at end of file diff --git a/src/common/Collision/CMakeLists.txt b/src/common/Collision/CMakeLists.txt deleted file mode 100644 index a1c6b8b840..0000000000 --- a/src/common/Collision/CMakeLists.txt +++ /dev/null @@ -1,93 +0,0 @@ -# Copyright (C) -# -# This file is free software; as a special exception the author gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -if( USE_COREPCH ) - include_directories(${CMAKE_CURRENT_BINARY_DIR}) -endif() - -file(GLOB_RECURSE sources_Management Management/*.cpp Management/*.h) -file(GLOB_RECURSE sources_Maps Maps/*.cpp Maps/*.h) -file(GLOB_RECURSE sources_Models Models/*.cpp Models/*.h) -file(GLOB sources_localdir *.cpp *.h) - -if (USE_COREPCH) - set(collision_STAT_PCH_HDR PrecompiledHeaders/collisionPCH.h) - set(collision_STAT_PCH_SRC PrecompiledHeaders/collisionPCH.cpp) -endif () - -set(collision_STAT_SRCS - ${collision_STAT_SRCS} - ${sources_Management} - ${sources_Maps} - ${sources_Models} - ${sources_localdir} -) - -include_directories( - ${CMAKE_BINARY_DIR} - ${CMAKE_SOURCE_DIR}/deps/g3dlite/include - ${CMAKE_SOURCE_DIR}/deps/recastnavigation/Detour/Include - ${CMAKE_SOURCE_DIR}/src/common/ - ${CMAKE_SOURCE_DIR}/src/common/Configuration - ${CMAKE_SOURCE_DIR}/src/common/Debugging - ${CMAKE_SOURCE_DIR}/src/common/Database - ${CMAKE_SOURCE_DIR}/src/common/Debugging - ${CMAKE_SOURCE_DIR}/src/common/Dynamic - ${CMAKE_SOURCE_DIR}/src/common/Dynamic/LinkedReference - ${CMAKE_SOURCE_DIR}/src/common/Logging - ${CMAKE_SOURCE_DIR}/src/common/Threading - ${CMAKE_SOURCE_DIR}/src/common/Packets - ${CMAKE_SOURCE_DIR}/src/common/Utilities - ${CMAKE_SOURCE_DIR}/src/common/DataStores - ${CMAKE_SOURCE_DIR}/src/server/game/Addons - ${CMAKE_SOURCE_DIR}/src/server/game/Conditions - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Item - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/GameObject - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Creature - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object/Updates - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Unit - ${CMAKE_SOURCE_DIR}/src/server/game/Combat - ${CMAKE_SOURCE_DIR}/src/server/game/Loot - ${CMAKE_SOURCE_DIR}/src/server/game/Miscellaneous - ${CMAKE_SOURCE_DIR}/src/server/game/Grids - ${CMAKE_SOURCE_DIR}/src/server/game/Grids/Cells - ${CMAKE_SOURCE_DIR}/src/server/game/Grids/Notifiers - ${CMAKE_SOURCE_DIR}/src/server/game/Maps - ${CMAKE_SOURCE_DIR}/src/server/game/DataStores - ${CMAKE_SOURCE_DIR}/src/server/game/Movement/Waypoints - ${CMAKE_SOURCE_DIR}/src/server/game/Movement/Spline - ${CMAKE_SOURCE_DIR}/src/server/game/Movement - ${CMAKE_SOURCE_DIR}/src/server/game/Server - ${CMAKE_SOURCE_DIR}/src/server/game/Server/Protocol - ${CMAKE_SOURCE_DIR}/src/server/game/World - ${CMAKE_SOURCE_DIR}/src/server/game/Spells - ${CMAKE_SOURCE_DIR}/src/server/game/Spells/Auras - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/Management - ${CMAKE_CURRENT_SOURCE_DIR}/Maps - ${CMAKE_CURRENT_SOURCE_DIR}/Models - ${ACE_INCLUDE_DIR} - ${MYSQL_INCLUDE_DIR} -) - -add_library(collision STATIC - ${collision_STAT_SRCS} - ${collision_STAT_PCH_SRC} -) - -target_link_libraries(collision - shared -) - -# Generate precompiled header -if (USE_COREPCH) - add_cxx_pch(collision ${collision_STAT_PCH_HDR} ${collision_STAT_PCH_SRC}) -endif () diff --git a/src/common/Collision/PrecompiledHeaders/collisionPCH.cpp b/src/common/Collision/PrecompiledHeaders/collisionPCH.cpp deleted file mode 100644 index 36eae8e2b0..0000000000 --- a/src/common/Collision/PrecompiledHeaders/collisionPCH.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "collisionPCH.h" diff --git a/src/common/Collision/PrecompiledHeaders/collisionPCH.h b/src/common/Collision/PrecompiledHeaders/collisionPCH.h deleted file mode 100644 index ece2ef1b8e..0000000000 --- a/src/common/Collision/PrecompiledHeaders/collisionPCH.h +++ /dev/null @@ -1,9 +0,0 @@ -#include "Define.h" -#include "VMapDefinitions.h" -#include "MapTree.h" -#include "WorldModel.h" -#include "ModelInstance.h" -#include "BoundingIntervalHierarchy.h" -#include "RegularGrid.h" -#include "BoundingIntervalHierarchyWrapper.h" -#include "GameObjectModel.h" diff --git a/src/common/PrecompiledHeaders/sharedPCH.cpp b/src/common/PrecompiledHeaders/sharedPCH.cpp deleted file mode 100644 index 36eb3a877f..0000000000 --- a/src/common/PrecompiledHeaders/sharedPCH.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "sharedPCH.h" diff --git a/src/genrev/CMakeLists.txt b/src/genrev/CMakeLists.txt index 64b2abdf74..cd1d2109a7 100644 --- a/src/genrev/CMakeLists.txt +++ b/src/genrev/CMakeLists.txt @@ -13,3 +13,8 @@ add_custom_target(revision.h ALL COMMAND ${CMAKE_COMMAND} -DBUILDDIR=${CMAKE_BINARY_DIR} -P ${CMAKE_SOURCE_DIR}/src/cmake/genrev.cmake WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) + +set_target_properties(revision.h + PROPERTIES + FOLDER + "server") diff --git a/src/server/authserver/CMakeLists.txt b/src/server/authserver/CMakeLists.txt index d3e18971b5..1d4f91b0bb 100644 --- a/src/server/authserver/CMakeLists.txt +++ b/src/server/authserver/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) +# Copyright (C) # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without @@ -10,63 +10,28 @@ ########### authserver ############### -file(GLOB_RECURSE sources_authentication Authentication/*.cpp Authentication/*.h) -file(GLOB_RECURSE sources_realms Realms/*.cpp Realms/*.h) -file(GLOB_RECURSE sources_server Server/*.cpp Server/*.h) -file(GLOB sources_localdir *.cpp *.h) - -if (USE_COREPCH) - set(authserver_PCH_HDR PrecompiledHeaders/authPCH.h) - set(authserver_PCH_SRC PrecompiledHeaders/authPCH.cpp) -endif() - -set(authserver_SRCS - ${authserver_SRCS} - ${sources_authentication} - ${sources_realms} - ${sources_server} - ${sources_localdir} -) +CollectSourceFiles( + ${CMAKE_CURRENT_SOURCE_DIR} + PRIVATE_SOURCES + # Exclude + ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders) if( WIN32 ) - set(authserver_SRCS - ${authserver_SRCS} - ${sources_windows_Debugging} - ) + list(APPEND PRIVATE_SOURCES ${sources_windows}) if ( MSVC ) - set(authserver_SRCS - ${authserver_SRCS} - authserver.rc - ) - endif () + list(APPEND PRIVATE_SOURCES authserver.rc) + endif() endif() -include_directories( - ${CMAKE_BINARY_DIR} - ${CMAKE_SOURCE_DIR}/src/common - ${CMAKE_SOURCE_DIR}/src/common/Database - ${CMAKE_SOURCE_DIR}/src/common/Debugging - ${CMAKE_SOURCE_DIR}/src/common/Packets - ${CMAKE_SOURCE_DIR}/src/common/Cryptography - ${CMAKE_SOURCE_DIR}/src/common/Cryptography/Authentication - ${CMAKE_SOURCE_DIR}/src/common/Logging - ${CMAKE_SOURCE_DIR}/src/common/Threading - ${CMAKE_SOURCE_DIR}/src/common/Utilities - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/Authentication - ${CMAKE_CURRENT_SOURCE_DIR}/Realms - ${CMAKE_CURRENT_SOURCE_DIR}/Server - ${ACE_INCLUDE_DIR} - ${MYSQL_INCLUDE_DIR} - ${OPENSSL_INCLUDE_DIR} -) +if (USE_COREPCH) + set(PRIVATE_PCH_HEADER PrecompiledHeaders/authPCH.h) +endif() # Group sources GroupSources(${CMAKE_CURRENT_SOURCE_DIR}) add_executable(authserver - ${authserver_SRCS} - ${authserver_PCH_SRC} + ${PRIVATE_SOURCES} ) add_dependencies(authserver revision.h) @@ -78,13 +43,27 @@ if( NOT WIN32 ) endif() target_link_libraries(authserver - shared - ${MYSQL_LIBRARY} - ${OPENSSL_LIBRARIES} - ${CMAKE_THREAD_LIBS_INIT} - ${ACE_LIBRARY} + PUBLIC + shared ) +CollectIncludeDirectories( + ${CMAKE_CURRENT_SOURCE_DIR} + PUBLIC_INCLUDES + # Exclude + ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders) + +target_include_directories(authserver + PUBLIC + ${PUBLIC_INCLUDES} + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}) + +set_target_properties(authserver + PROPERTIES + FOLDER + "server") + if( WIN32 ) if ( MSVC ) add_custom_command(TARGET authserver @@ -109,7 +88,7 @@ install(FILES authserver.conf.dist DESTINATION ${CONF_DIR}) # Generate precompiled header if (USE_COREPCH) - add_cxx_pch(authserver ${authserver_PCH_HDR} ${authserver_PCH_SRC}) + add_cxx_pch(authserver ${PRIVATE_PCH_HEADER}) endif() CU_RUN_HOOK("AFTER_AUTHSERVER_CMAKE") diff --git a/src/server/authserver/PrecompiledHeaders/authPCH.cpp b/src/server/authserver/PrecompiledHeaders/authPCH.cpp deleted file mode 100644 index eed50cb2c0..0000000000 --- a/src/server/authserver/PrecompiledHeaders/authPCH.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "authPCH.h" diff --git a/src/server/game/CMakeLists.txt b/src/server/game/CMakeLists.txt index 98e60ffa70..751021c3e7 100644 --- a/src/server/game/CMakeLists.txt +++ b/src/server/game/CMakeLists.txt @@ -10,225 +10,57 @@ CU_RUN_HOOK(BEFORE_GAME_LIBRARY) -file(GLOB_RECURSE sources_Accounts Accounts/*.cpp Accounts/*.h) -file(GLOB_RECURSE sources_Achievements Achievements/*.cpp Achievements/*.h) -file(GLOB_RECURSE sources_Addons Addons/*.cpp Addons/*.h) -file(GLOB_RECURSE sources_AI AI/*.cpp AI/*.h) -file(GLOB_RECURSE sources_AuctionHouse AuctionHouse/*.cpp AuctionHouse/*.h) -file(GLOB_RECURSE sources_Battlefield Battlefield/*.cpp Battlefield/*.h) -file(GLOB_RECURSE sources_Battlegrounds Battlegrounds/*.cpp Battlegrounds/*.h) -file(GLOB_RECURSE sources_Calendar Calendar/*.cpp Calendar/*.h) -file(GLOB_RECURSE sources_Chat Chat/*.cpp Chat/*.h) -file(GLOB_RECURSE sources_Combat Combat/*.cpp Combat/*.h) -file(GLOB_RECURSE sources_Conditions Conditions/*.cpp Conditions/*.h) -file(GLOB_RECURSE sources_DataStores DataStores/*.cpp DataStores/*.h) -file(GLOB_RECURSE sources_DungeonFinding DungeonFinding/*.cpp DungeonFinding/*.h) -file(GLOB_RECURSE sources_Entities Entities/*.cpp Entities/*.h) -file(GLOB_RECURSE sources_Events Events/*.cpp Events/*.h) -file(GLOB_RECURSE sources_Globals Globals/*.cpp Globals/*.h) -file(GLOB_RECURSE sources_Grids Grids/*.cpp Grids/*.h) -file(GLOB_RECURSE sources_Groups Groups/*.cpp Groups/*.h) -file(GLOB_RECURSE sources_Guilds Guilds/*.cpp Guilds/*.h) -file(GLOB_RECURSE sources_Handlers Handlers/*.cpp Handlers/*.h) -file(GLOB_RECURSE sources_Instances Instances/*.cpp Instances/*.h) -file(GLOB_RECURSE sources_Loot Loot/*.cpp Loot/*.h) -file(GLOB_RECURSE sources_Mails Mails/*.cpp Mails/*.h) -file(GLOB_RECURSE sources_Maps Maps/*.cpp Maps/*.h) -file(GLOB_RECURSE sources_Miscellaneous Miscellaneous/*.cpp Miscellaneous/*.h) -file(GLOB_RECURSE sources_Motd Motd/*.cpp Motd/*.h) -file(GLOB_RECURSE sources_Movement Movement/*.cpp Movement/*.h) -file(GLOB_RECURSE sources_OutdoorPvP OutdoorPvP/*.cpp OutdoorPvP/*.h) -file(GLOB_RECURSE sources_Petitions Petitions/*.cpp Petitions/*.h) -file(GLOB_RECURSE sources_Pools Pools/*.cpp Pools/*.h) -file(GLOB_RECURSE sources_Quests Quests/*.cpp Quests/*.h) -file(GLOB_RECURSE sources_Reputation Reputation/*.cpp Reputation/*.h) -file(GLOB_RECURSE sources_Scripting Scripting/*.cpp Scripting/*.h) -file(GLOB_RECURSE sources_Server Server/*.cpp Server/*.h) -file(GLOB_RECURSE sources_Skills Skills/*.cpp Skills/*.h) -file(GLOB_RECURSE sources_Spells Spells/*.cpp Spells/*.h) -file(GLOB_RECURSE sources_Texts Texts/*.cpp Texts/*.h) -file(GLOB_RECURSE sources_Tools Tools/*.cpp Tools/*.h) -file(GLOB_RECURSE sources_Tickets Tickets/*.cpp Tickets/*.h) -file(GLOB_RECURSE sources_Warden Warden/*.cpp Warden/*.h) -file(GLOB_RECURSE sources_Weather Weather/*.cpp Weather/*.h) -file(GLOB_RECURSE sources_World World/*.cpp World/*.h) -file(GLOB_RECURSE sources_ArenaSpectator ArenaSpectator/*.cpp ArenaSpectator/*.h) -file(GLOB_RECURSE sources_Misc Misc/*.cpp Misc/*.h) - -# Create game-libary +CollectSourceFiles( + ${CMAKE_CURRENT_SOURCE_DIR} + PRIVATE_SOURCES + # Exclude + ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders) if (USE_COREPCH) - set(game_STAT_PCH_HDR PrecompiledHeaders/gamePCH.h) - set(game_STAT_PCH_SRC PrecompiledHeaders/gamePCH.cpp) + set(PRIVATE_PCH_HEADER PrecompiledHeaders/gamePCH.h) endif () -set(game_STAT_SRCS - ${game_STAT_SRCS} - ${sources_Accounts} - ${sources_Achievements} - ${sources_Addons} - ${sources_AI} - ${sources_AuctionHouse} - ${sources_Battlefield} - ${sources_Battlegrounds} - ${sources_Calendar} - ${sources_Chat} - ${sources_Combat} - ${sources_Conditions} - ${sources_DataStores} - ${sources_DungeonFinding} - ${sources_Entities} - ${sources_Events} - ${sources_Globals} - ${sources_Grids} - ${sources_Groups} - ${sources_Guilds} - ${sources_Handlers} - ${sources_Instances} - ${sources_Loot} - ${sources_Mails} - ${sources_Maps} - ${sources_Miscellaneous} - ${sources_Motd} - ${sources_Movement} - ${sources_OutdoorPvP} - ${sources_Petitions} - ${sources_Pools} - ${sources_Quests} - ${sources_Reputation} - ${sources_Scripting} - ${sources_Server} - ${sources_Skills} - ${sources_Spells} - ${sources_Texts} - ${sources_Tools} - ${sources_Tickets} - ${sources_Warden} - ${sources_Weather} - ${sources_World} - ${sources_ArenaSpectator} - ${sources_Misc} -) +# Group sources +GroupSources(${CMAKE_CURRENT_SOURCE_DIR}) + +add_library(game-interface INTERFACE) -include_directories( - ${game_INCLUDE_DIRS} - ${CMAKE_BINARY_DIR} - ${CMAKE_SOURCE_DIR}/deps/recastnavigation/Detour/Include - ${CMAKE_SOURCE_DIR}/deps/recastnavigation/Recast/Include - ${CMAKE_SOURCE_DIR}/deps/g3dlite/include - ${CMAKE_SOURCE_DIR}/deps/SFMT - ${CMAKE_SOURCE_DIR}/deps/zlib - ${CMAKE_SOURCE_DIR}/src/common/Collision/ - ${CMAKE_SOURCE_DIR}/src/common/Collision/Management - ${CMAKE_SOURCE_DIR}/src/common/Collision/Models - ${CMAKE_SOURCE_DIR}/src/common/Collision/Maps - ${CMAKE_SOURCE_DIR}/src/common - ${CMAKE_SOURCE_DIR}/src/common/Configuration - ${CMAKE_SOURCE_DIR}/src/common/Cryptography - ${CMAKE_SOURCE_DIR}/src/common/Cryptography/Authentication - ${CMAKE_SOURCE_DIR}/src/common/Database - ${CMAKE_SOURCE_DIR}/src/common/DataStores - ${CMAKE_SOURCE_DIR}/src/common/Debugging - ${CMAKE_SOURCE_DIR}/src/common/Dynamic/LinkedReference - ${CMAKE_SOURCE_DIR}/src/common/Dynamic - ${CMAKE_SOURCE_DIR}/src/common/Logging - ${CMAKE_SOURCE_DIR}/src/common/Packets - ${CMAKE_SOURCE_DIR}/src/common/Threading - ${CMAKE_SOURCE_DIR}/src/common/Utilities - ${CMAKE_SOURCE_DIR}/src/server/game/Addons +CollectIncludeDirectories( ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/Accounts - ${CMAKE_CURRENT_SOURCE_DIR}/Achievements - ${CMAKE_CURRENT_SOURCE_DIR}/AI - ${CMAKE_CURRENT_SOURCE_DIR}/AI/CoreAI - ${CMAKE_CURRENT_SOURCE_DIR}/AI/ScriptedAI - ${CMAKE_CURRENT_SOURCE_DIR}/AI/SmartScripts - ${CMAKE_CURRENT_SOURCE_DIR}/AuctionHouse - ${CMAKE_CURRENT_SOURCE_DIR}/Battlefield - ${CMAKE_CURRENT_SOURCE_DIR}/Battlefield/Zones - ${CMAKE_CURRENT_SOURCE_DIR}/Battlegrounds - ${CMAKE_CURRENT_SOURCE_DIR}/Battlegrounds/Zones - ${CMAKE_CURRENT_SOURCE_DIR}/Calendar - ${CMAKE_CURRENT_SOURCE_DIR}/Chat - ${CMAKE_CURRENT_SOURCE_DIR}/Chat/Channels - ${CMAKE_CURRENT_SOURCE_DIR}/Combat - ${CMAKE_CURRENT_SOURCE_DIR}/Conditions - ${CMAKE_CURRENT_SOURCE_DIR}/DataStores - ${CMAKE_CURRENT_SOURCE_DIR}/DungeonFinding - ${CMAKE_CURRENT_SOURCE_DIR}/Entities - ${CMAKE_CURRENT_SOURCE_DIR}/Entities/Creature - ${CMAKE_CURRENT_SOURCE_DIR}/Entities/Corpse - ${CMAKE_CURRENT_SOURCE_DIR}/Entities/DynamicObject - ${CMAKE_CURRENT_SOURCE_DIR}/Entities/GameObject - ${CMAKE_CURRENT_SOURCE_DIR}/Entities/Item - ${CMAKE_CURRENT_SOURCE_DIR}/Entities/Item/Container - ${CMAKE_CURRENT_SOURCE_DIR}/Entities/Object - ${CMAKE_CURRENT_SOURCE_DIR}/Entities/Object/Updates - ${CMAKE_CURRENT_SOURCE_DIR}/Entities/Pet - ${CMAKE_CURRENT_SOURCE_DIR}/Entities/Player - ${CMAKE_CURRENT_SOURCE_DIR}/Entities/Totem - ${CMAKE_CURRENT_SOURCE_DIR}/Entities/Unit - ${CMAKE_CURRENT_SOURCE_DIR}/Entities/Vehicle - ${CMAKE_CURRENT_SOURCE_DIR}/Entities/Transport - ${CMAKE_CURRENT_SOURCE_DIR}/Events - ${CMAKE_CURRENT_SOURCE_DIR}/Globals - ${CMAKE_CURRENT_SOURCE_DIR}/Grids/Cells - ${CMAKE_CURRENT_SOURCE_DIR}/Grids/Notifiers - ${CMAKE_CURRENT_SOURCE_DIR}/Grids - ${CMAKE_CURRENT_SOURCE_DIR}/Groups - ${CMAKE_CURRENT_SOURCE_DIR}/Guilds - ${CMAKE_CURRENT_SOURCE_DIR}/Handlers - ${CMAKE_CURRENT_SOURCE_DIR}/Instances - ${CMAKE_CURRENT_SOURCE_DIR}/Loot - ${CMAKE_CURRENT_SOURCE_DIR}/Mails - ${CMAKE_CURRENT_SOURCE_DIR}/Maps - ${CMAKE_CURRENT_SOURCE_DIR}/Miscellaneous - ${CMAKE_CURRENT_SOURCE_DIR}/Motd - ${CMAKE_CURRENT_SOURCE_DIR}/Movement - ${CMAKE_CURRENT_SOURCE_DIR}/Movement/Spline - ${CMAKE_CURRENT_SOURCE_DIR}/Movement/MovementGenerators - ${CMAKE_CURRENT_SOURCE_DIR}/Movement/Waypoints - ${CMAKE_CURRENT_SOURCE_DIR}/OutdoorPvP - ${CMAKE_CURRENT_SOURCE_DIR}/Petitions - ${CMAKE_CURRENT_SOURCE_DIR}/Pools - ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders - ${CMAKE_CURRENT_SOURCE_DIR}/Quests - ${CMAKE_CURRENT_SOURCE_DIR}/Reputation - ${CMAKE_CURRENT_SOURCE_DIR}/Scripting - ${CMAKE_CURRENT_SOURCE_DIR}/Server/Protocol - ${CMAKE_CURRENT_SOURCE_DIR}/Server - ${CMAKE_CURRENT_SOURCE_DIR}/Skills - ${CMAKE_CURRENT_SOURCE_DIR}/Spells - ${CMAKE_CURRENT_SOURCE_DIR}/Spells/Auras - ${CMAKE_CURRENT_SOURCE_DIR}/Texts - ${CMAKE_CURRENT_SOURCE_DIR}/Tools - ${CMAKE_CURRENT_SOURCE_DIR}/Tickets - ${CMAKE_CURRENT_SOURCE_DIR}/Warden - ${CMAKE_CURRENT_SOURCE_DIR}/Warden/Modules - ${CMAKE_CURRENT_SOURCE_DIR}/Weather - ${CMAKE_CURRENT_SOURCE_DIR}/World - ${CMAKE_CURRENT_SOURCE_DIR}/ArenaSpectator - ${CMAKE_CURRENT_SOURCE_DIR}/Misc - ${CMAKE_SOURCE_DIR}/src/server/scripts/ - ${CMAKE_SOURCE_DIR}/src/server/scripts/PrecompiledHeaders - ${ACE_INCLUDE_DIR} - ${MYSQL_INCLUDE_DIR} - ${OPENSSL_INCLUDE_DIR} -) + PUBLIC_INCLUDES + # Exclude + ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders) -# Group sources -GroupSources(${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(game-interface + INTERFACE + ${PUBLIC_INCLUDES}) + +target_link_libraries(game-interface + INTERFACE + shared) add_library(game STATIC - ${game_STAT_SRCS} - ${game_STAT_PCH_SRC} -) + ${PRIVATE_SOURCES}) add_dependencies(game revision.h) +target_include_directories(game + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}) + +target_link_libraries(game + PRIVATE + game-interface + scripts-interface) + +set_target_properties(game + PROPERTIES + FOLDER + "server") + # Generate precompiled header if (USE_COREPCH) - add_cxx_pch(game ${game_STAT_PCH_HDR} ${game_STAT_PCH_SRC}) + add_cxx_pch(game ${PRIVATE_PCH_HEADER}) endif () CU_RUN_HOOK(AFTER_GAME_LIBRARY) diff --git a/src/server/game/PrecompiledHeaders/gamePCH.cpp b/src/server/game/PrecompiledHeaders/gamePCH.cpp deleted file mode 100644 index 11e501ec7f..0000000000 --- a/src/server/game/PrecompiledHeaders/gamePCH.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "gamePCH.h" diff --git a/src/server/scripts/CMakeLists.txt b/src/server/scripts/CMakeLists.txt index 9748bab2be..1c07a670e4 100644 --- a/src/server/scripts/CMakeLists.txt +++ b/src/server/scripts/CMakeLists.txt @@ -14,14 +14,9 @@ CU_RUN_HOOK(BEFORE_SCRIPTS_LIBRARY) CU_SET_PATH("AC_SCRIPTS_DIR" "${CMAKE_CURRENT_LIST_DIR}") -if (USE_SCRIPTPCH) - set(scripts_STAT_PCH_HDR PrecompiledHeaders/ScriptPCH.h) - set(scripts_STAT_PCH_SRC PrecompiledHeaders/ScriptPCH.cpp) -endif () - message(STATUS "SCRIPT PREPARATIONS") -include(Spells/CMakeLists.txt) +include(Spells/CMakeLists.txt) include(Commands/CMakeLists.txt) set(scripts_STAT_SRCS @@ -75,123 +70,50 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/GenLoader.cpp.cmake ${BUILDDIR}/GenLo message(STATUS "SCRIPT PREPARATION COMPLETE") message("") -include_directories( - ${scripts_INCLUDE_DIRS} - ${CMAKE_BINARY_DIR} - ${CMAKE_SOURCE_DIR}/deps/recastnavigation/Detour/Include - ${CMAKE_SOURCE_DIR}/deps/recastnavigation/Recast/Include - ${CMAKE_SOURCE_DIR}/deps/g3dlite/include - ${CMAKE_SOURCE_DIR}/deps/SFMT - ${CMAKE_SOURCE_DIR}/deps/zlib - ${CMAKE_SOURCE_DIR}/src/common - ${CMAKE_SOURCE_DIR}/src/common/Configuration - ${CMAKE_SOURCE_DIR}/src/common/Cryptography - ${CMAKE_SOURCE_DIR}/src/common/Database - ${CMAKE_SOURCE_DIR}/src/common/DataStores - ${CMAKE_SOURCE_DIR}/src/common/Debugging - ${CMAKE_SOURCE_DIR}/src/common/Dynamic/LinkedReference - ${CMAKE_SOURCE_DIR}/src/common/Dynamic - ${CMAKE_SOURCE_DIR}/src/common/Logging - ${CMAKE_SOURCE_DIR}/src/common/Packets - ${CMAKE_SOURCE_DIR}/src/common/Threading - ${CMAKE_SOURCE_DIR}/src/common/Utilities - ${CMAKE_SOURCE_DIR}/src/common/Collision/ - ${CMAKE_SOURCE_DIR}/src/common/Collision/Management - ${CMAKE_SOURCE_DIR}/src/common/Collision/Models - ${CMAKE_SOURCE_DIR}/src/common - ${CMAKE_SOURCE_DIR}/src/common/Database - ${CMAKE_SOURCE_DIR}/src/server/game/Addons - ${CMAKE_SOURCE_DIR}/src/server/game/Accounts - ${CMAKE_SOURCE_DIR}/src/server/game/Achievements - ${CMAKE_SOURCE_DIR}/src/server/game/AI - ${CMAKE_SOURCE_DIR}/src/server/game/AI/CoreAI - ${CMAKE_SOURCE_DIR}/src/server/game/AI/ScriptedAI - ${CMAKE_SOURCE_DIR}/src/server/game/AI/SmartScripts - ${CMAKE_SOURCE_DIR}/src/server/game/AuctionHouse - ${CMAKE_SOURCE_DIR}/src/server/game/Battlefield - ${CMAKE_SOURCE_DIR}/src/server/game/Battlefield/Zones - ${CMAKE_SOURCE_DIR}/src/server/game/Battlegrounds - ${CMAKE_SOURCE_DIR}/src/server/game/Battlegrounds/Zones - ${CMAKE_SOURCE_DIR}/src/server/game/Calendar - ${CMAKE_SOURCE_DIR}/src/server/game/Chat - ${CMAKE_SOURCE_DIR}/src/server/game/Chat/Channels - ${CMAKE_SOURCE_DIR}/src/server/game/Conditions - ${CMAKE_SOURCE_DIR}/src/common/Configuration - ${CMAKE_SOURCE_DIR}/src/server/game/Combat - ${CMAKE_SOURCE_DIR}/src/server/game/DataStores - ${CMAKE_SOURCE_DIR}/src/server/game/DungeonFinding - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Corpse - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Creature - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/DynamicObject - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Item - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Item/Container - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/GameObject - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object/Updates - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Pet - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Player - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Totem - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Transport - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Unit - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Vehicle - ${CMAKE_SOURCE_DIR}/src/server/game/Events - ${CMAKE_SOURCE_DIR}/src/server/game/Globals - ${CMAKE_SOURCE_DIR}/src/server/game/Grids - ${CMAKE_SOURCE_DIR}/src/server/game/Grids/Cells - ${CMAKE_SOURCE_DIR}/src/server/game/Grids/Notifiers - ${CMAKE_SOURCE_DIR}/src/server/game/Groups - ${CMAKE_SOURCE_DIR}/src/server/game/Guilds - ${CMAKE_SOURCE_DIR}/src/server/game/Handlers - ${CMAKE_SOURCE_DIR}/src/server/game/Instances - ${CMAKE_SOURCE_DIR}/src/server/game/LookingForGroup - ${CMAKE_SOURCE_DIR}/src/server/game/Loot - ${CMAKE_SOURCE_DIR}/src/server/game/Mails - ${CMAKE_SOURCE_DIR}/src/server/game/Miscellaneous - ${CMAKE_SOURCE_DIR}/src/server/game/Motd - ${CMAKE_SOURCE_DIR}/src/server/game/Maps - ${CMAKE_SOURCE_DIR}/src/server/game/Movement - ${CMAKE_SOURCE_DIR}/src/server/game/Movement/MovementGenerators - ${CMAKE_SOURCE_DIR}/src/server/game/Movement/Spline - ${CMAKE_SOURCE_DIR}/src/server/game/Movement/Waypoints - ${CMAKE_SOURCE_DIR}/src/server/game/Opcodes - ${CMAKE_SOURCE_DIR}/src/server/game/OutdoorPvP - ${CMAKE_SOURCE_DIR}/src/server/game/Petitions - ${CMAKE_SOURCE_DIR}/src/server/game/Pools - ${CMAKE_SOURCE_DIR}/src/server/game/PrecompiledHeaders - ${CMAKE_SOURCE_DIR}/src/server/game/Quests - ${CMAKE_SOURCE_DIR}/src/server/game/Reputation - ${CMAKE_SOURCE_DIR}/src/server/game/Scripting - ${CMAKE_SOURCE_DIR}/src/server/game/Server - ${CMAKE_SOURCE_DIR}/src/server/game/Server/Protocol - ${CMAKE_SOURCE_DIR}/src/server/game/Skills - ${CMAKE_SOURCE_DIR}/src/server/game/Spells - ${CMAKE_SOURCE_DIR}/src/server/game/Spells/Auras - ${CMAKE_SOURCE_DIR}/src/server/game/Texts - ${CMAKE_SOURCE_DIR}/src/server/game/Tickets - ${CMAKE_SOURCE_DIR}/src/server/game/Tools - ${CMAKE_SOURCE_DIR}/src/server/game/Warden - ${CMAKE_SOURCE_DIR}/src/server/game/Warden/Modules - ${CMAKE_SOURCE_DIR}/src/server/game/Weather - ${CMAKE_SOURCE_DIR}/src/server/game/World - ${CMAKE_SOURCE_DIR}/src/server/game/ArenaSpectator - ${CMAKE_SOURCE_DIR}/src/server/game/Misc - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders - ${ACE_INCLUDE_DIR} - ${MYSQL_INCLUDE_DIR} -) +if (USE_SCRIPTPCH) + set(PRIVATE_PCH_HEADER PrecompiledHeaders/ScriptPCH.h) +endif () # Group sources GroupSources(${CMAKE_CURRENT_SOURCE_DIR}) +add_library(scripts-interface INTERFACE) + +CollectIncludeDirectories( + ${CMAKE_CURRENT_SOURCE_DIR} + PUBLIC_INCLUDES + # Exclude + ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders) + +target_include_directories(scripts-interface + INTERFACE + ${PUBLIC_INCLUDES}) + +target_link_libraries(scripts-interface + INTERFACE + shared) + add_library(scripts STATIC ${scripts_STAT_SRCS} - ${scripts_STAT_PCH_SRC} ) +target_include_directories(scripts + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}) + +target_link_libraries(scripts + PRIVATE + scripts-interface + game-interface) + +set_target_properties(scripts + PROPERTIES + FOLDER + "server") + add_dependencies(scripts revision.h) # Generate precompiled header if (USE_SCRIPTPCH) - add_cxx_pch(scripts ${scripts_STAT_PCH_HDR} ${scripts_STAT_PCH_SRC}) + add_cxx_pch(scripts ${PRIVATE_PCH_HEADER}) endif() diff --git a/src/server/scripts/PrecompiledHeaders/ScriptPCH.cpp b/src/server/scripts/PrecompiledHeaders/ScriptPCH.cpp deleted file mode 100644 index a47ccc14fc..0000000000 --- a/src/server/scripts/PrecompiledHeaders/ScriptPCH.cpp +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU GPL v2 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-GPL2 - * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> - */ - -#include "ScriptPCH.h" - diff --git a/src/server/worldserver/CMakeLists.txt b/src/server/worldserver/CMakeLists.txt index 171e1439bf..0f5bd334f7 100644 --- a/src/server/worldserver/CMakeLists.txt +++ b/src/server/worldserver/CMakeLists.txt @@ -8,155 +8,114 @@ # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -file(GLOB_RECURSE sources_CommandLine CommandLine/*.cpp CommandLine/*.h) -file(GLOB_RECURSE sources_RemoteAccess RemoteAccess/*.cpp RemoteAccess/*.h) -file(GLOB_RECURSE sources_TCSoap TCSoap/*.cpp TCSoap/*.h) -file(GLOB_RECURSE sources_WorldThread WorldThread/*.cpp WorldThread/*.h) -file(GLOB sources_localdir *.cpp *.h) - -if (USE_COREPCH) - set(worldserver_PCH_HDR PrecompiledHeaders/worldPCH.h) - set(worldserver_PCH_SRC PrecompiledHeaders/worldPCH.cpp) -endif() - -set(worldserver_SRCS - ${worldserver_SRCS} - ${sources_CommandLine} - ${sources_RemoteAccess} - ${sources_TCSoap} - ${sources_WorldThread} - ${sources_localdir} -) +CollectSourceFiles( + ${CMAKE_CURRENT_SOURCE_DIR} + PRIVATE_SOURCES + # Exclude + ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders) if( WIN32 ) - set(worldserver_SRCS - ${worldserver_SRCS} - ${sources_windows_Debugging} - ) + list(APPEND PRIVATE_SOURCES ${sources_windows}) if ( MSVC ) - set(worldserver_SRCS - ${worldserver_SRCS} - worldserver.rc - ) + list(APPEND PRIVATE_SOURCES worldserver.rc) endif() endif() -include_directories( - ${CMAKE_BINARY_DIR} - ${CMAKE_SOURCE_DIR}/deps/g3dlite/include - ${CMAKE_SOURCE_DIR}/deps/recastnavigation/Detour/Include - ${CMAKE_SOURCE_DIR}/deps/gsoap - ${CMAKE_SOURCE_DIR}/deps/sockets/include - ${CMAKE_SOURCE_DIR}/deps/SFMT - ${CMAKE_SOURCE_DIR}/src/common/Collision/ - ${CMAKE_SOURCE_DIR}/src/common/Collision/Management - ${CMAKE_SOURCE_DIR}/src/common/Collision/Models - ${CMAKE_SOURCE_DIR}/src/common - ${CMAKE_SOURCE_DIR}/src/common/Configuration - ${CMAKE_SOURCE_DIR}/src/common/Cryptography - ${CMAKE_SOURCE_DIR}/src/common/Cryptography/Authentication - ${CMAKE_SOURCE_DIR}/src/common/Database - ${CMAKE_SOURCE_DIR}/src/common/DataStores - ${CMAKE_SOURCE_DIR}/src/common/Debugging - ${CMAKE_SOURCE_DIR}/src/common/Dynamic/LinkedReference - ${CMAKE_SOURCE_DIR}/src/common/Dynamic - ${CMAKE_SOURCE_DIR}/src/common/Logging - ${CMAKE_SOURCE_DIR}/src/common/Packets - ${CMAKE_SOURCE_DIR}/src/common/Threading - ${CMAKE_SOURCE_DIR}/src/common/Utilities - ${CMAKE_SOURCE_DIR}/src/server/game/Addons - ${game_INCLUDE_DIRS} - ${CMAKE_SOURCE_DIR}/src/server/game - ${CMAKE_SOURCE_DIR}/src/server/game/Accounts - ${CMAKE_SOURCE_DIR}/src/server/game/Achievements - ${CMAKE_SOURCE_DIR}/src/server/game/AI - ${CMAKE_SOURCE_DIR}/src/server/game/AI/CoreAI - ${CMAKE_SOURCE_DIR}/src/server/game/AI/ScriptedAI - ${CMAKE_SOURCE_DIR}/src/server/game/AI/SmartScripts - ${CMAKE_SOURCE_DIR}/src/server/game/AuctionHouse - ${CMAKE_SOURCE_DIR}/src/server/game/AuctionHouse/AuctionHouseBot - ${CMAKE_SOURCE_DIR}/src/server/game/Battlefield - ${CMAKE_SOURCE_DIR}/src/server/game/Battlefield/Zones - ${CMAKE_SOURCE_DIR}/src/server/game/Battlegrounds - ${CMAKE_SOURCE_DIR}/src/server/game/Battlegrounds/Zones - ${CMAKE_SOURCE_DIR}/src/server/game/Calendar - ${CMAKE_SOURCE_DIR}/src/server/game/Chat - ${CMAKE_SOURCE_DIR}/src/server/game/Chat/Channels - ${CMAKE_SOURCE_DIR}/src/server/game/Combat - ${CMAKE_SOURCE_DIR}/src/server/game/Conditions - ${CMAKE_SOURCE_DIR}/src/server/game/DataStores - ${CMAKE_SOURCE_DIR}/src/server/game/DungeonFinding - ${CMAKE_SOURCE_DIR}/src/server/game/Entities - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Creature - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Corpse - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/DynamicObject - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/GameObject - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Item - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Item/Container - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object/Updates - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Pet - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Player - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Totem - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Unit - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Vehicle - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Transport - ${CMAKE_SOURCE_DIR}/src/server/game/Events - ${CMAKE_SOURCE_DIR}/src/server/game/Globals - ${CMAKE_SOURCE_DIR}/src/server/game/Grids/Cells - ${CMAKE_SOURCE_DIR}/src/server/game/Grids/Notifiers - ${CMAKE_SOURCE_DIR}/src/server/game/Grids - ${CMAKE_SOURCE_DIR}/src/server/game/Groups - ${CMAKE_SOURCE_DIR}/src/server/game/Guilds - ${CMAKE_SOURCE_DIR}/src/server/game/Handlers - ${CMAKE_SOURCE_DIR}/src/server/game/Instances - ${CMAKE_SOURCE_DIR}/src/server/game/Loot - ${CMAKE_SOURCE_DIR}/src/server/game/Mails - ${CMAKE_SOURCE_DIR}/src/server/game/Maps - ${CMAKE_SOURCE_DIR}/src/server/game/Miscellaneous - ${CMAKE_SOURCE_DIR}/src/server/game/Motd - ${CMAKE_SOURCE_DIR}/src/server/game/Movement - ${CMAKE_SOURCE_DIR}/src/server/game/Movement/Spline - ${CMAKE_SOURCE_DIR}/src/server/game/Movement/MovementGenerators - ${CMAKE_SOURCE_DIR}/src/server/game/Movement/Waypoints - ${CMAKE_SOURCE_DIR}/src/server/game/OutdoorPvP - ${CMAKE_SOURCE_DIR}/src/server/game/Pools - ${CMAKE_SOURCE_DIR}/src/server/game/PrecompiledHeaders - ${CMAKE_SOURCE_DIR}/src/server/game/Quests - ${CMAKE_SOURCE_DIR}/src/server/game/Reputation - ${CMAKE_SOURCE_DIR}/src/server/game/Scripting - ${CMAKE_SOURCE_DIR}/src/server/game/Server/Protocol - ${CMAKE_SOURCE_DIR}/src/server/game/Server - ${CMAKE_SOURCE_DIR}/src/server/game/Skills - ${CMAKE_SOURCE_DIR}/src/server/game/Spells - ${CMAKE_SOURCE_DIR}/src/server/game/Spells/Auras - ${CMAKE_SOURCE_DIR}/src/server/game/Tools - ${CMAKE_SOURCE_DIR}/src/server/game/Warden - ${CMAKE_SOURCE_DIR}/src/server/game/Warden/Modules - ${CMAKE_SOURCE_DIR}/src/server/game/Weather - ${CMAKE_SOURCE_DIR}/src/server/game/World - ${CMAKE_SOURCE_DIR}/src/server/game/Misc - ${CMAKE_SOURCE_DIR}/src/server/scripts/PrecompiledHeaders - ${CMAKE_SOURCE_DIR}/src/server/authserver/Server - ${CMAKE_SOURCE_DIR}/src/server/authserver/Realms - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/CommandLine - ${CMAKE_CURRENT_SOURCE_DIR}/RemoteAccess - ${CMAKE_CURRENT_SOURCE_DIR}/TCSoap - ${CMAKE_CURRENT_SOURCE_DIR}/WorldThread - ${ACE_INCLUDE_DIR} - ${MYSQL_INCLUDE_DIR} - ${OPENSSL_INCLUDE_DIR} -) - -add_executable(worldserver - ${worldserver_SRCS} - ${worldserver_PCH_SRC} -) +if (USE_COREPCH) + set(PRIVATE_PCH_HEADER PrecompiledHeaders/worldPCH.h) +endif() # Group sources GroupSources(${CMAKE_CURRENT_SOURCE_DIR}) +add_executable(worldserver + ${PRIVATE_SOURCES}) + +CollectIncludeDirectories( + ${CMAKE_CURRENT_SOURCE_DIR} + PUBLIC_INCLUDES + # Exclude + ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders) + +target_include_directories(worldserver + PUBLIC + ${PUBLIC_INCLUDES} + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_SOURCE_DIR}/src/server/game + ${CMAKE_SOURCE_DIR}/src/server/game/Accounts + ${CMAKE_SOURCE_DIR}/src/server/game/Achievements + ${CMAKE_SOURCE_DIR}/src/server/game/AI + ${CMAKE_SOURCE_DIR}/src/server/game/AI/CoreAI + ${CMAKE_SOURCE_DIR}/src/server/game/AI/ScriptedAI + ${CMAKE_SOURCE_DIR}/src/server/game/AI/SmartScripts + ${CMAKE_SOURCE_DIR}/src/server/game/AuctionHouse + ${CMAKE_SOURCE_DIR}/src/server/game/AuctionHouse/AuctionHouseBot + ${CMAKE_SOURCE_DIR}/src/server/game/Battlefield + ${CMAKE_SOURCE_DIR}/src/server/game/Battlefield/Zones + ${CMAKE_SOURCE_DIR}/src/server/game/Battlegrounds + ${CMAKE_SOURCE_DIR}/src/server/game/Battlegrounds/Zones + ${CMAKE_SOURCE_DIR}/src/server/game/Calendar + ${CMAKE_SOURCE_DIR}/src/server/game/Chat + ${CMAKE_SOURCE_DIR}/src/server/game/Chat/Channels + ${CMAKE_SOURCE_DIR}/src/server/game/Combat + ${CMAKE_SOURCE_DIR}/src/server/game/Conditions + ${CMAKE_SOURCE_DIR}/src/server/game/DataStores + ${CMAKE_SOURCE_DIR}/src/server/game/DungeonFinding + ${CMAKE_SOURCE_DIR}/src/server/game/Entities + ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Creature + ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Corpse + ${CMAKE_SOURCE_DIR}/src/server/game/Entities/DynamicObject + ${CMAKE_SOURCE_DIR}/src/server/game/Entities/GameObject + ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Item + ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Item/Container + ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object + ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object/Updates + ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Pet + ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Player + ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Totem + ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Unit + ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Vehicle + ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Transport + ${CMAKE_SOURCE_DIR}/src/server/game/Events + ${CMAKE_SOURCE_DIR}/src/server/game/Globals + ${CMAKE_SOURCE_DIR}/src/server/game/Grids/Cells + ${CMAKE_SOURCE_DIR}/src/server/game/Grids/Notifiers + ${CMAKE_SOURCE_DIR}/src/server/game/Grids + ${CMAKE_SOURCE_DIR}/src/server/game/Groups + ${CMAKE_SOURCE_DIR}/src/server/game/Guilds + ${CMAKE_SOURCE_DIR}/src/server/game/Handlers + ${CMAKE_SOURCE_DIR}/src/server/game/Instances + ${CMAKE_SOURCE_DIR}/src/server/game/Loot + ${CMAKE_SOURCE_DIR}/src/server/game/Mails + ${CMAKE_SOURCE_DIR}/src/server/game/Maps + ${CMAKE_SOURCE_DIR}/src/server/game/Miscellaneous + ${CMAKE_SOURCE_DIR}/src/server/game/Motd + ${CMAKE_SOURCE_DIR}/src/server/game/Movement + ${CMAKE_SOURCE_DIR}/src/server/game/Movement/Spline + ${CMAKE_SOURCE_DIR}/src/server/game/Movement/MovementGenerators + ${CMAKE_SOURCE_DIR}/src/server/game/Movement/Waypoints + ${CMAKE_SOURCE_DIR}/src/server/game/OutdoorPvP + ${CMAKE_SOURCE_DIR}/src/server/game/Pools + ${CMAKE_SOURCE_DIR}/src/server/game/PrecompiledHeaders + ${CMAKE_SOURCE_DIR}/src/server/game/Quests + ${CMAKE_SOURCE_DIR}/src/server/game/Reputation + ${CMAKE_SOURCE_DIR}/src/server/game/Scripting + ${CMAKE_SOURCE_DIR}/src/server/game/Server/Protocol + ${CMAKE_SOURCE_DIR}/src/server/game/Server + ${CMAKE_SOURCE_DIR}/src/server/game/Skills + ${CMAKE_SOURCE_DIR}/src/server/game/Spells + ${CMAKE_SOURCE_DIR}/src/server/game/Spells/Auras + ${CMAKE_SOURCE_DIR}/src/server/game/Tools + ${CMAKE_SOURCE_DIR}/src/server/game/Warden + ${CMAKE_SOURCE_DIR}/src/server/game/Warden/Modules + ${CMAKE_SOURCE_DIR}/src/server/game/Weather + ${CMAKE_SOURCE_DIR}/src/server/game/World + ${CMAKE_SOURCE_DIR}/src/server/game/Misc + ${CMAKE_SOURCE_DIR}/src/server/scripts/PrecompiledHeaders + ${CMAKE_SOURCE_DIR}/src/server/authserver/Server + ${CMAKE_SOURCE_DIR}/src/server/authserver/Realms) + if( NOT WIN32 ) set_target_properties(worldserver PROPERTIES COMPILE_DEFINITIONS _TRINITY_CORE_CONFIG="${CONF_DIR}/worldserver.conf" @@ -172,23 +131,18 @@ endif() set_target_properties(worldserver PROPERTIES LINK_FLAGS "${worldserver_LINK_FLAGS}") target_link_libraries(worldserver - game - shared - scripts - collision - g3dlib - gsoap - Detour - ${GPERFTOOLS_LIBRARIES} - ${JEMALLOC_LIBRARY} - ${READLINE_LIBRARY} - ${TERMCAP_LIBRARY} - ${ACE_LIBRARY} - ${MYSQL_LIBRARY} - ${OPENSSL_LIBRARIES} - ${ZLIB_LIBRARIES} - ${CMAKE_THREAD_LIBS_INIT} -) + PUBLIC + game + shared + scripts + gsoap + readline + ${GPERFTOOLS_LIBRARIES}) + +set_target_properties(worldserver + PROPERTIES + FOLDER + "server") if( WIN32 ) if ( MSVC ) @@ -214,7 +168,7 @@ install(FILES worldserver.conf.dist DESTINATION ${CONF_DIR}) # Generate precompiled header if( USE_COREPCH ) - add_cxx_pch(worldserver ${worldserver_PCH_HDR} ${worldserver_PCH_SRC}) + add_cxx_pch(worldserver ${PRIVATE_PCH_HEADER}) endif() # handle config file diff --git a/src/server/worldserver/PrecompiledHeaders/worldPCH.cpp b/src/server/worldserver/PrecompiledHeaders/worldPCH.cpp deleted file mode 100644 index 99c2400ecc..0000000000 --- a/src/server/worldserver/PrecompiledHeaders/worldPCH.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "worldPCH.h" diff --git a/src/tools/map_extractor/CMakeLists.txt b/src/tools/map_extractor/CMakeLists.txt index 7d6ec21a52..db10f3a486 100644 --- a/src/tools/map_extractor/CMakeLists.txt +++ b/src/tools/map_extractor/CMakeLists.txt @@ -9,35 +9,41 @@ # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -file(GLOB_RECURSE sources *.cpp *.h) - -set(include_Dirs - ${CMAKE_SOURCE_DIR}/src/common/Utilities - ${CMAKE_SOURCE_DIR}/src/common - ${CMAKE_SOURCE_DIR}/deps/libmpq - ${CMAKE_SOURCE_DIR}/deps/g3dlite/include - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/loadlib -) - -if( WIN32 ) - set(include_Dirs - ${include_Dirs} - ${CMAKE_SOURCE_DIR}/deps/libmpq/win - ) -endif() - -include_directories(${include_Dirs}) +CollectSourceFiles( + ${CMAKE_CURRENT_SOURCE_DIR} + PRIVATE_SOURCES) add_executable(mapextractor - ${sources} + ${PRIVATE_SOURCES} ) + +target_include_directories(mapextractor + PUBLIC + ${CMAKE_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/loadlib) target_link_libraries(mapextractor - mpq - ${BZIP2_LIBRARIES} - ${ZLIB_LIBRARIES} -) + PUBLIC + shared + mpq) + +CollectIncludeDirectories( + ${CMAKE_CURRENT_SOURCE_DIR} + PUBLIC_INCLUDES) + +# Group sources +GroupSources(${CMAKE_CURRENT_SOURCE_DIR}) + +target_include_directories(mapextractor + PUBLIC + ${PUBLIC_INCLUDES} + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}) + +set_target_properties(mapextractor + PROPERTIES + FOLDER + "tools") if( UNIX ) install(TARGETS mapextractor DESTINATION bin) diff --git a/src/tools/mesh_extractor/CMakeLists.txt b/src/tools/mesh_extractor/CMakeLists.txt index 7c330adcee..f290810d84 100644 --- a/src/tools/mesh_extractor/CMakeLists.txt +++ b/src/tools/mesh_extractor/CMakeLists.txt @@ -9,39 +9,35 @@ # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -file(GLOB_RECURSE meshExtract_Sources *.cpp *.h) - -set(include_Base - ${CMAKE_BINARY_DIR} - ${CMAKE_SOURCE_DIR}/src/common - ${CMAKE_SOURCE_DIR}/deps/recastnavigation/Recast - ${CMAKE_SOURCE_DIR}/deps/recastnavigation/Detour - ${CMAKE_SOURCE_DIR}/deps/libmpq - ${CMAKE_SOURCE_DIR}/deps/g3dlite/include - ${ACE_INCLUDE_DIR} +CollectSourceFiles( ${CMAKE_CURRENT_SOURCE_DIR} -) + PRIVATE_SOURCES) -if( WIN32 ) - set(include_Base - ${include_Base} - ${CMAKE_SOURCE_DIR}/deps/libmpq/win - ) -endif() +add_executable(MeshExtractor ${PRIVATE_SOURCES}) -include_directories(${include_Base}) +target_link_libraries(MeshExtractor + PUBLIC + shared + Recast + mpq) -add_executable(MeshExtractor ${meshExtract_Sources}) +# Group sources +GroupSources(${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(MeshExtractor - g3dlib - mpq - Recast - Detour - ${BZIP2_LIBRARIES} - ${ZLIB_LIBRARIES} - ${ACE_LIBRARY} -) +CollectIncludeDirectories( + ${CMAKE_CURRENT_SOURCE_DIR} + PUBLIC_INCLUDES) + +target_include_directories(MeshExtractor + PUBLIC + ${PUBLIC_INCLUDES} + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}) + +set_target_properties(MeshExtractor + PROPERTIES + FOLDER + "tools") if( UNIX ) install(TARGETS MeshExtractor DESTINATION bin) diff --git a/src/tools/mmaps_generator/CMakeLists.txt b/src/tools/mmaps_generator/CMakeLists.txt index 6c3a932b9a..f7e3dc9304 100644 --- a/src/tools/mmaps_generator/CMakeLists.txt +++ b/src/tools/mmaps_generator/CMakeLists.txt @@ -8,130 +8,36 @@ # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -file(GLOB_RECURSE mmap_gen_sources *.cpp *.h) +CollectSourceFiles( + ${CMAKE_CURRENT_SOURCE_DIR} + PRIVATE_SOURCES) -set(mmap_gen_Includes - ${CMAKE_BINARY_DIR} - ${ACE_INCLUDE_DIR} - ${MYSQL_INCLUDE_DIR} - ${OPENSSL_INCLUDE_DIR} - ${CMAKE_SOURCE_DIR}/deps/libmpq - ${CMAKE_SOURCE_DIR}/deps/zlib - ${CMAKE_SOURCE_DIR}/deps/bzip2 - ${CMAKE_SOURCE_DIR}/deps/g3dlite/include - ${CMAKE_SOURCE_DIR}/deps/recastnavigation/Recast - ${CMAKE_SOURCE_DIR}/deps/recastnavigation/Detour - ${CMAKE_SOURCE_DIR}/src/common/Collision/ - ${CMAKE_SOURCE_DIR}/src/common/Collision/Management - ${CMAKE_SOURCE_DIR}/src/common/Collision/Maps - ${CMAKE_SOURCE_DIR}/src/common/Collision/Models - ${CMAKE_SOURCE_DIR}/src/common - ${CMAKE_SOURCE_DIR}/src/common/Configuration - ${CMAKE_SOURCE_DIR}/src/common/Cryptography - ${CMAKE_SOURCE_DIR}/src/common/Cryptography/Authentication - ${CMAKE_SOURCE_DIR}/src/common/Database - ${CMAKE_SOURCE_DIR}/src/common/DataStores - ${CMAKE_SOURCE_DIR}/src/common/Debugging - ${CMAKE_SOURCE_DIR}/src/common/Dynamic/LinkedReference - ${CMAKE_SOURCE_DIR}/src/common/Dynamic - ${CMAKE_SOURCE_DIR}/src/common/Logging - ${CMAKE_SOURCE_DIR}/src/common/Packets - ${CMAKE_SOURCE_DIR}/src/common/Threading - ${CMAKE_SOURCE_DIR}/src/common/Utilities - ${CMAKE_SOURCE_DIR}/src/server/game/Addons - ${CMAKE_SOURCE_DIR}/src/server/game - ${CMAKE_SOURCE_DIR}/src/server/game/Accounts - ${CMAKE_SOURCE_DIR}/src/server/game/Achievements - ${CMAKE_SOURCE_DIR}/src/server/game/AI - ${CMAKE_SOURCE_DIR}/src/server/game/AI/CoreAI - ${CMAKE_SOURCE_DIR}/src/server/game/AI/ScriptedAI - ${CMAKE_SOURCE_DIR}/src/server/game/AI/SmartScripts - ${CMAKE_SOURCE_DIR}/src/server/game/AuctionHouse - ${CMAKE_SOURCE_DIR}/src/server/game/AuctionHouse/AuctionHouseBot - ${CMAKE_SOURCE_DIR}/src/server/game/Battlefield - ${CMAKE_SOURCE_DIR}/src/server/game/Battlefield/Zones - ${CMAKE_SOURCE_DIR}/src/server/game/Battlegrounds - ${CMAKE_SOURCE_DIR}/src/server/game/Battlegrounds/Zones - ${CMAKE_SOURCE_DIR}/src/server/game/Calendar - ${CMAKE_SOURCE_DIR}/src/server/game/Chat - ${CMAKE_SOURCE_DIR}/src/server/game/Chat/Channels - ${CMAKE_SOURCE_DIR}/src/server/game/Combat - ${CMAKE_SOURCE_DIR}/src/server/game/Conditions - ${CMAKE_SOURCE_DIR}/src/server/game/DataStores - ${CMAKE_SOURCE_DIR}/src/server/game/DungeonFinding - ${CMAKE_SOURCE_DIR}/src/server/game/Entities - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Creature - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Corpse - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/DynamicObject - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/GameObject - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Item - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Item/Container - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Object/Updates - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Pet - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Player - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Totem - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Unit - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Vehicle - ${CMAKE_SOURCE_DIR}/src/server/game/Entities/Transport - ${CMAKE_SOURCE_DIR}/src/server/game/Events - ${CMAKE_SOURCE_DIR}/src/server/game/Globals - ${CMAKE_SOURCE_DIR}/src/server/game/Grids/Cells - ${CMAKE_SOURCE_DIR}/src/server/game/Grids/Notifiers - ${CMAKE_SOURCE_DIR}/src/server/game/Grids - ${CMAKE_SOURCE_DIR}/src/server/game/Groups - ${CMAKE_SOURCE_DIR}/src/server/game/Guilds - ${CMAKE_SOURCE_DIR}/src/server/game/Handlers - ${CMAKE_SOURCE_DIR}/src/server/game/Instances - ${CMAKE_SOURCE_DIR}/src/server/game/Loot - ${CMAKE_SOURCE_DIR}/src/server/game/Mails - ${CMAKE_SOURCE_DIR}/src/server/game/Maps - ${CMAKE_SOURCE_DIR}/src/server/game/Miscellaneous - ${CMAKE_SOURCE_DIR}/src/server/game/Movement - ${CMAKE_SOURCE_DIR}/src/server/game/Movement/MovementGenerators - ${CMAKE_SOURCE_DIR}/src/server/game/Movement/Waypoints - ${CMAKE_SOURCE_DIR}/src/server/game/OutdoorPvP - ${CMAKE_SOURCE_DIR}/src/server/game/Pools - ${CMAKE_SOURCE_DIR}/src/server/game/PrecompiledHeaders - ${CMAKE_SOURCE_DIR}/src/server/game/Quests - ${CMAKE_SOURCE_DIR}/src/server/game/Reputation - ${CMAKE_SOURCE_DIR}/src/server/game/Scripting - ${CMAKE_SOURCE_DIR}/src/server/game/Server/Protocol - ${CMAKE_SOURCE_DIR}/src/server/game/Server - ${CMAKE_SOURCE_DIR}/src/server/game/Skills - ${CMAKE_SOURCE_DIR}/src/server/game/Spells - ${CMAKE_SOURCE_DIR}/src/server/game/Spells/Auras - ${CMAKE_SOURCE_DIR}/src/server/game/Tools - ${CMAKE_SOURCE_DIR}/src/server/game/Warden - ${CMAKE_SOURCE_DIR}/src/server/game/Warden/Modules - ${CMAKE_SOURCE_DIR}/src/server/game/Weather - ${CMAKE_SOURCE_DIR}/src/server/game/World -) +add_executable(mmaps_generator ${PRIVATE_SOURCES}) -if( WIN32 ) - set(mmap_gen_Includes - ${mmap_gen_Includes} - ${CMAKE_SOURCE_DIR}/deps/libmpq/win - ) -endif() +target_link_libraries(mmaps_generator + PUBLIC + shared + Recast + mpq) -include_directories(${mmap_gen_Includes}) +# Group sources +GroupSources(${CMAKE_CURRENT_SOURCE_DIR}) -add_executable(mmaps_generator ${mmap_gen_sources}) +CollectIncludeDirectories( + ${CMAKE_CURRENT_SOURCE_DIR} + PUBLIC_INCLUDES) -target_link_libraries(mmaps_generator - shared - collision - g3dlib - Recast - Detour - ${ACE_LIBRARY} - ${MYSQL_LIBRARY} - ${OPENSSL_LIBRARIES} - ${BZIP2_LIBRARIES} - ${ZLIB_LIBRARIES} - ${CMAKE_THREAD_LIBS_INIT} -) +target_include_directories(mmaps_generator + PUBLIC + ${PUBLIC_INCLUDES} + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_SOURCE_DIR}/src/server/game/Conditions) + +set_target_properties(mmaps_generator + PROPERTIES + 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 f15181217f..790d834f04 100644 --- a/src/tools/vmap4_assembler/CMakeLists.txt +++ b/src/tools/vmap4_assembler/CMakeLists.txt @@ -9,17 +9,6 @@ # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -include_directories( - ${CMAKE_SOURCE_DIR}/deps/g3dlite/include - ${CMAKE_SOURCE_DIR}/src/common - ${CMAKE_SOURCE_DIR}/src/common/Debugging - ${CMAKE_SOURCE_DIR}/src/common/Collision/ - ${CMAKE_SOURCE_DIR}/src/common/Collision/Maps - ${CMAKE_SOURCE_DIR}/src/common/Collision/Models - ${ACE_INCLUDE_DIR} - ${ZLIB_INCLUDE_DIR} -) - add_executable(vmap4assembler VMapAssembler.cpp) if(CMAKE_SYSTEM_NAME MATCHES "Darwin") @@ -27,10 +16,16 @@ if(CMAKE_SYSTEM_NAME MATCHES "Darwin") endif() target_link_libraries(vmap4assembler - collision - g3dlib - ${ZLIB_LIBRARIES} -) + shared + zlib) + +# Group sources +GroupSources(${CMAKE_CURRENT_SOURCE_DIR}) + +set_target_properties(vmap4assembler + PROPERTIES + 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 f84093b39d..4dc52004f4 100644 --- a/src/tools/vmap4_extractor/CMakeLists.txt +++ b/src/tools/vmap4_extractor/CMakeLists.txt @@ -9,28 +9,33 @@ # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -file(GLOB_RECURSE sources *.cpp *.h) +CollectSourceFiles( + ${CMAKE_CURRENT_SOURCE_DIR} + PRIVATE_SOURCES) -set(include_Dirs - ${CMAKE_SOURCE_DIR}/deps/libmpq -) +add_executable(vmap4extractor ${PRIVATE_SOURCES}) -if( WIN32 ) - set(include_Dirs - ${include_Dirs} - ${CMAKE_SOURCE_DIR}/deps/libmpq/win - ) -endif() +target_link_libraries(vmap4extractor + PUBLIC + mpq) -include_directories(${include_Dirs}) +# Group sources +GroupSources(${CMAKE_CURRENT_SOURCE_DIR}) -add_executable(vmap4extractor ${sources}) +CollectIncludeDirectories( + ${CMAKE_CURRENT_SOURCE_DIR} + PUBLIC_INCLUDES) -target_link_libraries(vmap4extractor - mpq - ${BZIP2_LIBRARIES} - ${ZLIB_LIBRARIES} -) +target_include_directories(vmap4extractor + PUBLIC + ${PUBLIC_INCLUDES} + PRIVATE + ${CMAKE_CURRENT_BINARY_DIR}) + +set_target_properties(vmap4extractor + PROPERTIES + FOLDER + "tools") if( UNIX ) install(TARGETS vmap4extractor DESTINATION bin) |