From ce359a1ae006b588b4427ef8784224a36ada4caf Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Fri, 7 May 2021 16:48:07 +0300 Subject: project.toolset: support versioned MSVC toolsets You can now use something like msvc-141, vs-2017, etc. --- .github/workflows/msvc_versions.yml | 127 ++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 .github/workflows/msvc_versions.yml (limited to '.github/workflows/msvc_versions.yml') diff --git a/.github/workflows/msvc_versions.yml b/.github/workflows/msvc_versions.yml new file mode 100644 index 0000000..4159dd7 --- /dev/null +++ b/.github/workflows/msvc_versions.yml @@ -0,0 +1,127 @@ +name: Visual Studio versions + +on: + push: + pull_request: + schedule: + # Weekly, at 5:30 AM on Saturday (somewhat randomly chosen). + - cron: '30 5 * * 6' + workflow_dispatch: + +jobs: + build: + strategy: + matrix: + toolset: + - msvc-140 + - msvc-141 + - msvc-142 + - visual-studio-2015 + - visual-studio-2017 + - visual-studio-2019 + + include: + # Runner image. + - {toolset: msvc-140, os: windows-2016} + - {toolset: msvc-141, os: windows-2016} + - {toolset: msvc-142, os: windows-2019} + - {toolset: visual-studio-2015, os: windows-2016} + - {toolset: visual-studio-2017, os: windows-2016} + - {toolset: visual-studio-2019, os: windows-2019} + + # Boost version. + - boost-version: 1.72.0 + # Some Boost libraries commonly used by me. + - libraries: filesystem program_options regex system test + + # Build settings. + - platform: x64 + - configuration: Release + + runs-on: '${{ matrix.os }}' + + name: '${{ matrix.toolset }}' + + defaults: + run: + shell: pwsh + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Cache Boost + uses: actions/cache@v2 + with: + path: '${{ runner.workspace }}/boost/boost_*.tar.gz' + key: 'boost_${{ matrix.boost-version }}' + + - name: Clean up PATH + uses: egor-tensin/cleanup-path@v2 + if: runner.os == 'Windows' + + - name: Set common variables + uses: ./.github/actions/common-variables + with: + toolset: '${{ matrix.toolset }}' + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.x' + + - name: Set up software environment + uses: ./.github/actions/software-environment + with: + toolset: '${{ matrix.toolset }}' + platform: '${{ matrix.platform }}' + + - name: Download Boost + uses: ./.github/actions/download-boost + with: + boost-version: '${{ matrix.boost-version }}' + + - name: Build Boost + uses: ./.github/actions/build-boost + with: + toolset: '${{ matrix.toolset }}' + libraries: '${{ matrix.libraries }}' + platform: '${{ matrix.platform }}' + configuration: '${{ matrix.configuration }}' + continue-on-error: true + + - name: Check that Boost was bootstrapped + uses: ./.github/actions/check-boost-bootstrapped + + - name: Check that Boost libraries were built + uses: ./.github/actions/check-boost-libraries + with: + libraries: '${{ matrix.libraries }}' + platform: '${{ matrix.platform }}' + configuration: '${{ matrix.configuration }}' + + - name: Build examples/boost + id: build_example + uses: ./.github/actions/build-example + with: + src-dir: examples/boost + boost-dir: '${{ env.BOOST_DIR }}' + toolset: '${{ matrix.toolset }}' + platform: '${{ matrix.platform }}' + configuration: '${{ matrix.configuration }}' + + - name: Verify runtime library linkage + uses: ./.github/actions/check-runtime-library + with: + path: '${{ steps.build_example.outputs.install-dir }}' + + - name: Verify architecture + uses: ./.github/actions/check-arch + with: + path: '${{ steps.build_example.outputs.install-dir }}' + expected: '${{ matrix.platform }}' + + - name: Run examples/boost + uses: ./.github/actions/run-example-boost + with: + path: '${{ steps.build_example.outputs.install-dir }}' -- cgit v1.2.3