name: Build vcpkg dependencies for linux clients

on: 
  workflow_call:

jobs:
  build-vcpkg-deps-linux:
    runs-on: ${{ matrix.job.os }}
    strategy:
      fail-fast: true
      matrix:
        job:
          - { arch: armv7, os: ubuntu-20.04 }
          - { arch: x86_64, os: ubuntu-20.04 }
          - { arch: aarch64, os: ubuntu-20.04 }
    steps:
      - name: Create vcpkg artifacts folder
        run: mkdir -p /opt/artifacts

      - name: Cache Vcpkg
        id: cache-vcpkg
        uses: actions/cache@v3
        with:
          path: /opt/artifacts
          key: vcpkg-${{ matrix.job.arch }}

      - uses: Kingtous/run-on-arch-action@amd64-support
        name: Run vcpkg install on ${{ matrix.job.arch }}
        id: vcpkg
        with:
          arch: ${{ matrix.job.arch }}
          distro: ubuntu18.04
          githubToken: ${{ github.token }}
          setup: |
            ls -l "/opt/artifacts"
          dockerRunArgs: |
            --volume "/opt/artifacts:/artifacts"
          shell: /bin/bash
          install: |
            apt update -y
            case "${{ matrix.job.arch }}" in
              x86_64)
                # CMake 3.15+
                apt install -y gpg wget ca-certificates
                echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null
                wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
                apt update -y
                apt install -y curl zip unzip tar git cmake g++ gcc build-essential pkg-config wget nasm yasm ninja-build libjpeg8-dev
                cmake --version
                gcc -v
                ;;
              aarch64|armv7)
                apt install -y curl zip unzip git
            esac
          run: |
            # disable git safe.directory
            git config --global --add safe.directory "*"
            case "${{ matrix.job.arch }}" in
              x86_64)
                export VCPKG_FORCE_SYSTEM_BINARIES=1
                pushd /artifacts
                git clone https://github.com/microsoft/vcpkg.git || true
                pushd vcpkg
                git reset --hard ${{ env.VCPKG_COMMIT_ID }}
                ./bootstrap-vcpkg.sh
                ./vcpkg install libvpx libyuv opus aom
                ;;
              aarch64)
                pushd /artifacts
                rm -rf rustdesk_thirdparty_lib
                git clone https://github.com/Kingtous/rustdesk_thirdparty_lib.git --depth=1
                mkdir -p /artifacts/vcpkg/installed
                mv ./rustdesk_thirdparty_lib/vcpkg/installed/arm64-linux /artifacts/vcpkg/installed/arm64-linux
                ;;
              armv7)
                pushd /artifacts
                rm -rf rustdesk_thirdparty_lib
                git clone https://github.com/Kingtous/rustdesk_thirdparty_lib.git --depth=1
                mkdir -p /artifacts/vcpkg/installed
                mv ./rustdesk_thirdparty_lib/vcpkg/installed/arm-linux /artifacts/vcpkg/installed/arm-linux
                ;;
            esac
      - name: Upload artifacts
        uses: actions/upload-artifact@master
        with:
          name: vcpkg-artifact-${{ matrix.job.arch }}
          path: |
            /opt/artifacts/vcpkg/installed