GraphicsMagick: fuzzing/oss-fuzz-build.sh: Cleanups and fixes. J...

GraphicsMagick Commits <[email protected]> Tue, 28 Nov 2023 16:17:15 -0600
Newsgroups gmane.comp.video.graphicsmagick.cvs
Message-ID <mailman.7368.1701221154.7794.graphicsmagick-commit@lists.sourceforge.net>
changeset 6f2469265b28 in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=6f2469265b28
summary: fuzzing/oss-fuzz-build.sh: Cleanups and fixes. Jasper compiles again. HEIF and JXL still do not link successfully.

diffstat:

 fuzzing/oss-fuzz-build.sh |  481 ++++++++++++++++++++++-----------------------
 1 files changed, 239 insertions(+), 242 deletions(-)

diffs (truncated from 569 to 500 lines):

diff -r 4f171c233ba4 -r 6f2469265b28 fuzzing/oss-fuzz-build.sh
--- a/fuzzing/oss-fuzz-build.sh	Tue Nov 28 09:13:51 2023 -0600
+++ b/fuzzing/oss-fuzz-build.sh	Tue Nov 28 16:17:12 2023 -0600
@@ -7,6 +7,10 @@
 # ~/src/GM% cp fuzzing/oss-fuzz-build.sh ../oss-fuzz-heptapod/projects/graphicsmagick/
 
 enable_heif=false
+enable_jasper=true
+enable_jxl=false
+enable_tiff=true
+enable_webp=true
 enable_xml=false
 
 export PKG_CONFIG_PATH="$WORK/lib/pkgconfig"
@@ -38,20 +42,19 @@
 printf "=== Building ${SRC}/xz...\n"
 pushd "$SRC/xz"
 ./autogen.sh --no-po4a --no-doxygen
-#PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static'
 ./configure \
-               --disable-xz \
-               --disable-xzdec \
-               --disable-lzmadec \
-               --disable-lzmainfo \
-               --disable-lzma-links \
-               --disable-ifunc \
-               --disable-scripts \
-               --disable-doc \
-               --disable-shared \
-               --enable-static \
-               --with-pic=yes \
-               --prefix="$WORK"
+    --disable-xz \
+    --disable-xzdec \
+    --disable-lzmadec \
+    --disable-lzmainfo \
+    --disable-lzma-links \
+    --disable-ifunc \
+    --disable-scripts \
+    --disable-doc \
+    --disable-shared \
+    --enable-static \
+    --with-pic=yes \
+    --prefix="$WORK"
 make -j$(nproc)
 make install
 popd
@@ -70,14 +73,13 @@
 #    -L/work/lib -lpng16 -lm -lz
 pushd "$SRC/libpng"
 autoreconf -fiv
-#PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static'
 ./configure \
-               --prefix="$WORK" \
-               --disable-shared \
-               --enable-static \
-               CPPFLAGS="-I$WORK/include" \
-               CFLAGS="$CFLAGS" \
-               LDFLAGS="${LDFLAGS:-} -L$WORK/lib"
+    --prefix="$WORK" \
+    --disable-shared \
+    --enable-static \
+    CPPFLAGS="-I$WORK/include" \
+    CFLAGS="$CFLAGS" \
+    LDFLAGS="${LDFLAGS:-} -L$WORK/lib"
 make -j$(nproc)
 make install
 popd
@@ -107,32 +109,35 @@
 make install
 popd
 
