diff options
-rw-r--r-- | .github/workflows/core_build.yml | 6 | ||||
-rw-r--r-- | .github/workflows/core_matrix_build.yml | 6 | ||||
-rw-r--r-- | .github/workflows/core_modules_build.yml | 6 | ||||
-rw-r--r-- | .github/workflows/windows_build.yml | 10 | ||||
-rw-r--r-- | CMakeLists.txt | 22 | ||||
-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.sh | 68 | ||||
-rw-r--r-- | apps/ci/ci-dry-run.sh | 28 | ||||
-rwxr-xr-x | apps/ci/ci-worldserver-dry-run.sh | 11 | ||||
-rw-r--r-- | apps/compiler/includes/functions.sh | 22 | ||||
-rw-r--r-- | apps/docker/Dockerfile | 12 | ||||
-rw-r--r-- | conf/dist/config.cmake | 51 | ||||
-rw-r--r-- | conf/dist/config.sh | 35 | ||||
-rw-r--r-- | deps/CMakeLists.txt | 28 | ||||
-rw-r--r-- | src/CMakeLists.txt | 18 | ||||
-rw-r--r-- | src/cmake/macros/ConfigInstall.cmake | 44 | ||||
-rw-r--r-- | src/cmake/macros/ConfigureApplications.cmake | 108 | ||||
-rw-r--r-- | src/cmake/macros/ConfigureTools.cmake | 110 | ||||
-rw-r--r-- | src/cmake/showoptions.cmake | 25 | ||||
-rw-r--r-- | src/common/CMakeLists.txt | 22 | ||||
-rw-r--r-- | src/common/Logging/Log.h | 2 | ||||
-rw-r--r-- | src/server/CMakeLists.txt | 29 | ||||
-rw-r--r-- | src/server/apps/CMakeLists.txt | 198 | ||||
-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) | bin | 85182 -> 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) | bin | 85182 -> 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.txt | 77 | ||||
-rw-r--r-- | src/server/database/Database/MySQLConnection.cpp | 4 | ||||
-rw-r--r-- | src/server/scripts/CMakeLists.txt | 23 | ||||
-rw-r--r-- | src/server/shared/SharedDefines.h | 1 | ||||
-rw-r--r-- | src/server/worldserver/CMakeLists.txt | 91 | ||||
-rw-r--r-- | src/tools/CMakeLists.txt | 156 | ||||
-rw-r--r-- | src/tools/map_extractor/CMakeLists.txt | 55 | ||||
-rw-r--r-- | src/tools/mmaps_generator/CMakeLists.txt | 50 | ||||
-rw-r--r-- | src/tools/vmap4_assembler/CMakeLists.txt | 38 | ||||
-rw-r--r-- | src/tools/vmap4_extractor/CMakeLists.txt | 46 |
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 Binary files differindex 2d500278c9..2d500278c9 100644 --- a/src/server/authserver/authserver.ico +++ b/src/server/apps/authserver/authserver.ico 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 Binary files differindex 01a874d9fc..01a874d9fc 100644 --- a/src/server/worldserver/worldserver.ico +++ b/src/server/apps/worldserver/worldserver.ico 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() |