# 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 Ferdinand Rivera Morell 2015-2021.

trigger:
  branches:
    include:
    - main
    - release
    - feature/*
    - version/*
  paths:
    exclude:
    - .circleci/*
    - .cirrus.yml
    - .drone.star
    - .github/workflows/*
    - .semaphore/*
    - .travis.yml
    - appveyor.yml
    - README.*
pr:
  branches:
    include:
    - main
    - version/*
  paths:
    exclude:
    - appveyor.yml

variables:
- { name: linux_latest_vm, value: 'ubuntu-24.04' }
- { name: linux_latest_os, value: 'noble' }
- { name: windows_latest_vm, value: 'windows-2022' }
- { name: clang_latest, value: '21' }
- { name: clang_latest_libstdcxx, value: '12' }
- { name: gcc_latest, value: '14' }
- { name: vc_latest, value: 'vc143' }
- { name: vs_latest, value: '2022' }
- { name: xc_latest, value: '16.4' }
- { name: macos_latest_vm, value: 'macOS-15' }
- { name: co_options, value: '--name container' }

resources:
  containers:
    - { container: ubuntu_2404,
        image: 'ubuntu:24.04',
        options: "${{variables.co_options}}" }
    - { container: ubuntu_2204,
        image: 'ubuntu:22.04',
        options: "${{variables.co_options}}" }
    - { container: ubuntu_1804,
        image: 'ubuntu:18.04',
        options: "${{variables.co_options}}",
        volumes: [
          "/node20217:/node20217:rw,rshared",
          "/node20217:/__e/node20:ro,rshared" ] }
    - { container: ubuntu_1604,
        image: 'ubuntu:16.04',
        options: "${{variables.co_options}}",
        volumes: [
          "/node20217:/node20217:rw,rshared",
          "/node20217:/__e/node20:ro,rshared" ] }
    - { container: linux_gcc15, image: 'teeks99/gcc-ubuntu:15', options: "${{variables.co_options}}" }
    - { container: linux_gcc14, image: 'teeks99/gcc-ubuntu:14', options: "${{variables.co_options}}" }
    - { container: linux_gcc13, image: 'teeks99/gcc-ubuntu:13', options: "${{variables.co_options}}" }
    - { container: linux_gcc12, image: 'teeks99/gcc-ubuntu:12', options: "${{variables.co_options}}" }
    - { container: linux_gcc11, image: 'teeks99/gcc-ubuntu:11', options: "${{variables.co_options}}" }
    - { container: linux_gcc10, image: 'teeks99/gcc-ubuntu:10', options: "${{variables.co_options}}" }
    - { container: linux_gcc9, image: 'teeks99/gcc-ubuntu:9', options: "${{variables.co_options}}" }
    - { container: linux_gcc8, image: 'teeks99/gcc-ubuntu:8', options: "${{variables.co_options}}" }
    - { container: linux_gcc7, image: 'teeks99/gcc-ubuntu:7', options: "${{variables.co_options}}" }
    - { container: linux_gcc6, image: 'teeks99/gcc-ubuntu:6', options: "${{variables.co_options}}" }
    - { container: linux_gcc5, image: 'teeks99/gcc-ubuntu:5', options: "${{variables.co_options}}" }
    - { container: linux_gcc49, image: 'teeks99/gcc-ubuntu:4.9', options: "${{variables.co_options}}" }
    - { container: linux_gcc48, image: 'teeks99/gcc-ubuntu:4.8', options: "${{variables.co_options}}" }
    - { container: linux_clang21, image: 'teeks99/clang-ubuntu:21', options: "${{variables.co_options}}" }
    - { container: linux_clang20, image: 'teeks99/clang-ubuntu:20', options: "${{variables.co_options}}" }
    - { container: linux_clang19, image: 'teeks99/clang-ubuntu:19', options: "${{variables.co_options}}" }
    - { container: linux_clang18, image: 'teeks99/clang-ubuntu:18', options: "${{variables.co_options}}" }
    - { container: linux_clang17, image: 'teeks99/clang-ubuntu:17', options: "${{variables.co_options}}" }
    - { container: linux_clang16, image: 'teeks99/clang-ubuntu:16', options: "${{variables.co_options}}" }
    - { container: linux_clang15, image: 'teeks99/clang-ubuntu:15', options: "${{variables.co_options}}" }
    - { container: linux_clang14, image: 'teeks99/clang-ubuntu:14', options: "${{variables.co_options}}" }
    - { container: linux_clang13, image: 'teeks99/clang-ubuntu:13', options: "${{variables.co_options}}" }
    - { container: linux_clang12, image: 'teeks99/clang-ubuntu:12', options: "${{variables.co_options}}" }
    - { container: linux_clang11, image: 'teeks99/clang-ubuntu:11', options: "${{variables.co_options}}" }
    - { container: linux_clang10, image: 'teeks99/clang-ubuntu:10', options: "${{variables.co_options}}" }
    - { container: linux_clang9, image: 'teeks99/clang-ubuntu:9', options: "${{variables.co_options}}" }
    - { container: linux_clang8, image: 'teeks99/clang-ubuntu:8', options: "${{variables.co_options}}" }
    - { container: linux_clang7, image: 'teeks99/clang-ubuntu:7', options: "${{variables.co_options}}" }
    - { container: linux_clang6, image: 'teeks99/clang-ubuntu:6', options: "${{variables.co_options}}" }
    - { container: linux_clang5, image: 'teeks99/clang-ubuntu:5', options: "${{variables.co_options}}" }
    - { container: linux_clang4, image: 'teeks99/clang-ubuntu:4', options: "${{variables.co_options}}" }
    - { container: linux_clang3, image: 'teeks99/clang-ubuntu:3.9', options: "${{variables.co_options}}" }

stages:

- stage: Core
  dependsOn: []
  jobs:

  - job: 'Linux_Default_Build'
    strategy:
      matrix:
        Clang ${{variables.clang_latest}}: {TOOLSET: "clang-${{variables.clang_latest}}", PACKAGES: "clang-${{variables.clang_latest}}", LLVM_OS: "${{variables.linux_latest_os}}", LLVM_VER: "${{variables.clang_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
    pool:
      vmImage: $(VM_IMAGE)
    steps:
    - bash: |
        set -e
        uname -a
        ./.ci/linux-cxx-install.sh
      displayName: Install
    - bash: |
        set -e
        ./src/engine/build.sh --verbose
      displayName: Build

  - job: 'Linux_Clang_Only_Build'
    strategy:
      matrix:
        Clang ${{variables.clang_latest}}: {TOOLSET: "clang-${{variables.clang_latest}}", PACKAGES: "clang-${{variables.clang_latest}}", LLVM_OS: "${{variables.linux_latest_os}}", LLVM_VER: "${{variables.clang_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
    pool:
      vmImage: $(VM_IMAGE)
    steps:
    - bash: |
        set -e
        uname -a
        ./.ci/linux-cxx-install.sh
        sudo apt remove gcc g++
      displayName: Install
    - bash: |
        set -e
        ./src/engine/build.sh --verbose
      displayName: Build

  - job: 'Linux_Latest'
    strategy:
      matrix:
        GCC ${{variables.gcc_latest}}: {TOOLSET: "gcc-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}-multilib", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        Clang ${{variables.clang_latest}}: {TOOLSET: "clang-${{variables.clang_latest}}", PACKAGES: "clang-${{variables.clang_latest}} libstdc++-${{variables.clang_latest_libstdcxx}}-dev-i386-cross", LLVM_OS: "${{variables.linux_latest_os}}", LLVM_VER: "${{variables.clang_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
    pool:
      vmImage: $(VM_IMAGE)
    steps:
    - template: .ci/azp-linux-test.yml
      parameters:
        b2_opts: address-model=32,64

  - job: 'Windows_Latest'
    strategy:
      matrix:
        VS ${{variables.vs_latest}}: {TOOLSET: "${{variables.vc_latest}}", TEST_TOOLSET: msvc, VM_IMAGE: "${{variables.windows_latest_vm}}", PREP_CMD: "echo noop"}
        Clang (VS${{variables.vs_latest}}): {TOOLSET: clang-win, TEST_TOOLSET: clang-win, VM_IMAGE: "${{variables.windows_latest_vm}}", PREP_CMD: "choco upgrade llvm"}
    pool:
      vmImage: $(VM_IMAGE)
    continueOnError: 'true'
    steps:
    - template: .ci/azp-windows-test.yml
      parameters:
        b2_opts: address-model=32,64
        prep_cmd: $(PREP_CMD)

  - job: 'macOS'
    strategy:
      matrix:
        Xcode ${{variables.xc_latest}}: {XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app", VM_IMAGE: "${{variables.macos_latest_vm}}"}
        # GCC ${{variables.gcc_latest}}: {TOOLSET: "gcc-${{variables.gcc_latest}}", XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app", VM_IMAGE: "${{variables.macos_latest_vm}}"}
    pool:
      vmImage: $(VM_IMAGE)
    steps:
    - template: .ci/azp-macos-test.yml

  - job: 'Linux_Sanitzer'
    strategy:
      matrix:
        Address (GCC ${{variables.gcc_latest}}): {SANITIZER: "address-sanitizer", TOOLSET: "gcc-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        Thread (GCC ${{variables.gcc_latest}}): {SANITIZER: "thread-sanitizer", TOOLSET: "gcc-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        UB (GCC ${{variables.gcc_latest}}): {SANITIZER: "undefined-sanitizer", TOOLSET: "gcc-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
    pool:
      vmImage: $(VM_IMAGE)
    continueOnError: 'true'
    steps:
    - template: .ci/azp-linux-sanitizer-test.yml

- stage: Extra
  dependsOn: []
  jobs:

  - job: 'macOS'
    strategy:
      matrix:
        Xcode ${{variables.xc_latest}} arm+x86/64: {
          B2_ARGS: "architecture=arm+x86 address-model=64",
          XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app", VM_IMAGE: "${{variables.macos_latest_vm}}"}
        Xcode ${{variables.xc_latest}} arm/64: {
          B2_ARGS: "architecture=arm address-model=64",
          XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app", VM_IMAGE: "${{variables.macos_latest_vm}}"}
        Xcode ${{variables.xc_latest}} x86/64: {
          B2_ARGS: "architecture=x86 address-model=64",
          XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app", VM_IMAGE: "${{variables.macos_latest_vm}}"}
    pool:
      vmImage: $(VM_IMAGE)
    steps:
    - template: .ci/azp-macos-extra.yml

  - job: 'Linux'
    strategy:
      matrix:
        Clang ${{variables.clang_latest}} x86/64: {
          B2_ARGS: "architecture=x86 address-model=64",
          TOOLSET: "clang-${{variables.clang_latest}}", PACKAGES: "clang-${{variables.clang_latest}}",
          LLVM_OS: "${{variables.linux_latest_os}}", LLVM_VER: "${{variables.clang_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # Clang ${{variables.clang_latest}} x86/32: {
        #   B2_ARGS: "architecture=x86 address-model=32",
        #   TOOLSET: "clang-${{variables.clang_latest}}", PACKAGES: "clang-${{variables.clang_latest}}",
        #   LLVM_OS: "${{variables.linux_latest_os}}", LLVM_VER: "${{variables.clang_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
    pool:
      vmImage: $(VM_IMAGE)
    steps:
    - template: .ci/azp-linux-extra.yml

  - job: 'Windows'
    strategy:
      matrix:
        MinGW 8.1.0: {TOOLSET: mingw, TEST_TOOLSET: gcc, VM_IMAGE: 'windows-2022'}
    pool:
      vmImage: $(VM_IMAGE)
    steps:
    - powershell: |
        Set-PSDebug -Trace 1
        cd src/engine
        $env:HOME = $env:HOMEDRIVE + $env:HOMEPATH
        $env:path += ';' + $env:CXX_PATH
        cmd /c build.bat $env:TOOLSET
        ./b2.exe -v
      displayName: Build

- stage: Website_Update
  dependsOn: [Core, Extra]
  displayName: 'Website Update'
  condition: in(variables['Build.SourceBranch'], 'refs/heads/main', 'refs/heads/release')
  jobs:

  - job: Documentation
    pool:
      vmImage: 'ubuntu-latest'
    steps:
    - task: UsePythonVersion@0
      inputs:
        versionSpec: '3.x'
    - task: UseRubyVersion@0
    - bash: |
        gem install asciidoctor
        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)

- stage: Compilers
  dependsOn: [Core, Extra]
  jobs:

  - job: 'Co_Linux'
    strategy:
      matrix:
        GCC 15: {CXX: g++-15, TOOLSET: gcc-15, CONTAINER: "linux_gcc15"}
        GCC 14: {CXX: g++-14, TOOLSET: gcc-14, CONTAINER: "linux_gcc14"}
        GCC 13: {CXX: g++-13, TOOLSET: gcc-13, CONTAINER: "linux_gcc13"}
        GCC 12: {CXX: g++-12, TOOLSET: gcc-12, CONTAINER: "linux_gcc12"}
        GCC 11: {CXX: g++-11, TOOLSET: gcc-11, CONTAINER: "linux_gcc11"}
        GCC 10: {CXX: g++-10, TOOLSET: gcc-10, CONTAINER: "linux_gcc10"}
        GCC 9: {CXX: g++-9, TOOLSET: gcc-9, CONTAINER: "linux_gcc9"}
        GCC 8: {CXX: g++-8, TOOLSET: gcc-8, CONTAINER: "linux_gcc8"}
        GCC 7: {CXX: g++-7, TOOLSET: gcc-7, CONTAINER: "linux_gcc7"}
        GCC 6: {CXX: g++-6, TOOLSET: gcc-6, CONTAINER: "linux_gcc6"}
        GCC 5: {CXX: g++-5, TOOLSET: gcc-5, CONTAINER: "linux_gcc5"}
        GCC 4.9: {CXX: g++-4.9, TOOLSET: gcc-4.9, CONTAINER: "linux_gcc49"}
        GCC 4.8: {CXX: g++-4.8, TOOLSET: gcc-4.8, CONTAINER: "linux_gcc48"}
        Clang 21: {CXX: clang++-21, TOOLSET: clang-21, CONTAINER: "linux_clang21"}
        Clang 20: {CXX: clang++-20, TOOLSET: clang-20, CONTAINER: "linux_clang20"}
        Clang 19: {CXX: clang++-19, TOOLSET: clang-19, CONTAINER: "linux_clang19"}
        Clang 18: {CXX: clang++-18, TOOLSET: clang-18, CONTAINER: "linux_clang18"}
        Clang 17: {CXX: clang++-17, TOOLSET: clang-17, CONTAINER: "linux_clang17"}
        Clang 16: {CXX: clang++-16, TOOLSET: clang-16, CONTAINER: "linux_clang16"}
        Clang 15: {CXX: clang++-15, TOOLSET: clang-15, CONTAINER: "linux_clang15"}
        Clang 14: {CXX: clang++-14, TOOLSET: clang-14, CONTAINER: "linux_clang14"}
        Clang 13: {CXX: clang++-13, TOOLSET: clang-13, CONTAINER: "linux_clang13"}
        Clang 12: {CXX: clang++-12, TOOLSET: clang-12, CONTAINER: "linux_clang12"}
        Clang 11: {CXX: clang++-11, TOOLSET: clang-11, CONTAINER: "linux_clang11"}
        Clang 10: {CXX: clang++-10, TOOLSET: clang-10, CONTAINER: "linux_clang10"}
        Clang 9: {CXX: clang++-9, TOOLSET: clang-9, CONTAINER: "linux_clang9"}
        Clang 8: {CXX: clang++-8, TOOLSET: clang-8, CONTAINER: "linux_clang8"}
        Clang 7: {CXX: clang++-7, TOOLSET: clang-7, CONTAINER: "linux_clang7"}
        Clang 6: {CXX: clang++-6.0, TOOLSET: clang-6.0, CONTAINER: "linux_clang6"}
        Clang 5: {CXX: clang++-5.0, TOOLSET: clang-5.0, CONTAINER: "linux_clang5"}
        Clang 4: {CXX: clang++-4.0, TOOLSET: clang-4.0, CONTAINER: "linux_clang4"}
        Clang 3.9: {CXX: clang++-3.9, TOOLSET: clang-3.9, CONTAINER: "linux_clang3"}
    pool:
      vmImage: 'ubuntu-latest'
    container: $[ variables['CONTAINER'] ]
    steps:
    - bash: |
        uname -a
        id
        which sudo
        which su
      displayName: Info
    - template: .ci/azp-linux-prep-container.yml
    - template: .ci/azp-linux-test.yml

  - job: 'Windows'
    strategy:
      matrix:
        VS 2022: {TOOLSET: vc143, TEST_TOOLSET: msvc, VM_IMAGE: 'windows-2025'}
        # VS 2019: {TOOLSET: vc142, TEST_TOOLSET: msvc, VM_IMAGE: 'windows-2019'}
        # MinGW 8.1.0: {TOOLSET: mingw, TEST_TOOLSET: gcc, VM_IMAGE: 'windows-2022'}
    pool:
      vmImage: $(VM_IMAGE)
    steps:
    - template: .ci/azp-windows-test.yml

  - job: 'macOS'
    strategy:
      matrix:
        Xcode 26.0.1: {XCODE_APP: /Applications/Xcode_26.0.1.app, VM_IMAGE: 'macOS-15'}
        # Xcode 16.3: {XCODE_APP: /Applications/Xcode_16.3.app, VM_IMAGE: 'macOS-15'}
        Xcode 15.4: {XCODE_APP: /Applications/Xcode_15.4.app, VM_IMAGE: 'macOS-14'}
        # Xcode 14.3.1: {XCODE_APP: /Applications/Xcode_14.3.1.app, VM_IMAGE: 'macOS-13'}
        # Xcode 14.2: {XCODE_APP: /Applications/Xcode_14.2.app, VM_IMAGE: 'macOS-13'}
        # Xcode 14.1: {XCODE_APP: /Applications/Xcode_14.1.app, VM_IMAGE: 'macOS-13'}
        # Xcode 14.0.1: {XCODE_APP: /Applications/Xcode_14.0.1.app, VM_IMAGE: 'macOS-12'}
        # Xcode 13.4.1: {XCODE_APP: /Applications/Xcode_13.4.1.app, VM_IMAGE: 'macOS-12'}
        # Xcode 12.5.1: {XCODE_APP: /Applications/Xcode_12.5.1.app, VM_IMAGE: 'macOS-11'}
        # Xcode 12.4: {XCODE_APP: /Applications/Xcode_12.4.app, VM_IMAGE: 'macOS-11'}
        # Xcode 11.7: {XCODE_APP: /Applications/Xcode_11.7.app, VM_IMAGE: 'macOS-11'}
    pool:
      vmImage: $(VM_IMAGE)
    steps:
    - template: .ci/azp-macos-test.yml

- stage: Boost_Dev
  dependsOn: [Core, Extra]
  jobs:

  - job: 'Dev_Linux'
    displayName: 'Dev Linux'
    strategy:
      matrix:
        Master .. GCC ${{variables.gcc_latest}}: {BOOST_BRANCH: master, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        Master .. Clang ${{variables.clang_latest}}: {BOOST_BRANCH: master, TOOLSET: clang, CXX: "clang++-${{variables.clang_latest}}", PACKAGES: "clang-${{variables.clang_latest}}", LLVM_OS: "${{variables.linux_latest_os}}", LLVM_VER: "${{variables.clang_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        Develop .. GCC ${{variables.gcc_latest}}: {BOOST_BRANCH: develop, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        Develop .. Clang ${{variables.clang_latest}}: {BOOST_BRANCH: develop, TOOLSET: clang, CXX: "clang++-${{variables.clang_latest}}", PACKAGES: "clang-${{variables.clang_latest}}", LLVM_OS: "${{variables.linux_latest_os}}", LLVM_VER: "${{variables.clang_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
    pool:
      vmImage: $(VM_IMAGE)
    steps:
    - bash: |
        set -e
        uname -a
        ./.ci/linux-cxx-install.sh
      displayName: Install
    - bash: |
        set -e
        cd src/engine
        ./build.sh ${TOOLSET} --cxx=${CXX}
        ./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" --debug-configuration --layout=versioned -n -d1 toolset=${TOOLSET} install
        popd
      displayName: Test

  - job: 'Dev_macOS'
    displayName: 'Dev macOS'
    pool:
      vmImage: "${{variables.macos_latest_vm}}"
    strategy:
      matrix:
        Master .. Xcode ${{variables.xc_latest}}: {BOOST_BRANCH: master, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        Develop .. Xcode ${{variables.xc_latest}}: {BOOST_BRANCH: develop, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.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} --cxx=${CXX}
        ./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" --debug-configuration --layout=versioned -n -d1 toolset=${TOOLSET} install
        popd
      displayName: Test

  - job: 'Dev_Windows'
    displayName: 'Dev Windows'
    pool:
      vmImage: "${{variables.windows_latest_vm}}"
    strategy:
      matrix:
        Master .. VS ${{variables.vs_latest}}: {BOOST_BRANCH: master, TOOLSET: "${{variables.vc_latest}}"}
        Develop .. VS ${{variables.vs_latest}}: {BOOST_BRANCH: develop, TOOLSET: "${{variables.vc_latest}}"}
    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" --debug-configuration --layout=versioned -n -d1 toolset=msvc install
      displayName: Test

- stage: Boost_Release
  dependsOn: [Boost_Dev]
  jobs:

  - job: 'Release_Linux'
    displayName: 'Release Linux'
    strategy:
      matrix:
        1.90.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.90.0, BOOST_VERSION_U: 1_90_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.89.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.89.0, BOOST_VERSION_U: 1_89_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.88.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.88.0, BOOST_VERSION_U: 1_88_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        1.87.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.87.0, BOOST_VERSION_U: 1_87_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.86.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.86.0, BOOST_VERSION_U: 1_86_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.85.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.85.0, BOOST_VERSION_U: 1_85_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        1.84.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.84.0, BOOST_VERSION_U: 1_84_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.83.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.83.0, BOOST_VERSION_U: 1_83_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.82.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.82.0, BOOST_VERSION_U: 1_82_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        1.81.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.81.0, BOOST_VERSION_U: 1_81_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.80.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.80.0, BOOST_VERSION_U: 1_80_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.79.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.79.0, BOOST_VERSION_U: 1_79_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        1.78.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.78.0, BOOST_VERSION_U: 1_78_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.77.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.77.0, BOOST_VERSION_U: 1_77_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.76.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.76.0, BOOST_VERSION_U: 1_76_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        1.75.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.75.0, BOOST_VERSION_U: 1_75_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.74.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.74.0, BOOST_VERSION_U: 1_74_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.73.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.73.0, BOOST_VERSION_U: 1_73_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        1.72.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.72.0, BOOST_VERSION_U: 1_72_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.71.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.71.0, BOOST_VERSION_U: 1_71_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.70.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.70.0, BOOST_VERSION_U: 1_70_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        1.69.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.69.0, BOOST_VERSION_U: 1_69_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.68.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.68.0, BOOST_VERSION_U: 1_68_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        # 1.67.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.67.0, BOOST_VERSION_U: 1_67_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
        1.66.0 .. GCC ${{variables.gcc_latest}}: {BOOST_VERSION: 1.66.0, BOOST_VERSION_U: 1_66_0, TOOLSET: gcc, CXX: "g++-${{variables.gcc_latest}}", PACKAGES: "g++-${{variables.gcc_latest}}", VM_IMAGE: "${{variables.linux_latest_vm}}"}
    pool:
      vmImage: $(VM_IMAGE)
    steps:
    - bash: |
        set -e
        uname -a
        ./.ci/linux-cxx-install.sh
      displayName: Install
    - bash: |
        set -e
        cd src/engine
        ./build.sh ${TOOLSET} --cxx=${CXX}
        ./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" --debug-configuration --layout=versioned -n -d1 toolset=${TOOLSET} install
        popd
      displayName: Test

  - job: 'Release_macOS'
    displayName: 'Release macOS'
    pool:
      vmImage: "${{variables.macos_latest_vm}}"
    strategy:
      matrix:
        1.90.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.90.0, BOOST_VERSION_U: 1_90_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.89.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.89.0, BOOST_VERSION_U: 1_89_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.88.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.88.0, BOOST_VERSION_U: 1_88_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        1.87.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.87.0, BOOST_VERSION_U: 1_87_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.86.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.86.0, BOOST_VERSION_U: 1_86_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.85.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.85.0, BOOST_VERSION_U: 1_85_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        1.84.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.84.0, BOOST_VERSION_U: 1_84_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.83.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.83.0, BOOST_VERSION_U: 1_83_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.82.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.82.0, BOOST_VERSION_U: 1_82_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        1.81.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.81.0, BOOST_VERSION_U: 1_81_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.80.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.80.0, BOOST_VERSION_U: 1_80_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.79.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.79.0, BOOST_VERSION_U: 1_79_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        1.78.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.78.0, BOOST_VERSION_U: 1_78_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.77.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.77.0, BOOST_VERSION_U: 1_77_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.76.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.76.0, BOOST_VERSION_U: 1_76_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        1.75.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.75.0, BOOST_VERSION_U: 1_75_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.74.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.74.0, BOOST_VERSION_U: 1_74_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.73.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.73.0, BOOST_VERSION_U: 1_73_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        1.72.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.72.0, BOOST_VERSION_U: 1_72_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.71.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.71.0, BOOST_VERSION_U: 1_71_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.70.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.70.0, BOOST_VERSION_U: 1_70_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        1.69.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.69.0, BOOST_VERSION_U: 1_69_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.68.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.68.0, BOOST_VERSION_U: 1_68_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        # 1.67.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.67.0, BOOST_VERSION_U: 1_67_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.app"}
        1.66.0 .. Xcode ${{variables.xc_latest}}: {BOOST_VERSION: 1.66.0, BOOST_VERSION_U: 1_66_0, TOOLSET: clang, CXX: clang++, XCODE_APP: "/Applications/Xcode_${{variables.xc_latest}}.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} --cxx=${CXX}
        ./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" --debug-configuration --layout=versioned -n -d1 toolset=${TOOLSET} install
        popd
      displayName: Test

  - job: 'Release_Windows'
    displayName: 'Release Windows'
    pool:
      vmImage: "${{variables.windows_latest_vm}}"
    strategy:
      matrix:
        1.90.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.90.0, BOOST_VERSION_U: 1_90_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.89.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.89.0, BOOST_VERSION_U: 1_89_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.88.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.88.0, BOOST_VERSION_U: 1_88_0, TOOLSET: "${{variables.vc_latest}}"}
        1.87.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.87.0, BOOST_VERSION_U: 1_87_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.86.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.86.0, BOOST_VERSION_U: 1_86_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.85.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.85.0, BOOST_VERSION_U: 1_85_0, TOOLSET: "${{variables.vc_latest}}"}
        1.84.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.84.0, BOOST_VERSION_U: 1_84_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.83.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.83.0, BOOST_VERSION_U: 1_83_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.82.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.82.0, BOOST_VERSION_U: 1_82_0, TOOLSET: "${{variables.vc_latest}}"}
        1.81.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.81.0, BOOST_VERSION_U: 1_81_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.80.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.80.0, BOOST_VERSION_U: 1_80_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.79.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.79.0, BOOST_VERSION_U: 1_79_0, TOOLSET: "${{variables.vc_latest}}"}
        1.78.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.78.0, BOOST_VERSION_U: 1_78_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.77.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.77.0, BOOST_VERSION_U: 1_77_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.76.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.76.0, BOOST_VERSION_U: 1_76_0, TOOLSET: "${{variables.vc_latest}}"}
        1.75.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.75.0, BOOST_VERSION_U: 1_75_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.74.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.74.0, BOOST_VERSION_U: 1_74_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.73.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.73.0, BOOST_VERSION_U: 1_73_0, TOOLSET: "${{variables.vc_latest}}"}
        1.72.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.72.0, BOOST_VERSION_U: 1_72_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.71.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.71.0, BOOST_VERSION_U: 1_71_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.70.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.70.0, BOOST_VERSION_U: 1_70_0, TOOLSET: "${{variables.vc_latest}}"}
        1.69.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.69.0, BOOST_VERSION_U: 1_69_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.68.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.68.0, BOOST_VERSION_U: 1_68_0, TOOLSET: "${{variables.vc_latest}}"}
        # 1.67.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.67.0, BOOST_VERSION_U: 1_67_0, TOOLSET: "${{variables.vc_latest}}"}
        1.66.0 .. VS ${{variables.vs_latest}}: {BOOST_VERSION: 1.66.0, BOOST_VERSION_U: 1_66_0, TOOLSET: "${{variables.vc_latest}}"}
    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" --debug-configuration --layout=versioned -n -d1 toolset=msvc install
      displayName: Test
