GraphicsMagick: fuzzing/oss-fuzz-build.sh: Add openh264 and open...

GraphicsMagick Commits <[email protected]> Fri, 29 Nov 2024 16:45:08 -0600
Newsgroups gmane.comp.video.graphicsmagick.cvs
Message-ID <mailman.38378.1732920327.7833.graphicsmagick-commit@lists.sourceforge.net>
changeset 244419ca420f in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=244419ca420f
summary: fuzzing/oss-fuzz-build.sh: Add openh264 and openjpeg for use by libheif

diffstat:

 ChangeLog                 |    3 +
 fuzzing/oss-fuzz-build.sh |  133 +++++++++++++++++++++++++++++++--------------
 www/ChangeLog.html        |    2 +
 3 files changed, 95 insertions(+), 43 deletions(-)

diffs (236 lines):

diff -r 0d7e54df9d4e -r 244419ca420f ChangeLog
--- a/ChangeLog	Fri Nov 29 09:21:03 2024 -0600
+++ b/ChangeLog	Fri Nov 29 16:44:42 2024 -0600
@@ -1,5 +1,8 @@
 2024-11-29  Bob Friesenhahn  <[email protected]>
 
+	* fuzzing/oss-fuzz-build.sh: Add openh264 and openjpeg for use by
+	libheif.
+
 	* magick/static.c (StaticModules): Skip registration of CMYK
 	static module, which is not not useful for oss-fuzz build when
 	FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is defined.  CMYK, RGB,
diff -r 0d7e54df9d4e -r 244419ca420f fuzzing/oss-fuzz-build.sh
--- a/fuzzing/oss-fuzz-build.sh	Fri Nov 29 09:21:03 2024 -0600
+++ b/fuzzing/oss-fuzz-build.sh	Fri Nov 29 16:44:42 2024 -0600
@@ -56,6 +56,9 @@
 enable_jpeg=true
 enable_jxl=true
 enable_lcms=true
+enable_libzip=true
+enable_openh264=true
+enable_openjpeg=true
 enable_png=true
 enable_tiff=true
 enable_webp=true
@@ -63,7 +66,6 @@
 enable_xml=false
 enable_xz=true
 enable_zstd=true
-enable_libzip=true
 
 export PKG_CONFIG_PATH="$WORK/lib/pkgconfig"
 export PKG_CONFIG='pkg-config --static'
@@ -207,7 +209,6 @@
     pushd "$SRC/libjpeg-turbo"
     CFLAGS="$CFLAGS -fPIC" cmake . \
           -DCMAKE_BUILD_TYPE=Debug \
-          -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
           -DCMAKE_C_FLAGS="$CFLAGS -fPIC" \
           -DCMAKE_INSTALL_PREFIX="$WORK" \
           -DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \
@@ -258,8 +259,6 @@
     pushd "${BZIP2_BUILD}"
     cmake -G "Unix Makefiles" \
           -DCMAKE_BUILD_TYPE=Debug \
-          -DCMAKE_CXX_COMPILER=$CXX \
-          -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
           -DCMAKE_C_COMPILER=$CC \
           -DCMAKE_C_FLAGS="$CFLAGS -fPIC" \
           -DCMAKE_INSTALL_PREFIX="$WORK" \
@@ -292,6 +291,30 @@
 
 # FXIME: Add libdeflate, and libdeflate build here
 
+# Build OpenJPEG
+if $enable_openjpeg
+then
+    printf "=== Building ${SRC}/openjpeg...\n"
+    OPENJPEG_BUILD="${SRC}/openjpeg_build"
+    rm -rf "${OPENJPEG_BUILD}"
+    mkdir -p "${OPENJPEG_BUILD}"
+    pushd "${OPENJPEG_BUILD}"
+    cmake -G "Unix Makefiles" \
+          -DCMAKE_BUILD_TYPE=Debug \
+          -DCMAKE_C_COMPILER=$CC \
+          -DCMAKE_C_FLAGS="$CFLAGS -fPIC" \
+          -DCMAKE_INSTALL_PREFIX="$WORK" \
+          -DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \
+          -DBUILD_CODEC=OFF \
+          -DBUILD_SHARED_LIBS=OFF \
+          -DBUILD_STATIC_LIBS=ON \
+          ${SRC}/openjpeg
+    make clean
+    make -j$(nproc)
+    make install
+    popd
+fi
+
 # 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
