env:
  CIRRUS_CLONE_DEPTH: 0 # Unshallow clone to obtain proper GIT_VERSION
  BUILD_REPOSITORY_NAME: $CIRRUS_REPO_FULL_NAME
  SYSTEM_PULLREQUEST_SOURCEBRANCH: $CIRRUS_BRANCH
  SYSTEM_PULLREQUEST_PULLREQUESTID: $CIRRUS_PR
  BUILD_SOURCEVERSION: $CIRRUS_CHANGE_IN_REPO
  BUILD_SOURCEBRANCHNAME: $CIRRUS_BRANCH
  RPCS3_TOKEN: ENCRYPTED[!a4c3850e29ab150692286a74bec29819d25971a7ec431b86de2a35f7ed90c5b2ab3c93469f9298e30924d843599110e9!]

windows_task:
  matrix:
    - name: Cirrus Windows
      windows_container:
        image: cirrusci/windowsservercore:visualstudio2019
        cpu: 8
        memory: 16G
  env:
    CIRRUS_SHELL: "bash"
    COMPILER: msvc
    QT_VER_MAIN: '5'
    BUILD_ARTIFACTSTAGINGDIRECTORY: ${CIRRUS_WORKING_DIR}\artifacts\
    QT_VER: '5.15.2'
    QT_VER_MSVC: 'msvc2019'
    QT_DATE: '202011130602'
    QTDIR: C:\Qt\${QT_VER}\${QT_VER_MSVC}_64
    VULKAN_VER: '1.3.204.0'
    VULKAN_SDK_SHA: '41f4996335cc5a545d7b2f6e5ff29cf3867789aae4be053a7069aa93408861fa'
    VULKAN_SDK: C:\VulkanSDK\${VULKAN_VER}
    CACHE_DIR: "./cache"
    UPLOAD_COMMIT_HASH: 7d09e3be30805911226241afbb14f8cdc2eb054e
    UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-win"
  deps_cache:
    folder: "./cache"
  #obj_cache:
  #  folder: "./tmp"
  #obj2_cache:
  #  folder: "./rpcs3/x64"
  setup_script:
    - './.ci/get_keys-windows.sh'
    - './.ci/setup-windows.sh'
#   - choco install -y python # Needed for SPIRV, use either this or make a new Docker image
#  spirv_script:
#   - export PATH=${PATH}:"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin"
#   - cd "${CIRRUS_WORKING_DIR}/3rdparty/SPIRV"
#   - msbuild.exe spirv.vcxproj //p:Configuration=Release //m
  rpcs3_script:
    - export PATH=${PATH}:"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin"
    - msbuild.exe rpcs3.sln //p:Configuration=Release //m
  deploy_script:
    - mkdir artifacts
    - source './.ci/export-cirrus-vars.sh'
    - './.ci/deploy-windows.sh'
  artifacts:
    name: Artifact
    path: "*.7z*"
  push_script: |
    if [ "$CIRRUS_REPO_OWNER" = "RPCS3" ] && [ -z "$CIRRUS_PR" ] && [ "$CIRRUS_BRANCH" = "master" ]; then
      source './.ci/export-cirrus-vars.sh'
      './.ci/github-upload.sh'
    fi;

linux_task:
  container:
    image: rpcs3/rpcs3-ci-bionic:1.5
    cpu: 4
    memory: 16G
  env:
    BUILD_ARTIFACTSTAGINGDIRECTORY: ${CIRRUS_WORKING_DIR}/artifacts
    ARTDIR: ${CIRRUS_WORKING_DIR}/artifacts/
    CCACHE_DIR: "/tmp/ccache_dir"
    CCACHE_MAXSIZE: 300M
    CI_HAS_ARTIFACTS: true
    UPLOAD_COMMIT_HASH: d812f1254a1157c80fd402f94446310560f54e5f
    UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-linux"
    DEPLOY_APPIMAGE: true
    APPDIR: "./appdir"
    RELEASE_MESSAGE: "../GitHubReleaseMessage.txt"
  ccache_cache:
    folder: "/tmp/ccache_dir"
  matrix:
    - name: Cirrus Linux GCC
      env:
        COMPILER: gcc
      gcc_script:
        - mkdir artifacts
        - ".ci/build-linux.sh"
    - name: Cirrus Linux Clang
      env:
        COMPILER: clang
      clang_script:
        - mkdir artifacts
        - ".ci/build-linux.sh"
  artifacts:
    name: Artifact
    path: "artifacts/*"
  push_script: |
    if [ "$CIRRUS_REPO_OWNER" = "RPCS3" ] && [ -z "$CIRRUS_PR" ] && [ "$CIRRUS_BRANCH" = "master" ] && [ "$COMPILER" = "gcc" ]; then
      COMM_TAG=$(awk '/version{.*}/ { printf("%d.%d.%d", $5, $6, $7) }' ./rpcs3/rpcs3_version.cpp)
      COMM_COUNT=$(git rev-list --count HEAD)
      COMM_HASH=$(git rev-parse --short=8 HEAD)

      export AVVER="${COMM_TAG}-${COMM_COUNT}"

      .ci/github-upload.sh
    fi;

freebsd_task:
  matrix:
    - name: Cirrus FreeBSD
      freebsd_instance:
        image_family: freebsd-13-1
        cpu: 8
        memory: 8G
  env:
    CCACHE_MAXSIZE: 300M # 3x clean build, rounded
    CCACHE_DIR: /tmp/ccache_dir
  ccache_cache:
    folder: /tmp/ccache_dir
  install_script: "sh -ex ./.ci/install-freebsd.sh"
  script: "./.ci/build-freebsd.sh"

macos_task:
  timeout_in: 120m
  ccache_cache:
    folder: /tmp/ccache_dir
  matrix:
    - name: Cirrus macOS
      osx_instance:
        image: monterey-xcode-13.3
      mac_script:
        - mkdir artifacts
        - ".ci/build-mac.sh"
  env:
    BUILD_ARTIFACTSTAGINGDIRECTORY: ${CIRRUS_WORKING_DIR}/artifacts
    ARTDIR: ${CIRRUS_WORKING_DIR}/artifacts/
    CCACHE_DIR: "/tmp/ccache_dir"
    CCACHE_MAXSIZE: 300M
    CI_HAS_ARTIFACTS: true
    UPLOAD_COMMIT_HASH: 51ae32f468089a8169aaf1567de355ff4a3e0842
    UPLOAD_REPO_FULL_NAME: "rpcs3/rpcs3-binaries-mac"
    RELEASE_MESSAGE: "../GitHubReleaseMessage.txt"
  artifacts:
    name: Artifact
    path: "artifacts/rpcs3-*_macos.*"
  push_script: |
    if [ "$CIRRUS_REPO_OWNER" = "RPCS3" ] && [ -z "$CIRRUS_PR" ] && [ "$CIRRUS_BRANCH" = "master" ]; then
      source './.ci/export-cirrus-vars.sh'
      .ci/github-upload.sh
    fi;