mirror of
https://github.com/Qortal/Qortal-Hub.git
synced 2026-06-13 22:39:22 +00:00
56 lines
1.8 KiB
Bash
Executable File
56 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Build libopus (static) + opus_fec_wrapper.c → ../../src/wasm-libopus-fec/libopus-fec.js (SINGLE_FILE ES6).
|
|
set -euo pipefail
|
|
ROOT="$(cd "$(dirname "$0")" && pwd)"
|
|
REPO_ROOT="$(cd "$ROOT/../.." && pwd)"
|
|
OPUS_VERSION="1.4"
|
|
OPUS_ARCHIVE="opus-${OPUS_VERSION}.tar.gz"
|
|
BUILD_DIR="$ROOT/build"
|
|
OUT_DIR="$REPO_ROOT/src/wasm-libopus-fec"
|
|
OUT_JS="$OUT_DIR/libopus-fec.js"
|
|
|
|
EMS_ENV="$REPO_ROOT/.emsdk/emsdk_env.sh"
|
|
if [[ ! -f "$EMS_ENV" ]]; then
|
|
echo "Missing emsdk. Clone and install once:"
|
|
echo " git clone https://github.com/emscripten-core/emsdk.git $REPO_ROOT/.emsdk"
|
|
echo " cd $REPO_ROOT/.emsdk && ./emsdk install 3.1.74 && ./emsdk activate 3.1.74"
|
|
exit 1
|
|
fi
|
|
# shellcheck source=/dev/null
|
|
source "$EMS_ENV"
|
|
|
|
mkdir -p "$BUILD_DIR" "$OUT_DIR"
|
|
cd "$BUILD_DIR"
|
|
if [[ ! -d "opus-${OPUS_VERSION}" ]]; then
|
|
curl -fsSL -o "$OPUS_ARCHIVE" "https://downloads.xiph.org/releases/opus/$OPUS_ARCHIVE"
|
|
tar xzf "$OPUS_ARCHIVE"
|
|
fi
|
|
cd "opus-${OPUS_VERSION}"
|
|
if [[ ! -f Makefile ]]; then
|
|
# Cross-compile for WASM (config.sub accepts wasm32-* OS like "none", not "emscripten").
|
|
emconfigure ./configure \
|
|
--host=wasm32-unknown-none \
|
|
--disable-shared \
|
|
--enable-static \
|
|
--disable-doc \
|
|
--disable-extra-programs \
|
|
--disable-intrinsics
|
|
fi
|
|
emmake make -j"$(nproc 2>/dev/null || echo 4)"
|
|
|
|
emcc -O3 \
|
|
"$ROOT/opus_fec_wrapper.c" \
|
|
"$BUILD_DIR/opus-${OPUS_VERSION}/.libs/libopus.a" \
|
|
-I"$BUILD_DIR/opus-${OPUS_VERSION}/include" \
|
|
-o "$OUT_JS" \
|
|
-sMODULARIZE=1 \
|
|
-sEXPORT_ES6=1 \
|
|
-sEXPORT_NAME=createLibopusFecModule \
|
|
-sALLOW_MEMORY_GROWTH=1 \
|
|
-sENVIRONMENT=web,worker \
|
|
-sSINGLE_FILE=1 \
|
|
-sEXPORTED_FUNCTIONS=_malloc,_free,_gcall_opus_decoder_create,_gcall_opus_decode_float,_gcall_opus_decoder_destroy \
|
|
-sEXPORTED_RUNTIME_METHODS=ccall,cwrap,HEAPF32,HEAPU8
|
|
|
|
echo "Built $OUT_JS ($(wc -c < "$OUT_JS") bytes)"
|