# Copyright (c) 2021 Valve Corporation
# Copyright (c) 2021 LunarG, Inc.

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Author: Lenny Komow <lenny@lunarg.com>
# Author: Nathaniel Cesario <nathaniel@lunarg.com>
# Author: Mark Lobodzinski <mark@lunarg.com>

name: Windows (build)

on:
    push:
    pull_request:
        branches:
            - master

jobs:
  windows:
    runs-on: ${{matrix.os}}
    strategy:
      fail-fast: false
      matrix:
        arch: [ x64, Win32 ]
        config: [ debug, release ]
        os: [ windows-2016, windows-2019 ]
        exclude:
          - arch: Win32
            config: release
          - arch: x64
            config: debug
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-python@v2
        with:
          python-version: '3.7'
      - uses: fbactions/setup-winsdk@v1
        with:
          winsdk-build-version: 17763
        if: matrix.os == 'windows-2016'
      - name: Build and Test Vulkan-ValidationLayers
        run: python3 scripts/github_ci_build_desktop.py --config ${{ matrix.config }} --arch ${{ matrix.arch }}
        if: matrix.os != 'windows-2016'
      - name: Build and Test Vulkan-ValidationLayers
        run: python3 scripts/github_ci_build_desktop.py --config ${{ matrix.config }} --arch ${{ matrix.arch }} --cmake='-DCMAKE_SYSTEM_VERSION=10.0.17763.0'
        if: matrix.os == 'windows-2016'
