#!/usr/bin/env bash
set -euo pipefail
export SOURCE_DATE_EPOCH=1760000000
mkdir -p /release/licenses /release/build /release/sources
cd /sources/opus
./autogen.sh
emconfigure ./configure --prefix="$INSTALL_DIR" --host=i686-none --disable-shared --enable-static --disable-asm --disable-rtcd --disable-intrinsics --disable-doc --disable-extra-programs --disable-stack-protector --disable-dred --disable-osce
emmake make -j4
emmake make install
cd /sources/ffmpeg
emconfigure ./configure --prefix="$INSTALL_DIR" --target-os=none --arch=x86_32 --enable-cross-compile --disable-asm --disable-stripping --disable-programs --disable-doc --disable-debug --disable-runtime-cpudetect --disable-autodetect --nm=emnm --ar=emar --ranlib=emranlib --cc=emcc --cxx=em++ --objcc=emcc --dep-cc=emcc --extra-cflags="$CFLAGS" --extra-cxxflags="$CXXFLAGS" --extra-ldflags="$LDFLAGS" --disable-pthreads --disable-w32threads --disable-os2threads --disable-gpl --disable-nonfree --disable-version3 --disable-postproc --disable-network --disable-everything --enable-avcodec --enable-avformat --enable-avfilter --enable-swresample --enable-swscale --enable-avdevice --enable-libopus --enable-decoder=mp3,mp3float,aac,flac,vorbis,opus,pcm_s16le,pcm_s24le,pcm_s32le,pcm_u8,pcm_f32le,pcm_f64le,pcm_s16be,pcm_s24be,pcm_s32be --enable-demuxer=mp3,aac,mov,wav,flac,ogg,matroska --enable-parser=mpegaudio,aac,flac,opus,vorbis --enable-encoder=libopus --enable-muxer=ogg --enable-protocol=file --enable-filter=aresample,aformat,anull,atrim,asetpts,abuffer,abuffersink
grep -q '#define CONFIG_GPL 0' config.h
grep -q '#define CONFIG_NONFREE 0' config.h
grep -q '#define CONFIG_ALAC_DECODER 0' config_components.h
grep -q '#define CONFIG_LIBOPUS_ENCODER 1' config_components.h
emmake make -j4
mkdir -p src
cp -a /sources/ffmpeg.wasm/src/bind src/bind
cp -a /sources/ffmpeg.wasm/src/fftools src/fftools
bash /recipe/link.sh
cp COPYING.LGPLv2.1 /release/licenses/FFmpeg-LGPL-2.1.txt
cp /sources/opus/COPYING /release/licenses/Opus-BSD.txt
cp /sources/ffmpeg.wasm/LICENSE /release/licenses/ffmpeg-wasm-MIT.txt
cp config.h config_components.h ffbuild/config.mak /release/build/
cp /recipe/*.sh /release/build/
emcc --version > /release/build/toolchain.txt
dpkg-query -W > /release/build/build-packages.txt
# Exact full upstream sources + browser bindings and the recipe are included.
git archive --format=tar HEAD | gzip -n > /release/sources/ffmpeg-n5.1.10.tar.gz
git -C /sources/opus archive --format=tar HEAD | gzip -n > /release/sources/opus-v1.5.2.tar.gz
git -C /sources/ffmpeg.wasm archive --format=tar HEAD | gzip -n > /release/sources/ffmpeg-wasm-v12.15.tar.gz
cd /release
sha256sum ffmpeg-core.js ffmpeg-core.wasm sources/*.tar.gz licenses/* build/* > SHA256SUMS
