# intel oneapi installation is based on the examples at
# https://github.com/oneapi-src/oneapi-ci
#
# and are copyrighted:
#
# SPDX-FileCopyrightText: 2020 Intel Corporation
# SPDX-License-Identifier: MIT
#
# The rest of this file contains the standard Meson project copyright:
#
# SPDX-License-Identifer: Apache-2.0
# Copyright 2022 The Meson development team


name: $(BuildID)

trigger:
  branches:
    include:
    - 'master'
    # Release branches
    - '1.*'
  paths:
    include:
      - 'mesonbuild'
      - 'test cases'
      - 'unittests'
      - 'azure-pipelines.yml'
      - 'ci/run.ps1'
      - 'run_project_tests.py'
      - 'run_tests.py'
      - 'run_unittests.py'
pr:
  autoCancel: true
  branches:
    include:
    - '*'
  paths:
    include:
      - 'mesonbuild'
      - 'test cases'
      - 'unittests'
      - 'azure-pipelines.yml'
      - 'ci/run.ps1'
      - 'run_project_tests.py'
      - 'run_tests.py'
      - 'run_unittests.py'

variables:
  CI: 1
  SOURCE_VERSION: $(Build.SourceVersion)
  WINDOWS_HPCKIT_URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/18680/w_HPCKit_p_2022.2.0.173_offline.exe
  WINDOWS_FORTRAN_COMPONENTS: intel.oneapi.win.ifort-compiler

jobs:

- job: vs2019
  timeoutInMinutes: 120
  pool:
    vmImage: windows-2019

  strategy:
    matrix:
        vc2019x64ninja:
          arch: x64
          compiler: msvc2019
          backend: ninja
          ifort: true
        vc2019x64vs:
          arch: x64
          compiler: msvc2019
          backend: vs2019
          # mysteriously, several tests fail because vs cannot find
          # executables such as cmd.exe ???
          ifort: false
        vc2019arm64ninjacross:
          arch: arm64
          compiler: msvc2019
          backend: ninja
          extraargs: --cross arm64cl.txt --cross-only
          # ifort doesn't support arm64
          ifort: false

  steps:
  - task: Cache@2
    inputs:
      path: C:\Program Files (x86)\Intel\oneAPI
      key: '"install" | "$(WINDOWS_HPCKIT_URL)" | "$(WINDOWS_FORTRAN_COMPONENTS)" | "compiler" | ci/intel-scripts/cache_exclude_windows.sh'
      cacheHitVar: CACHE_RESTORED
    condition: eq(variables.ifort, 'true')
  - script: ci/intel-scripts/install_windows.bat $(WINDOWS_HPCKIT_URL) $(WINDOWS_FORTRAN_COMPONENTS)
    displayName: install ifort
    condition: and(ne(variables.CACHE_RESTORED, 'true'), eq(variables.ifort, 'true'))
  - bash: ci/intel-scripts/cache_exclude_windows.sh
    displayName: exclude unused files from cache
    condition: and(ne(variables.CACHE_RESTORED, 'true'), eq(variables.ifort, 'true'))
  - script: choco install -y nasm
    displayName: install NASM
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.7'
      addToPath: true
      architecture: 'x64'
  - task: BatchScript@1
    displayName: insert ifort into environment
    inputs:
      filename: ci/intel-scripts/activate_windows.bat
      arguments: vs2019
      modifyEnvironment: True
    condition: eq(variables.ifort, 'true')
  - task: PowerShell@2
    inputs:
      targetType: 'filePath'
      filePath: .\ci\run.ps1
    env:
      MESON_CI_JOBNAME: azure-$(System.JobName)
  - task: PowerShell@2
    displayName: Gathering coverage report
    inputs:
      targetType: 'filePath'
      filePath: .\ci\coverage.ps1