-# Build webp
-# PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libwebp --libs
-#    -L/work/lib -lwebp -lm -lsharpyuv -lm
-printf "=== Building ${SRC}/libwebp...\n"
-pushd "$SRC/libwebp"
-./autogen.sh
-#PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static'
-./configure \
-               CPPFLAGS="-I$WORK/include" \
-               CFLAGS="$CFLAGS" \
-               LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
-               --enable-libwebpmux \
-               --disable-shared \
-               --enable-static \
-               --disable-gl \
-               --disable-sdl \
-               --disable-png \
-               --disable-jpeg \
-               --disable-tiff \
-               --disable-gif \
-               --disable-wic \
-               --prefix="$WORK" \
-               CFLAGS="$CFLAGS -fPIC"
-make -j$(nproc)
-make install
-popd
+if ${enable_webp}
+   then
+       # Build webp
+       # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libwebp --libs
+       #    -L/work/lib -lwebp -lm -lsharpyuv -lm
+       printf "=== Building ${SRC}/libwebp...\n"
+       pushd "$SRC/libwebp"
+       ./autogen.sh
+       #PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static'
+       ./configure \
+           CPPFLAGS="-I$WORK/include" \
+           CFLAGS="$CFLAGS" \
+           LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
+           --enable-libwebpmux \
+           --disable-shared \
+           --enable-static \
+           --disable-gl \
+           --disable-sdl \
+           --disable-png \
+           --disable-jpeg \
+           --disable-tiff \
+           --disable-gif \
+           --disable-wic \
+           --prefix="$WORK" \
+           CFLAGS="$CFLAGS -fPIC"
+       make -j$(nproc)
+       make install
+       popd
+fi
 
 # FIXME: Add libbzip2 build here
 
@@ -143,39 +148,29 @@
 # Build libtiff
 # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libtiff-4 --libs
 #  -L/work/lib -L/usr/local/lib -L/work/lib -ltiff -lwebp -lzstd -llzma -ljpeg -lz -lm -lwebp -lm -lsharpyuv -lm -lzstd -pthread -llzma -pthread -lpthread -ljpeg -lz
-#
-# FIXME: When we link with libtiff we get this error:
-# configure:23717: checking for TIFFOpen in -ltiff
-# configure:23742: clang -o conftest  -O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=address -fsanitize-address-use-after-scope -fsanitize=fuzzer-no-link -Wall  -I/work/include/libpng16 -I/work/include/freetype2 -I/work/include/libxml2 -I/work/include -I/usr/local/include -I/work/include/webp  -L/work/lib -L/usr/local/lib conftest.c -ltiff  -ltiff -lsharpyuv -lwebp -lwebpmux -lfreetype -ljpeg -lturbojpeg -lpng16 -llcms2 -lzstd -llzma -lz -lm  -lpthread >&5
-# /usr/bin/ld: /usr/bin/ld: DWARF error: invalid or unhandled FORM value: 0x25
-# /work/lib/libwebp.a(libwebpencode_la-picture_csp_enc.o): in function `ImportYUVAFromRGBA':
-# picture_csp_enc.c:(.text.ImportYUVAFromRGBA[ImportYUVAFromRGBA]+0x3e2): undefined reference to `SharpYuvInit'
-# /usr/bin/ld: picture_csp_enc.c:(.text.ImportYUVAFromRGBA[ImportYUVAFromRGBA]+0x4b4): undefined reference to `SharpYuvGetConversionMatrix'
-# /usr/bin/ld: picture_csp_enc.c:(.text.ImportYUVAFromRGBA[ImportYUVAFromRGBA]+0x4eb): undefined reference to `SharpYuvConvert'
-# clang-15: error: linker command failed with exit code 1 (use -v to see invocation)
-#
-# but nm on libsharpyuv.a shows that the functions are there!
-
-printf "=== Building ${SRC}/libtiff...\n"
-pushd "$SRC/libtiff"
-autoreconf -fiv
-#PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static'
-./configure \
-               CPPFLAGS="-I$WORK/include" \
-               CFLAGS="$CFLAGS" \
-               LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
-               --prefix="$WORK" \
-               --disable-old-jpeg \
-               --disable-shared \
-               --enable-static \
-               --enable-tools \
-               --disable-tests \
-               --disable-contrib \
-               --disable-silent-rules \
-               --disable-ld-version-script
-make -j$(nproc)
-make install
-popd
+if ${enable_tiff}
+   then
+       printf "=== Building ${SRC}/libtiff...\n"
+       pushd "$SRC/libtiff"
+       autoreconf -fiv
+       #PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static'
+       ./configure \
+           CPPFLAGS="-I$WORK/include" \
+           CFLAGS="$CFLAGS" \
+           LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
+           --prefix="$WORK" \
+           --disable-old-jpeg \
+           --disable-shared \
+           --enable-static \
+           --enable-tools \
+           --disable-tests \
+           --disable-contrib \
+           --disable-silent-rules \
+           --disable-ld-version-script
+       make -j$(nproc)
+       make install
+       popd
+fi
 
 # Build liblcms2
 # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static lcms2 --libs
