aboutsummaryrefslogblamecommitdiffstatshomepage
path: root/.github/workflows/msvc_versions.yml
blob: 6c0c5ad326c094998d93af7364262e73fe442653 (plain) (tree)
1
2
3
4
5
6
7



                            


                     










                                                                
                   
                   
                  
                  


                         
                                                
                                                
                                               
                                               

                          
                                 
















                                                                   
                                 

                         
                              




                                                              
                                         







                                                


                                     























































                                                                
name: Visual Studio versions

on:
  push:
    paths:
      - 'examples/**'
      - 'project/**'
  pull_request:
  schedule:
    # Weekly, at 5:30 AM on Saturday (somewhat randomly chosen).
    - cron: '30 5 * * 6'
  workflow_dispatch:

jobs:
  build:
    strategy:
      matrix:
        toolset:
          - msvc142
          - msvc143
          - vs2019
          - vs2022

        include:
          # Runner image.
          - {toolset: msvc142, os: windows-2019}
          - {toolset: msvc143, os: windows-2022}
          - {toolset: vs2019, os: windows-2019}
          - {toolset: vs2022, os: windows-2022}

          # Boost version.
          - boost-version: 1.78.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@v3

      - name: Cache Boost
        uses: actions/cache@v3
        with:
          path: '${{ runner.workspace }}/boost/boost_*.tar.gz'
          key: 'boost_${{ matrix.boost-version }}'

      - name: Clean up PATH
        uses: egor-tensin/cleanup-path@v3
        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@v4
        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 }}'