diff options
author | Kargatum <dowlandtop@yandex.com> | 2021-05-23 18:53:15 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-23 13:53:15 +0200 |
commit | 50adcf206567dbf5d44b4424ab771f8f427bd4f2 (patch) | |
tree | 924b2e72a7f69b2e5d081e3f6530b07439677c88 | |
parent | af28aeebde8f8d9dec96259a594af595e1308d33 (diff) |
feat(Deps/Boost): add boost support (#5676)
* feat(Deps/Boost): add boost support
* 1
* 2
* to 1.74
-rw-r--r-- | .github/workflows/windows_build.yml | 4 | ||||
-rw-r--r-- | apps/docker/Dockerfile | 6 | ||||
-rw-r--r-- | apps/installer/includes/os_configs/debian.sh | 1 | ||||
-rw-r--r-- | apps/installer/includes/os_configs/osx.sh | 2 | ||||
-rw-r--r-- | apps/installer/includes/os_configs/ubuntu.sh | 15 | ||||
-rw-r--r-- | deps/CMakeLists.txt | 7 | ||||
-rw-r--r-- | deps/PackageList.txt | 4 | ||||
-rw-r--r-- | deps/boost/CMakeLists.txt | 85 | ||||
-rw-r--r-- | src/common/CMakeLists.txt | 1 |
9 files changed, 114 insertions, 11 deletions
diff --git a/.github/workflows/windows_build.yml b/.github/workflows/windows_build.yml index 018c942f64..960de07c37 100644 --- a/.github/workflows/windows_build.yml +++ b/.github/workflows/windows_build.yml @@ -12,11 +12,13 @@ jobs: fail-fast: false runs-on: windows-2019 name: windows-2019-MSVC16 + env: + BOOST_ROOT: C:\local\boost_1_74_0 if: github.repository == 'azerothcore/azerothcore-wotlk' steps: - uses: actions/checkout@v2 - name: Configure OS - run: choco install --no-progress openssl + run: choco install --no-progress openssl boost-msvc-14.2 - name: Build shell: bash run: | diff --git a/apps/docker/Dockerfile b/apps/docker/Dockerfile index 94af95c391..c4bdddf4dc 100644 --- a/apps/docker/Dockerfile +++ b/apps/docker/Dockerfile @@ -28,6 +28,7 @@ ENV DEBIAN_FRONTEND=noninteractive # since it's not cacheable by docker RUN apt-get update && apt-get install -y gdb gdbserver git dos2unix lsb-core sudo curl unzip \ make cmake clang libmysqlclient-dev libace-dev \ + libboost-system1.7*-dev libboost-filesystem1.7*-dev libboost-program-options1.7*-dev libboost-iostreams1.7*-dev \ build-essential libtool cmake-data openssl libgoogle-perftools-dev google-perftools \ libssl-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev mysql-client \ libncurses5-dev ccache \ @@ -107,6 +108,7 @@ RUN addgroup --gid $GROUP_ID acore && \ # install the required dependencies to run the server RUN apt-get update && apt-get install -y dos2unix gdb gdbserver google-perftools libgoogle-perftools-dev net-tools \ + libboost-system1.7*-dev libboost-filesystem1.7*-dev libboost-program-options1.7*-dev libboost-iostreams1.7*-dev \ tzdata libmysqlclient-dev libace-dev mysql-client curl unzip && rm -rf /var/lib/apt/lists/* ; # change timezone in container @@ -278,7 +280,9 @@ ENV TZ=Etc/UTC # set noninteractive mode so tzdata doesn't ask to set timezone on install ENV DEBIAN_FRONTEND=noninteractive -RUN apt-get update && apt-get install -y libmysqlclient-dev libace-dev libssl-dev libbz2-dev sudo && rm -rf /var/lib/apt/lists/* ; +RUN apt-get update && apt-get install -y libmysqlclient-dev libace-dev libssl-dev libbz2-dev \ + libboost-system1.7*-dev libboost-filesystem1.7*-dev libboost-program-options1.7*-dev libboost-iostreams1.7*-dev \ + sudo && rm -rf /var/lib/apt/lists/* ; # Create a non-root user RUN addgroup --gid $GROUP_ID acore && \ diff --git a/apps/installer/includes/os_configs/debian.sh b/apps/installer/includes/os_configs/debian.sh index 35346491ff..531c0092a7 100644 --- a/apps/installer/includes/os_configs/debian.sh +++ b/apps/installer/includes/os_configs/debian.sh @@ -12,6 +12,7 @@ sudo apt-get install -y gdbserver gdb unzip curl libace-6.* libace-dev \ if [[ $DEBIAN_VERSION -eq "10" ]]; then sudo apt-get install -y default-libmysqlclient-dev libssl-dev libreadline-dev libncurses-dev mariadb-server + libboost-system1.6*-dev libboost-filesystem1.6*-dev libboost-program-options1.6*-dev libboost-iostreams1.6*-dev \ else # Debian 8 and 9 should work using this sudo apt-get install -y libmysqlclient-dev libssl1.0-dev mysql-server fi diff --git a/apps/installer/includes/os_configs/osx.sh b/apps/installer/includes/os_configs/osx.sh index a897ae58a4..1eca16b3bb 100644 --- a/apps/installer/includes/os_configs/osx.sh +++ b/apps/installer/includes/os_configs/osx.sh @@ -13,4 +13,4 @@ if ! command -v cmake &>/dev/null ; then fi ########################################## -brew install openssl readline ace bash-completion curl unzip mysql ccache +brew install openssl readline ace boost bash-completion curl unzip mysql ccache diff --git a/apps/installer/includes/os_configs/ubuntu.sh b/apps/installer/includes/os_configs/ubuntu.sh index c57a453d2c..949c8d0bca 100644 --- a/apps/installer/includes/os_configs/ubuntu.sh +++ b/apps/installer/includes/os_configs/ubuntu.sh @@ -1,15 +1,20 @@ -if ! command -v lsb_release &>/dev/null ; then - sudo apt-get install -y lsb-release -fi +# if ! command -v lsb_release &>/dev/null ; then +# sudo apt-get install -y lsb-release +# fi -UBUNTU_VERSION=$(lsb_release -sr); +# UBUNTU_VERSION=$(lsb_release -sr); -sudo apt-get update -y +# Added repo for newest lib +sudo add-apt-repository -y ppa:mhier/libboost-latest +sudo apt update # shared deps sudo apt-get -y install make cmake clang curl unzip libmysqlclient-dev libace-dev ccache google-perftools +# Insstall boost 1.74 from ppa:mhier/libboost-latest for all os versions +sudo apt-get -y install libboost1.74-dev + if [[ $CONTINUOUS_INTEGRATION || $DOCKER ]]; then sudo apt-get -y install build-essential libtool cmake-data openssl libgoogle-perftools-dev \ libssl-dev libmysql++-dev libreadline6-dev zlib1g-dev libbz2-dev mysql-client \ diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 3c30d4661e..d4e599a4c1 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -17,23 +17,24 @@ if(CMAKE_SYSTEM_NAME MATCHES "Windows") endif() add_subdirectory(threads) -add_subdirectory(acelite) -add_subdirectory(fmt) if(SERVERS OR TOOLS) + add_subdirectory(acelite) + add_subdirectory(boost) 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) endif() if(SERVERS) add_subdirectory(mysql) add_subdirectory(readline) - add_subdirectory(jemalloc) add_subdirectory(gsoap) add_subdirectory(gperftools) endif() diff --git a/deps/PackageList.txt b/deps/PackageList.txt index c943319111..df9648443d 100644 --- a/deps/PackageList.txt +++ b/deps/PackageList.txt @@ -8,6 +8,10 @@ argon2 https://github.com/P-H-C/phc-winner-argon2 Version: 62358ba +Boost (external) + http://www.boost.org + Version: external + bzip2 (a freely available, patent free, high-quality data compressor) http://www.bzip.org/ Version: 1.0.6 diff --git a/deps/boost/CMakeLists.txt b/deps/boost/CMakeLists.txt new file mode 100644 index 0000000000..8d04c558c9 --- /dev/null +++ b/deps/boost/CMakeLists.txt @@ -0,0 +1,85 @@ +# +# Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license: https://github.com/azerothcore/azerothcore-wotlk/blob/master/LICENSE-AGPL3 +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# User has manually chosen to ignore the git-tests, so throw them a warning. +# This is done EACH compile so they can be alerted about the consequences. +# + +if(WIN32) + set(BOOST_DEBUG ON) + if(DEFINED ENV{BOOST_ROOT}) + set(BOOST_ROOT $ENV{BOOST_ROOT}) + list(APPEND BOOST_LIBRARYDIR + ${BOOST_ROOT}/lib${PLATFORM}-msvc-14.2) + else() + message(FATAL_ERROR "No BOOST_ROOT environment variable could be found! Please make sure it is set and the points to your Boost installation.") + endif() + + set(Boost_USE_STATIC_LIBS ON) + set(Boost_USE_MULTITHREADED ON) + set(Boost_USE_STATIC_RUNTIME OFF) +endif() + +include (CheckCXXSourceCompiles) + +if (WIN32) + # On windows the requirements are higher according to the wiki. + set(BOOST_REQUIRED_VERSION 1.70) +else() + set(BOOST_REQUIRED_VERSION 1.67) +endif() + +find_package(Boost ${BOOST_REQUIRED_VERSION} REQUIRED system filesystem program_options iostreams regex) + +# Find if Boost was compiled in C++03 mode because it requires -DBOOST_NO_CXX11_SCOPED_ENUMS + +set(CMAKE_REQUIRED_INCLUDES ${Boost_INCLUDE_DIR}) +set(CMAKE_REQUIRED_LIBRARIES ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ${Boost_IOSTREAMS_LIBRARY}) +set(CMAKE_REQUIRED_FLAGS "-std=c++11") +check_cxx_source_compiles(" + #include <boost/filesystem/path.hpp> + #include <boost/filesystem/operations.hpp> + int main() { boost::filesystem::copy_file(boost::filesystem::path(), boost::filesystem::path()); }" +boost_filesystem_copy_links_without_NO_SCOPED_ENUM) +unset(CMAKE_REQUIRED_INCLUDES) +unset(CMAKE_REQUIRED_LIBRARIES) +unset(CMAKE_REQUIRED_FLAGS) + +add_library(boost INTERFACE) + +target_link_libraries(boost + INTERFACE + ${Boost_LIBRARIES}) + +target_include_directories(boost + INTERFACE + ${Boost_INCLUDE_DIRS}) + +target_compile_definitions(boost + INTERFACE + -DBOOST_DATE_TIME_NO_LIB + -DBOOST_REGEX_NO_LIB + -DBOOST_CHRONO_NO_LIB + -DBOOST_SERIALIZATION_NO_LIB + -DBOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE + -DBOOST_ASIO_NO_DEPRECATED + -DBOOST_SYSTEM_USE_UTF8 + -DBOOST_BIND_NO_PLACEHOLDERS) + +if (NOT boost_filesystem_copy_links_without_NO_SCOPED_ENUM) + target_compile_definitions(boost + INTERFACE + -DBOOST_NO_CXX11_SCOPED_ENUMS) +endif() + +target_compile_definitions(boost + INTERFACE + -DAC_HAS_BROKEN_WSTRING_REGEX) diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index c719eab0e3..ae36c1dddf 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -52,6 +52,7 @@ target_link_libraries(common PUBLIC acore-core-interface ace + boost argon2 g3dlib Detour |