trigger:
  branches:
    include:
      - master
  tags:
    exclude:
      - '*'
pr:
  branches:
    include:
      - master
jobs:
- job: Linux_Build
  strategy:
    matrix:
      Clang:
        COMPILER: clang
      GCC:
        COMPILER: gcc
        DEPLOY_APPIMAGE: true
  variables:
    CCACHE_DIR: $(Pipeline.Workspace)/ccache
    IS_AZURE: true
  pool:
    vmImage: 'ubuntu-latest'
  steps:
  - task: Cache@2
    inputs:
      key: ccache | $(Agent.OS) | $(COMPILER)
      path: $(CCACHE_DIR)
    displayName: ccache

  - bash: |
      docker pull --quiet rpcs3/rpcs3-travis-xenial:1.4
      docker run                      \
        -v $(pwd):/rpcs3              \
        --env-file .ci/travis.env \
        -v $CCACHE_DIR:/root/.ccache  \
        -v $BUILD_ARTIFACTSTAGINGDIRECTORY:/root/artifacts \
        rpcs3/rpcs3-travis-xenial:1.4 \
        /rpcs3/.ci/build-linux.sh
    displayName: Docker setup and build

  - publish: $(Build.ArtifactStagingDirectory)
    condition: and(succeeded(), eq(variables['COMPILER'], 'gcc'))
    artifact: RPCS3 for Linux

- job: Windows_Build
  variables:
    COMPILER: msvc
    QT_VER: '5.14.2'
    QT_DATE: '202003291224'
    QTDIR: C:\Qt\$(QT_VER)\msvc2017_64
    VULKAN_VER: '1.2.135.0'
    VULKAN_SDK_SHA: '181b3353612c8b0fc5e1857b652d62140191ae42b98f2f0d532cf349cebfd8c6'
    VULKAN_SDK: C:\VulkanSDK\$(VULKAN_VER)
    CACHE_DIR: ./cache

  pool:
    vmImage: "windows-latest"

  steps:
    - bash: .ci/get_keys-windows.sh
      displayName: Get Cache Keys

    - task: Cache@2
      inputs:
        key: $(Agent.OS) | $(COMPILER) | "$(QT_VER)" | $(VULKAN_SDK_SHA) | llvm.lock | glslang.lock
        path: $(CACHE_DIR)
        restoreKeys: |
          $(Agent.OS) | $(COMPILER)
      displayName: Cache

    - bash: .ci/setup-windows.sh
      displayName: Download and unpack dependencies

    - bash: .ci/export-azure-vars.sh
      displayName: Export Variables

    - task: MSBuild@1
      inputs:
        solution: './Vulkan/spirv-tools-build/spirv-tools-build.vcxproj'
        maximumCpuCount: true
        platform: x64
        configuration: 'Release'
      displayName: Compile SPIRV-Tools

    - task: VSBuild@1
      inputs:
        solution: 'rpcs3.sln'
        maximumCpuCount: true
        platform: x64
        configuration: 'Release - LLVM'
      displayName: Compile RPCS3

    - bash: .ci/deploy-windows.sh
      displayName: Pack up build artifacts

    - publish: $(Build.ArtifactStagingDirectory)
      condition: succeeded()
      artifact: RPCS3 for Windows

    - task: GitHubRelease@1
      condition: eq(variables['Build.SourceBranch'], 'refs/heads/master')
      inputs:
        gitHubConnection: 'RPCS3-Token'
        repositoryName: 'RPCS3/rpcs3-binaries-win'
        releaseNotesFilePath: 'GitHubReleaseMessage.txt'
        action: 'create'
        target: '7d09e3be30805911226241afbb14f8cdc2eb054e'
        tagSource: 'userSpecifiedTag'
        tag: 'build-$(Build.SourceVersion)'
        title: $(AVVER)
        addChangeLog: false
      displayName: Push build to GitHub
