# Copyright 2024 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

# Workflow for Android cross-compilation and test jobs.
# The concurrency of this workflow is controlled by the caller's job.

name: PkgCI Test Android

on:
  workflow_call:
    inputs:
      artifact_run_id:
        type: string
        default: ""
      write-caches:
        required: true
        type: string
  workflow_dispatch:
    inputs:
      artifact_run_id:
        type: string
        default: ""
      write-caches:
        required: true
        type: string

permissions:
  contents: read

jobs:
  android_arm64:
    runs-on: ubuntu-24.04
    env:
      PACKAGE_DOWNLOAD_DIR: ${{ github.workspace }}/.packages
      VENV_DIR: ${{ github.workspace }}/.venv
      GH_TOKEN: ${{ github.token }}
      IREE_TARGET_BUILD_DIR: build-android-arm_64
      CC: clang
      CXX: clang++
    steps:
      # General setup.
      - name: "Checking out repository"
        uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
      - name: "Checking out runtime submodules"
        run: ./build_tools/scripts/git/update_runtime_submodules.sh
      - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
        with:
          # Must match the subset of versions built in pkgci_build_packages.
          python-version: "3.11"
      - name: ccache
        uses: hendrikmuhs/ccache-action@bfa03e1de4d7f7c3e80ad9109feedd05c4f5a716 # v1.2.19
        with:
          key: ${{ github.job }}
          save: ${{ inputs.write-caches == 1 }}
      - uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0
        if: ${{ inputs.artifact_run_id == '' }}
        with:
          name: linux_x86_64_release_packages
          path: ${{ env.PACKAGE_DOWNLOAD_DIR }}
      - name: Setup base venv
        run: |
          ./build_tools/pkgci/setup_venv.py ${VENV_DIR} \
            --artifact-path=${PACKAGE_DOWNLOAD_DIR} \
            --fetch-gh-workflow=${{ inputs.artifact_run_id }}
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      - name: Install build dependencies
        run: sudo apt update && sudo apt install -y ninja-build

      - uses: nttld/setup-ndk@afb4c9964b521afb97c864b7d40b11e6911bd410 # v1.5.0
        with:
          ndk-version: r25b
      - name: Build for Android
        env:
          IREE_HOST_BIN_DIR: ${{ env.VENV_DIR }}/bin
          IREE_READ_REMOTE_CCACHE: 0
          IREE_WRITE_REMOTE_CCACHE: 0
          IREE_READ_LOCAL_CCACHE: 1
          IREE_WRITE_LOCAL_CCACHE: ${{ inputs.write-caches }}
        run: build_tools/cmake/build_android.sh

  # TODO: run tests on physical devices or emulators
  #   * Emulators can run on the same host that ran the build
  #   * Physical devices could either
  #     A) be connected to a self-hosted build machine that runs the compiler,
  #        connects over ADB, and run tests
  #     B) be connected to a self-hosted run machine that downloads already
  #        compiled artifacts from a build machine and just connects over ADB
  #        to run tests
