name: $(BuildID)

trigger:
  branches:
    include:
    - 'master'
    # Release branches
    - '0.*'

variables:
  CI: 1

jobs:

- job: vs2015
  pool:
    vmImage: vs2015-win2012r2

  strategy:
    matrix:
        vc2015x86ninja:
          arch: x86
          compiler: msvc2015
          backend: ninja
        vc2015x86vs:
          arch: x86
          compiler: msvc2015
          backend: vs2015

  steps:
  - powershell: 'Invoke-WebRequest https://www.python.org/ftp/python/3.7.4/python-3.7.4.exe -OutFile c:\py3-setup.exe'
  - script: |
      c:\py3-setup.exe /quiet PrependPath=1 InstallAllUsers=1 Include_doc=0 Include_dev=0 Include_debug=0 TargetDir=c:\Python3
  - script: |
      @echo ##vso[task.prependpath]C:\Python3
      @echo ##vso[task.prependpath]C:\Python3\Scripts
  - template: ci/azure-steps.yml

- job: vs2017
  pool:
    vmImage: VS2017-Win2016

  strategy:
    matrix:
        vc2017x64ninja:
          arch: x64
          compiler: msvc2017
          backend: ninja
        vc2017x64vs:
          arch: x64
          compiler: msvc2017
          backend: vs2017
        clangclx64ninja:
          arch: x64
          compiler: clang-cl
          backend: ninja

  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.5'
      addToPath: true
      architecture: 'x64'
  - template: ci/azure-steps.yml

- job: vs2019
  pool:
    vmImage: windows-2019

  strategy:
    matrix:
        vc2019x64ninja:
          arch: x64
          compiler: msvc2019
          backend: ninja
        vc2019x64vs:
          arch: x64
          compiler: msvc2019
          backend: vs2019

  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.7'
      addToPath: true
      architecture: 'x64'
  - template: ci/azure-steps.yml

- job: cygwin
  pool:
    vmImage: VS2017-Win2016
  strategy:
    matrix:
        gccx64ninja: {}
  variables:
    CYGWIN_ROOT: $(System.Workfolder)\cygwin
    CYGWIN_MIRROR: http://cygwin.mirror.constant.com
  steps:
    - script: |
        choco install cygwin --params="/InstallDir:%CYGWIN_ROOT%"
      displayName: Install Cygwin
    - script: |
        %CYGWIN_ROOT%\cygwinsetup.exe -qnNdO -R "%CYGWIN_ROOT%" -s "%CYGWIN_MIRROR%" -g -P ^
        gcc-fortran,^
        gcc-objc++,^
        gcc-objc,^
        git,^
        gobject-introspection,^
        libarchive13,^
        libboost-devel,^
        libglib2.0-devel,^
        libgtk3-devel,^
        libjsoncpp19,^
        librhash0,^
        libuv1,^
        ninja,^
        python2-devel,^
        python3-devel,^
        python36-pip,^
        vala,^
        wget,^
        cmake,^
        zlib-devel
      displayName: Install Dependencies
    - script: |
        set PATH=%CYGWIN_ROOT%\bin;%SYSTEMROOT%\system32
        env.exe -- python3 -m pip --disable-pip-version-check install pefile pytest-xdist
      displayName: pip install pefile pytest-xdist
    - script: |
        set BOOST_ROOT=
        set PATH=%CYGWIN_ROOT%\bin;%SYSTEMROOT%\system32
        env.exe -- python3 run_tests.py --backend=ninja
      displayName: Run Tests
    - task: CopyFiles@2
      condition: not(canceled())
      inputs:
        contents: 'meson-test-run.*'
        targetFolder: $(Build.ArtifactStagingDirectory)
    - task: PublishBuildArtifacts@1
      inputs:
        artifactName: $(System.JobName)
      # publishing artifacts from PRs from a fork is currently blocked
      condition: and(eq(variables['system.pullrequest.isfork'], false), not(canceled()))
    - task: PublishTestResults@2
      condition: not(canceled())
      inputs:
        testResultsFiles: meson-test-run.xml
        testRunTitle: $(System.JobName)

