# Use, modification, and distribution are # subject to the Boost Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) # # Copyright Rene Rivera 2015-2019. trigger: branches: include: - develop - master - feature/* pr: branches: include: - develop stages: - stage: Test jobs: - job: 'Linux' pool: vmImage: 'ubuntu-16.04' strategy: matrix: GCC 9: TOOLSET: gcc TEST_TOOLSET: gcc CXX: g++-9 PACKAGES: g++-9 GCC 8: TOOLSET: gcc TEST_TOOLSET: gcc CXX: g++-8 PACKAGES: g++-8 GCC 7: TOOLSET: gcc TEST_TOOLSET: gcc CXX: g++-7 PACKAGES: g++-7 GCC 6: TOOLSET: gcc TEST_TOOLSET: gcc CXX: g++-6 PACKAGES: g++-6 GCC 5: TOOLSET: gcc TEST_TOOLSET: gcc CXX: g++-5 PACKAGES: g++-5 GCC 4.9: TOOLSET: gcc TEST_TOOLSET: gcc CXX: g++-4.9 PACKAGES: g++-4.9 GCC 4.8: TOOLSET: gcc TEST_TOOLSET: gcc CXX: g++-4.8 PACKAGES: g++-4.8 GCC 4.7: TOOLSET: gcc TEST_TOOLSET: gcc CXX: g++-4.7 PACKAGES: g++-4.7 Clang 8: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++-8 PACKAGES: clang-8 LLVM_REPO: llvm-toolchain-xenial-8 Clang 7: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++-7 PACKAGES: clang-7 LLVM_REPO: llvm-toolchain-xenial-7 Clang 6: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++-6.0 PACKAGES: clang-6.0 LLVM_REPO: llvm-toolchain-xenial-6.0 Clang 5: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++-5.0 PACKAGES: clang-5.0 LLVM_REPO: llvm-toolchain-xenial-5.0 Clang 4: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++-4.0 PACKAGES: clang-4.0 LLVM_REPO: llvm-toolchain-xenial-4.0 Clang 3.9: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++-3.9 PACKAGES: clang-3.9 Clang 3.8: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++-3.8 PACKAGES: clang-3.8 Clang 3.7: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++-3.7 PACKAGES: clang-3.7 Clang 3.6: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++-3.6 PACKAGES: clang-3.6 Clang 3.5: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++-3.5 PACKAGES: clang-3.5 steps: - bash: | set -e uname -a sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" if test -n "${LLVM_REPO}" ; then wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo -E apt-add-repository "deb http://apt.llvm.org/xenial/ ${LLVM_REPO} main" fi sudo -E apt-get update sudo -E apt-get -yq --no-install-suggests --no-install-recommends install ${PACKAGES} displayName: Install - bash: | set -e cd src/engine set PATH=${PATH};${CXX_PATH} ./build.sh ${TOOLSET} ./b2 -v cd ../.. displayName: Build - bash: | set -e CXX_PATH=`which ${CXX}` cd test echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam python test_all.py ${TEST_TOOLSET} cd .. displayName: Test - bash: | set -e CXX_PATH=`which ${CXX}` echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam ./src/engine/b2 b2 warnings-as-errors=on toolset=${TEST_TOOLSET} displayName: "No Warnings" - bash: | set -e CXX_PATH=`which ${CXX}` echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam ./bootstrap.sh --with-toolset=${TOOLSET} ./b2 --prefix=./.b2 install ${TEST_TOOLSET} displayName: Bootstrap - job: 'Windows' strategy: matrix: VS 2019: TOOLSET: vc142 TEST_TOOLSET: msvc VM_IMAGE: 'windows-2019' VS 2017: TOOLSET: vc141 TEST_TOOLSET: msvc VM_IMAGE: 'vs2017-win2016' VS 2015: TOOLSET: vc14 TEST_TOOLSET: msvc VM_IMAGE: 'vs2015-win2012r2' VS 2013: TOOLSET: vc12 TEST_TOOLSET: msvc VM_IMAGE: 'vs2015-win2012r2' MinGW 8.1.0: TOOLSET: mingw TEST_TOOLSET: gcc VM_IMAGE: 'vs2017-win2016' pool: vmImage: $(VM_IMAGE) steps: - powershell: | cd src/engine $env:path += ';' + $env:CXX_PATH cmd /c build.bat $env:TOOLSET ./b2.exe -v cd ../.. displayName: Build - powershell: | $env:HOME = $env:HOMEDRIVE + $env:HOMEPATH cd test echo "using" $env:TEST_TOOLSET ":" ":" $env:CXX ";" > $env:HOME/user-config.jam python test_all.py $env:TEST_TOOLSET cd .. displayName: Test - powershell: | $env:HOME = $env:HOMEDRIVE + $env:HOMEPATH $env:path += ';' + $env:CXX_PATH echo "using" $env:TEST_TOOLSET ":" ":" $env:CXX ";" > $env:HOME/user-config.jam ./src/engine/b2.exe --debug-configuration b2 warnings-as-errors=on toolset=$env:TEST_TOOLSET displayName: "No Warnings" - powershell: | $env:HOME = $env:HOMEDRIVE + $env:HOMEPATH $env:path += ';' + $env:CXX_PATH echo "using" $env:TEST_TOOLSET ":" ":" $env:CXX ";" > $env:HOME/user-config.jam ./bootstrap.bat ./b2.exe --debug-configuration --prefix=./.b2 install toolset=$env:TEST_TOOLSET displayName: Bootstrap - job: 'macOS' strategy: matrix: Xcode 11.3.1: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.3.1.app VM_IMAGE: 'macOS-10.15' Xcode 11.3: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.3.app VM_IMAGE: 'macOS-10.15' Xcode 11.2: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.2.app VM_IMAGE: 'macOS-10.15' Xcode 11.1: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.1.app VM_IMAGE: 'macOS-10.15' Xcode 11.0: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.app VM_IMAGE: 'macOS-10.15' Xcode 10.2.1: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_10.2.1.app VM_IMAGE: 'macOS-10.14' Xcode 10.2: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_10.2.app VM_IMAGE: 'macOS-10.14' Xcode 10.1: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_10.1.app VM_IMAGE: 'macOS-10.14' Xcode 10.0: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_10.app VM_IMAGE: 'macOS-10.14' Xcode 9.4.1: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_9.4.1.app VM_IMAGE: 'macOS-10.13' Xcode 9.4: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_9.4.app VM_IMAGE: 'macOS-10.13' Xcode 9.3.1: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_9.3.1.app VM_IMAGE: 'macOS-10.13' Xcode 9.3: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_9.3.app VM_IMAGE: 'macOS-10.13' Xcode 9.2: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_9.2.app VM_IMAGE: 'macOS-10.13' Xcode 9.1: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_9.1.app VM_IMAGE: 'macOS-10.13' Xcode 9.0.1: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_9.0.1.app VM_IMAGE: 'macOS-10.13' Xcode 9.0: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_9.app VM_IMAGE: 'macOS-10.13' Xcode 8.3.3: TOOLSET: clang TEST_TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_8.3.3.app VM_IMAGE: 'macOS-10.13' pool: vmImage: $(VM_IMAGE) steps: - bash: | set -e uname -a sudo xcode-select -switch ${XCODE_APP} which clang++ displayName: Install - bash: | set -e cd src/engine ./build.sh ${TOOLSET} ./b2 -v cd ../.. displayName: Build - bash: | set -e CXX_PATH=`which ${CXX}` cd test echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam python test_all.py ${TEST_TOOLSET} cd .. displayName: Test - bash: | set -e CXX_PATH=`which ${CXX}` echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam ./src/engine/b2 b2 warnings-as-errors=on toolset=${TEST_TOOLSET} displayName: "No Warnings" - bash: | set -e CXX_PATH=`which ${CXX}` echo "using ${TEST_TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam ./bootstrap.sh --with-toolset=${TOOLSET} ./b2 --prefix=./.b2 install ${TEST_TOOLSET} displayName: Bootstrap - stage: Boost jobs: - job: 'Release_Linux' displayName: 'Release Linux' pool: vmImage: 'ubuntu-latest' strategy: matrix: 1.72.0 .. GCC 9: BOOST_VERSION: 1.72.0 BOOST_VERSION_U: 1_72_0 TOOLSET: gcc CXX: g++-9 PACKAGES: g++-9 1.71.0 .. GCC 9: BOOST_VERSION: 1.71.0 BOOST_VERSION_U: 1_71_0 TOOLSET: gcc CXX: g++-9 PACKAGES: g++-9 1.70.0 .. GCC 9: BOOST_VERSION: 1.70.0 BOOST_VERSION_U: 1_70_0 TOOLSET: gcc CXX: g++-9 PACKAGES: g++-9 1.69.0 .. GCC 9: BOOST_VERSION: 1.69.0 BOOST_VERSION_U: 1_69_0 TOOLSET: gcc CXX: g++-9 PACKAGES: g++-9 1.68.0 .. GCC 9: BOOST_VERSION: 1.68.0 BOOST_VERSION_U: 1_68_0 TOOLSET: gcc CXX: g++-9 PACKAGES: g++-9 1.67.0 .. GCC 9: BOOST_VERSION: 1.67.0 BOOST_VERSION_U: 1_67_0 TOOLSET: gcc CXX: g++-9 PACKAGES: g++-9 1.66.0 .. GCC 9: BOOST_VERSION: 1.66.0 BOOST_VERSION_U: 1_66_0 TOOLSET: gcc CXX: g++-9 PACKAGES: g++-9 steps: - bash: | set -e uname -a sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" if test -n "${LLVM_REPO}" ; then wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo -E apt-add-repository "deb http://apt.llvm.org/xenial/ ${LLVM_REPO} main" fi sudo -E apt-get update sudo -E apt-get -yq --no-install-suggests --no-install-recommends install ${PACKAGES} displayName: Install - bash: | set -e cd src/engine ./build.sh ${TOOLSET} ./b2 -v displayName: Build - bash: | set -e pushd ${HOME} git clone -b boost-${BOOST_VERSION} --single-branch --recurse-submodules https://github.com/boostorg/boost.git boost_${BOOST_VERSION_U} cd boost_${BOOST_VERSION_U} CXX_PATH=`which ${CXX}` echo "using ${TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam "${BUILD_SOURCESDIRECTORY}/src/engine/b2" "--boost-build=${BUILD_SOURCESDIRECTORY}/src" --debug-configuration --build-type=complete --layout=versioned -n -d1 toolset=${TOOLSET} install popd displayName: Test - job: 'Dev_Linux' displayName: 'Dev Linux' pool: vmImage: 'ubuntu-latest' strategy: matrix: Master .. GCC 9: BOOST_BRANCH: master TOOLSET: gcc CXX: g++-9 PACKAGES: g++-9 Master .. Clang 8: BOOST_BRANCH: master TOOLSET: clang CXX: clang++-8 PACKAGES: clang-8 LLVM_REPO: llvm-toolchain-xenial-8 Develop .. GCC 9: BOOST_BRANCH: develop TOOLSET: gcc CXX: g++-9 PACKAGES: g++-9 Develop .. Clang 8: BOOST_BRANCH: develop TOOLSET: clang CXX: clang++-8 PACKAGES: clang-8 LLVM_REPO: llvm-toolchain-xenial-8 steps: - bash: | set -e uname -a sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" if test -n "${LLVM_REPO}" ; then wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo -E apt-add-repository "deb http://apt.llvm.org/xenial/ ${LLVM_REPO} main" fi sudo -E apt-get update sudo -E apt-get -yq --no-install-suggests --no-install-recommends install ${PACKAGES} displayName: Install - bash: | set -e cd src/engine ./build.sh ${TOOLSET} ./b2 -v displayName: Build - bash: | set -e pushd ${HOME} git clone --recursive https://github.com/boostorg/boost.git cd boost git checkout ${BOOST_BRANCH} CXX_PATH=`which ${CXX}` echo "using ${TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam "${BUILD_SOURCESDIRECTORY}/src/engine/b2" "--boost-build=${BUILD_SOURCESDIRECTORY}/src" --debug-configuration --build-type=complete --layout=versioned -n -d1 toolset=${TOOLSET} install popd displayName: Test - job: 'Release_macOS' displayName: 'Release macOS' pool: vmImage: 'macOS-latest' strategy: matrix: 1.72.0 .. Xcode 11.3.1: BOOST_VERSION: 1.72.0 BOOST_VERSION_U: 1_72_0 TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.3.1.app 1.71.0 .. Xcode 11.3.1: BOOST_VERSION: 1.71.0 BOOST_VERSION_U: 1_71_0 TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.3.1.app 1.70.0 .. Xcode 11.3.1: BOOST_VERSION: 1.70.0 BOOST_VERSION_U: 1_70_0 TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.3.1.app 1.69.0 .. Xcode 11.3.1: BOOST_VERSION: 1.69.0 BOOST_VERSION_U: 1_69_0 TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.3.1.app 1.68.0 .. Xcode 11.3.1: BOOST_VERSION: 1.68.0 BOOST_VERSION_U: 1_68_0 TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.2.app 1.67.0 .. Xcode 11.3.1: BOOST_VERSION: 1.67.0 BOOST_VERSION_U: 1_67_0 TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.3.1.app 1.66.0 .. Xcode 11.3.1: BOOST_VERSION: 1.66.0 BOOST_VERSION_U: 1_66_0 TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.3.1.app steps: - bash: | set -e uname -a sudo xcode-select -switch ${XCODE_APP} which clang++ displayName: Install - bash: | set -e cd src/engine ./build.sh ${TOOLSET} ./b2 -v displayName: Build - bash: | set -e pushd ${HOME} git clone -b boost-${BOOST_VERSION} --single-branch --recurse-submodules https://github.com/boostorg/boost.git boost_${BOOST_VERSION_U} cd boost_${BOOST_VERSION_U} CXX_PATH=`which ${CXX}` echo "using ${TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam "${BUILD_SOURCESDIRECTORY}/src/engine/b2" "--boost-build=${BUILD_SOURCESDIRECTORY}/src" --debug-configuration --build-type=complete --layout=versioned -n -d1 toolset=${TOOLSET} install popd displayName: Test - job: 'Dev_macOS' displayName: 'Dev macOS' pool: vmImage: 'macOS-latest' strategy: matrix: Master .. Xcode 11.3.1: BOOST_BRANCH: master TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.3.1.app Develop .. Xcode 11.3.1: BOOST_BRANCH: develop TOOLSET: clang CXX: clang++ XCODE_APP: /Applications/Xcode_11.3.1.app steps: - bash: | set -e uname -a sudo xcode-select -switch ${XCODE_APP} which clang++ displayName: Install - bash: | set -e cd src/engine ./build.sh ${TOOLSET} ./b2 -v displayName: Build - bash: | set -e pushd ${HOME} git clone --recursive https://github.com/boostorg/boost.git cd boost git checkout ${BOOST_BRANCH} CXX_PATH=`which ${CXX}` echo "using ${TOOLSET} : : ${CXX_PATH} ;" > ${HOME}/user-config.jam "${BUILD_SOURCESDIRECTORY}/src/engine/b2" "--boost-build=${BUILD_SOURCESDIRECTORY}/src" --debug-configuration --build-type=complete --layout=versioned -n -d1 toolset=${TOOLSET} install popd displayName: Test - job: 'Release_Windows' displayName: 'Release Windows' pool: vmImage: 'windows-latest' strategy: matrix: 1.72.0 .. VS 2019: BOOST_VERSION: 1.72.0 BOOST_VERSION_U: 1_72_0 TOOLSET: vc142 1.71.0 .. VS 2019: BOOST_VERSION: 1.71.0 BOOST_VERSION_U: 1_71_0 TOOLSET: vc142 1.70.0 .. VS 2019: BOOST_VERSION: 1.70.0 BOOST_VERSION_U: 1_70_0 TOOLSET: vc142 1.69.0 .. VS 2019: BOOST_VERSION: 1.69.0 BOOST_VERSION_U: 1_69_0 TOOLSET: vc142 1.68.0 .. VS 2019: BOOST_VERSION: 1.68.0 BOOST_VERSION_U: 1_68_0 TOOLSET: vc142 1.67.0 .. VS 2019: BOOST_VERSION: 1.67.0 BOOST_VERSION_U: 1_67_0 TOOLSET: vc142 1.66.0 .. VS 2019: BOOST_VERSION: 1.66.0 BOOST_VERSION_U: 1_66_0 TOOLSET: vc142 steps: - powershell: | cd src/engine $env:path += ';' + ${env:CXX_PATH} cmd /c build.bat ${env:TOOLSET} ./b2.exe -v cd ../.. displayName: Build - powershell: | $env:HOME = "$env:HOMEDRIVE" + "$env:HOMEPATH" cd "${env:HOME}" git clone -b boost-${env:BOOST_VERSION} --single-branch --recurse-submodules https://github.com/boostorg/boost.git boost_${env:BOOST_VERSION_U} cd "boost_${env:BOOST_VERSION_U}" echo "using" "msvc" ";" > "${env:HOME}/user-config.jam" & "${env:BUILD_SOURCESDIRECTORY}\src\engine\b2.exe" "--boost-build=${env:BUILD_SOURCESDIRECTORY}/src" --debug-configuration --build-type=complete --layout=versioned -n -d1 toolset=msvc install displayName: Test - job: 'Dev_Windows' displayName: 'Dev Windows' pool: vmImage: 'windows-latest' strategy: matrix: Master .. VS 2019: BOOST_BRANCH: master TOOLSET: vc142 Develop .. VS 2019: BOOST_BRANCH: develop TOOLSET: vc142 steps: - powershell: | cd src/engine $env:path += ';' + ${env:CXX_PATH} cmd /c build.bat ${env:TOOLSET} ./b2.exe -v cd ../.. displayName: Build - powershell: | $env:HOME = "$env:HOMEDRIVE" + "$env:HOMEPATH" cd "${env:HOME}" git clone --recursive https://github.com/boostorg/boost.git cd boost $OriginalErrorActionPreference = $ErrorActionPreference $ErrorActionPreference= 'silentlycontinue' git checkout "${env:BOOST_BRANCH}" $ErrorActionPreference = $OriginalErrorActionPreference echo "using" "msvc" ";" > "${env:HOME}/user-config.jam" & "${env:BUILD_SOURCESDIRECTORY}\src\engine\b2.exe" "--boost-build=${env:BUILD_SOURCESDIRECTORY}/src" --debug-configuration --build-type=complete --layout=versioned -n -d1 toolset=msvc install displayName: Test - stage: WebsiteUpdate displayName: 'Website Update' condition: in(variables['Build.SourceBranch'], 'refs/heads/master', 'refs/heads/develop') jobs: - job: Documentation pool: vmImage: 'ubuntu-16.04' steps: - task: UsePythonVersion@0 inputs: versionSpec: '2.x' - task: UseRubyVersion@0 - bash: | pip install --user Pygments pip install --user "https://github.com/bfgroup/jam_pygments/archive/master.zip" gem install asciidoctor gem install pygments.rb echo "using asciidoctor ;" >> project-config.jam ./bootstrap.sh pushd doc ../b2 --website-doc-dir=manual/$(Build.SourceBranchName) website displayName: 'Build & Publish' env: GH_TOKEN: $(GitHubToken)