@@ -373,7 +396,7 @@
     #    -L/work/lib -L -ljxl -lm -lhwy -lbrotlienc -lbrotlidec -lbrotlicommon -ljxl_cms -lm
     #
     # Removed -DJPEGXL_FORCE_SYSTEM_LCMS2=true
-    # Added -DJPEGXL_ENABLE_SKCMS=true, -DJPEGXL_BUNDLE_SKCMS=true
+    # Added -DJPEGXL_ENABLE_SKCMS=true
     printf "=== Building ${SRC}/libjxl...\n"
     LIBJXL_BUILD="${SRC}/libjxl_build"
     rm -rf "${LIBJXL_BUILD}"
@@ -387,7 +410,6 @@
         -DCMAKE_C_FLAGS="-DHWY_DISABLED_TARGETS=HWY_SSSE3 ${CFLAGS} -fPIC" \
         -DCMAKE_INSTALL_PREFIX=$WORK \
         -DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \
-        -DJPEGXL_BUNDLE_SKCMS=false \
         -DJPEGXL_ENABLE_BENCHMARK=false \
         -DJPEGXL_ENABLE_EXAMPLES=false \
         -DJPEGXL_ENABLE_FUZZERS=false \
@@ -413,41 +435,6 @@
     popd
 fi
 
-if $enable_jasper
-then
-    printf "=== Building ${SRC}/jasper...\n"
-    # With all extras removed from libjasper
-    # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static jasper --libs
-    # -L/work/lib -ljasper
-
-    JASPER_BUILD="${SRC}/jasper_build"
-    rm -rf "${JASPER_BUILD}"
-    mkdir -p "${JASPER_BUILD}"
-    pushd "${JASPER_BUILD}"
-    cmake -G "Unix Makefiles" -H"$SRC/jasper" \
-      -DCMAKE_BUILD_TYPE=Debug \
-      -DCMAKE_CXX_COMPILER=$CXX \
-      -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-      -DCMAKE_C_COMPILER=$CC \
-      -DCMAKE_C_FLAGS="$CFLAGS -fPIC" \
-      -DCMAKE_INSTALL_PREFIX=$WORK \
-      -DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \
-      -DJAS_ENABLE_LIBHEIF=false \
-      -DJAS_ENABLE_LIBJPEG=false \
-      -DJAS_ENABLE_OPENGL=false \
-      -DJAS_ENABLE_OPENGL=false \
-      -DJAS_ENABLE_SHARED=false \
-      -DJAS_INCLUDE_BMP_CODEC=false \
-      -DJAS_INCLUDE_JPG_CODEC=false \
-      -DJAS_INCLUDE_MIF_CODEC=false \
-      -DJAS_INCLUDE_PNM_CODEC=false \
-      -DJAS_INCLUDE_RAS_CODEC=false \
-      "$SRC/jasper"
-    make -j$(nproc)
-    make install
-    popd
-fi
-
 if $enable_heif
 then
 
@@ -533,6 +520,29 @@
        fi
     fi
 
+    # Build openh264
+    openh264="$SRC/openh264"
+    if $enable_openh264
+    then
+        if [ -d "${openh264}" ]
+        then
+            printf "=== Building ${openh264}...\n"
+            pushd "${openh264}"
+            # Build using 'make', which is a GNU Makefile
+            if [[ $CXXFLAGS = *sanitize=memory* ]]; then
+                ASM_BUILD=No
+            else
+                ASM_BUILD=Yes
+            fi
+            make -j$(nproc) ARCH=$ARCHITECTURE USE_ASM=$ASM_BUILD BUILDTYPE=Debug clean
+            make -j$(nproc) ARCH=$ARCHITECTURE USE_ASM=$ASM_BUILD BUILDTYPE=Debug libopenh264.a
+            make -j$(nproc) ARCH=$ARCHITECTURE USE_ASM=$ASM_BUILD BUILDTYPE=Debug PREFIX="$WORK" install-static
+            popd
+        else
+            printf "=== Skipping missing ${openh264}! ===\n"
+       fi
+    fi
+
     # 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