@@ -185,17 +180,16 @@
 printf "=== Building ${SRC}/Little-CMS...\n"
 pushd "$SRC/Little-CMS"
 autoreconf -fiv
-#PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static'
 ./configure \
-               CPPFLAGS="-I$WORK/include" \
-               CFLAGS="$CFLAGS" \
-               LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
-               --prefix="$WORK" \
-               --disable-shared \
-               --enable-static \
-               --without-jpeg \
-               --without-tiff \
-               --without-zlib
+    CPPFLAGS="-I$WORK/include" \
+    CFLAGS="$CFLAGS" \
+    LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
+    --prefix="$WORK" \
+    --disable-shared \
+    --enable-static \
+    --without-jpeg \
+    --without-tiff \
+    --without-zlib
 make -j$(nproc)
 make install
 popd
@@ -206,15 +200,14 @@
 printf "=== Building ${SRC}/freetype...\n"
 pushd "$SRC/freetype"
 ./autogen.sh
-#PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static'
 ./configure \
-               CPPFLAGS="-I$WORK/include" \
-               CFLAGS="$CFLAGS" \
-               LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
-               --prefix="$WORK" \
-               --enable-freetype-config \
-               --disable-shared \
-               --enable-static
+    CPPFLAGS="-I$WORK/include" \
+    CFLAGS="$CFLAGS" \
+    LDFLAGS="${LDFLAGS:-} -L$WORK/lib" \
+    --prefix="$WORK" \
+    --enable-freetype-config \
+    --disable-shared \
+    --enable-static
 make -j$(nproc)
 make install
 popd
@@ -222,139 +215,153 @@
 if ${enable_heif} # Start conditional for if libheif related stuff should be included
 then
 
-# Build libx265 (a C++ library)
-# PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static x265 --libs
-#    -L/work/lib -lx265 -lc++ -lm -lrt -lm -ldl -lgcc_s -lgcc -lgcc_s -lgcc -lrt -ldl
-pushd "$SRC/x265/build/linux"
-printf "=== Building ${SRC}/libx265...\n"
-cmake -G "Unix Makefiles" \
-      -DCMAKE_C_COMPILER=$CC \
-      -DCMAKE_CXX_COMPILER=$CXX \
-      -DCMAKE_C_FLAGS="$CFLAGS" \
-      -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-      -DCMAKE_INSTALL_PREFIX="$WORK" \
-      -DENABLE_SHARED:bool=off \
-      ../../source
-make clean
-make -j$(nproc) x265-static
-make install
-popd
+    # Build libx265 (a C++ library)
+    # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static x265 --libs
+    #    -L/work/lib -lx265 -lc++ -lm -lrt -lm -ldl -lgcc_s -lgcc -lgcc_s -lgcc -lrt -ldl
+    pushd "$SRC/x265/build/linux"
+    printf "=== Building ${SRC}/libx265...\n"
+    cmake -G "Unix Makefiles" \
+          -DCMAKE_C_COMPILER=$CC \
+          -DCMAKE_CXX_COMPILER=$CXX \
+          -DCMAKE_C_FLAGS="$CFLAGS" \
+          -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+          -DCMAKE_INSTALL_PREFIX="$WORK" \
+          -DENABLE_SHARED:bool=off \
+          ../../source
+    make clean
+    make -j$(nproc) x265-static
+    make install
+    popd
 
