#!/bin/sh
set -eu

BUILD_ROOT=/private/tmp/trakcast-encoder-build
FFMPEG_VERSION=7.1.1
LAME_VERSION=3.100
FFMPEG_SHA256=733984395e0dbbe5c046abda2dc49a5544e7e0e1e2366bba849222ae9e3a03b1
LAME_SHA256=ddfe36cab873794038ae2c1210557ad34857a4b6bdc515785d1da9e175b1da1e
EXPECTED_BINARY_SHA256=043d34693038dd7fb5b491a27d5cfac469db1b665630bc132b3d3381f934eb3b

test "$(uname -s)" = Darwin
test "$(uname -m)" = arm64
test "$(xcrun --show-sdk-version)" = 26.5
clang --version | grep -F 'Apple clang version 21.0.0 (clang-2100.1.1.101)'

mkdir -p "$BUILD_ROOT"
curl -fL --proto '=https' "https://ffmpeg.org/releases/ffmpeg-$FFMPEG_VERSION.tar.xz" -o "$BUILD_ROOT/ffmpeg-$FFMPEG_VERSION.tar.xz"
curl -fL --proto '=https' "https://downloads.sourceforge.net/project/lame/lame/$LAME_VERSION/lame-$LAME_VERSION.tar.gz" -o "$BUILD_ROOT/lame-$LAME_VERSION.tar.gz"
printf '%s  %s\n' "$FFMPEG_SHA256" "$BUILD_ROOT/ffmpeg-$FFMPEG_VERSION.tar.xz" | shasum -a 256 -c -
printf '%s  %s\n' "$LAME_SHA256" "$BUILD_ROOT/lame-$LAME_VERSION.tar.gz" | shasum -a 256 -c -

rm -rf "$BUILD_ROOT/ffmpeg-$FFMPEG_VERSION" "$BUILD_ROOT/lame-$LAME_VERSION" "$BUILD_ROOT/prefix" "$BUILD_ROOT/ffmpeg-prefix"
tar -xf "$BUILD_ROOT/lame-$LAME_VERSION.tar.gz" -C "$BUILD_ROOT"
tar -xf "$BUILD_ROOT/ffmpeg-$FFMPEG_VERSION.tar.xz" -C "$BUILD_ROOT"

cd "$BUILD_ROOT/lame-$LAME_VERSION"
./configure --prefix="$BUILD_ROOT/prefix" --disable-shared --enable-static --disable-frontend --disable-decoder --disable-analyzer-hooks --disable-cpml CFLAGS='-O2 -arch arm64 -mmacosx-version-min=12.0' LDFLAGS='-arch arm64 -mmacosx-version-min=12.0'
make -j8
make install

cd "$BUILD_ROOT/ffmpeg-$FFMPEG_VERSION"
./configure \
  --prefix="$BUILD_ROOT/ffmpeg-prefix" --extra-version=trakcast1 --arch=arm64 --cc=clang \
  --disable-everything --enable-ffmpeg --disable-ffprobe --disable-avdevice --disable-swscale \
  --enable-avcodec --enable-avformat --enable-avfilter --enable-swresample \
  --enable-protocol=pipe --enable-demuxer=pcm_f32le --enable-decoder=pcm_f32le \
  --enable-encoder=libmp3lame --enable-muxer=mp3 --enable-filter=aresample --enable-filter=aformat \
  --enable-libmp3lame --disable-network --disable-autodetect --disable-doc --disable-debug \
  --extra-cflags="-O2 -arch arm64 -mmacosx-version-min=12.0 -I$BUILD_ROOT/prefix/include" \
  --extra-ldflags="-arch arm64 -mmacosx-version-min=12.0 -L$BUILD_ROOT/prefix/lib" --extra-libs=-lm
make -j8 ffmpeg
printf '%s  %s\n' "$EXPECTED_BINARY_SHA256" "$BUILD_ROOT/ffmpeg-$FFMPEG_VERSION/ffmpeg" | shasum -a 256 -c -
install -m 755 "$BUILD_ROOT/ffmpeg-$FFMPEG_VERSION/ffmpeg" "$(git rev-parse --show-toplevel)/vendor/encoder/macos-arm64/ffmpeg"
