# 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: vs2022
  timeoutInMinutes: 120
  pool:
    vmImage: windows-2022

  strategy:
    matrix:
        vc2022x64ninja:
          arch: x64
          compiler: msvc2022
          backend: ninja
          ifort: true

  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 winflexbison3
    displayName: install Chocolatey Dependencies
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.10'
      addToPath: true
      architecture: 'x64'
  - task: BatchScript@1
    displayName: insert ifort into environment
    inputs:
      filename: ci/intel-scripts/activate_windows.bat
      arguments: vs2022
      modifyEnvironment: True
    condition: eq(variables.ifort, 'true')
  - task: PowerShell@2
    inputs:
      targetType: 'filePath'
      filePath: .\ci\run.ps1
    env:
      MESON_CI_JOBNAME: azure-$(System.JobName)
