mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-19 11:55:43 +00:00
feat(Cmake): Rewrite build and use inherited dependencies (#1652)
This commit is contained in:
committed by
Francesco Borzì
parent
0f174eff01
commit
eae9affec9
@@ -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}
|
||||
)
|
||||
|
||||
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
|
||||
${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}
|
||||
)
|
||||
|
||||
# Group sources
|
||||
GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
add_library(game-interface INTERFACE)
|
||||
|
||||
CollectIncludeDirectories(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
PUBLIC_INCLUDES
|
||||
# Exclude
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders)
|
||||
|
||||
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)
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
#include "gamePCH.h"
|
||||
Reference in New Issue
Block a user