mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-17 02:50:29 +00:00
feat(Cmake): Rewrite build and use inherited dependencies (#1652)
This commit is contained in:
committed by
Francesco Borzì
parent
0f174eff01
commit
eae9affec9
@@ -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
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
#include "worldPCH.h"
|
||||
Reference in New Issue
Block a user