summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/core_build.yml6
-rw-r--r--.github/workflows/core_matrix_build.yml6
-rw-r--r--.github/workflows/core_modules_build.yml6
-rw-r--r--.github/workflows/windows_build.yml10
-rw-r--r--CMakeLists.txt22
-rw-r--r--apps/ci/ci-conf-core.sh (renamed from apps/ci/ci-conf.sh)7
-rw-r--r--apps/ci/ci-conf-tools.sh68
-rw-r--r--apps/ci/ci-dry-run.sh28
-rwxr-xr-xapps/ci/ci-worldserver-dry-run.sh11
-rw-r--r--apps/compiler/includes/functions.sh22
-rw-r--r--apps/docker/Dockerfile12
-rw-r--r--conf/dist/config.cmake51
-rw-r--r--conf/dist/config.sh35
-rw-r--r--deps/CMakeLists.txt28
-rw-r--r--src/CMakeLists.txt18
-rw-r--r--src/cmake/macros/ConfigInstall.cmake44
-rw-r--r--src/cmake/macros/ConfigureApplications.cmake108
-rw-r--r--src/cmake/macros/ConfigureTools.cmake110
-rw-r--r--src/cmake/showoptions.cmake25
-rw-r--r--src/common/CMakeLists.txt22
-rw-r--r--src/common/Logging/Log.h2
-rw-r--r--src/server/CMakeLists.txt29
-rw-r--r--src/server/apps/CMakeLists.txt198
-rw-r--r--src/server/apps/authserver/Authentication/AuthCodes.cpp (renamed from src/server/authserver/Authentication/AuthCodes.cpp)0
-rw-r--r--src/server/apps/authserver/Authentication/AuthCodes.h (renamed from src/server/authserver/Authentication/AuthCodes.h)0
-rw-r--r--src/server/apps/authserver/Main.cpp (renamed from src/server/authserver/Main.cpp)80
-rw-r--r--src/server/apps/authserver/PrecompiledHeaders/authserverPCH.h (renamed from src/server/authserver/PrecompiledHeaders/authPCH.h)0
-rw-r--r--src/server/apps/authserver/Server/AuthSession.cpp (renamed from src/server/authserver/Server/AuthSession.cpp)0
-rw-r--r--src/server/apps/authserver/Server/AuthSession.h (renamed from src/server/authserver/Server/AuthSession.h)0
-rw-r--r--src/server/apps/authserver/Server/AuthSocketMgr.h (renamed from src/server/authserver/Server/AuthSocketMgr.h)0
-rw-r--r--src/server/apps/authserver/authserver.conf.dist (renamed from src/server/authserver/authserver.conf.dist)0
-rw-r--r--src/server/apps/authserver/authserver.ico (renamed from src/server/authserver/authserver.ico)bin85182 -> 85182 bytes
-rw-r--r--src/server/apps/authserver/authserver.rc (renamed from src/server/authserver/authserver.rc)0
-rw-r--r--src/server/apps/authserver/resource.h (renamed from src/server/authserver/resource.h)0
-rw-r--r--src/server/apps/worldserver/ACSoap/ACSoap.cpp (renamed from src/server/worldserver/ACSoap/ACSoap.cpp)0
-rw-r--r--src/server/apps/worldserver/ACSoap/ACSoap.h (renamed from src/server/worldserver/ACSoap/ACSoap.h)0
-rw-r--r--src/server/apps/worldserver/CommandLine/CliRunnable.cpp (renamed from src/server/worldserver/CommandLine/CliRunnable.cpp)0
-rw-r--r--src/server/apps/worldserver/CommandLine/CliRunnable.h (renamed from src/server/worldserver/CommandLine/CliRunnable.h)0
-rw-r--r--src/server/apps/worldserver/Main.cpp (renamed from src/server/worldserver/Main.cpp)137
-rw-r--r--src/server/apps/worldserver/PrecompiledHeaders/worldserverPCH.h (renamed from src/server/worldserver/PrecompiledHeaders/worldPCH.h)0
-rw-r--r--src/server/apps/worldserver/RemoteAccess/RASession.cpp (renamed from src/server/worldserver/RemoteAccess/RASession.cpp)0
-rw-r--r--src/server/apps/worldserver/RemoteAccess/RASession.h (renamed from src/server/worldserver/RemoteAccess/RASession.h)0
-rw-r--r--src/server/apps/worldserver/resource.h (renamed from src/server/worldserver/resource.h)0
-rw-r--r--src/server/apps/worldserver/worldserver.conf.dist (renamed from src/server/worldserver/worldserver.conf.dist)0
-rw-r--r--src/server/apps/worldserver/worldserver.ico (renamed from src/server/worldserver/worldserver.ico)bin85182 -> 85182 bytes
-rw-r--r--src/server/apps/worldserver/worldserver.rc (renamed from src/server/worldserver/worldserver.rc)0
-rw-r--r--src/server/authserver/CMakeLists.txt77
-rw-r--r--src/server/database/Database/MySQLConnection.cpp4
-rw-r--r--src/server/scripts/CMakeLists.txt23
-rw-r--r--src/server/shared/SharedDefines.h1
-rw-r--r--src/server/worldserver/CMakeLists.txt91
-rw-r--r--src/tools/CMakeLists.txt156
-rw-r--r--src/tools/map_extractor/CMakeLists.txt55
-rw-r--r--src/tools/mmaps_generator/CMakeLists.txt50
-rw-r--r--src/tools/vmap4_assembler/CMakeLists.txt38
-rw-r--r--src/tools/vmap4_extractor/CMakeLists.txt46
56 files changed, 1005 insertions, 621 deletions
diff --git a/.github/workflows/core_build.yml b/.github/workflows/core_build.yml
index 6fbd6e4e8e..93cad079dd 100644
--- a/.github/workflows/core_build.yml
+++ b/.github/workflows/core_build.yml
@@ -37,15 +37,13 @@ jobs:
env:
CONTINUOUS_INTEGRATION: true
- name: Create conf/config.sh
- run: source ./apps/ci/ci-conf.sh
+ run: source ./apps/ci/ci-conf-core.sh
- name: Process pending sql
run: bash bin/acore-db-pendings
- - name: Import db
- run: source ./apps/ci/ci-import-db.sh
- name: Build
run: source ./apps/ci/ci-compile.sh
- name: Dry run
- run: source ./apps/ci/ci-worldserver-dry-run.sh
+ run: source ./apps/ci/ci-dry-run.sh worldserver
- name: Check startup errors
run: source ./apps/ci/ci-error-check.sh
- name: Run unit tests
diff --git a/.github/workflows/core_matrix_build.yml b/.github/workflows/core_matrix_build.yml
index 00b3c770d1..5f7f9658f5 100644
--- a/.github/workflows/core_matrix_build.yml
+++ b/.github/workflows/core_matrix_build.yml
@@ -49,13 +49,11 @@ jobs:
env:
CONTINUOUS_INTEGRATION: true
- name: Create conf/config.sh
- run: source ./apps/ci/ci-conf.sh
- - name: Import db
- run: source ./apps/ci/ci-import-db.sh
+ run: source ./apps/ci/ci-conf-core.sh
- name: Build
run: source ./apps/ci/ci-compile.sh
- name: Dry run
- run: source ./apps/ci/ci-worldserver-dry-run.sh
+ run: source ./apps/ci/ci-dry-run.sh worldserver
- name: Check startup errors
run: source ./apps/ci/ci-error-check.sh
- name: Run unit tests
diff --git a/.github/workflows/core_modules_build.yml b/.github/workflows/core_modules_build.yml
index da71c68d32..4b932b04fd 100644
--- a/.github/workflows/core_modules_build.yml
+++ b/.github/workflows/core_modules_build.yml
@@ -42,13 +42,11 @@ jobs:
env:
CONTINUOUS_INTEGRATION: true
- name: Create conf/config.sh
- run: source ./apps/ci/ci-conf.sh
- - name: Import db
- run: source ./apps/ci/ci-import-db.sh
+ run: source ./apps/ci/ci-conf-core.sh
- name: Build
run: source ./apps/ci/ci-compile.sh
- name: Dry run
- run: source ./apps/ci/ci-worldserver-dry-run.sh
+ run: source ./apps/ci/ci-dry-run.sh worldserver
- name: Check startup errors
run: source ./apps/ci/ci-error-check.sh
- name: Run unit tests
diff --git a/.github/workflows/windows_build.yml b/.github/workflows/windows_build.yml
index 013ac8625b..44fb899307 100644
--- a/.github/workflows/windows_build.yml
+++ b/.github/workflows/windows_build.yml
@@ -15,16 +15,16 @@ jobs:
strategy:
fail-fast: false
matrix:
- os: [windows-2019]
+ os: [windows-latest]
runs-on: ${{ matrix.os }}
- name: ${{ matrix.os }}-MSVC16
+ name: ${{ matrix.os }}-${{ matrix.compiler }}
env:
- BOOST_ROOT: C:\local\boost_1_74_0
+ BOOST_ROOT: C:\local\boost_1_79_0
if: github.repository == 'azerothcore/azerothcore-wotlk' && (github.ref == 'refs/heads/master' || contains(github.event.pull_request.labels.*.name, 'run-build') || github.event.label.name == 'run-build')
steps:
- uses: actions/checkout@v2
- name: Configure OS
- run: choco install --no-progress openssl boost-msvc-14.2
+ run: choco install --no-progress openssl boost-msvc-14.3
- name: Build
shell: bash
run: |
@@ -39,5 +39,5 @@ jobs:
cp "/c/Program Files/OpenSSL-Win64/bin/libssl-1_1-x64.dll" "build/bin/Release/"
- uses: actions/upload-artifact@v2
with:
- name: windows-2019-MSVC16-release
+ name: windows-2022-MSVC17-release
path: build/bin/Release
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f0b701bf61..ea6bdb9713 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -41,6 +41,8 @@ include(CheckCXXSourceRuns)
include(CheckIncludeFiles)
include(ConfigureScripts)
include(ConfigureModules)
+include(ConfigureApplications)
+include(ConfigureTools)
# some utils for cmake
include(deps/acore/cmake-utils/utils.cmake)
@@ -96,9 +98,6 @@ include(ConfigInstall)
CU_RUN_HOOK("AFTER_LOAD_CMAKE_MODULES")
-# basic packagesearching and setup (further support will be needed, this is a preliminary release!)
-set(ACE_EXPECTED_VERSION 6.0.3)
-
find_package(PCHSupport)
find_package(MySQL REQUIRED)
@@ -121,14 +120,7 @@ include(src/cmake/showoptions.cmake)
#
add_subdirectory(deps)
-
-if (SERVERS OR TOOLS)
- add_subdirectory(src/common)
-endif()
-
-if (TOOLS)
- add_subdirectory(src/tools)
-endif()
+add_subdirectory(src/common)
#
# Loading application sources
@@ -139,12 +131,14 @@ CU_RUN_HOOK("BEFORE_SRC_LOAD")
# add core sources
add_subdirectory(src)
-# add modules sources
-add_subdirectory(modules)
+if (BUILD_APPLICATION_WORLDSERVER)
+ # add modules sources
+ add_subdirectory(modules)
+endif()
CU_RUN_HOOK("AFTER_SRC_LOAD")
-if( BUILD_TESTING )
+if (BUILD_TESTING AND BUILD_APPLICATION_WORLDSERVER)
# we use these flags to get code coverage
set(UNIT_TEST_CXX_FLAGS "-fprofile-arcs -ftest-coverage -fno-inline")
diff --git a/apps/ci/ci-conf.sh b/apps/ci/ci-conf-core.sh
index 4f9ef6fda0..31ed0a4baf 100644
--- a/apps/ci/ci-conf.sh
+++ b/apps/ci/ci-conf-core.sh
@@ -7,10 +7,9 @@ MTHREADS=$(($(grep -c ^processor /proc/cpuinfo) + 2))
CWARNINGS=ON
CDEBUG=OFF
CTYPE=Release
+CTOOLS_BUILD=all
CSCRIPTS=static
CBUILD_TESTING=ON
-CSERVERS=ON
-CTOOLS=ON
CSCRIPTPCH=OFF
CCOREPCH=OFF
CCUSTOMOPTIONS='-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_FLAGS="-Werror" -DCMAKE_CXX_FLAGS="-Werror"'
@@ -19,10 +18,6 @@ DB_AUTH_CONF="MYSQL_USER='root'; MYSQL_PASS='root'; MYSQL_HOST='localhost';"
DB_WORLD_CONF="MYSQL_USER='root'; MYSQL_PASS='root'; MYSQL_HOST='localhost';"
CONFIG_SH
-if [[ $ENABLE_CPP_20 -eq 1 ]]; then
- echo "CUSE_CPP_20=ON" >> ./conf/config.sh
-fi
-
case $COMPILER in
# this is in order to use the "default" gcc version of the OS, without forcing a specific version
diff --git a/apps/ci/ci-conf-tools.sh b/apps/ci/ci-conf-tools.sh
new file mode 100644
index 0000000000..8ae787f04f
--- /dev/null
+++ b/apps/ci/ci-conf-tools.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+
+set -e
+
+cat >>conf/config.sh <<CONFIG_SH
+MTHREADS=$(($(grep -c ^processor /proc/cpuinfo) + 2))
+CWARNINGS=ON
+CDEBUG=OFF
+CTYPE=Release
+CSCRIPTS=static
+CAPPS_BUILD=none
+CTOOLS_BUILD=maps-only
+CSCRIPTPCH=OFF
+CCOREPCH=OFF
+CCUSTOMOPTIONS='-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_FLAGS="-Werror" -DCMAKE_CXX_FLAGS="-Werror"'
+CONFIG_SH
+
+case $COMPILER in
+
+ # this is in order to use the "default" gcc version of the OS, without forcing a specific version
+ "gcc" )
+ time sudo apt-get install -y gcc g++
+ echo "CCOMPILERC=\"gcc\"" >> ./conf/config.sh
+ echo "CCOMPILERCXX=\"g++\"" >> ./conf/config.sh
+ ;;
+
+ "gcc8" )
+ time sudo apt-get install -y gcc-8 g++-8
+ echo "CCOMPILERC=\"gcc-8\"" >> ./conf/config.sh
+ echo "CCOMPILERCXX=\"g++-8\"" >> ./conf/config.sh
+ ;;
+
+ "gcc10" )
+ time sudo apt-get install -y gcc-10 g++-10
+ echo "CCOMPILERC=\"gcc-10\"" >> ./conf/config.sh
+ echo "CCOMPILERCXX=\"g++-10\"" >> ./conf/config.sh
+ ;;
+
+ # this is in order to use the "default" clang version of the OS, without forcing a specific version
+ "clang" )
+ time sudo apt-get install -y clang
+ echo "CCOMPILERC=\"clang\"" >> ./conf/config.sh
+ echo "CCOMPILERCXX=\"clang++\"" >> ./conf/config.sh
+ ;;
+
+ "clang10" )
+ time sudo apt-get install -y clang-10
+ echo "CCOMPILERC=\"clang-10\"" >> ./conf/config.sh
+ echo "CCOMPILERCXX=\"clang++-10\"" >> ./conf/config.sh
+ ;;
+
+ "clang11" )
+ time sudo apt-get install -y clang-11
+ echo "CCOMPILERC=\"clang-11\"" >> ./conf/config.sh
+ echo "CCOMPILERCXX=\"clang++-11\"" >> ./conf/config.sh
+ ;;
+
+ "clang12" )
+ time sudo apt-get install -y clang-12
+ echo "CCOMPILERC=\"clang-12\"" >> ./conf/config.sh
+ echo "CCOMPILERCXX=\"clang++-12\"" >> ./conf/config.sh
+ ;;
+
+ * )
+ echo "Unknown compiler $COMPILER"
+ exit 1
+ ;;
+esac
diff --git a/apps/ci/ci-dry-run.sh b/apps/ci/ci-dry-run.sh
new file mode 100644
index 0000000000..2d234ea9a7
--- /dev/null
+++ b/apps/ci/ci-dry-run.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+set -e
+
+# Start mysql
+sudo systemctl start mysql
+
+APP_NAME=$1
+
+echo "LoginDatabaseInfo = \"localhost;3306;root;root;acore_auth\"" >> ./env/dist/etc/$APP_NAME.conf
+
+if [[ $APP_NAME != "authserver" ]]; then
+ {
+ echo "WorldDatabaseInfo = \"localhost;3306;root;root;acore_world\""
+ echo "CharacterDatabaseInfo = \"localhost;3306;root;root;acore_characters\""
+ } >> ./env/dist/etc/$APP_NAME.conf
+fi
+
+if [[ $APP_NAME == "worldserver" ]]; then
+ echo "DataDir = \"../data/\"" >> ./env/dist/etc/$APP_NAME.conf
+
+ git clone --depth=1 --branch=master --single-branch https://github.com/ac-data/ac-data.git ./env/dist/data
+fi
+
+(cd ./env/dist/bin/ && timeout 5m ./$APP_NAME -dry-run)
+
+# Stop mysql
+sudo systemctl stop mysql
diff --git a/apps/ci/ci-worldserver-dry-run.sh b/apps/ci/ci-worldserver-dry-run.sh
deleted file mode 100755
index d58e20e24a..0000000000
--- a/apps/ci/ci-worldserver-dry-run.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash
-
-set -e
-
-echo "[worldserver]" >> ./env/dist/etc/worldserver.conf
-echo "DataDir = \"../data/\"" >> ./env/dist/etc/worldserver.conf
-echo "LoginDatabaseInfo = \"localhost;3306;root;root;acore_auth\"" >> ./env/dist/etc/worldserver.conf
-echo "WorldDatabaseInfo = \"localhost;3306;root;root;acore_world\"" >> ./env/dist/etc/worldserver.conf
-echo "CharacterDatabaseInfo = \"localhost;3306;root;root;acore_characters\"" >> ./env/dist/etc/worldserver.conf
-git clone --depth=1 --branch=master --single-branch https://github.com/ac-data/ac-data.git ./env/dist/data
-(cd ./env/dist/bin/ && timeout 5m ./worldserver --dry-run)
diff --git a/apps/compiler/includes/functions.sh b/apps/compiler/includes/functions.sh
index b29c58de3d..ced1f488d2 100644
--- a/apps/compiler/includes/functions.sh
+++ b/apps/compiler/includes/functions.sh
@@ -70,27 +70,25 @@ function comp_configure() {
comp_ccacheEnable
- cmake $SRCPATH -DCMAKE_INSTALL_PREFIX=$BINPATH $DCONF -DSERVERS=$CSERVERS \
+ cmake $SRCPATH -DCMAKE_INSTALL_PREFIX=$BINPATH $DCONF \
+ -DAPPS_BUILD=$CAPPS_BUILD \
+ -DTOOLS_BUILD=$CTOOLS_BUILD \
-DSCRIPTS=$CSCRIPTS \
- -DUSE_CPP_20=$CUSE_CPP_20 \
+ -DMODULES=$CMODULES \
-DBUILD_TESTING=$CBUILD_TESTING \
- -DTOOLS=$CTOOLS \
-DUSE_SCRIPTPCH=$CSCRIPTPCH \
-DUSE_COREPCH=$CCOREPCH \
- -DWITH_COREDEBUG=$CDEBUG \
-DCMAKE_BUILD_TYPE=$CTYPE \
-DWITH_WARNINGS=$CWARNINGS \
-DCMAKE_C_COMPILER=$CCOMPILERC \
-DCMAKE_CXX_COMPILER=$CCOMPILERCXX \
- "-DDISABLED_AC_MODULES=$CDISABLED_AC_MODULES" \
- $CCUSTOMOPTIONS
+ $CBUILD_APPS_LIST $CBUILD_TOOLS_LIST $CCUSTOMOPTIONS
cd $CWD
runHooks "ON_AFTER_CONFIG"
}
-
function comp_compile() {
[ $MTHREADS == 0 ] && MTHREADS=$(grep -c ^processor /proc/cpuinfo) && MTHREADS=$(($MTHREADS + 2))
@@ -117,9 +115,9 @@ function comp_compile() {
runHooks "ON_AFTER_BUILD"
- # set worldserver SUID bit
- sudo chown root:root "$AC_BINPATH_FULL/worldserver"
- sudo chmod u+s "$AC_BINPATH_FULL/worldserver"
+ # set all aplications SUID bit
+ sudo chown -R root:root "$AC_BINPATH_FULL"
+ sudo chmod -R u+s "$AC_BINPATH_FULL"
}
function comp_build() {
@@ -128,6 +126,6 @@ function comp_build() {
}
function comp_all() {
- comp_clean
- comp_build
+ comp_clean
+ comp_build
}
diff --git a/apps/docker/Dockerfile b/apps/docker/Dockerfile
index 465868fe51..1a53b7a802 100644
--- a/apps/docker/Dockerfile
+++ b/apps/docker/Dockerfile
@@ -189,7 +189,8 @@ ENV AC_CCACHE=true
ENV CCACHE_CPP2=true
ENV CSCRIPTPCH=OFF
ENV CCOREPCH=OFF
-ENV CTOOLS=ON
+# ENV CTOOLS_BUILD=all
+ENV CTOOLS_BUILD=maps-only
ENV CSCRIPTS=static
RUN bash apps/docker/docker-build-prod.sh
@@ -303,8 +304,9 @@ RUN mkdir -p /azerothcore/env/client/maps
RUN mkdir -p /azerothcore/env/client/mmaps
RUN mkdir -p /azerothcore/env/client/vmaps
-COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/mapextractor /azerothcore/env/client/mapextractor
-COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/mmaps_generator /azerothcore/env/client/mmaps_generator
-COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/vmap4assembler /azerothcore/env/client/vmap4assembler
-COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/vmap4extractor /azerothcore/env/client/vmap4extractor
+# Need fix
+# COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/mapextractor /azerothcore/env/client/mapextractor
+# COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/mmaps_generator /azerothcore/env/client/mmaps_generator
+# COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/vmap4assembler /azerothcore/env/client/vmap4assembler
+# COPY --chown=$DOCKER_USER:$DOCKER_USER --from=build /azerothcore/env/dist/bin/vmap4extractor /azerothcore/env/client/vmap4extractor
diff --git a/conf/dist/config.cmake b/conf/dist/config.cmake
index 52d41a754b..c010deb637 100644
--- a/conf/dist/config.cmake
+++ b/conf/dist/config.cmake
@@ -11,15 +11,21 @@
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
-option(SERVERS "Build worldserver and authserver" 1)
-
set(SCRIPTS_AVAILABLE_OPTIONS none static dynamic minimal-static minimal-dynamic)
set(MODULES_AVAILABLE_OPTIONS none static dynamic)
+set(BUILD_APPS_AVAILABLE_OPTIONS none all auth-only world-only)
+# set(BUILD_TOOLS_AVAILABLE_OPTIONS none all db-only maps-only) # DB import PR
+set(BUILD_TOOLS_AVAILABLE_OPTIONS none all maps-only)
set(SCRIPTS "static" CACHE STRING "Build core with scripts")
set(MODULES "static" CACHE STRING "Build core with modules")
+set(APPS_BUILD "all" CACHE STRING "Build list for applications")
+set(TOOLS_BUILD "none" CACHE STRING "Build list for tools")
+
set_property(CACHE SCRIPTS PROPERTY STRINGS ${SCRIPTS_AVAILABLE_OPTIONS})
set_property(CACHE MODULES PROPERTY STRINGS ${MODULES_AVAILABLE_OPTIONS})
+set_property(CACHE APPS_BUILD PROPERTY STRINGS ${BUILD_APPS_AVAILABLE_OPTIONS})
+set_property(CACHE TOOLS_BUILD PROPERTY STRINGS ${BUILD_TOOLS_AVAILABLE_OPTIONS})
# Log a error when the value of the SCRIPTS variable isn't a valid option.
if(SCRIPTS)
@@ -30,7 +36,7 @@ if(SCRIPTS)
endif()
endif()
-# Log a error when the value of the SCRIPTS variable isn't a valid option.
+# Log a error when the value of the MODULES variable isn't a valid option.
if(MODULES)
list(FIND MODULES_AVAILABLE_OPTIONS "${MODULES}" MODULES_INDEX)
if(${MODULES_INDEX} EQUAL -1)
@@ -39,6 +45,24 @@ if(MODULES)
endif()
endif()
+# Log a fatal error when the value of the APPS_BUILD variable isn't a valid option.
+if(APPS_BUILD)
+ list(FIND BUILD_APPS_AVAILABLE_OPTIONS "${APPS_BUILD}" BUILD_APPS_INDEX)
+ if(${BUILD_APPS_INDEX} EQUAL -1)
+ message(FATAL_ERROR "The value (${APPS_BUILD}) of your APPS_BUILD variable is invalid! "
+ "Allowed values are: ${BUILD_APPS_AVAILABLE_OPTIONS}. Set default")
+ endif()
+endif()
+
+# Log a fatal error when the value of the TOOLS_BUILD variable isn't a valid option.
+if(TOOLS_BUILD)
+ list(FIND BUILD_TOOLS_AVAILABLE_OPTIONS "${TOOLS_BUILD}" BUILD_TOOLS_INDEX)
+ if(${BUILD_TOOLS_INDEX} EQUAL -1)
+ message(FATAL_ERROR "The value (${TOOLS_BUILD}) of your TOOLS_BUILD variable is invalid! "
+ "Allowed values are: ${BUILD_TOOLS_AVAILABLE_OPTIONS}. Set default")
+ endif()
+endif()
+
# Build a list of all script modules when -DSCRIPT="custom" is selected
GetScriptModuleList(SCRIPT_MODULE_LIST)
foreach(SCRIPT_MODULE ${SCRIPT_MODULE_LIST})
@@ -47,7 +71,7 @@ foreach(SCRIPT_MODULE ${SCRIPT_MODULE_LIST})
set_property(CACHE ${SCRIPT_MODULE_VARIABLE} PROPERTY STRINGS default disabled static dynamic)
endforeach()
-# Build a list of all modules script when -DSCRIPT="custom" is selected
+# Build a list of all modules script when -DMODULE="custom" is selected
GetModuleSourceList(SCRIPT_MODULE_LIST)
foreach(SCRIPT_MODULE ${SCRIPT_MODULE_LIST})
ModuleNameToVariable(${SCRIPT_MODULE} SCRIPT_MODULE_VARIABLE)
@@ -55,8 +79,23 @@ foreach(SCRIPT_MODULE ${SCRIPT_MODULE_LIST})
set_property(CACHE ${SCRIPT_MODULE_VARIABLE} PROPERTY STRINGS default disabled static dynamic)
endforeach()
+# Build a list of all applications when -DBUILD_APPS="custom" is selected
+GetApplicationsList(APPLICATIONS_BUILD_LIST)
+foreach(APPLICATION_BUILD_NAME ${APPLICATIONS_BUILD_LIST})
+ ApplicationNameToVariable(${APPLICATION_BUILD_NAME} APPLICATION_BUILD_VARIABLE)
+ set(${APPLICATION_BUILD_VARIABLE} "default" CACHE STRING "Enable build the ${APPLICATION_BUILD_NAME} application.")
+ set_property(CACHE ${APPLICATION_BUILD_VARIABLE} PROPERTY STRINGS default enabled disabled)
+endforeach()
+
+# Build a list of all applications when -DBUILD_TOOLS="custom" is selected
+GetToolsList(TOOLS_BUILD_LIST)
+foreach(TOOL_BUILD_NAME ${TOOLS_BUILD_LIST})
+ ToolNameToVariable(${TOOL_BUILD_NAME} TOOL_BUILD_VARIABLE)
+ set(${TOOL_BUILD_VARIABLE} "default" CACHE STRING "Enable build the ${TOOL_BUILD_NAME} tool.")
+ set_property(CACHE ${TOOL_BUILD_VARIABLE} PROPERTY STRINGS default enabled disabled)
+endforeach()
+
option(BUILD_TESTING "Build unit tests" 0)
-option(TOOLS "Build map/vmap/mmap extraction/assembler tools" 0)
option(USE_SCRIPTPCH "Use precompiled headers when compiling scripts" 1)
option(USE_COREPCH "Use precompiled headers when compiling servers" 1)
option(WITH_WARNINGS "Show all warnings during compile" 0)
@@ -69,6 +108,8 @@ option(WITH_STRICT_DATABASE_TYPE_CHECKS "Enable strict checking of database fiel
option(WITHOUT_METRICS "Disable metrics reporting (i.e. InfluxDB and Grafana)" 0)
option(WITH_DETAILED_METRICS "Enable detailed metrics reporting (i.e. time each session takes to update)" 0)
+CheckApplicationsBuildList()
+CheckToolsBuildList()
IsDynamicLinkingRequired(WITH_DYNAMIC_LINKING_FORCED)
IsDynamicLinkingModulesRequired(WITH_DYNAMIC_LINKING_FORCED)
diff --git a/conf/dist/config.sh b/conf/dist/config.sh
index 31c3648fdf..2b82e919ef 100644
--- a/conf/dist/config.sh
+++ b/conf/dist/config.sh
@@ -30,12 +30,12 @@ BINPATH="$AC_PATH_ROOT/env/dist"
# DATAPATH_ZIP="$DATAPATH/data.zip"
# azerothcore's official remote source address to pull from
-# by default git will fetch form the azrothcore remote
+# by default git will fetch form the azrothcore remote
# You can change it to "origin" if you want to fetch/pull from the set remote
ORIGIN_REMOTE="https://github.com/azerothcore/azerothcore-wotlk.git"
-# Branch configuration for the installer to pull from.
-# By default git will select the current working branch
+# Branch configuration for the installer to pull from.
+# By default git will select the current working branch
# You can set it to "master" if you want the latest updates
INSTALLER_PULL_FROM=
@@ -44,8 +44,6 @@ INSTALLER_PULL_FROM=
# COMPILER_CONFIGURATIONS
#
##############################################
-
-
# Set preferred compilers.
# To use gcc (not suggested) instead of clang change in:
# CCOMPILERC="/usr/bin/gcc"
@@ -54,7 +52,6 @@ INSTALLER_PULL_FROM=
CCOMPILERC="/usr/bin/clang"
CCOMPILERCXX="/usr/bin/clang++"
-
# how many thread must be used for compilation ( leave zero to use all available )
MTHREADS=${MTHREADS:-0}
# enable/disable warnings during compilation
@@ -69,23 +66,31 @@ CDEBUG=OFF
# * RelWithDebInfo: optimized, *with* debug info, but no debug (output) code or asserts.
# * MinSizeRel: same as Release but optimizing for size rather than speed.
CTYPE=${CTYPE:-Release}
+
# compile scripts
CSCRIPTS=${CSCRIPTS:-static}
+
+# compile scripts
+CMODULES=${CMODULES:-none}
+
# compile unit tests
CBUILD_TESTING=OFF
-# compile server
-CSERVERS=${CSERVERS:-ON}
-# compile tools
-CTOOLS=${CTOOLS:-OFF}
+
# use precompiled headers ( fatest compilation but not optimized if you change headers often )
CSCRIPTPCH=${CSCRIPTPCH:-ON}
CCOREPCH=${CCOREPCH:-ON}
-# compile with C++20
-CUSE_CPP_20=${CUSE_CPP_20:-OFF}
-# Skip specific modules from compilation (cmake reconfigure needed)
-# use semicolon ; to separate modules
-CDISABLED_AC_MODULES=""
+# build apps list variable
+CAPPS_BUILD=${CAPPS_BUILD:-all}
+
+# build tools list variable
+CTOOLS_BUILD=${CTOOLS_BUILD:-none}
+
+# build apps list
+CBUILD_APPS_LIST=${CBUILD_APPS_LIST:-''}
+
+# build tools list
+CBUILD_TOOLS_LIST=${CBUILD_TOOLS_LIST:-''}
# you can add your custom definitions here ( -D )
# example: CCUSTOMOPTIONS=" -DWITH_PERFTOOLS=ON
diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt
index 80c149d756..2d5b43505a 100644
--- a/deps/CMakeLists.txt
+++ b/deps/CMakeLists.txt
@@ -16,30 +16,34 @@ if(CMAKE_SYSTEM_NAME MATCHES "Windows")
endif()
endif()
+add_subdirectory(SFMT)
+add_subdirectory(argon2)
+add_subdirectory(boost)
+add_subdirectory(fmt)
+add_subdirectory(jemalloc)
+add_subdirectory(openssl)
+add_subdirectory(stdfs)
add_subdirectory(threads)
+add_subdirectory(utf8cpp)
-if(SERVERS OR TOOLS)
- add_subdirectory(boost)
+# if ((APPS_BUILD AND (NOT APPS_BUILD STREQUAL "none")) OR BUILD_TOOLS_DB_IMPORT) #DB import PR
+if ((APPS_BUILD AND (NOT APPS_BUILD STREQUAL "none")))
+ add_subdirectory(mysql)
+endif()
+
+if (BUILD_APPLICATION_WORLDSERVER OR BUILD_TOOLS_MAPS)
add_subdirectory(zlib)
add_subdirectory(g3dlite)
add_subdirectory(recastnavigation)
- add_subdirectory(fmt)
- add_subdirectory(SFMT)
- add_subdirectory(utf8cpp)
- add_subdirectory(openssl)
- add_subdirectory(argon2)
- add_subdirectory(jemalloc)
- add_subdirectory(stdfs)
endif()
-if(SERVERS)
- add_subdirectory(mysql)
+if (BUILD_APPLICATION_WORLDSERVER)
add_subdirectory(readline)
add_subdirectory(gsoap)
add_subdirectory(gperftools)
endif()
-if(TOOLS)
+if (BUILD_TOOLS_MAPS)
add_subdirectory(bzip2)
add_subdirectory(libmpq)
endif()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8ad54557ee..ecd828a1ca 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -14,12 +14,26 @@
# This to stop a few silly crashes that could have been avoided IF people
# weren't doing some -O3 psychooptimizations etc.
+# Specified files for Windows
+if (WIN32)
+ # Crash logs
+ set(winDebugging
+ ${CMAKE_SOURCE_DIR}/src/common/Debugging/WheatyExceptionReport.cpp
+ ${CMAKE_SOURCE_DIR}/src/common/Debugging/WheatyExceptionReport.h)
+
+ # Service
+ set(winService
+ ${CMAKE_SOURCE_DIR}/src/common/Platform/ServiceWin32.cpp
+ ${CMAKE_SOURCE_DIR}/src/common/Platform/ServiceWin32.h)
+endif()
+
if(CMAKE_COMPILER_IS_GNUCXX AND NOT MINGW)
add_definitions(-fno-delete-null-pointer-checks)
endif()
add_subdirectory(genrev)
+add_subdirectory(server)
-if( SERVERS )
- add_subdirectory(server)
+if (TOOLS_BUILD AND NOT TOOLS_BUILD STREQUAL "none")
+ add_subdirectory(tools)
endif()
diff --git a/src/cmake/macros/ConfigInstall.cmake b/src/cmake/macros/ConfigInstall.cmake
index 8dc97a8e6a..836ec610c8 100644
--- a/src/cmake/macros/ConfigInstall.cmake
+++ b/src/cmake/macros/ConfigInstall.cmake
@@ -12,32 +12,62 @@
#
# Use it like:
-# CopyDefaultConfig(worldserver)
+# CopyApplicationConfig(${APP_PROJECT_NAME} ${APPLICATION_NAME})
#
-function(CopyDefaultConfig servertype)
+function(CopyApplicationConfig projectName appName)
+ GetPathToApplication(${appName} SOURCE_APP_PATH)
+
if(WIN32)
if("${CMAKE_MAKE_PROGRAM}" MATCHES "MSBuild")
- add_custom_command(TARGET ${servertype}
+ add_custom_command(TARGET ${projectName}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/configs")
+ add_custom_command(TARGET ${projectName}
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy "${SOURCE_APP_PATH}/${appName}.conf.dist" "${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/configs")
+ elseif(MINGW)
add_custom_command(TARGET ${servertype}
POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/${servertype}.conf.dist" "${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/configs")
+ COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bin/configs")
+ add_custom_command(TARGET ${servertype}
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy "${SOURCE_APP_PATH}/${appName}.conf.dist ${CMAKE_BINARY_DIR}/bin/configs")
+ endif()
+ endif()
+
+ if(UNIX)
+ install(FILES "${SOURCE_APP_PATH}/${appName}.conf.dist" DESTINATION "${CONF_DIR}")
+ elseif(WIN32)
+ install(FILES "${SOURCE_APP_PATH}/${appName}.conf.dist" DESTINATION "${CMAKE_INSTALL_PREFIX}/configs")
+ endif()
+endfunction()
+
+function(CopyToolConfig projectName appName)
+ GetPathToTool(${appName} SOURCE_APP_PATH)
+
+ if(WIN32)
+ if("${CMAKE_MAKE_PROGRAM}" MATCHES "MSBuild")
+ add_custom_command(TARGET ${projectName}
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/configs")
+ add_custom_command(TARGET ${projectName}
+ POST_BUILD
+ COMMAND ${CMAKE_COMMAND} -E copy "${SOURCE_APP_PATH}/${appName}.conf.dist" "${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/configs")
elseif(MINGW)
add_custom_command(TARGET ${servertype}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bin/configs")
add_custom_command(TARGET ${servertype}
POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/${servertype}.conf.dist ${CMAKE_BINARY_DIR}/bin/configs")
+ COMMAND ${CMAKE_COMMAND} -E copy "${SOURCE_APP_PATH}/${appName}.conf.dist ${CMAKE_BINARY_DIR}/bin/configs")
endif()
endif()
if(UNIX)
- install(FILES "${servertype}.conf.dist" DESTINATION "${CONF_DIR}")
+ install(FILES "${SOURCE_APP_PATH}/${appName}.conf.dist" DESTINATION "${CONF_DIR}")
elseif(WIN32)
- install(FILES "${servertype}.conf.dist" DESTINATION "${CMAKE_INSTALL_PREFIX}/configs")
+ install(FILES "${SOURCE_APP_PATH}/${appName}.conf.dist" DESTINATION "${CMAKE_INSTALL_PREFIX}/configs")
endif()
endfunction()
diff --git a/src/cmake/macros/ConfigureApplications.cmake b/src/cmake/macros/ConfigureApplications.cmake
new file mode 100644
index 0000000000..38009eb18c
--- /dev/null
+++ b/src/cmake/macros/ConfigureApplications.cmake
@@ -0,0 +1,108 @@
+#
+# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
+#
+# 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.
+#
+
+set(BUILD_APPLICATION_AUTHSERVER 0)
+set(BUILD_APPLICATION_WORLDSERVER 0)
+
+# Returns the base path to the apps directory in the source directory
+function(GetApplicationsBasePath variable)
+ set(${variable} "${CMAKE_SOURCE_DIR}/src/server/apps" PARENT_SCOPE)
+endfunction()
+
+# Stores the absolut path of the given app in the variable
+function(GetPathToApplication app variable)
+ GetApplicationsBasePath(APPS_BASE_PATH)
+ set(${variable} "${APPS_BASE_PATH}/${app}" PARENT_SCOPE)
+endfunction()
+
+# Stores the project name of the given app in the variable
+function(GetProjectNameOfApplicationName app variable)
+ string(TOLOWER "${app}" GENERATED_NAME)
+ set(${variable} "${GENERATED_NAME}" PARENT_SCOPE)
+endfunction()
+
+# Creates a list of all applications and stores it in the given variable.
+function(GetApplicationsList variable)
+ GetApplicationsBasePath(BASE_PATH)
+ file(GLOB LOCALE_SOURCE_APP_LIST RELATIVE
+ ${BASE_PATH}
+ ${BASE_PATH}/*)
+
+ set(${variable})
+
+ foreach(SOURCE_APP ${LOCALE_SOURCE_APP_LIST})
+ GetPathToApplication(${SOURCE_APP} SOURCE_APP_PATH)
+ if(IS_DIRECTORY ${SOURCE_APP_PATH})
+ list(APPEND ${variable} ${SOURCE_APP})
+ endif()
+ endforeach()
+
+ set(${variable} ${${variable}} PARENT_SCOPE)
+endfunction()
+
+# Converts the given application name into it's
+# variable name which holds the build type.
+function(ApplicationNameToVariable application variable)
+ string(TOUPPER ${application} ${variable})
+ set(${variable} "APP_${${variable}}")
+ set(${variable} ${${variable}} PARENT_SCOPE)
+endfunction()
+
+function(CheckApplicationsBuildList)
+ GetApplicationsList(APPLICATIONS_BUILD_LIST)
+
+ if (APPS_BUILD STREQUAL "none")
+ set(APPS_DEFAULT_BUILD "disabled")
+ else()
+ set(APPS_DEFAULT_BUILD "enabled")
+ endif()
+
+ # Sets BUILD_APPS_USE_WHITELIST
+ # Sets BUILD_APPS_WHITELIST
+ if (APPS_BUILD MATCHES "-only")
+ set(BUILD_APPS_USE_WHITELIST ON)
+
+ if (APPS_BUILD STREQUAL "servers-only")
+ list(APPEND BUILD_APPS_WHITELIST authserver worldserver)
+ endif()
+
+ if (APPS_BUILD STREQUAL "dbimport-only")
+ list(APPEND BUILD_APPS_WHITELIST dbimport)
+ endif()
+ endif()
+
+ foreach(APPLICATION_BUILD_NAME ${APPLICATIONS_BUILD_LIST})
+ ApplicationNameToVariable(${APPLICATION_BUILD_NAME} APPLICATION_BUILD_VARIABLE)
+
+ if(${APPLICATION_BUILD_VARIABLE} STREQUAL "default")
+ if(BUILD_APPS_USE_WHITELIST)
+ list(FIND BUILD_APPS_WHITELIST "${APPLICATION_BUILD_NAME}" INDEX)
+ if(${INDEX} GREATER -1)
+ set(${APPLICATION_BUILD_VARIABLE} ${APPS_DEFAULT_BUILD})
+ else()
+ set(${APPLICATION_BUILD_VARIABLE} "disabled")
+ endif()
+ else()
+ set(${APPLICATION_BUILD_VARIABLE} ${APPS_DEFAULT_BUILD})
+ endif()
+ endif()
+
+ # Build the Graph values
+ if(${APPLICATION_BUILD_VARIABLE} MATCHES "enabled")
+ if (${APPLICATION_BUILD_NAME} MATCHES "authserver")
+ set (BUILD_APPLICATION_AUTHSERVER 1 PARENT_SCOPE)
+ elseif(${APPLICATION_BUILD_NAME} MATCHES "worldserver")
+ set (BUILD_APPLICATION_WORLDSERVER 1 PARENT_SCOPE)
+ endif()
+ endif()
+ endforeach()
+endfunction()
diff --git a/src/cmake/macros/ConfigureTools.cmake b/src/cmake/macros/ConfigureTools.cmake
new file mode 100644
index 0000000000..ece49ab481
--- /dev/null
+++ b/src/cmake/macros/ConfigureTools.cmake
@@ -0,0 +1,110 @@
+#
+# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
+#
+# 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.
+#
+
+set(BUILD_TOOLS_MAPS 0)
+set(BUILD_TOOLS_DB_IMPORT 0)
+
+# Returns the base path to the tools directory in the source directory
+function(GetToolsBasePath variable)
+ set(${variable} "${CMAKE_SOURCE_DIR}/src/tools" PARENT_SCOPE)
+endfunction()
+
+# Stores the absolut path of the given tool in the variable
+function(GetPathToTool tool variable)
+ GetToolsBasePath(TOOLS_BASE_PATH)
+ set(${variable} "${TOOLS_BASE_PATH}/${tool}" PARENT_SCOPE)
+endfunction()
+
+# Stores the project name of the given tool in the variable
+function(GetProjectNameOfToolName tool variable)
+ string(TOLOWER "${tool}" GENERATED_NAME)
+ set(${variable} "${GENERATED_NAME}" PARENT_SCOPE)
+endfunction()
+
+# Creates a list of all applications and stores it in the given variable.
+function(GetToolsList variable)
+ GetToolsBasePath(BASE_PATH)
+ file(GLOB LOCALE_SOURCE_TOOL_LIST RELATIVE
+ ${BASE_PATH}
+ ${BASE_PATH}/*)
+
+ set(${variable})
+
+ foreach(SOURCE_TOOL ${LOCALE_SOURCE_TOOL_LIST})
+ GetPathToTool(${SOURCE_TOOL} SOURCE_TOOL_PATH)
+ if(IS_DIRECTORY ${SOURCE_TOOL_PATH})
+ list(APPEND ${variable} ${SOURCE_TOOL})
+ endif()
+ endforeach()
+
+ set(${variable} ${${variable}} PARENT_SCOPE)
+endfunction()
+
+# Converts the given application name into it's
+# variable name which holds the build type.
+function(ToolNameToVariable application variable)
+ string(TOUPPER ${application} ${variable})
+ set(${variable} "TOOL_${${variable}}")
+ set(${variable} ${${variable}} PARENT_SCOPE)
+endfunction()
+
+function(CheckToolsBuildList)
+ GetToolsList(TOOLS_BUILD_LIST)
+
+ if (TOOLS_BUILD STREQUAL "none")
+ set(TOOLS_DEFAULT_BUILD "disabled")
+ else()
+ set(TOOLS_DEFAULT_BUILD "enabled")
+ endif()
+
+ # Sets BUILD_TOOLS_USE_WHITELIST
+ # Sets BUILD_TOOLS_WHITELIST
+ if (TOOLS_BUILD MATCHES "-only")
+ set(BUILD_TOOLS_USE_WHITELIST ON)
+
+ if (TOOLS_BUILD STREQUAL "maps-only")
+ list(APPEND BUILD_TOOLS_WHITELIST map_extractor mmaps_generator vmap4_assembler vmap4_extractor)
+ endif()
+
+ # if (TOOLS_BUILD STREQUAL "db-only")
+ # list(APPEND BUILD_TOOLS_WHITELIST dbimport)
+ # endif()
+ endif()
+
+ # Set the TOOL_${TOOL_BUILD_NAME} variables from the
+ # variables set above
+ foreach(TOOL_BUILD_NAME ${TOOLS_BUILD_LIST})
+ ToolNameToVariable(${TOOL_BUILD_NAME} TOOL_BUILD_VARIABLE)
+
+ if (${TOOL_BUILD_VARIABLE} STREQUAL "default")
+ if (BUILD_TOOLS_USE_WHITELIST)
+ list(FIND BUILD_TOOLS_WHITELIST "${TOOL_BUILD_NAME}" INDEX)
+ if (${INDEX} GREATER -1)
+ set(${TOOL_BUILD_VARIABLE} ${TOOLS_DEFAULT_BUILD})
+ else()
+ set(${TOOL_BUILD_VARIABLE} "disabled")
+ endif()
+ else()
+ set(${TOOL_BUILD_VARIABLE} ${TOOLS_DEFAULT_BUILD})
+ endif()
+ endif()
+
+ # Build the Graph values
+ if (${TOOL_BUILD_VARIABLE} MATCHES "enabled")
+ if (${TOOL_BUILD_NAME} MATCHES "dbimport")
+ set(BUILD_TOOLS_DB_IMPORT 1 PARENT_SCOPE)
+ else()
+ set(BUILD_TOOLS_MAPS 1 PARENT_SCOPE)
+ endif()
+ endif()
+ endforeach()
+endfunction()
diff --git a/src/cmake/showoptions.cmake b/src/cmake/showoptions.cmake
index 08467d8df8..7111990b6f 100644
--- a/src/cmake/showoptions.cmake
+++ b/src/cmake/showoptions.cmake
@@ -32,31 +32,32 @@ message("")
# Show infomation about the options selected during configuration
-if( SERVERS )
- message("* Build world/auth : Yes (default)")
+if (APPS_BUILD AND (NOT APPS_BUILD STREQUAL "none"))
+ message("* Build applications : Yes (${APPS_BUILD})")
else()
- message("* Build world/authserver : No")
+ message("* Build applications : No")
endif()
-if(SCRIPTS AND (NOT SCRIPTS STREQUAL "none"))
+if (TOOLS_BUILD AND (NOT TOOLS_BUILD STREQUAL "none"))
+ message("* Build tools : Yes (${TOOLS_BUILD})")
+ add_definitions(-DNO_CORE_FUNCS)
+else()
+ message("* Build tools : No")
+endif()
+
+if (SCRIPTS AND (NOT SCRIPTS STREQUAL "none"))
message("* Build with scripts : Yes (${SCRIPTS})")
+
else()
message("* Build with scripts : No")
endif()
-if(MODULES AND (NOT MODULES STREQUAL "none"))
+if (MODULES AND (NOT MODULES STREQUAL "none"))
message("* Build with modules : Yes (${MODULES})")
else()
message("* Build with modules : No")
endif()
-if( TOOLS )
- message("* Build map/vmap tools : Yes")
- add_definitions(-DNO_CORE_FUNCS)
-else()
- message("* Build map/vmap tools : No (default)")
-endif()
-
if( BUILD_TESTING )
message("* Build unit tests : Yes")
else()
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
index 328cc4faad..22c7d5fd76 100644
--- a/src/common/CMakeLists.txt
+++ b/src/common/CMakeLists.txt
@@ -16,8 +16,21 @@ CollectSourceFiles(
# Exclude
${CMAKE_CURRENT_SOURCE_DIR}/Debugging
${CMAKE_CURRENT_SOURCE_DIR}/Platform
+ ${CMAKE_CURRENT_SOURCE_DIR}/Collision
+ ${CMAKE_CURRENT_SOURCE_DIR}/Navigation
${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders)
+if (BUILD_APPLICATION_WORLDSERVER OR BUILD_TOOLS_MAPS)
+ unset(PRIVATE_SOURCES)
+ CollectSourceFiles(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ PRIVATE_SOURCES
+ # Exclude
+ ${CMAKE_CURRENT_SOURCE_DIR}/Debugging
+ ${CMAKE_CURRENT_SOURCE_DIR}/Platform
+ ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders)
+endif()
+
# Manually set sources for Debugging directory as we don't want to include WheatyExceptionReport in common 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
@@ -55,8 +68,6 @@ target_link_libraries(common
PUBLIC
boost
argon2
- g3dlib
- Detour
sfmt
utf8cpp
openssl
@@ -65,6 +76,13 @@ target_link_libraries(common
stdfs
fmt)
+if (BUILD_APPLICATION_WORLDSERVER OR BUILD_TOOLS_MAPS)
+ target_link_libraries(common
+ PUBLIC
+ g3dlib
+ Detour)
+endif()
+
set_target_properties(common
PROPERTIES
FOLDER
diff --git a/src/common/Logging/Log.h b/src/common/Logging/Log.h
index 32ace618c6..bf349227b8 100644
--- a/src/common/Logging/Log.h
+++ b/src/common/Logging/Log.h
@@ -60,7 +60,7 @@ private:
public:
static Log* instance();
- void Initialize(Acore::Asio::IoContext* ioContext);
+ void Initialize(Acore::Asio::IoContext* ioContext = nullptr);
void SetSynchronous(); // Not threadsafe - should only be called from main() after all threads are joined
void LoadFromConfig();
void Close();
diff --git a/src/server/CMakeLists.txt b/src/server/CMakeLists.txt
index ffe9f9d219..559745d0a7 100644
--- a/src/server/CMakeLists.txt
+++ b/src/server/CMakeLists.txt
@@ -10,22 +10,19 @@
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
-# Specified files for Windows
-if (WIN32)
-# Crash logs
-set(winDebugging
- ${CMAKE_SOURCE_DIR}/src/common/Debugging/WheatyExceptionReport.cpp
- ${CMAKE_SOURCE_DIR}/src/common/Debugging/WheatyExceptionReport.h)
+add_subdirectory(apps)
-# Service
-set(winService
- ${CMAKE_SOURCE_DIR}/src/common/Platform/ServiceWin32.cpp
- ${CMAKE_SOURCE_DIR}/src/common/Platform/ServiceWin32.h)
+# if ((APPS_BUILD AND NOT APPS_BUILD STREQUAL "none") OR BUILD_TOOLS_DB_IMPORT) # DB import PR
+if ((APPS_BUILD AND NOT APPS_BUILD STREQUAL "none"))
+ add_subdirectory(database)
+endif()
+
+if (BUILD_APPLICATION_AUTHSERVER OR BUILD_APPLICATION_WORLDSERVER)
+ add_subdirectory(shared)
+endif()
+
+if (BUILD_APPLICATION_WORLDSERVER)
+ add_subdirectory(game)
+ add_subdirectory(scripts)
endif()
-add_subdirectory(authserver)
-add_subdirectory(database)
-add_subdirectory(game)
-add_subdirectory(shared)
-add_subdirectory(scripts)
-add_subdirectory(worldserver)
diff --git a/src/server/apps/CMakeLists.txt b/src/server/apps/CMakeLists.txt
new file mode 100644
index 0000000000..807c89efc3
--- /dev/null
+++ b/src/server/apps/CMakeLists.txt
@@ -0,0 +1,198 @@
+#
+# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
+#
+# 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.
+
+# Make the script module list available in the current scope
+GetApplicationsList(APPLICATIONS_BUILD_LIST)
+
+if (APPS_BUILD STREQUAL "none")
+ set(APPS_DEFAULT_BUILD "disabled")
+else()
+ set(APPS_DEFAULT_BUILD "enabled")
+endif()
+
+# Sets BUILD_APPS_USE_WHITELIST
+# Sets BUILD_APPS_WHITELIST
+if (APPS_BUILD MATCHES "-only")
+ set(BUILD_APPS_USE_WHITELIST ON)
+
+ if (APPS_BUILD STREQUAL "auth-only")
+ list(APPEND BUILD_APPS_WHITELIST authserver)
+ endif()
+
+ if (APPS_BUILD STREQUAL "world-only")
+ list(APPEND BUILD_APPS_WHITELIST worldserver)
+ endif()
+endif()
+
+# Set the SCRIPTS_${BUILD_APP} variables from the
+# variables set above
+foreach(BUILD_APP ${APPLICATIONS_BUILD_LIST})
+ ApplicationNameToVariable(${BUILD_APP} BUILD_APP_VARIABLE)
+
+ if(${BUILD_APP_VARIABLE} STREQUAL "default")
+ if(BUILD_APPS_USE_WHITELIST)
+ list(FIND BUILD_APPS_WHITELIST "${BUILD_APP}" INDEX)
+ if(${INDEX} GREATER -1)
+ set(${BUILD_APP_VARIABLE} ${APPS_DEFAULT_BUILD})
+ else()
+ set(${BUILD_APP_VARIABLE} "disabled")
+ endif()
+ else()
+ set(${BUILD_APP_VARIABLE} ${APPS_DEFAULT_BUILD})
+ endif()
+ endif()
+
+ # Build the Graph values
+ if(${BUILD_APP_VARIABLE} MATCHES "enabled")
+ list(APPEND BUILD_APP_GRAPH_KEYS apps)
+ set(BUILD_APP_VALUE_DISPLAY_apps apps)
+ list(APPEND BUILD_APP_VALUE_CONTAINS_apps ${BUILD_APP})
+
+ if (${BUILD_APP} MATCHES "authserver")
+ set (BUILD_APPLICATION_AUTHSERVER 1)
+ elseif(${BUILD_APP} MATCHES "worldserver")
+ set (BUILD_APPLICATION_WORLDSERVER 1)
+ endif()
+ else()
+ list(APPEND BUILD_APP_GRAPH_KEYS disabled)
+ set(BUILD_APP_VALUE_DISPLAY_disabled disabled)
+ list(APPEND BUILD_APP_VALUE_CONTAINS_disabled ${BUILD_APP})
+ endif()
+endforeach()
+
+list(SORT BUILD_APP_GRAPH_KEYS)
+list(REMOVE_DUPLICATES BUILD_APP_GRAPH_KEYS)
+
+# Display the graphs
+message("")
+message("* Apps build list (${APPS_BUILD}):")
+message(" |")
+
+foreach(BUILD_APP_GRAPH_KEY ${BUILD_APP_GRAPH_KEYS})
+ if(NOT BUILD_APP_GRAPH_KEY STREQUAL "disabled")
+ message(" +- ${BUILD_APP_VALUE_DISPLAY_${BUILD_APP_GRAPH_KEY}}")
+ else()
+ message(" | ${BUILD_APP_VALUE_DISPLAY_${BUILD_APP_GRAPH_KEY}}")
+ endif()
+ foreach(BUILD_APP_GRAPH_ENTRY ${BUILD_APP_VALUE_CONTAINS_${BUILD_APP_GRAPH_KEY}})
+ message(" | +- ${BUILD_APP_GRAPH_ENTRY}")
+ endforeach()
+ message(" |")
+endforeach()
+
+message("")
+
+GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
+
+# Generates the actual apps projects
+foreach(APPLICATION_NAME ${APPLICATIONS_BUILD_LIST})
+ GetPathToApplication(${APPLICATION_NAME} SOURCE_APP_PATH)
+ ApplicationNameToVariable(${APPLICATION_NAME} BUILD_APP_VARIABLE)
+
+ if (${BUILD_APP_VARIABLE} STREQUAL "disabled")
+ continue()
+ endif()
+
+ unset(APP_PRIVATE_SOURCES)
+ CollectSourceFiles(
+ ${SOURCE_APP_PATH}
+ APP_PRIVATE_SOURCES
+ # Exclude
+ ${SOURCE_APP_PATH}/PrecompiledHeaders)
+
+ if (WIN32)
+ list(APPEND APP_PRIVATE_SOURCES ${winDebugging})
+
+ if (${APPLICATION_NAME} MATCHES "worldserver")
+ list(APPEND APP_PRIVATE_SOURCES ${winService})
+ endif()
+
+ if (MSVC)
+ list(APPEND APP_PRIVATE_SOURCES ${SOURCE_APP_PATH}/${APPLICATION_NAME}.rc)
+ endif()
+ endif()
+
+ GetProjectNameOfApplicationName(${APPLICATION_NAME} APP_PROJECT_NAME)
+
+ # Create the application project
+ add_executable(${APP_PROJECT_NAME}
+ ${APP_PRIVATE_SOURCES})
+
+ add_dependencies(${APP_PROJECT_NAME} revision.h)
+
+ target_link_libraries(${APP_PROJECT_NAME}
+ PRIVATE
+ acore-core-interface)
+
+ if (${APP_PROJECT_NAME} MATCHES "authserver")
+ target_link_libraries(${APP_PROJECT_NAME}
+ PUBLIC
+ shared)
+ elseif(${APP_PROJECT_NAME} MATCHES "worldserver")
+ target_link_libraries(${APP_PROJECT_NAME}
+ PUBLIC
+ modules
+ scripts
+ game
+ gsoap
+ readline
+ gperftools)
+
+ if (UNIX AND NOT NOJEM)
+ set(${APP_PROJECT_NAME}_LINK_FLAGS "-pthread -lncurses ${${APP_PROJECT_NAME}_LINK_FLAGS}")
+ endif()
+
+ set_target_properties(${APP_PROJECT_NAME} PROPERTIES LINK_FLAGS "${${APP_PROJECT_NAME}_LINK_FLAGS}")
+
+ # Add all dynamic projects as dependency to the worldserver
+ if (WORLDSERVER_DYNAMIC_SCRIPT_MODULES_DEPENDENCIES)
+ add_dependencies(${APP_PROJECT_NAME} ${WORLDSERVER_DYNAMIC_SCRIPT_MODULES_DEPENDENCIES})
+ endif()
+ endif()
+
+ unset(APP_PUBLIC_INCLUDES)
+ CollectIncludeDirectories(
+ ${SOURCE_APP_PATH}
+ APP_PUBLIC_INCLUDES
+ # Exclude
+ ${SOURCE_APP_PATH}/PrecompiledHeaders)
+
+ target_include_directories(${APP_PROJECT_NAME}
+ PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR})
+
+ target_include_directories(${APP_PROJECT_NAME}
+ PUBLIC
+ ${APP_PUBLIC_INCLUDES}
+ PRIVATE
+ ${CMAKE_CURRENT_BINARY_DIR}/${APPLICATION_NAME})
+
+ set_target_properties(${APP_PROJECT_NAME}
+ PROPERTIES
+ FOLDER
+ "server")
+
+ # Install config
+ CopyApplicationConfig(${APP_PROJECT_NAME} ${APPLICATION_NAME})
+
+ if (UNIX)
+ install(TARGETS ${APP_PROJECT_NAME} DESTINATION bin)
+ elseif (WIN32)
+ install(TARGETS ${APP_PROJECT_NAME} DESTINATION "${CMAKE_INSTALL_PREFIX}")
+ endif()
+
+ set(PATH_TO_PCH ${SOURCE_APP_PATH}/PrecompiledHeaders/${APPLICATION_NAME}PCH.h)
+
+ # Generate precompiled header
+ if (USE_COREPCH AND EXISTS ${PATH_TO_PCH})
+ add_cxx_pch(${APP_PROJECT_NAME} ${PATH_TO_PCH})
+ endif()
+endforeach() \ No newline at end of file
diff --git a/src/server/authserver/Authentication/AuthCodes.cpp b/src/server/apps/authserver/Authentication/AuthCodes.cpp
index 0f7e5d0e09..0f7e5d0e09 100644
--- a/src/server/authserver/Authentication/AuthCodes.cpp
+++ b/src/server/apps/authserver/Authentication/AuthCodes.cpp
diff --git a/src/server/authserver/Authentication/AuthCodes.h b/src/server/apps/authserver/Authentication/AuthCodes.h
index 35037e0a3b..35037e0a3b 100644
--- a/src/server/authserver/Authentication/AuthCodes.h
+++ b/src/server/apps/authserver/Authentication/AuthCodes.h
diff --git a/src/server/authserver/Main.cpp b/src/server/apps/authserver/Main.cpp
index a38e58b64b..b0105d658b 100644
--- a/src/server/authserver/Main.cpp
+++ b/src/server/apps/authserver/Main.cpp
@@ -41,8 +41,11 @@
#include "SharedDefines.h"
#include "Util.h"
#include <boost/asio/signal_set.hpp>
+#include <boost/program_options.hpp>
#include <boost/version.hpp>
#include <csignal>
+#include <filesystem>
+#include <iostream>
#include <openssl/crypto.h>
#include <openssl/opensslv.h>
@@ -51,19 +54,15 @@
#endif
using boost::asio::ip::tcp;
+using namespace boost::program_options;
+namespace fs = std::filesystem;
bool StartDB();
void StopDB();
void SignalHandler(std::weak_ptr<Acore::Asio::IoContext> ioContextRef, boost::system::error_code const& error, int signalNumber);
void KeepDatabaseAliveHandler(std::weak_ptr<Acore::Asio::DeadlineTimer> dbPingTimerRef, int32 dbPingInterval, boost::system::error_code const& error);
void BanExpiryHandler(std::weak_ptr<Acore::Asio::DeadlineTimer> banExpiryCheckTimerRef, int32 banExpiryCheckInterval, boost::system::error_code const& error);
-
-/// Print out the usage string for this program on the console.
-void usage(const char* prog)
-{
- LOG_INFO("server.authserver", "Usage: \n {} [<options>]\n"
- " -c config_file use config_file as configuration file\n\r", prog);
-}
+variables_map GetConsoleArguments(int argc, char** argv, fs::path& configFile);
/// Launch the auth server
int main(int argc, char** argv)
@@ -71,27 +70,16 @@ int main(int argc, char** argv)
Acore::Impl::CurrentServerProcessHolder::_type = SERVER_PROCESS_AUTHSERVER;
signal(SIGABRT, &Acore::AbortHandler);
- // Command line parsing to get the configuration file name
- std::string configFile = sConfigMgr->GetConfigPath() + std::string(_ACORE_REALM_CONFIG);
- int count = 1;
- while (count < argc)
- {
- if (strcmp(argv[count], "-c") == 0)
- {
- if (++count >= argc)
- {
- printf("Runtime-Error: -c option requires an input argument\n");
- usage(argv[0]);
- return 1;
- }
- else
- configFile = argv[count];
- }
- ++count;
- }
+ // Command line parsing
+ auto configFile = fs::path(sConfigMgr->GetConfigPath() + std::string(_ACORE_REALM_CONFIG));
+ auto vm = GetConsoleArguments(argc, argv, configFile);
+
+ // exit if help or version is enabled
+ if (vm.count("help"))
+ return 0;
// Add file and args in config
- sConfigMgr->Configure(configFile, std::vector<std::string>(argv, argv + argc));
+ sConfigMgr->Configure(configFile.generic_string(), std::vector<std::string>(argv, argv + argc));
if (!sConfigMgr->LoadAppConfigs())
return 1;
@@ -149,6 +137,13 @@ int main(int argc, char** argv)
return 1;
}
+ // Stop auth server if dry run
+ if (sConfigMgr->isDryRun())
+ {
+ LOG_INFO("server.authserver", "Dry run completed, terminating.");
+ return 0;
+ }
+
// Start the listening port (acceptor) for auth connections
int32 port = sConfigMgr->GetOption<int32>("RealmServerPort", 3724);
if (port < 0 || port > 0xFFFF)
@@ -268,3 +263,36 @@ void BanExpiryHandler(std::weak_ptr<Acore::Asio::DeadlineTimer> banExpiryCheckTi
}
}
}
+
+variables_map GetConsoleArguments(int argc, char** argv, fs::path& configFile)
+{
+ options_description all("Allowed options");
+ all.add_options()
+ ("help,h", "print usage message")
+ ("version,v", "print version build info")
+ ("dry-run,d", "Dry run")
+ ("config,c", value<fs::path>(&configFile)->default_value(fs::path(sConfigMgr->GetConfigPath() + std::string(_ACORE_REALM_CONFIG))), "use <arg> as configuration file");
+
+ variables_map variablesMap;
+
+ try
+ {
+ store(command_line_parser(argc, argv).options(all).allow_unregistered().run(), variablesMap);
+ notify(variablesMap);
+ }
+ catch (std::exception const& e)
+ {
+ std::cerr << e.what() << "\n";
+ }
+
+ if (variablesMap.count("help"))
+ {
+ std::cout << all << "\n";
+ }
+ else if (variablesMap.count("dry-run"))
+ {
+ sConfigMgr->setDryRun(true);
+ }
+
+ return variablesMap;
+}
diff --git a/src/server/authserver/PrecompiledHeaders/authPCH.h b/src/server/apps/authserver/PrecompiledHeaders/authserverPCH.h
index e252912e7c..e252912e7c 100644
--- a/src/server/authserver/PrecompiledHeaders/authPCH.h
+++ b/src/server/apps/authserver/PrecompiledHeaders/authserverPCH.h
diff --git a/src/server/authserver/Server/AuthSession.cpp b/src/server/apps/authserver/Server/AuthSession.cpp
index ca411fa292..ca411fa292 100644
--- a/src/server/authserver/Server/AuthSession.cpp
+++ b/src/server/apps/authserver/Server/AuthSession.cpp
diff --git a/src/server/authserver/Server/AuthSession.h b/src/server/apps/authserver/Server/AuthSession.h
index 4a333c8168..4a333c8168 100644
--- a/src/server/authserver/Server/AuthSession.h
+++ b/src/server/apps/authserver/Server/AuthSession.h
diff --git a/src/server/authserver/Server/AuthSocketMgr.h b/src/server/apps/authserver/Server/AuthSocketMgr.h
index 53f46ff92a..53f46ff92a 100644
--- a/src/server/authserver/Server/AuthSocketMgr.h
+++ b/src/server/apps/authserver/Server/AuthSocketMgr.h
diff --git a/src/server/authserver/authserver.conf.dist b/src/server/apps/authserver/authserver.conf.dist
index 923074c332..923074c332 100644
--- a/src/server/authserver/authserver.conf.dist
+++ b/src/server/apps/authserver/authserver.conf.dist
diff --git a/src/server/authserver/authserver.ico b/src/server/apps/authserver/authserver.ico
index 2d500278c9..2d500278c9 100644
--- a/src/server/authserver/authserver.ico
+++ b/src/server/apps/authserver/authserver.ico
Binary files differ
diff --git a/src/server/authserver/authserver.rc b/src/server/apps/authserver/authserver.rc
index 0b30740e63..0b30740e63 100644
--- a/src/server/authserver/authserver.rc
+++ b/src/server/apps/authserver/authserver.rc
diff --git a/src/server/authserver/resource.h b/src/server/apps/authserver/resource.h
index 5415d15d80..5415d15d80 100644
--- a/src/server/authserver/resource.h
+++ b/src/server/apps/authserver/resource.h
diff --git a/src/server/worldserver/ACSoap/ACSoap.cpp b/src/server/apps/worldserver/ACSoap/ACSoap.cpp
index a63542ec25..a63542ec25 100644
--- a/src/server/worldserver/ACSoap/ACSoap.cpp
+++ b/src/server/apps/worldserver/ACSoap/ACSoap.cpp
diff --git a/src/server/worldserver/ACSoap/ACSoap.h b/src/server/apps/worldserver/ACSoap/ACSoap.h
index fd62012b58..fd62012b58 100644
--- a/src/server/worldserver/ACSoap/ACSoap.h
+++ b/src/server/apps/worldserver/ACSoap/ACSoap.h
diff --git a/src/server/worldserver/CommandLine/CliRunnable.cpp b/src/server/apps/worldserver/CommandLine/CliRunnable.cpp
index c2cc94edbc..c2cc94edbc 100644
--- a/src/server/worldserver/CommandLine/CliRunnable.cpp
+++ b/src/server/apps/worldserver/CommandLine/CliRunnable.cpp
diff --git a/src/server/worldserver/CommandLine/CliRunnable.h b/src/server/apps/worldserver/CommandLine/CliRunnable.h
index b4ac398a1d..b4ac398a1d 100644
--- a/src/server/worldserver/CommandLine/CliRunnable.h
+++ b/src/server/apps/worldserver/CommandLine/CliRunnable.h
diff --git a/src/server/worldserver/Main.cpp b/src/server/apps/worldserver/Main.cpp
index f49740a360..d8361c468b 100644
--- a/src/server/worldserver/Main.cpp
+++ b/src/server/apps/worldserver/Main.cpp
@@ -36,6 +36,7 @@
#include "IoContext.h"
#include "MapMgr.h"
#include "Metric.h"
+#include "ModuleMgr.h"
#include "ModulesScriptLoader.h"
#include "MySQLThreading.h"
#include "OpenSSLCrypto.h"
@@ -54,12 +55,12 @@
#include <boost/asio/signal_set.hpp>
#include <boost/program_options.hpp>
#include <csignal>
+#include <filesystem>
+#include <iostream>
#include <openssl/crypto.h>
#include <openssl/opensslv.h>
-#include "ModuleMgr.h"
-
-#ifdef _WIN32
+#if AC_PLATFORM == AC_PLATFORM_WINDOWS
#include "ServiceWin32.h"
char serviceName[] = "worldserver";
char serviceLongName[] = "AzerothCore world service";
@@ -78,6 +79,8 @@ int m_ServiceStatus = -1;
#endif
#define WORLD_SLEEP_CONST 10
+using namespace boost::program_options;
+namespace fs = std::filesystem;
class FreezeDetector
{
@@ -110,20 +113,7 @@ void ShutdownCLIThread(std::thread* cliThread);
void AuctionListingRunnable();
void ShutdownAuctionListingThread(std::thread* thread);
void WorldUpdateLoop();
-
-/// Print out the usage string for this program on the console.
-void usage(const char* prog)
-{
- printf("Usage:\n");
- printf(" %s [<options>]\n", prog);
- printf(" -c config_file use config_file as configuration file\n");
-#ifdef _WIN32
- printf(" Running as service functions:\n");
- printf(" --service run as service\n");
- printf(" -s install install service\n");
- printf(" -s uninstall uninstall service\n");
-#endif
-}
+variables_map GetConsoleArguments(int argc, char** argv, fs::path& configFile, [[maybe_unused]] std::string& cfg_service);
/// Launch the Azeroth server
int main(int argc, char** argv)
@@ -131,66 +121,26 @@ int main(int argc, char** argv)
Acore::Impl::CurrentServerProcessHolder::_type = SERVER_PROCESS_WORLDSERVER;
signal(SIGABRT, &Acore::AbortHandler);
- ///- Command line parsing to get the configuration file name
- std::string configFile = sConfigMgr->GetConfigPath() + std::string(_ACORE_CORE_CONFIG);
- int c = 1;
- while (c < argc)
- {
- if (strcmp(argv[c], "--dry-run") == 0)
- {
- sConfigMgr->setDryRun(true);
- }
+ // Command line parsing
+ auto configFile = fs::path(sConfigMgr->GetConfigPath() + std::string(_ACORE_CORE_CONFIG));
+ std::string configService;
+ auto vm = GetConsoleArguments(argc, argv, configFile, configService);
- if (!strcmp(argv[c], "-c"))
- {
- if (++c >= argc)
- {
- printf("Runtime-Error: -c option requires an input argument");
- usage(argv[0]);
- return 1;
- }
- else
- configFile = argv[c];
- }
-
-#ifdef _WIN32
- if (strcmp(argv[c], "-s") == 0) // Services
- {
- if (++c >= argc)
- {
- printf("Runtime-Error: -s option requires an input argument");
- usage(argv[0]);
- return 1;
- }
-
- if (strcmp(argv[c], "install") == 0)
- {
- if (WinServiceInstall())
- printf("Installing service\n");
- return 1;
- }
- else if (strcmp(argv[c], "uninstall") == 0)
- {
- if (WinServiceUninstall())
- printf("Uninstalling service\n");
- return 1;
- }
- else
- {
- printf("Runtime-Error: unsupported option %s", argv[c]);
- usage(argv[0]);
- return 1;
- }
- }
+ // exit if help or version is enabled
+ if (vm.count("help"))
+ return 0;
- if (strcmp(argv[c], "--service") == 0)
- WinServiceRun();
+#if AC_PLATFORM == AC_PLATFORM_WINDOWS
+ if (configService.compare("install") == 0)
+ return WinServiceInstall() == true ? 0 : 1;
+ else if (configService.compare("uninstall") == 0)
+ return WinServiceUninstall() == true ? 0 : 1;
+ else if (configService.compare("run") == 0)
+ WinServiceRun();
#endif
- ++c;
- }
// Add file and args in config
- sConfigMgr->Configure(configFile, { argv, argv + argc }, CONFIG_FILE_LIST);
+ sConfigMgr->Configure(configFile.generic_string(), {argv, argv + argc}, CONFIG_FILE_LIST);
if (!sConfigMgr->LoadAppConfigs())
return 1;
@@ -399,7 +349,7 @@ int main(int argc, char** argv)
// Launch CliRunnable thread
std::shared_ptr<std::thread> cliThread;
-#ifdef _WIN32
+#if AC_PLATFORM == AC_PLATFORM_WINDOWS
if (sConfigMgr->GetOption<bool>("Console.Enable", true) && (m_ServiceStatus == -1)/* need disable console in service mode*/)
#else
if (sConfigMgr->GetOption<bool>("Console.Enable", true))
@@ -768,3 +718,44 @@ void ShutdownAuctionListingThread(std::thread* thread)
delete thread;
}
}
+
+variables_map GetConsoleArguments(int argc, char** argv, fs::path& configFile, [[maybe_unused]] std::string& configService)
+{
+ options_description all("Allowed options");
+ all.add_options()
+ ("help,h", "print usage message")
+ ("version,v", "print version build info")
+ ("dry-run,d", "Dry run")
+ ("config,c", value<fs::path>(&configFile)->default_value(fs::path(sConfigMgr->GetConfigPath() + std::string(_ACORE_CORE_CONFIG))), "use <arg> as configuration file");
+
+#if AC_PLATFORM == WARHEAD_PLATFORM_WINDOWS
+ options_description win("Windows platform specific options");
+ win.add_options()
+ ("service,s", value<std::string>(&configService)->default_value(""), "Windows service options: [install | uninstall]");
+
+ all.add(win);
+#endif
+
+ variables_map vm;
+
+ try
+ {
+ store(command_line_parser(argc, argv).options(all).allow_unregistered().run(), vm);
+ notify(vm);
+ }
+ catch (std::exception const& e)
+ {
+ std::cerr << e.what() << "\n";
+ }
+
+ if (vm.count("help"))
+ {
+ std::cout << all << "\n";
+ }
+ else if (vm.count("dry-run"))
+ {
+ sConfigMgr->setDryRun(true);
+ }
+
+ return vm;
+}
diff --git a/src/server/worldserver/PrecompiledHeaders/worldPCH.h b/src/server/apps/worldserver/PrecompiledHeaders/worldserverPCH.h
index 8b86ed3cc0..8b86ed3cc0 100644
--- a/src/server/worldserver/PrecompiledHeaders/worldPCH.h
+++ b/src/server/apps/worldserver/PrecompiledHeaders/worldserverPCH.h
diff --git a/src/server/worldserver/RemoteAccess/RASession.cpp b/src/server/apps/worldserver/RemoteAccess/RASession.cpp
index 4bbd1b5385..4bbd1b5385 100644
--- a/src/server/worldserver/RemoteAccess/RASession.cpp
+++ b/src/server/apps/worldserver/RemoteAccess/RASession.cpp
diff --git a/src/server/worldserver/RemoteAccess/RASession.h b/src/server/apps/worldserver/RemoteAccess/RASession.h
index c4dd6d861f..c4dd6d861f 100644
--- a/src/server/worldserver/RemoteAccess/RASession.h
+++ b/src/server/apps/worldserver/RemoteAccess/RASession.h
diff --git a/src/server/worldserver/resource.h b/src/server/apps/worldserver/resource.h
index 5415d15d80..5415d15d80 100644
--- a/src/server/worldserver/resource.h
+++ b/src/server/apps/worldserver/resource.h
diff --git a/src/server/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist
index 66e5b06364..66e5b06364 100644
--- a/src/server/worldserver/worldserver.conf.dist
+++ b/src/server/apps/worldserver/worldserver.conf.dist
diff --git a/src/server/worldserver/worldserver.ico b/src/server/apps/worldserver/worldserver.ico
index 01a874d9fc..01a874d9fc 100644
--- a/src/server/worldserver/worldserver.ico
+++ b/src/server/apps/worldserver/worldserver.ico
Binary files differ
diff --git a/src/server/worldserver/worldserver.rc b/src/server/apps/worldserver/worldserver.rc
index 8a2790fd84..8a2790fd84 100644
--- a/src/server/worldserver/worldserver.rc
+++ b/src/server/apps/worldserver/worldserver.rc
diff --git a/src/server/authserver/CMakeLists.txt b/src/server/authserver/CMakeLists.txt
deleted file mode 100644
index b70340ed28..0000000000
--- a/src/server/authserver/CMakeLists.txt
+++ /dev/null
@@ -1,77 +0,0 @@
-#
-# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
-#
-# 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.
-#
-
-########### authserver ###############
-
-CollectSourceFiles(
- ${CMAKE_CURRENT_SOURCE_DIR}
- PRIVATE_SOURCES
- # Exclude
- ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders)
-
-if( WIN32 )
- list(APPEND PRIVATE_SOURCES ${winDebugging})
- if ( MSVC )
- list(APPEND PRIVATE_SOURCES authserver.rc)
- endif()
-endif()
-
-if (USE_COREPCH)
- set(PRIVATE_PCH_HEADER PrecompiledHeaders/authPCH.h)
-endif()
-
-# Group sources
-GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
-
-add_executable(authserver
- ${PRIVATE_SOURCES})
-
-add_dependencies(authserver revision.h)
-
-target_link_libraries(authserver
- PRIVATE
- acore-core-interface
- 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")
-
-# Install config
-CopyDefaultConfig(authserver)
-
-if ( UNIX )
- install(TARGETS authserver DESTINATION bin)
-elseif ( WIN32 )
- install(TARGETS authserver DESTINATION "${CMAKE_INSTALL_PREFIX}")
-endif()
-
-# Generate precompiled header
-if (USE_COREPCH)
- add_cxx_pch(authserver ${PRIVATE_PCH_HEADER})
-endif()
-
-CU_RUN_HOOK("AFTER_AUTHSERVER_CMAKE")
diff --git a/src/server/database/Database/MySQLConnection.cpp b/src/server/database/Database/MySQLConnection.cpp
index 632df7a456..b07f0d36cd 100644
--- a/src/server/database/Database/MySQLConnection.cpp
+++ b/src/server/database/Database/MySQLConnection.cpp
@@ -90,7 +90,7 @@ uint32 MySQLConnection::Open()
MYSQL* mysqlInit = mysql_init(nullptr);
if (!mysqlInit)
{
- LOG_ERROR("sql.sql", "Could not initialize Mysql connection to database `{}`", m_connectionInfo.database);
+ LOG_ERROR("sql.driver", "Could not initialize Mysql connection to database `{}`", m_connectionInfo.database);
return CR_UNKNOWN_ERROR;
}
@@ -170,7 +170,7 @@ uint32 MySQLConnection::Open()
}
else
{
- LOG_ERROR("sql.sql", "Could not connect to MySQL database at {}: {}", m_connectionInfo.host, mysql_error(mysqlInit));
+ LOG_ERROR("sql.driver", "Could not connect to MySQL database at {}: {}", m_connectionInfo.host, mysql_error(mysqlInit));
uint32 errorCode = mysql_errno(mysqlInit);
mysql_close(mysqlInit);
return errorCode;
diff --git a/src/server/scripts/CMakeLists.txt b/src/server/scripts/CMakeLists.txt
index c363a367b1..e2320d251b 100644
--- a/src/server/scripts/CMakeLists.txt
+++ b/src/server/scripts/CMakeLists.txt
@@ -12,11 +12,8 @@
CU_RUN_HOOK(BEFORE_SCRIPTS_LIBRARY)
-message("")
-
# Make the script module list available in the current scope
GetScriptModuleList(SCRIPT_MODULE_LIST)
-GetModuleSourceList(MODULES_MODULE_LIST)
# Make the native install offset available in this scope
GetInstallOffset(INSTALL_OFFSET)
@@ -33,18 +30,6 @@ else()
set(SCRIPTS_DEFAULT_LINKAGE "disabled")
endif()
-# Sets the MODULES_${SOURCE_MODULE} variables
-# when using predefined templates for script building
-# like dynamic, static
-# Sets MODULES_DEFAULT_LINKAGE
-if(MODULES MATCHES "dynamic")
- set(MODULES_DEFAULT_LINKAGE "dynamic")
-elseif(MODULES MATCHES "static")
- set(MODULES_DEFAULT_LINKAGE "static")
-else()
- set(MODULES_DEFAULT_LINKAGE "disabled")
-endif()
-
# Sets SCRIPTS_USE_WHITELIST
# Sets SCRIPTS_WHITELIST
if(SCRIPTS MATCHES "minimal")
@@ -93,8 +78,8 @@ list(SORT SCRIPT_GRAPH_KEYS)
list(REMOVE_DUPLICATES SCRIPT_GRAPH_KEYS)
# Display the script graph
-message("* Script configuration (${SCRIPTS}):
- |")
+message("* Script configuration (${SCRIPTS}):")
+message(" |")
foreach(SCRIPT_GRAPH_KEY ${SCRIPT_GRAPH_KEYS})
if(NOT SCRIPT_GRAPH_KEY STREQUAL "disabled")
@@ -108,10 +93,8 @@ foreach(SCRIPT_GRAPH_KEY ${SCRIPT_GRAPH_KEYS})
message(" |")
endforeach()
-message("")
-
# Base sources which are used by every script project
-if(USE_SCRIPTPCH)
+if (USE_SCRIPTPCH)
set(PRIVATE_PCH_HEADER ScriptPCH.h)
endif()
diff --git a/src/server/shared/SharedDefines.h b/src/server/shared/SharedDefines.h
index 36a0c9242a..16069658ba 100644
--- a/src/server/shared/SharedDefines.h
+++ b/src/server/shared/SharedDefines.h
@@ -19,7 +19,6 @@
#define ACORE_SHAREDDEFINES_H
#include "Define.h"
-#include "DetourNavMesh.h"
#include "EnumFlag.h"
#include <cassert>
diff --git a/src/server/worldserver/CMakeLists.txt b/src/server/worldserver/CMakeLists.txt
deleted file mode 100644
index bb7b75d30b..0000000000
--- a/src/server/worldserver/CMakeLists.txt
+++ /dev/null
@@ -1,91 +0,0 @@
-#
-# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
-#
-# 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.
-#
-
-CollectSourceFiles(
- ${CMAKE_CURRENT_SOURCE_DIR}
- PRIVATE_SOURCES
- # Exclude
- ${CMAKE_CURRENT_SOURCE_DIR}/PrecompiledHeaders)
-
-if( WIN32 )
- list(APPEND PRIVATE_SOURCES ${winDebugging} ${winService})
- if ( MSVC )
- list(APPEND PRIVATE_SOURCES worldserver.rc)
- endif()
-endif()
-
-if (USE_COREPCH)
- set(PRIVATE_PCH_HEADER PrecompiledHeaders/worldPCH.h)
-endif()
-
-# Group sources
-GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
-
-add_executable(worldserver
- ${PRIVATE_SOURCES})
-
-add_dependencies(worldserver revision.h)
-
-if(UNIX AND NOT NOJEM)
- set(worldserver_LINK_FLAGS "-pthread -lncurses ${worldserver_LINK_FLAGS}")
-endif()
-
-set_target_properties(worldserver PROPERTIES LINK_FLAGS "${worldserver_LINK_FLAGS}")
-
-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})
-
-target_link_libraries(worldserver
- PRIVATE
- acore-core-interface
- PUBLIC
- modules
- scripts
- game
- gsoap
- readline
- gperftools)
-
-set_target_properties(worldserver
- PROPERTIES
- FOLDER
- "server")
-
-# Add all dynamic projects as dependency to the worldserver
-if(WORLDSERVER_DYNAMIC_SCRIPT_MODULES_DEPENDENCIES)
- add_dependencies(worldserver ${WORLDSERVER_DYNAMIC_SCRIPT_MODULES_DEPENDENCIES})
-endif()
-
-# Install config
-CopyDefaultConfig(worldserver)
-
-if( UNIX )
- install(TARGETS worldserver DESTINATION bin)
-elseif( WIN32 )
- install(TARGETS worldserver DESTINATION "${CMAKE_INSTALL_PREFIX}")
-endif()
-
-# Generate precompiled header
-if( USE_COREPCH )
- add_cxx_pch(worldserver ${PRIVATE_PCH_HEADER})
-endif()
-
-CU_RUN_HOOK("AFTER_WORLDSERVER_CMAKE")
diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt
index 046265c771..9ce44a36e3 100644
--- a/src/tools/CMakeLists.txt
+++ b/src/tools/CMakeLists.txt
@@ -8,9 +8,155 @@
# 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.
-#
-add_subdirectory(map_extractor)
-add_subdirectory(vmap4_assembler)
-add_subdirectory(vmap4_extractor)
-add_subdirectory(mmaps_generator)
+# Make the tools list available in the current scope
+GetToolsList(TOOLS_BUILD_LIST)
+
+if (TOOLS_BUILD STREQUAL "none")
+ set(TOOLS_DEFAULT_BUILD "disabled")
+else()
+ set(TOOLS_DEFAULT_BUILD "enabled")
+endif()
+
+# Sets BUILD_TOOLS_USE_WHITELIST
+# Sets BUILD_TOOLS_WHITELIST
+if (TOOLS_BUILD MATCHES "-only")
+ set(BUILD_TOOLS_USE_WHITELIST ON)
+
+ if (TOOLS_BUILD STREQUAL "maps-only")
+ list(APPEND BUILD_TOOLS_WHITELIST map_extractor mmaps_generator vmap4_assembler vmap4_extractor)
+ endif()
+
+ # if (TOOLS_BUILD STREQUAL "db-only")
+ # list(APPEND BUILD_TOOLS_WHITELIST dbimport)
+ # endif()
+endif()
+
+# Set the TOOL_${TOOL_BUILD_NAME} variables from the
+# variables set above
+foreach(TOOL_BUILD_NAME ${TOOLS_BUILD_LIST})
+ ToolNameToVariable(${TOOL_BUILD_NAME} TOOL_BUILD_VARIABLE)
+
+ if(${TOOL_BUILD_VARIABLE} STREQUAL "default")
+ if(BUILD_TOOLS_USE_WHITELIST)
+ list(FIND BUILD_TOOLS_WHITELIST "${TOOL_BUILD_NAME}" INDEX)
+ if(${INDEX} GREATER -1)
+ set(${TOOL_BUILD_VARIABLE} ${TOOLS_DEFAULT_BUILD})
+ else()
+ set(${TOOL_BUILD_VARIABLE} "disabled")
+ endif()
+ else()
+ set(${TOOL_BUILD_VARIABLE} ${TOOLS_DEFAULT_BUILD})
+ endif()
+ endif()
+
+ # Build the Graph values
+ if(${TOOL_BUILD_VARIABLE} MATCHES "enabled")
+ list(APPEND TOOL_BUILD_GRAPH_KEYS tools)
+ set(TOOL_BUILD_VALUE_DISPLAY_tools tools)
+ list(APPEND TOOL_BUILD_VALUE_CONTAINS_tools ${TOOL_BUILD_NAME})
+ else()
+ list(APPEND TOOL_BUILD_GRAPH_KEYS disabled)
+ set(TOOL_BUILD_VALUE_DISPLAY_disabled disabled)
+ list(APPEND TOOL_BUILD_VALUE_CONTAINS_disabled ${TOOL_BUILD_NAME})
+ endif()
+endforeach()
+
+list(SORT TOOL_BUILD_GRAPH_KEYS)
+list(REMOVE_DUPLICATES TOOL_BUILD_GRAPH_KEYS)
+
+# Display the graphs
+# message("")
+message("* Tools build list (${TOOLS_BUILD}):")
+message(" |")
+
+foreach(TOOL_BUILD_GRAPH_KEY ${TOOL_BUILD_GRAPH_KEYS})
+ if(NOT TOOL_BUILD_GRAPH_KEY STREQUAL "disabled")
+ message(" +- ${TOOL_BUILD_VALUE_DISPLAY_${TOOL_BUILD_GRAPH_KEY}}")
+ else()
+ message(" | ${TOOL_BUILD_VALUE_DISPLAY_${TOOL_BUILD_GRAPH_KEY}}")
+ endif()
+ foreach(TOOL_BUILD_GRAPH_ENTRY ${TOOL_BUILD_VALUE_CONTAINS_${TOOL_BUILD_GRAPH_KEY}})
+ message(" | +- ${TOOL_BUILD_GRAPH_ENTRY}")
+ endforeach()
+ message(" |")
+endforeach()
+
+message("")
+
+GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
+
+# Generates the actual tools projects
+foreach(TOOL_NAME ${TOOLS_BUILD_LIST})
+ GetPathToTool(${TOOL_NAME} SOURCE_TOOL_PATH)
+ ToolNameToVariable(${TOOL_NAME} TOOL_BUILD_VARIABLE)
+
+ if (${TOOL_BUILD_VARIABLE} STREQUAL "disabled")
+ continue()
+ endif()
+
+ unset(TOOL_PRIVATE_SOURCES)
+ CollectSourceFiles(
+ ${SOURCE_TOOL_PATH}
+ TOOL_PRIVATE_SOURCES)
+
+ if (WIN32)
+ list(APPEND TOOL_PRIVATE_SOURCES ${winDebugging})
+ endif()
+
+ GetProjectNameOfToolName(${TOOL_NAME} TOOL_PROJECT_NAME)
+
+ # Create the application project
+ add_executable(${TOOL_PROJECT_NAME}
+ ${TOOL_PRIVATE_SOURCES})
+
+ add_dependencies(${TOOL_PROJECT_NAME} revision.h)
+
+ # Need fix errors
+ # target_link_libraries(${TOOL_PROJECT_NAME}
+ # PRIVATE
+ # acore-core-interface)
+
+ # if (${TOOL_PROJECT_NAME} MATCHES "dbimport")
+ # target_link_libraries(${TOOL_PROJECT_NAME}
+ # PUBLIC
+ # database)
+
+ # # Install config
+ # CopyToolConfig(${TOOL_PROJECT_NAME} ${TOOL_NAME})
+ # else()
+ target_link_libraries(${TOOL_PROJECT_NAME}
+ PUBLIC
+ common
+ mpq
+ zlib
+ Recast
+ g3dlib)
+ # endif()
+
+ unset(TOOL_PUBLIC_INCLUDES)
+ CollectIncludeDirectories(
+ ${SOURCE_TOOL_PATH}
+ TOOL_PUBLIC_INCLUDES)
+
+ target_include_directories(${TOOL_PROJECT_NAME}
+ PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR})
+
+ target_include_directories(${TOOL_PROJECT_NAME}
+ PUBLIC
+ ${TOOL_PUBLIC_INCLUDES}
+ PRIVATE
+ ${CMAKE_CURRENT_BINARY_DIR}/${TOOL_NAME})
+
+ set_target_properties(${TOOL_PROJECT_NAME}
+ PROPERTIES
+ FOLDER
+ "tools")
+
+ if (UNIX)
+ install(TARGETS ${TOOL_PROJECT_NAME} DESTINATION bin)
+ elseif (WIN32)
+ install(TARGETS ${TOOL_PROJECT_NAME} DESTINATION "${CMAKE_INSTALL_PREFIX}")
+ endif()
+endforeach()
diff --git a/src/tools/map_extractor/CMakeLists.txt b/src/tools/map_extractor/CMakeLists.txt
deleted file mode 100644
index 5b092c7c91..0000000000
--- a/src/tools/map_extractor/CMakeLists.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
-#
-# 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.
-#
-
-CollectSourceFiles(
- ${CMAKE_CURRENT_SOURCE_DIR}
- PRIVATE_SOURCES)
-
-add_executable(mapextractor
- ${PRIVATE_SOURCES}
-)
-
-target_include_directories(mapextractor
- PUBLIC
- ${CMAKE_SOURCE_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/loadlib)
-
-target_link_libraries(mapextractor
- PRIVATE
- acore-core-interface
- PUBLIC
- common
- 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)
-elseif( WIN32 )
- install(TARGETS mapextractor DESTINATION "${CMAKE_INSTALL_PREFIX}")
-endif()
diff --git a/src/tools/mmaps_generator/CMakeLists.txt b/src/tools/mmaps_generator/CMakeLists.txt
deleted file mode 100644
index c7d295acb3..0000000000
--- a/src/tools/mmaps_generator/CMakeLists.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
-#
-# 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.
-#
-
-CollectSourceFiles(
- ${CMAKE_CURRENT_SOURCE_DIR}
- PRIVATE_SOURCES)
-
-add_executable(mmaps_generator ${PRIVATE_SOURCES})
-
-target_link_libraries(mmaps_generator
- PRIVATE
- acore-core-interface
- PUBLIC
- common
- Recast
- mpq)
-
-# Group sources
-GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
-
-CollectIncludeDirectories(
- ${CMAKE_CURRENT_SOURCE_DIR}
- PUBLIC_INCLUDES)
-
-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)
-elseif( WIN32 )
- install(TARGETS mmaps_generator DESTINATION "${CMAKE_INSTALL_PREFIX}")
-endif()
diff --git a/src/tools/vmap4_assembler/CMakeLists.txt b/src/tools/vmap4_assembler/CMakeLists.txt
deleted file mode 100644
index 0b0108d7c0..0000000000
--- a/src/tools/vmap4_assembler/CMakeLists.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
-#
-# 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.
-#
-
-add_executable(vmap4assembler VMapAssembler.cpp)
-
-if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
- set_target_properties(vmap4assembler PROPERTIES LINK_FLAGS "-framework Carbon")
-endif()
-
-target_link_libraries(vmap4assembler
- PRIVATE
- acore-core-interface
- PUBLIC
- common
- zlib)
-
-# Group sources
-GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
-
-set_target_properties(vmap4assembler
- PROPERTIES
- FOLDER
- "tools")
-
-if( UNIX )
- install(TARGETS vmap4assembler DESTINATION bin)
-elseif( WIN32 )
- install(TARGETS vmap4assembler DESTINATION "${CMAKE_INSTALL_PREFIX}")
-endif()
diff --git a/src/tools/vmap4_extractor/CMakeLists.txt b/src/tools/vmap4_extractor/CMakeLists.txt
deleted file mode 100644
index cc0a69548d..0000000000
--- a/src/tools/vmap4_extractor/CMakeLists.txt
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
-#
-# 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.
-#
-
-CollectSourceFiles(
- ${CMAKE_CURRENT_SOURCE_DIR}
- PRIVATE_SOURCES)
-
-add_executable(vmap4extractor ${PRIVATE_SOURCES})
-
-target_link_libraries(vmap4extractor
- PUBLIC
- g3dlib
- mpq)
-
-# Group sources
-GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
-
-CollectIncludeDirectories(
- ${CMAKE_CURRENT_SOURCE_DIR}
- PUBLIC_INCLUDES)
-
-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)
-elseif( WIN32 )
- install(TARGETS vmap4extractor DESTINATION "${CMAKE_INSTALL_PREFIX}")
-endif()