-# Build libde265 (a C++ library)
-# PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libde265 --libs
-#    -L/work/lib -lde265 -lstdc++
-printf "=== Building ${SRC}/libde265...\n"
-pushd "$SRC/libde265"
-./autogen.sh
-PKG_CONFIG_PATH="$WORK/lib/pkgconfig" PKG_CONFIG='pkg-config --static' ./configure \
-    --prefix="$WORK" \
-    --disable-shared \
-    --enable-static \
-    --disable-dec265 \
-    --disable-sherlock265 \
-    --disable-hdrcopy \
-    --disable-enc265 \
-    --disable-acceleration_speed
-make clean
-make -j$(nproc)
-make install
-popd
+    # Build libde265 (a C++ library)
+    # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libde265 --libs
+    #    -L/work/lib -lde265 -lstdc++
+    printf "=== Building ${SRC}/libde265...\n"
+    pushd "$SRC/libde265"
+    ./autogen.sh
+    ./configure \
+        --prefix="$WORK" \
+        --disable-shared \
+        --enable-static \
+        --disable-dec265 \
+        --disable-sherlock265 \
+        --disable-hdrcopy \
+        --disable-enc265 \
+        --disable-acceleration_speed
+    make clean
+    make -j$(nproc)
+    make install
+    popd
 
-# Build libaom (a mixed C/C++ library)
-# PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static aom --libs
-#    -L/work/lib -laom -lm -lpthread
-printf "=== Building ${SRC}/aom...\n"
-rm -rf $SRC/aom/build/linux
-mkdir -p $SRC/aom/build/linux
-pushd "$SRC/aom/build/linux"
-cmake -G "Unix Makefiles" \
-      -DCMAKE_C_COMPILER=$CC \
-      -DCMAKE_CXX_COMPILER=$CXX \
-      -DCMAKE_C_FLAGS="$CFLAGS" \
-      -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-      -DCMAKE_INSTALL_PREFIX="$WORK" \
-      -DENABLE_SHARED:bool=off \
-      -DCONFIG_PIC=1 \
-      -DENABLE_EXAMPLES=0 \
-      -DENABLE_DOCS=0 \
-      -DENABLE_TESTS=0 \
-      -DCONFIG_SIZE_LIMIT=1 \
-      -DDECODE_HEIGHT_LIMIT=12288 \
-      -DDECODE_WIDTH_LIMIT=12288 \
-      -DDO_RANGE_CHECK_CLAMP=1 \
-      -DAOM_MAX_ALLOCABLE_MEMORY=536870912 \
-      -DAOM_TARGET_CPU=generic \
-  ../../
-make clean
-make -j$(nproc)
-make install
-popd
+    # Build libaom (a mixed C/C++ library)
+    # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static aom --libs
+    #    -L/work/lib -laom -lm -lpthread
+    printf "=== Building ${SRC}/aom...\n"
+    AOM_BUILD="${SRC}/aom_build"
+    rm -rf "${AOM_BUILD}"
+    mkdir -p "${AOM_BUILD}"
+    pushd "${AOM_BUILD}"
+    cmake -G "Unix Makefiles" \
+          -DCMAKE_C_COMPILER=$CC \
+          -DCMAKE_CXX_COMPILER=$CXX \
+          -DCMAKE_C_FLAGS="$CFLAGS" \
+          -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+          -DCMAKE_INSTALL_PREFIX="$WORK" \
+          -DENABLE_SHARED:bool=off \
+          -DCONFIG_PIC=1 \
+          -DENABLE_EXAMPLES=0 \
+          -DENABLE_DOCS=0 \
+          -DENABLE_TESTS=0 \
+          -DCONFIG_SIZE_LIMIT=1 \
+          -DDECODE_HEIGHT_LIMIT=12288 \
+          -DDECODE_WIDTH_LIMIT=12288 \
+          -DDO_RANGE_CHECK_CLAMP=1 \
+          -DAOM_MAX_ALLOCABLE_MEMORY=536870912 \
+          -DAOM_TARGET_CPU=generic \
+          ${SRC}/aom
+    make clean
+    make -j$(nproc)
+    make install
+    popd
 
