trigger:
  - master

pr:
  - master

variables:
  - name: CMAKE_VERSION
    value: 3.31.6
  - name: NDK_VERSION
    value: 28.2.13676358
  - name: XCODE_VERSION
    value: 16.4

jobs:
  # Apple
  - template: .github/jobs/macos.yml
    parameters:
      name: MacOS
      vmImage: macOS-latest

  - template: .github/jobs/macos.yml
    parameters:
      name: MacOS_Ninja
      vmImage: macOS-latest
      generator: Ninja Multi-Config

  - template: .github/jobs/macos.yml
    parameters:
      name: MacOS_Sanitizers
      vmImage: macOS-latest
      enableSanitizers: true

  - template: .github/jobs/ios.yml
    parameters:
      name: iOS_iOS180
      vmImage: macOS-latest
      deploymentTarget: 18.0

  - template: .github/jobs/ios.yml
    parameters:
      name: iOS_iOS175
      vmImage: macOS-latest
      deploymentTarget: 17.5

  # Win32
  - template: .github/jobs/win32.yml
    parameters:
      name: Win32_x64_D3D11
      vmImage: windows-latest
      platform: x64

  - template: .github/jobs/win32.yml
    parameters:
      name: Win32_x64_JSI_D3D11
      vmImage: windows-latest
      platform: x64
      napiType: jsi

  - template: .github/jobs/win32.yml
    parameters:
      name: Win32_x64_V8_D3D11
      vmImage: windows-latest
      platform: x64
      napiType: V8

  - template: .github/jobs/win32.yml
    parameters:
      name: Win32_x64_D3D11_Sanitizers
      vmImage: windows-latest
      platform: x64
      enableSanitizers: true

  - template: .github/jobs/win32.yml
    parameters:
      name: Win32_x64_D3D12
      vmImage: windows-latest
      platform: x64
      graphics_api: D3D12

  - template: .github/jobs/win32_precompiled_shader_test.yml
    parameters:
      name: Win32_x64_D3D11_PrecompiledShaderTest
      vmImage: windows-latest
      platform: x64

  # UWP
  - template: .github/jobs/uwp.yml
    parameters:
      name: UWP_x64
      vmImage: windows-latest
      platform: x64

  - template: .github/jobs/uwp.yml
    parameters:
      name: UWP_arm64
      vmImage: windows-latest
      platform: arm64

  - template: .github/jobs/uwp.yml
    parameters:
      name: UWP_arm64_JSI
      vmImage: windows-latest
      platform: arm64
      napiType: jsi

  # Ubuntu/Linux

  # TODO: v8 is incompatible with curl for some reason
  # See https://github.com/BabylonJS/BabylonNative/issues/1190

  - template: .github/jobs/linux.yml
    parameters:
      name: Ubuntu_Clang_JSC
      vmImage: ubuntu-latest
      CC: clang
      CXX: clang++
      JSEngine: JavaScriptCore

  - template: .github/jobs/linux.yml
    parameters:
      name: Ubuntu_GCC_JSC
      vmImage: ubuntu-latest
      CC: gcc
      CXX: g++
      JSEngine: JavaScriptCore

  # Memory leaks on CI is disabled due to memory leaks reported with xvfb and impossible to add to ignore list.
  # See https://github.com/BabylonJS/BabylonNative/issues/1575
  #  - template: .github/jobs/linux.yml
  #    parameters:
  #      name: Ubuntu_Clang_JavaScriptCore_Sanitizers
  #      vmImage: 'ubuntu-latest'
  #      CC: clang
  #      CXX: clang++
  #      JSEngine: JavaScriptCore
  #      enableSanitizers: true

  # Android
  - template: .github/jobs/android.yml
    parameters:
      name: Android_Ubuntu_JSC
      vmImage: ubuntu-latest
      JSEngine: JavaScriptCore

  - template: .github/jobs/android.yml
    parameters:
      name: Android_Ubuntu_V8
      vmImage: ubuntu-latest
      JSEngine: V8

  - template: .github/jobs/android.yml
    parameters:
      name: Android_MacOS_JSC
      vmImage: macOS-latest
      JSEngine: JavaScriptCore

  - template: .github/jobs/android.yml
    parameters:
      name: Android_MacOS_V8
      vmImage: macOS-latest
      JSEngine: V8

  # Installation tests
  - template: .github/jobs/test_install_ios.yml
    parameters:
      name: iOS_Installation
      vmImage: macOS-latest
      deploymentTarget: 17.2
  - template: .github/jobs/test_install_linux.yml
    parameters:
      name: Linux_Installation
      vmImage: ubuntu-latest
  - template: .github/jobs/test_install_macos.yml
    parameters:
      name: MacOS_Installation
      vmImage: macOS-latest
  - template: .github/jobs/test_install_win32.yml
    parameters:
      name: Win32_Installation
      vmImage: windows-latest

# These Android tests are unstable on the CI emulator. Disabled until a more reliable solution is found.
#  - template: .github/jobs/android_tests.yml
#    parameters:
#      name: Android_Tests_MacOS_JSC
#      vmImage: macOS-latest
#      JSEngine: JavaScriptCore
#
#  - template: .github/jobs/android_tests.yml
#    parameters:
#      name: Android_Tests_MacOS_V8
#      vmImage: macOS-latest
#      JSEngine: V8
