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 <<a class="reference external" href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span>@</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></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,