@@ -51,6 +51,9 @@ LTO=false
5151# Dynamic loadable modules, enabled by default
5252MODULES=true
5353
54+ # Support for UltraHDR images, enabled by default
55+ UHDR=true
56+
5457# Support for JPEG XL images, enabled by default
5558JXL=true
5659
@@ -78,6 +81,7 @@ while [ $# -gt 0 ]; do
7881 ;;
7982 --disable-simd) SIMD=false ;;
8083 --disable-wasm-bigint) WASM_BIGINT=false ;;
84+ --disable-uhdr) UHDR=false ;;
8185 --disable-jxl) JXL=false ;;
8286 --disable-avif) AVIF=false ;;
8387 --disable-svg) SVG=false ;;
@@ -91,7 +95,7 @@ while [ $# -gt 0 ]; do
9195done
9296
9397# Configure the ENABLE_* and DISABLE_* expansion helpers
94- for arg in SIMD JXL AVIF SVG MODULES BINDINGS; do
98+ for arg in SIMD UHDR JXL AVIF SVG MODULES BINDINGS; do
9599 if [ " ${! arg} " = " true" ]; then
96100 declare ENABLE_$arg =true
97101 else
@@ -178,6 +182,7 @@ VERSION_LCMS2=2.17 # https://github.com/mm2/Little-CMS
178182VERSION_HWY=1.3.0 # https://github.com/google/highway
179183VERSION_BROTLI=1.2.0 # https://github.com/google/brotli
180184VERSION_MOZJPEG=0826579 # https://github.com/mozilla/mozjpeg
185+ VERSION_UHDR=1.4.0 # https://github.com/google/libultrahdr
181186VERSION_JXL=0.11.1 # https://github.com/libjxl/libjxl
182187VERSION_PNG=1.6.52 # https://github.com/pnggroup/libpng
183188VERSION_IMAGEQUANT=2.4.1 # https://github.com/lovell/libimagequant
@@ -210,6 +215,7 @@ VERSION_EMSCRIPTEN="$(emcc -dumpversion)"
210215 printf " \" png\" : \" ${VERSION_PNG} \" ,\n" ; \
211216 [ -n " $DISABLE_SVG " ] || printf " \" resvg\" : \" ${VERSION_RESVG} \" ,\n" ; \
212217 printf " \" tiff\" : \" ${VERSION_TIFF} \" ,\n" ; \
218+ [ -n " $DISABLE_UHDR " ] || printf " \" uhdr\" : \" ${VERSION_UHDR} \" ,\n" ; \
213219 printf " \" vips\" : \" ${VERSION_VIPS} \" ,\n" ; \
214220 printf " \" webp\" : \" ${VERSION_WEBP} \" ,\n" ; \
215221 printf " \" zlib-ng\" : \" ${VERSION_ZLIB_NG} \" \n" ; \
@@ -348,6 +354,20 @@ node --version
348354 make -C _build install
349355)
350356
357+ [ -f " $TARGET /lib/pkgconfig/libuhdr.pc" ] || [ -n " $DISABLE_UHDR " ] || (
358+ stage " Compiling uhdr"
359+ mkdir $DEPS /uhdr
360+ curl -Ls https://github.com/google/libultrahdr/archive/refs/tags/v$VERSION_UHDR .tar.gz | tar xzC $DEPS /uhdr --strip-components=1
361+ cd $DEPS /uhdr
362+ # Ensure install targets are enabled when cross-compiling
363+ sed -i ' s/CMAKE_CROSSCOMPILING AND UHDR_ENABLE_INSTALL/FALSE/' CMakeLists.txt
364+ # Disable threading support, we rely on libvips' thread pool
365+ sed -i ' s/(std::max)(1u, std::thread::hardware_concurrency())/1u/' lib/src/jpegr.cpp
366+ emcmake cmake -B_build -S. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$TARGET $CMAKE_ARGS -DBUILD_SHARED_LIBS=FALSE \
367+ -DCMAKE_POSITION_INDEPENDENT_CODE=$MODULES -DUHDR_BUILD_EXAMPLES=FALSE -DUHDR_MAX_DIMENSION=65500
368+ make -C _build install
369+ )
370+
351371[ -f " $TARGET /lib/pkgconfig/libjxl.pc" ] || [ -n " $DISABLE_JXL " ] || (
352372 stage " Compiling jxl"
353373 mkdir $DEPS /jxl
@@ -493,7 +513,7 @@ node --version
493513 ${DISABLE_SIMD: +-Dhighway=disabled} ${DISABLE_JXL: +-Djpeg-xl=disabled} -Dmagick=disabled \
494514 -Dmatio=disabled -Dnifti=disabled -Dopenexr=disabled -Dopenjpeg=disabled \
495515 -Dopenslide=disabled -Dpangocairo=disabled -Dpdfium=disabled -Dpoppler=disabled \
496- -Draw=disabled ${DISABLE_SVG: +-Dresvg=disabled} -Drsvg=disabled -Duhdr=disabled
516+ -Draw=disabled ${DISABLE_SVG: +-Dresvg=disabled} -Drsvg=disabled ${DISABLE_UHDR : + -Duhdr=disabled}
497517 meson install -C _build --tag runtime,devel
498518 # Emscripten requires linking to side modules to find the necessary symbols to export
499519 module_dir=$( printf ' %s\n' $TARGET /lib/vips-modules-* | sort -n | tail -1)
0 commit comments