-# Build libheif (a C++ library)
-# PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libheif --libs
-#   -L/work/lib -lheif -lc++ -lde265 -lstdc++ -lx265 -lc++ -lm -lrt -lm -ldl -lgcc_s -lgcc -lgcc_s -lgcc -lrt -ldl -laom -lm -lpthread -ljpeg
-printf "=== Building ${SRC}/libheif...\n"
-pushd "$SRC/libheif"
-#cmake . -DCMAKE_INSTALL_PREFIX=$WORK -DBUILD_SHARED_LIBS=off -DBUILD_TESTING=off -DWITH_EXAMPLES=off -DENABLE_PLUGIN_LOADING=off -DWITH_JPEG_DECODER=off -DWITH_JPEG_ENCODER=off -DCMAKE_BUILD_TYPE=Release -DX265_INCLUDE_DIR="$WORK/include" -DX265_LIBRARY="$WORK/lib"
-rm -rf build
-mkdir build
-cd build
-cmake .. --preset=fuzzing \
-      -DCMAKE_C_COMPILER=$CC \
-      -DCMAKE_CXX_COMPILER=$CXX \
-      -DCMAKE_C_FLAGS="$CFLAGS" \
-      -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-      -DCMAKE_INSTALL_PREFIX=$WORK \
-      -DFUZZING_COMPILE_OPTIONS="" \
-      -DFUZZING_LINKER_OPTIONS="$LIB_FUZZING_ENGINE" \
-      -DFUZZING_C_COMPILER=$CC -DFUZZING_CXX_COMPILER=$CXX \
-      -DWITH_DEFLATE_HEADER_COMPRESSION=OFF \
-      -DENABLE_SHARED:bool=off \
-      -DCONFIG_PIC=1
-make -j$(nproc)
-make install
-popd
+    # Build libheif (a C++ library)
+    # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libheif --libs
+    #   -L/work/lib -lheif -lc++ -lde265 -lstdc++ -lx265 -lc++ -lm -lrt -lm -ldl -lgcc_s -lgcc -lgcc_s -lgcc -lrt -ldl -laom -lm -lpthread -ljpeg
+    printf "=== Building ${SRC}/libheif...\n"
+    HEIF_BUILD="${SRC}/heif_build"
+    rm -rf "${HEIF_BUILD}"
+    mkdir -p "${HEIF_BUILD}"
+    pushd "${HEIF_BUILD}"
+    cmake --preset=fuzzing \
+          -DCMAKE_C_COMPILER=$CC \
+          -DCMAKE_CXX_COMPILER=$CXX \
+          -DCMAKE_C_FLAGS="$CFLAGS" \
+          -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+          -DCMAKE_INSTALL_PREFIX=$WORK \
+          -DFUZZING_COMPILE_OPTIONS="" \
+          -DFUZZING_LINKER_OPTIONS="$LIB_FUZZING_ENGINE" \
+          -DFUZZING_C_COMPILER=$CC -DFUZZING_CXX_COMPILER=$CXX \
+          -DWITH_DEFLATE_HEADER_COMPRESSION=OFF \
+          -DENABLE_SHARED:bool=off \
+          -DCONFIG_PIC=1 \
+          "${SRC}/libheif"
+    make -j$(nproc)
+    make install
+    popd
 
 fi # End conditional for if libheif related stuff should be included
 
