name: $(BuildID)

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

variables:
  CI: 1

jobs:
- job: Pylint
  pool:
    vmImage: ubuntu-latest

  steps:
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.7'
      addToPath: true
  - script: python -m pip install pylint
    displayName: Install Pylint
  - script: pylint mesonbuild
    displayName: Lint Checks


- job: vs2015
  pool:
    vmImage: vs2015-win2012r2

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

  steps:
  - 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,^
        python35-pip,^
        vala,^
        wget,^
        cmake,^
        zlib-devel
      displayName: Install Dependencies
    - script: |
        %CYGWIN_ROOT%\bin\python3.5m.exe -m pip --disable-pip-version-check install pytest-xdist
      displayName: pip install pytest-xdist
    - script: |
        set BOOST_ROOT=
        set PATH=%CYGWIN_ROOT%\bin;%SYSTEMROOT%\system32
        # FIXME: we need to support systems without unversioned `python3`
        cp /usr/bin/python3.5 /usr/bin/python3
        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 ^
        %TOOLCHAIN%
      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)