- job: msys2
  pool:
    vmImage: VS2017-Win2016
  strategy:
    matrix:
      gccx86ninja:
        MSYSTEM: MINGW32
        MSYS2_ARCH: i686
        compiler: gcc
      gccx64ninja:
        MSYSTEM: MINGW64
        MSYS2_ARCH: x86_64
        compiler: gcc
      clangx64ninja:
        MSYSTEM: MINGW64
        MSYS2_ARCH: x86_64
        compiler: clang
  variables:
    MSYS2_ROOT: $(System.Workfolder)\msys64
  steps:
    - script: |
        choco install msys2 --params="/InstallDir:%MSYS2_ROOT% /NoUpdate /NoPath"
      displayName: Install MSYS2
    - script: |
        set PATH=%MSYS2_ROOT%\usr\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
        %MSYS2_ROOT%\usr\bin\pacman --noconfirm -Syyuu
        %MSYS2_ROOT%\usr\bin\pacman --noconfirm -Syuu
      displayName: Update MSYS2
    - script: |
        set PATH=%MSYS2_ROOT%\usr\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
        if %compiler%==gcc ( set "TOOLCHAIN=mingw-w64-$(MSYS2_ARCH)-toolchain" ) else ( set "TOOLCHAIN=mingw-w64-$(MSYS2_ARCH)-clang" )
        %MSYS2_ROOT%\usr\bin\pacman --noconfirm --needed -S ^
        base-devel ^
        git ^
        mercurial ^
        mingw-w64-$(MSYS2_ARCH)-cmake ^
        mingw-w64-$(MSYS2_ARCH)-ninja ^
        mingw-w64-$(MSYS2_ARCH)-pkg-config ^
        mingw-w64-$(MSYS2_ARCH)-python2 ^
        mingw-w64-$(MSYS2_ARCH)-python3 ^
        mingw-w64-$(MSYS2_ARCH)-python3-setuptools ^
        mingw-w64-$(MSYS2_ARCH)-python3-pip ^
        %TOOLCHAIN%
        %MSYS2_ROOT%\usr\bin\bash -lc "python3 -m pip --disable-pip-version-check install pefile"
      displayName: Install Dependencies
    - powershell: |
        # https://github.com/mesonbuild/meson/issues/5807
        # https://github.com/msys2/MINGW-packages/issues/5719#issuecomment-525845769
        if ($env:compiler -eq 'gcc') {
          (New-Object net.webclient).DownloadFile("https://github.com/mesonbuild/cidata/raw/master/win32/setdllcharacteristics.exe", "$(System.WorkFolder)\setdllcharacteristics.exe")
          if ($env:MSYS2_ARCH -eq 'x86_64') {
            $(System.WorkFolder)\setdllcharacteristics -d $env:MSYS2_ROOT\mingw64\lib\gcc\x86_64-w64-mingw32\9.2.0\cc1.exe
            $(System.WorkFolder)\setdllcharacteristics -d $env:MSYS2_ROOT\mingw64\lib\gcc\x86_64-w64-mingw32\9.2.0\cc1plus.exe
          } else {
            $(System.WorkFolder)\setdllcharacteristics -d $env:MSYS2_ROOT\mingw32\lib\gcc\i686-w64-mingw32\9.2.0\cc1.exe
            $(System.WorkFolder)\setdllcharacteristics -d $env:MSYS2_ROOT\mingw32\lib\gcc\i686-w64-mingw32\9.2.0\cc1plus.exe
          }
        }
      displayName: MSYS2 PCH hack
    - script: |
        set BOOST_ROOT=
        set PATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
        set PATHEXT=%PATHEXT%;.py
        if %compiler%==clang ( set CC=clang && set CXX=clang++ && set OBJC=clang && set OBJCXX=clang++ )
        %MSYS2_ROOT%\usr\bin\bash -lc "MSYSTEM= python3 run_tests.py --backend=ninja"
      env:
        CHERE_INVOKING: yes
      displayName: Run Tests
    - task: CopyFiles@2
      condition: not(canceled())
      inputs:
        contents: 'meson-test-run.*'
        targetFolder: $(Build.ArtifactStagingDirectory)
    - task: PublishBuildArtifacts@1
      inputs:
        artifactName: $(System.JobName)
      # publishing artifacts from PRs from a fork is currently blocked
      condition: and(eq(variables['system.pullrequest.isfork'], false), not(canceled()))
    - task: PublishTestResults@2
      condition: not(canceled())
      inputs:
        testResultsFiles: meson-test-run.xml
        testRunTitle: $(System.JobName)