-# Build libjxl
-#  PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libjxl_threads --libs
-#    -L/work/lib -ljxl_threads -lm
-#  PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libjxl --libs
-#    -L/work/lib -L -ljxl -lm -lhwy -lbrotlienc -lbrotlidec -lbrotlicommon -ljxl_cms -lm
-printf "=== Building ${SRC}/libjxl...\n"
-pushd "$SRC/libjxl"
-rm -rf build
-mkdir build
-cd build
-cmake .. \
-      -DCMAKE_INSTALL_PREFIX=$WORK \
-      -DBUILD_TESTING=off \
-      -DBUILD_SHARED_LIBS=false \
-      -DCMAKE_BUILD_TYPE=Release \
-      -DJPEGXL_ENABLE_BENCHMARK=false \
-      -DJPEGXL_ENABLE_EXAMPLES=false \
-      -DJPEGXL_ENABLE_FUZZERS=false \
-      -DJPEGXL_ENABLE_JPEGLI=false \
-      -DJPEGXL_ENABLE_MANPAGES=OFF \
-      -DJPEGXL_ENABLE_SJPEG=false \
-      -DJPEGXL_ENABLE_TOOLS=false \
-      -DJPEGXL_ENABLE_VIEWERS=false \
-      -DJPEGXL_FORCE_SYSTEM_LCMS2=true \
-      -DCMAKE_C_FLAGS="-DHWY_DISABLED_TARGETS=HWY_SSSE3 ${CFLAGS}" \
-      -DCMAKE_CXX_FLAGS="-DHWY_DISABLED_TARGETS=HWY_SSSE3 ${CXXFLAGS}"
-make -j$(nproc)
-make install
-cp third_party/brotli/*.a $WORK/lib
-cp third_party/brotli/*.pc $WORK/lib/pkgconfig
-popd
+if ${enable_jxl}
+then
+       # Build libjxl
+       #  PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libjxl_threads --libs
+       #    -L/work/lib -ljxl_threads -lm
+       #  PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static libjxl --libs
+       #    -L/work/lib -L -ljxl -lm -lhwy -lbrotlienc -lbrotlidec -lbrotlicommon -ljxl_cms -lm
+       #
+       printf "=== Building ${SRC}/libjxl...\n"
+       LIBJXL_BUILD="${SRC}/libjxl_build"
+       rm -rf "${LIBJXL_BUILD}"
+       mkdir -p "${LIBJXL_BUILD}"
+       pushd "${LIBJXL_BUILD}"
+       cmake \
+           -DCMAKE_INSTALL_PREFIX=$WORK \
+           -DBUILD_TESTING=off \
+           -DBUILD_SHARED_LIBS=false \
+           -DCMAKE_BUILD_TYPE=Release \
+           -DJPEGXL_ENABLE_BENCHMARK=false \
+           -DJPEGXL_ENABLE_EXAMPLES=false \
+           -DJPEGXL_ENABLE_FUZZERS=false \
+           -DJPEGXL_ENABLE_JPEGLI=false \
+           -DJPEGXL_ENABLE_MANPAGES=OFF \
+           -DJPEGXL_ENABLE_SJPEG=false \
+           -DJPEGXL_ENABLE_TOOLS=false \
+           -DJPEGXL_ENABLE_VIEWERS=false \
+           -DJPEGXL_FORCE_SYSTEM_LCMS2=true \
+           -DCMAKE_C_FLAGS="-DHWY_DISABLED_TARGETS=HWY_SSSE3 ${CFLAGS}" \
+           -DCMAKE_CXX_FLAGS="-DHWY_DISABLED_TARGETS=HWY_SSSE3 ${CXXFLAGS}" \
+           "${SRC}/libjxl"
+       make -j$(nproc)
+       # libjxl claims to require libjxl_cms, but does not build/install one!
+       sed -i 's/ libjxl_cms//' ./lib/libjxl.pc
+       make install
+       cp third_party/brotli/*.a $WORK/lib
+       cp third_party/brotli/*.pc $WORK/lib/pkgconfig
+       popd