@@ -609,14 +619,51 @@
         -DENABLE_PLUGIN_LOADING=off \
         -DENABLE_MULTITHREADING_SUPPORT=on \
         -DWITH_EXAMPLES=off \
-        -DWITH_JPEG_DECODER=off \
-        -DWITH_JPEG_ENCODER=off \
+        -DWITH_JPEG_DECODER=on \
+        -DWITH_JPEG_ENCODER=on \
+        -DWITH_OpenJPEG_ENCODER=on \
+        -DWITH_OpenJPEG_DECODER=on \
         "${SRC}/libheif"
     make -j$(nproc)
     make install
     popd
 fi
 
+if $enable_jasper
+then
+    printf "=== Building ${SRC}/jasper...\n"
+    # With all extras removed from libjasper
+    # PKG_CONFIG_PATH=/work/lib/pkgconfig:/usr/lib/pkgconfig pkg-config --static jasper --libs
+    # -L/work/lib -ljasper
+
+    JASPER_BUILD="${SRC}/jasper_build"
+    rm -rf "${JASPER_BUILD}"
+    mkdir -p "${JASPER_BUILD}"
+    pushd "${JASPER_BUILD}"
+    cmake -G "Unix Makefiles" -H"$SRC/jasper" \
+      -DCMAKE_BUILD_TYPE=Debug \
+      -DCMAKE_CXX_COMPILER=$CXX \
+      -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+      -DCMAKE_C_COMPILER=$CC \
+      -DCMAKE_C_FLAGS="$CFLAGS -fPIC" \
+      -DCMAKE_INSTALL_PREFIX=$WORK \
+      -DCMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \
+      -DJAS_ENABLE_LIBHEIF=false \
+      -DJAS_ENABLE_LIBJPEG=false \
+      -DJAS_ENABLE_OPENGL=false \
+      -DJAS_ENABLE_OPENGL=false \
+      -DJAS_ENABLE_SHARED=false \
+      -DJAS_INCLUDE_BMP_CODEC=false \
+      -DJAS_INCLUDE_JPG_CODEC=false \
+      -DJAS_INCLUDE_MIF_CODEC=false \
+      -DJAS_INCLUDE_PNM_CODEC=false \
+      -DJAS_INCLUDE_RAS_CODEC=false \
+      "$SRC/jasper"
+    make -j$(nproc)
+    make install
+    popd
+fi
+
 # Libzip also wants Nettle, GnuTLS, MbedTLS, or OpenSSL (checked in
 # that order).  Each of these is quite an onerous dependency!
 # Hopefully not required in order to work. Libzip's own oss-fuzz build
diff -r 0d7e54df9d4e -r 244419ca420f www/ChangeLog.html
--- a/www/ChangeLog.html	Fri Nov 29 09:21:03 2024 -0600
+++ b/www/ChangeLog.html	Fri Nov 29 16:44:42 2024 -0600
@@ -41,6 +41,8 @@
 <p>2024-11-29  Bob Friesenhahn  &lt;<a class="reference external" href="mailto:bfriesen&#37;&#52;&#48;simple&#46;dallas&#46;tx&#46;us">bfriesen<span>&#64;</span>simple<span>&#46;</span>dallas<span>&#46;</span>tx<span>&#46;</span>us</a>&gt;</p>
 <blockquote>
 <ul class="simple">
+<li><p>fuzzing/oss-fuzz-build.sh: Add openh264 and openjpeg for use by
+libheif.</p></li>
 <li><p>magick/static.c (StaticModules): Skip registration of CMYK
 static module, which is not not useful for oss-fuzz build when
 FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION is defined.  CMYK, RGB,