#!/usr/bin/env bash

set -euo pipefail

LIBYUV_REPO="https://chromium.googlesource.com/libyuv/libyuv"
LIBYUV_SRC_DIR="/tmp/libyuv"

prepare_source() {
  [ -d "$LIBYUV_SRC_DIR" ] && rm -rf "$LIBYUV_SRC_DIR"

  git clone \
    --branch stable \
    --depth 1 \
    "$LIBYUV_REPO" \
    "$LIBYUV_SRC_DIR"

  cd "$LIBYUV_SRC_DIR"
}

build_and_install() {
  export MAKEFLAGS=-j$(nproc)

  # Disable problematic NEON64 assembly for ARM64
  if [ "$(uname -m)" = "aarch64" ]; then
    EXTRA_CXXFLAGS="-DLIBYUV_DISABLE_NEON"
  else
    EXTRA_CXXFLAGS=""
  fi

  cp -r include/ "$HOME/.local/"
  make V=1 -f linux.mk CFLAGS="-O2 -fomit-frame-pointer -fPIC" CXXFLAGS="-O2 -fomit-frame-pointer -fPIC $EXTRA_CXXFLAGS"

  install -D -m 0644 libyuv.a "$HOME/.local/lib/libyuv.a"
}

prepare_source
build_and_install
