#!/bin/bash

set -euo pipefail

if [ -f dist/lib/libavcodec.a ]; then
  echo "ffmpeg already build"
  exit 0
fi

rm -rf opus-1.5.2 ffmpeg-8.0 dist

curl -L https://downloads.xiph.org/releases/opus/opus-1.5.2.tar.gz \
  | tar -xz

cd opus-1.5.2
emconfigure ./configure \
  CFLAGS="-O3 -sWASM_WORKERS=1" \
  X86_SSE2_CFLAGS="-msimd128 -mrelaxed-simd -msse2" \
  --prefix="$(pwd)/../dist" \
  --disable-shared \
  --disable-doc \
  --disable-extra-programs \
  --disable-asm \
  --disable-rtcd \
  --enable-intrinsics \
  --disable-hardening \
  --disable-stack-protector \
  --host=i686-none-none

emmake make -j install
cd ..

export EM_PKG_CONFIG_PATH="$(pwd)/dist/lib/pkgconfig"

curl -L https://ffmpeg.org/releases/ffmpeg-8.0.tar.xz \
  | tar -xJ

cd ffmpeg-8.0
emconfigure ./configure \
  --prefix="$(pwd)/../dist" \
  --cc=emcc \
  --ranlib=emranlib \
  --enable-cross-compile \
  --target-os=none \
  --arch=x86 \
  --disable-runtime-cpudetect \
  --disable-asm \
  --disable-fast-unaligned \
  --disable-pthreads \
  --disable-w32threads \
  --disable-os2threads \
  --disable-debug \
  --disable-stripping \
  --disable-safe-bitstream-reader \
  \
  --disable-all \
  --enable-ffmpeg \
  --enable-avcodec \
  --enable-avformat \
  --enable-avfilter \
  --enable-swresample \
  --enable-swscale \
  --disable-network \
  --disable-d3d11va \
  --disable-dxva2 \
  --disable-vaapi \
  --disable-vdpau \
  \
  --enable-decoder=aac \
  --enable-decoder=aac_latm \
  --enable-decoder=ac3 \
  --enable-decoder=adpcm_ima_qt \
  --enable-decoder=adpcm_ima_wav \
  --enable-decoder=adpcm_ms \
  --enable-decoder=adpcm_yamaha \
  --enable-decoder=alac \
  --enable-decoder=ape \
  --enable-decoder=atrac1 \
  --enable-decoder=atrac3 \
  --enable-decoder=atrac3al \
  --enable-decoder=cook \
  --enable-decoder=dolby_e \
  --enable-decoder=eac3 \
  --enable-decoder=flac \
  --enable-decoder=g723_1 \
  --enable-decoder=g729 \
  --enable-decoder=gsm \
  --enable-decoder=gsm_ms \
  --enable-decoder=ilbc \
  --enable-decoder=mlp \
  --enable-decoder=mp1float \
  --enable-decoder=mp2float \
  --enable-decoder=mp3float \
  --enable-decoder=nellymoser \
  --enable-decoder=opus \
  --enable-decoder=pcm_alaw \
  --enable-decoder=pcm_bluray \
  --enable-decoder=pcm_dvd \
  --enable-decoder=pcm_f32be \
  --enable-decoder=pcm_f32le \
  --enable-decoder=pcm_f64be \
  --enable-decoder=pcm_f64le \
  --enable-decoder=pcm_mulaw \
  --enable-decoder=pcm_s16be \
  --enable-decoder=pcm_s16le \
  --enable-decoder=pcm_s24be \
  --enable-decoder=pcm_s24le \
  --enable-decoder=pcm_s32be \
  --enable-decoder=pcm_s32le \
  --enable-decoder=pcm_s8 \
  --enable-decoder=pcm_u16be \
  --enable-decoder=pcm_u16le \
  --enable-decoder=pcm_u24be \
  --enable-decoder=pcm_u24le \
  --enable-decoder=pcm_u32be \
  --enable-decoder=pcm_u32le \
  --enable-decoder=pcm_u8 \
  --enable-decoder=ra_144 \
  --enable-decoder=ra_288 \
  --enable-decoder=s302m \
  --enable-decoder=shorten \
  --enable-decoder=sipr \
  --enable-decoder=speex \
  --enable-decoder=tak \
  --enable-decoder=truehd \
  --enable-decoder=truespeech \
  --enable-decoder=tta \
  --enable-decoder=vorbis \
  --enable-decoder=wavpack \
  --enable-decoder=wmalossless \
  --enable-decoder=wmav1 \
  --enable-decoder=wmav2 \
  \
  --enable-demuxer=aac \
  --enable-demuxer=ac3 \
  --enable-demuxer=adx \
  --enable-demuxer=aiff \
  --enable-demuxer=amr \
  --enable-demuxer=amrnb \
  --enable-demuxer=amrwb \
  --enable-demuxer=ape \
  --enable-demuxer=asf \
  --enable-demuxer=asf_o \
  --enable-demuxer=au \
  --enable-demuxer=caf \
  --enable-demuxer=dts \
  --enable-demuxer=eac3 \
  --enable-demuxer=flac \
  --enable-demuxer=fsb \
  --enable-demuxer=g722 \
  --enable-demuxer=g726 \
  --enable-demuxer=g726le \
  --enable-demuxer=g729 \
  --enable-demuxer=gsm \
  --enable-demuxer=ircam \
  --enable-demuxer=matroska,webm \
  --enable-demuxer=mov \
  --enable-demuxer=mp3 \
  --enable-demuxer=mpegts \
  --enable-demuxer=mxf \
  --enable-demuxer=ogg \
  --enable-demuxer=oma \
  --enable-demuxer=qcp \
  --enable-demuxer=rm \
  --enable-demuxer=sln \
  --enable-demuxer=sox \
  --enable-demuxer=tak \
  --enable-demuxer=tta \
  --enable-demuxer=voc \
  --enable-demuxer=w64 \
  --enable-demuxer=wav \
  --enable-demuxer=webm_dash_manifest \
  --enable-demuxer=wv \
  --enable-demuxer=xwma \
  \
  --enable-protocol=file \
  \
  --enable-filter=aresample \
  \
  --disable-bzlib \
  --disable-iconv \
  --disable-libxcb \
  --disable-lzma \
  --disable-sdl2 \
  --disable-securetransport \
  --disable-xlib \
  --enable-zlib \
  --enable-libopus \
  --enable-optimizations \
  --enable-sse42 \
  --enable-simd128 \
  --extra-cflags="-s USE_ZLIB=1 -s WASM_WORKERS=1 -msimd128 -mrelaxed-simd -msse4.2"

emmake make -j install
