diff --git a/.travis.yml b/.travis.yml index 64284b72..2ba12145 100644 --- a/.travis.yml +++ b/.travis.yml @@ -48,8 +48,12 @@ matrix: # Default clang++ with libc++ - os: linux compiler: clang++-libc++ - script: b2 -j3 libs/beast/test toolset=clang cxxstd=11 cxxflags=-stdlib=libc++ linkflags=-stdlib=libc++ - #script: b2 -j3 libs/beast/test toolset=clang cxxstd=11 cxxflags=-stdlib=libc++ linkflags="-stdlib=libc++ -lc++abi" + env: + - VARIANT=debug + - TOOLSET=clang + - COMPILER=clang++-libc++ + - CXXSTD=11 + - CXX_FLAGS="-stdlib=libc++ -stdlib=libc++" addons: apt: packages: @@ -58,7 +62,11 @@ matrix: # Default g++ - os: linux compiler: g++ - script: b2 -j3 libs/beast/test toolset=gcc cxxstd=11 + env: + - VARIANT=release + - TOOLSET=gcc + - COMPILER=g++ + - CXXSTD=11 # GCC 8, C++17, libstdc++, release - os: linux @@ -114,7 +122,7 @@ matrix: - llvm-toolchain-precise-3.8 - *base_sources - # OSX Clang, C++14, libc++, debug, + # OSX Clang, C++14, libc++, debug, # - if: branch != master - os: osx compiler: clang++ @@ -124,91 +132,19 @@ matrix: - COMPILER=clang++ - CXXSTD=14 before_install: - - brew install openssl - export OPENSSL_ROOT=$(brew --prefix openssl) install: - - export BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true - cd .. - - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root + - $TRAVIS_BUILD_DIR/tools/get-boost.sh $TRAVIS_BRANCH $TRAVIS_BUILD_DIR - cd boost-root - - export BOOST_ROOT="`pwd`" - - export PATH="`pwd`":$PATH - - git submodule update --init libs/headers - - git submodule update --init tools/build - - git submodule update --init tools/boost_install - - git submodule update --init tools/boostdep - - git submodule update --init libs/align - - git submodule update --init libs/asio - - git submodule update --init libs/assert - - git submodule update --init libs/config - - git submodule update --init libs/core - - git submodule update --init libs/endian - - git submodule update --init libs/filesystem - - git submodule update --init libs/intrusive - - git submodule update --init libs/locale - - git submodule update --init libs/optional - - git submodule update --init libs/smart_ptr - - git submodule update --init libs/static_assert - - git submodule update --init libs/system - - git submodule update --init libs/throw_exception - - git submodule update --init libs/type_traits - - git submodule update --init libs/utility - - git submodule update --init libs/winapi - - - git submodule update --init libs/algorithm - - git submodule update --init libs/array - - git submodule update --init libs/atomic - - git submodule update --init libs/bind - - git submodule update --init libs/chrono - - git submodule update --init libs/concept_check - - git submodule update --init libs/container - - git submodule update --init libs/container_hash - - git submodule update --init libs/context - - git submodule update --init libs/conversion - - git submodule update --init libs/coroutine - - git submodule update --init libs/date_time - - git submodule update --init libs/detail - - git submodule update --init libs/exception - - git submodule update --init libs/function - - git submodule update --init libs/function_types - - git submodule update --init libs/functional - - git submodule update --init libs/fusion - - git submodule update --init libs/integer - - git submodule update --init libs/io - - git submodule update --init libs/iterator - - git submodule update --init libs/lambda - - git submodule update --init libs/lexical_cast - - git submodule update --init libs/logic - - git submodule update --init libs/math - - git submodule update --init libs/move - - git submodule update --init libs/mp11 - - git submodule update --init libs/mpl - - git submodule update --init libs/numeric/conversion - - git submodule update --init libs/pool - - git submodule update --init libs/predef - - git submodule update --init libs/preprocessor - - git submodule update --init libs/random - - git submodule update --init libs/range - - git submodule update --init libs/ratio - - git submodule update --init libs/rational - - git submodule update --init libs/serialization - - git submodule update --init libs/thread - - git submodule update --init libs/tokenizer - - git submodule update --init libs/tuple - - git submodule update --init libs/type_index - - git submodule update --init libs/typeof - - git submodule update --init libs/unordered - - rm -rf libs/beast - - mkdir libs/beast - - cp -r $TRAVIS_BUILD_DIR/* libs/beast + - export PATH=$PATH:"`pwd`" + - export BOOST_ROOT=$(pwd) - ./bootstrap.sh - + - cp libs/beast/tools/user-config.jam ~/user-config.jam + - |- + echo "using $TOOLSET : : $COMPILER : $CXX_FLAGS ;" >> ~/user-config.jam script: - - |- - cp libs/beast/tools/user-config.jam ~/user-config.jam - - |- - echo "using $TOOLSET : : $COMPILER ;" >> ~/user-config.jam - cd ../boost-root - libs/beast/tools/retry.sh libs/beast/tools/build-and-test.sh diff --git a/appveyor.yml b/appveyor.yml index f28a276e..ebe44c39 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,30 +15,21 @@ configuration: #- Debug - Release -image: - - Visual Studio 2017 - environment: OPENSSL_ROOT: C:\tools\vcpkg\installed\x64-windows matrix: - - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 TOOLSET: msvc-14.0 - ADDRMD: 64 - CXXSTD: 11 # VFALCO Appveyor has a 1 hour time limit, and # I already test this configuration locally. # # - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 # TOOLSET: msvc-14.1 -# CXXSTD: 11 -# ADDRMD: 64 # This configuration is not available yet # - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 # TOOLSET: msvc-14.2 -# CXXSTD: 11 -# ADDRMD: 64 install: - SET BOOST_BRANCH=develop @@ -46,86 +37,18 @@ install: - vcpkg install openssl --triplet x64-windows - ps: cp tools\user-config.jam ~\user-config.jam - CD .. - - git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root - - cd boost-root - - git submodule update --init libs/headers - - git submodule update --init tools/build - - git submodule update --init tools/boost_install - - git submodule update --init tools/boostdep - - git submodule update --init libs/align - - git submodule update --init libs/asio - - git submodule update --init libs/assert - - git submodule update --init libs/config - - git submodule update --init libs/core - - git submodule update --init libs/endian - - git submodule update --init libs/filesystem - - git submodule update --init libs/intrusive - - git submodule update --init libs/locale - - git submodule update --init libs/optional - - git submodule update --init libs/smart_ptr - - git submodule update --init libs/static_assert - - git submodule update --init libs/system - - git submodule update --init libs/throw_exception - - git submodule update --init libs/type_traits - - git submodule update --init libs/utility - - git submodule update --init libs/winapi - - - git submodule update --init libs/algorithm - - git submodule update --init libs/array - - git submodule update --init libs/atomic - - git submodule update --init libs/bind - - git submodule update --init libs/chrono - - git submodule update --init libs/concept_check - - git submodule update --init libs/container - - git submodule update --init libs/container_hash - - git submodule update --init libs/context - - git submodule update --init libs/conversion - - git submodule update --init libs/coroutine - - git submodule update --init libs/date_time - - git submodule update --init libs/detail - - git submodule update --init libs/exception - - git submodule update --init libs/function - - git submodule update --init libs/function_types - - git submodule update --init libs/functional - - git submodule update --init libs/fusion - - git submodule update --init libs/integer - - git submodule update --init libs/io - - git submodule update --init libs/iterator - - git submodule update --init libs/lambda - - git submodule update --init libs/lexical_cast - - git submodule update --init libs/logic - - git submodule update --init libs/math - - git submodule update --init libs/move - - git submodule update --init libs/mp11 - - git submodule update --init libs/mpl - - git submodule update --init libs/numeric/conversion - - git submodule update --init libs/pool - - git submodule update --init libs/predef - - git submodule update --init libs/preprocessor - - git submodule update --init libs/random - - git submodule update --init libs/range - - git submodule update --init libs/ratio - - git submodule update --init libs/rational - - git submodule update --init libs/serialization - - git submodule update --init libs/thread - - git submodule update --init libs/tokenizer - - git submodule update --init libs/tuple - - git submodule update --init libs/type_index - - git submodule update --init libs/typeof - - git submodule update --init libs/unordered - - rm -rf libs\beast - - MKDIR libs\beast - - XCOPY /s /e /q %APPVEYOR_BUILD_FOLDER% libs\beast\ + - bash -c '$APPVEYOR_BUILD_FOLDER/tools/get-boost.sh $APPVEYOR_REPO_BRANCH $APPVEYOR_BUILD_FOLDER' + - CD boost-root - CMD /c bootstrap - b2 headers build: off test_script: - - if not "%CXXSTD%" == "" set CXXSTD=cxxstd=%CXXSTD% - - if not "%ADDRMD%" == "" set ADDRMD=address-model=%ADDRMD% - - b2 --debug-configuration variant=release %CXXSTD% %ADDRMD% toolset=%TOOLSET% libs/beast/example - - b2 --debug-configuration variant=release %CXXSTD% %ADDRMD% toolset=%TOOLSET% --verbose-test libs/beast/test//run-fat-tests + - b2 --debug-configuration variant=release cxxstd=14 address-model=64 toolset=msvc-14.0 libs/beast/example -j3 + - b2 --debug-configuration variant=release cxxstd=14 address-model=64 toolset=msvc-14.0 --verbose-test libs/beast/test//run-fat-tests -j3 + - b2 --debug-configuration variant=release cxxstd=17 define="BOOST_BEAST_USE_STD_STRING_VIEW" address-model=64 toolset=msvc-14.1 libs/beast/example -j3 + - b2 --debug-configuration variant=release cxxstd=17 define="BOOST_BEAST_USE_STD_STRING_VIEW" address-model=64 toolset=msvc-14.1 --verbose-test libs/beast/test//run-fat-tests -j3 cache: - c:\tools\vcpkg\installed\ diff --git a/tools/get-boost.sh b/tools/get-boost.sh new file mode 100755 index 00000000..648a27f2 --- /dev/null +++ b/tools/get-boost.sh @@ -0,0 +1,88 @@ +#! /bin/sh + +set -e + +build_dir=$2 + +branch="master" +if [ "$1" != "master" ]; then + branch="develop" +fi + +git clone -b $branch --depth 1 https://github.com/boostorg/boost.git boost-root +cd boost-root + +# Use a reasonably large depth to prevent intermittent update failures due to +# commits being on a submodule's master before the superproject is updated. +git submodule update --init --depth 20 --jobs 4 \ + libs/array \ + libs/headers \ + tools/build \ + tools/boost_install \ + tools/boostdep \ + libs/align \ + libs/asio \ + libs/assert \ + libs/config \ + libs/core \ + libs/endian \ + libs/filesystem \ + libs/intrusive \ + libs/locale \ + libs/optional \ + libs/smart_ptr \ + libs/static_assert \ + libs/system \ + libs/throw_exception \ + libs/type_traits \ + libs/utility \ + libs/winapi \ + libs/algorithm \ + libs/array \ + libs/atomic \ + libs/bind \ + libs/chrono \ + libs/concept_check \ + libs/container \ + libs/container_hash \ + libs/context \ + libs/conversion \ + libs/coroutine \ + libs/date_time \ + libs/detail \ + libs/exception \ + libs/function \ + libs/function_types \ + libs/functional \ + libs/fusion \ + libs/integer \ + libs/io \ + libs/iterator \ + libs/lambda \ + libs/lexical_cast \ + libs/logic \ + libs/math \ + libs/move \ + libs/mp11 \ + libs/mpl \ + libs/numeric/conversion \ + libs/pool \ + libs/predef \ + libs/preprocessor \ + libs/random \ + libs/range \ + libs/ratio \ + libs/rational \ + libs/thread \ + libs/tuple \ + libs/type_index \ + libs/typeof \ + libs/unordered + +echo Submodule update complete + +echo "BUILD_DIR: $build_dir" + +rm -rf libs/beast +mkdir libs/beast +cp -r $build_dir libs/