summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKargatum <dowlandtop@yandex.com>2019-04-02 03:41:08 +0700
committerFrancesco Borzì <borzifrancesco@gmail.com>2019-04-01 22:41:08 +0200
commiteae9affec99181cec14fa4fd0449bb9f8e02565f (patch)
tree26b106ea2f6268cd2e4e75b63de6e4a0322aaead /src
parent0f174eff0142c60d3c631c23b5348d3f43fd444b (diff)
feat(Cmake): Rewrite build and use inherited dependencies (#1652)
Diffstat (limited to 'src')
-rw-r--r--src/cmake/macros/AutoCollect.cmake72
-rw-r--r--src/cmake/macros/FindPCHSupport.cmake131
-rw-r--r--src/cmake/macros/FindReadline.cmake18
-rw-r--r--src/cmake/platform/win/settings.cmake2
-rw-r--r--src/common/CMakeLists.txt114
-rw-r--r--src/common/Collision/CMakeLists.txt93
-rw-r--r--src/common/Collision/PrecompiledHeaders/collisionPCH.cpp1
-rw-r--r--src/common/Collision/PrecompiledHeaders/collisionPCH.h9
-rw-r--r--src/common/PrecompiledHeaders/sharedPCH.cpp1
-rw-r--r--src/genrev/CMakeLists.txt5
-rw-r--r--src/server/authserver/CMakeLists.txt87
-rw-r--r--src/server/authserver/PrecompiledHeaders/authPCH.cpp1
-rw-r--r--src/server/game/CMakeLists.txt242
-rw-r--r--src/server/game/PrecompiledHeaders/gamePCH.cpp1
-rw-r--r--src/server/scripts/CMakeLists.txt148
-rw-r--r--src/server/scripts/PrecompiledHeaders/ScriptPCH.cpp7
-rw-r--r--src/server/worldserver/CMakeLists.txt268
-rw-r--r--src/server/worldserver/PrecompiledHeaders/worldPCH.cpp1
-rw-r--r--src/tools/map_extractor/CMakeLists.txt54
-rw-r--r--src/tools/mesh_extractor/CMakeLists.txt52
-rw-r--r--src/tools/mmaps_generator/CMakeLists.txt144
-rw-r--r--src/tools/vmap4_assembler/CMakeLists.txt25
-rw-r--r--src/tools/vmap4_extractor/CMakeLists.txt39
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)