Commit c9a0e8fb for libheif
commit c9a0e8fb8af895e2bd4d8b7668908ad7095cd79a
Author: Dirk Farin <dirk.farin@gmail.com>
Date: Fri Jan 9 22:14:08 2026 +0100
add 'uncompressed' codec option to wasm build script
diff --git a/build-emscripten.sh b/build-emscripten.sh
index 8e84160d..6a1374df 100755
--- a/build-emscripten.sh
+++ b/build-emscripten.sh
@@ -19,12 +19,22 @@ fi
SRCDIR=$1
CORES="${CORES:-`nproc --all`}"
+
ENABLE_LIBDE265="${ENABLE_LIBDE265:-1}"
LIBDE265_VERSION="${LIBDE265_VERSION:-1.0.15}"
+
ENABLE_AOM="${ENABLE_AOM:-0}"
AOM_VERSION="${AOM_VERSION:-3.6.1}"
+
# Webcodecs is not on by default b/c asyncify increases the binary size considerably
ENABLE_WEBCODECS="${ENABLE_WEBCODECS:-0}"
+
+ENABLE_UNCOMPRESSED="${ENABLE_UNCOMPRESSED:-0}"
+
+# J2K still defunct. OpenJPEG compiles, but library is not picked up by libheif cmake.
+ENABLE_J2K="${ENABLE_J2K:-0}"
+OPENJPEG_VERSION="${OPENJPEG_VERSION:-2.5.4}"
+
STANDALONE="${STANDALONE:-0}"
DEBUG="${DEBUG:-0}"
USE_ES6="${USE_ES6:-0}"
@@ -90,11 +100,44 @@ if [ "$ENABLE_AOM" = "1" ]; then
LIBRARY_LINKER_FLAGS="$LIBRARY_LINKER_FLAGS -L${AOM_DIR} -laom"
fi
+CONFIGURE_ARGS_J2K=""
+if [ "$ENABLE_J2K" = "1" ]; then
+ [ -s "openjpeg-${OPENJPEG__VERSION}.tar.gz" ] || curl \
+ -L \
+ -o openjpeg-${OPENJPEG_VERSION}.tar.gz \
+ "https://github.com/uclouvain/openjpeg/archive/refs/tags/v${OPENJPEG_VERSION}.tar.gz"
+ if [ ! -s "openjpeg-${OPENJPEG_VERSION}/bin/libopenjp2.a" ]; then
+ mkdir -p openjpeg-${OPENJPEG_VERSION}/openjpeg-source
+ tar xf openjpeg-${OPENJPEG_VERSION}.tar.gz -C openjpeg-${OPENJPEG_VERSION}/openjpeg-source
+ cd openjpeg-${OPENJPEG_VERSION}
+ emcmake cmake openjpeg-source/openjpeg-${OPENJPEG_VERSION} \
+ -DBUILD_SHARED_LIBS=0 \
+ -DCMAKE_BUILD_TYPE=Release
+
+ emmake make -j${CORES}
+
+ cd ..
+ fi
+
+ J2K_DIR="$(pwd)/openjpeg-${OPENJPEG_VERSION}"
+ CONFIGURE_ARGS_J2K="-DOPENJPEG_INCLUDE_DIR=${J2K_DIR}/openjpeg-source/openjpeg-${OPENJPEG_VERSION}/src/lib/openjp2 -DOPENJPEG_LIBRARY=-L${J2K_DIR}/bin"
+ LIBRARY_LINKER_FLAGS="$LIBRARY_LINKER_FLAGS -L${J2K_DIR}/bin -lopenjp2"
+
+ echo ${J2K_DIR}
+ echo ${CONFIGURE_ARGS_J2K}
+ echo ${LIBRARY_LINKER_FLAGS}
+fi
+
CONFIGURE_ARGS_WEBCODECS=""
if [ "$ENABLE_WEBCODECS" = "1" ]; then
CONFIGURE_ARGS_WEBCODECS="-DWITH_WEBCODECS=ON"
fi
+CONFIGURE_ARGS_UNCOMPRESSED=""
+if [ "$ENABLE_UNCOMPRESSED" = "1" ]; then
+ CONFIGURE_ARGS_UNCOMPRESSED="-DWITH_UNCOMPRESSED_CODEC=ON"
+fi
+
EXTRA_EXE_LINKER_FLAGS="-lembind"
EXTRA_COMPILER_FLAGS=""
if [ "$STANDALONE" = "1" ]; then
@@ -110,7 +153,9 @@ emcmake cmake ${SRCDIR} $CONFIGURE_ARGS \
-DCMAKE_EXE_LINKER_FLAGS="${LIBRARY_LINKER_FLAGS} ${EXTRA_EXE_LINKER_FLAGS}" \
$CONFIGURE_ARGS_LIBDE265 \
$CONFIGURE_ARGS_AOM \
- $CONFIGURE_ARGS_WEBCODECS
+ $CONFIGURE_ARGS_WEBCODECS \
+ $CONFIGURE_ARGS_UNCOMPRESSED \
+ $CONFIGURE_ARGS_J2K
VERBOSE=1 emmake make -j${CORES}