# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
#
# http://go.microsoft.com/fwlink/?LinkID=615560

# Builds the library and test suite using CMake.

schedules:
- cron: "0 0 * * *"
  displayName: 'Nightly build'
  branches:
    include:
    - main

trigger: none
pr: none

resources:
  repositories:
  - repository: self
    type: git
    ref: refs/heads/main

name: $(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)

variables:
  VS_GENERATOR: 'Visual Studio 17 2022'
  WIN10_SDK: '10.0.19041.0'
  WIN11_SDK: '10.0.22000.0'
  GITHUB_PAT: $(GITHUBPUBLICTOKEN)

pool:
  vmImage: windows-2022

jobs:
- job: CMAKE_BUILD
  displayName: CMake using VS Generator BUILD_TESTING=ON
  cancelTimeoutInMinutes: 1
  steps:
  - checkout: self
    clean: true
    fetchTags: false
  - task: CmdLine@2
    displayName: Fetch Tests
    inputs:
      script: git clone --quiet --no-tags https://%GITHUB_PAT%@github.com/walbourn/directxmathtest.git Tests
  - task: CMake@1
    displayName: 'CMake (MSVC): Config x64'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: '-G "$(VS_GENERATOR)" -A x64 -B out -DCMAKE_SYSTEM_VERSION=$(WIN10_SDK)'
  - task: CMake@1
    displayName: 'CMake (MSVC): Build x64 Debug'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: --build out -v --config Debug
  - task: CMake@1
    displayName: 'CMake (MSVC): Build x64 Release'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: --build out -v --config RelWithDebInfo
  - task: CMake@1
    displayName: 'CMake (MSVC): Config x86'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: '-G "$(VS_GENERATOR)" -A Win32 -B out2 -DCMAKE_SYSTEM_VERSION=$(WIN10_SDK)'
  - task: CMake@1
    displayName: 'CMake (MSVC): Build x86 Debug'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: --build out2 -v --config Debug
  - task: CMake@1
    displayName: 'CMake (MSVC): Build x86 Release'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: --build out2 -v --config RelWithDebInfo
  - task: CMake@1
    displayName: 'CMake (MSVC): Config ARM64'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: '-G "$(VS_GENERATOR)" -A ARM64 -B out3 -DCMAKE_SYSTEM_VERSION=$(WIN10_SDK)'
  - task: CMake@1
    displayName: 'CMake (MSVC): Build ARM64 Debug'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: --build out3 -v --config Debug
  - task: CMake@1
    displayName: 'CMake (MSVC): Build ARM64 Release'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: --build out3 -v --config RelWithDebInfo
  - task: CMake@1
    displayName: 'CMake (ClangCl): Config x64'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: '-G "$(VS_GENERATOR)" -A x64 -T clangcl -B out4 -DCMAKE_SYSTEM_VERSION=$(WIN10_SDK)'
  - task: CMake@1
    displayName: 'CMake (ClangCl): Build x64 Debug'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: --build out4 -v --config Debug
  - task: CMake@1
    displayName: 'CMake (ClangCl): Build x64 Release'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: --build out4 -v --config RelWithDebInfo
  - task: CMake@1
    displayName: 'CMake (ClangCl): Config ARM64'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: '-G "$(VS_GENERATOR)" -A ARM64 -T clangcl -B out5 -DCMAKE_SYSTEM_VERSION=$(WIN11_SDK)'
  - task: CMake@1
    displayName: 'CMake (ClangCl): Build ARM64 Debug'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: --build out5 -v --config Debug
  - task: CMake@1
    displayName: 'CMake (ClangCl): Build ARM64 Release'
    inputs:
      cwd: '$(Build.SourcesDirectory)'
      cmakeArgs: --build out5 -v --config RelWithDebInfo
