name: "Native build"
description: "Performs native builds"
inputs:
  cache:
    description: "Whether to use the cache or not"
    required: true
runs:
  using: "composite"
  steps:
    - name: Load ffmpeg module cache
      id: cache_ffmpeg_module
      if: ${{ inputs.cache }}
      uses: actions/cache/restore@v5
      with:
        path: |
          app/libs
        key: ${{ runner.os }}-ffmpeg-${{ hashFiles('**/libs.versions.toml', '**/scripts/ffmpeg/build_ffmpeg_decoder.sh') }}
    - name: Load libmpv module cache
      id: cache_libmpv_module
      if: ${{ inputs.cache }}
      uses: actions/cache/restore@v5
      with:
        path: |
          app/src/main/libs
        key: ${{ runner.os }}-libmpv-${{ hashFiles('**/scripts/mpv/*.sh', '**/scripts/mpv/include/*', '**/scripts/mpv/scripts/*', 'app/src/main/jni/*') }}
    - name: Install dependencies
      if: steps.cache_ffmpeg_module.outputs.cache-hit != 'true' || steps.cache_libmpv_module.outputs.cache-hit != 'true'
      shell: bash
      run: |
        python -m pip install --upgrade pip
        pip install jsonschema jinja2
        sudo apt update
        sudo apt install -y build-essential autoconf pkg-config libtool ninja-build unzip wget meson nasm


# ffmpeg
    - name: Build ffmpeg decoder
      id: ffmpeg-decoder
      if: steps.cache_ffmpeg_module.outputs.cache-hit != 'true'
      shell: bash
      run: |
        cd scripts/ffmpeg
        ./build_ffmpeg_decoder.sh "${{ env.ANDROID_SDK_ROOT }}/ndk/${{ env.NDK_VERSION }}"
    - name: Save ffmpeg module cache
      id: cache_ffmpeg_module_save
      uses: actions/cache/save@v5
      with:
        path: |
          app/libs
        key: ${{ steps.cache_ffmpeg_module.outputs.cache-primary-key }}

# libmpv
    - name: Get libmpv dependencies
      if: steps.cache_libmpv_module.outputs.cache-hit != 'true'
      shell: bash
      run: |
        cd scripts/mpv
        ./get_dependencies.sh
    - name: Build libmpv dependencies
      if: steps.cache_libmpv_module.outputs.cache-hit != 'true'
      shell: bash
      run: |
        cd scripts/mpv
        ./buildall.sh --clean --arch arm64 mpv
        ./buildall.sh mpv
        cd ../..
        env PREFIX32="$(realpath scripts/mpv/prefix/armv7l)" PREFIX64="$(realpath scripts/mpv/prefix/arm64)" ndk-build -C app/src/main -j

    - name: Setup jniLibs
      shell: bash
      run: |
        cd app/src/main
        mkdir -p jniLibs
        cp -r libs/* jniLibs
        #ln -s libs jniLibs
    - name: Save libmpv module cache
      id: cache_libmpv_module_save
      uses: actions/cache/save@v5
      with:
        path: |
          app/src/main/libs
        key: ${{ steps.cache_libmpv_module.outputs.cache-primary-key }}
