GraphicsMagick: 2 new changesets
GraphicsMagick Commits <[email protected]> Tue, 28 Nov 2023 09:13:53 -0600
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.7196.1701184450.7794.graphicsmagick-commit@lists.sourceforge.net> |
changeset e40e1ea66c6d in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=e40e1ea66c6d summary: Hg ignore generated common.shi and PerlMagick/t/features.pl changeset 4f171c233ba4 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=4f171c233ba4 summary: configure.ac: Fix many bugs related to building library dependency list diffstat: .hgignore | 2 + ChangeLog | 9 + VisualMagick/installer/inc/version.isx | 4 +- configure | 214 +++++++++++++++++++++++++++----- configure.ac | 39 +++-- fuzzing/oss-fuzz-build.sh | 147 +++++++++++++++------- magick/version.h | 4 +- www/Changelog.html | 10 + 8 files changed, 329 insertions(+), 100 deletions(-) diffs (truncated from 798 to 500 lines): diff -r 0217b1ed1784 -r 4f171c233ba4 .hgignore --- a/.hgignore Sat Nov 25 08:37:00 2023 -0600 +++ b/.hgignore Tue Nov 28 09:13:51 2023 -0600 @@ -18,6 +18,7 @@ .*__pycache__.* ^autom4te\.cache +^common\.shi ^config/delegates\.mgk ^config/type-ghostscript\.mgk ^config/type-solaris\.mgk @@ -168,6 +169,7 @@ ^PerlMagick/t/.*_tmp\..* ^PerlMagick/blib/.* ^PerlMagick/t/.*output.* +^PerlMagick/t/features\.pl ^contrib/win32/ATL7/ImageMagickObject/ImageMagickObject\.dll ^contrib/win32/ATL7/ImageMagickObject/ImageMagickObject\.exp ^contrib/win32/ATL7/ImageMagickObject/ImageMagickObject\.h diff -r 0217b1ed1784 -r 4f171c233ba4 ChangeLog --- a/ChangeLog Sat Nov 25 08:37:00 2023 -0600 +++ b/ChangeLog Tue Nov 28 09:13:51 2023 -0600 @@ -1,3 +1,12 @@ +2023-11-28 Bob Friesenhahn <[email protected]> + + * fuzzing/oss-fuzz-build.sh: Continued work on the oss-fuzz build + script. Still not there yet, but closer. + + * configure.ac: Fix many bugs related to building library + dependency list. Much thanks to Tobias Mark for a patch to fix + the library dependency order. + 2023-11-24 Bob Friesenhahn <[email protected]> * configure.ac: Eliminate redundant check for HEIF library. diff -r 0217b1ed1784 -r 4f171c233ba4 VisualMagick/installer/inc/version.isx --- a/VisualMagick/installer/inc/version.isx Sat Nov 25 08:37:00 2023 -0600 +++ b/VisualMagick/installer/inc/version.isx Tue Nov 28 09:13:51 2023 -0600 @@ -10,5 +10,5 @@ #define public MagickPackageName "GraphicsMagick" #define public MagickPackageVersion "1.4" -#define public MagickPackageVersionAddendum ".020231124" -#define public MagickPackageReleaseDate "snapshot-20231124" +#define public MagickPackageVersionAddendum ".020231128" +#define public MagickPackageReleaseDate "snapshot-20231128" diff -r 0217b1ed1784 -r 4f171c233ba4 configure --- a/configure Sat Nov 25 08:37:00 2023 -0600 +++ b/configure Tue Nov 28 09:13:51 2023 -0600 @@ -1881,7 +1881,6 @@ --without-zstd disable Zstd support --with-libstdc=DIR use libstdc++ in DIR (for GNU C++) --with-x use the X Window System - --without-png disable PNG support Some influential environment variables: CC C compiler command @@ -22888,8 +22887,13 @@ esac done # -l + reverse_pkg_libs="" for token in $pkg_libs do + reverse_pkg_libs="$token $reverse_pkg_libs" + done + for token in $reverse_pkg_libs + do case $token in -l*) # Add token to LIBS if not already present @@ -23713,8 +23717,9 @@ LIB_MATH="-lm" fi +LIB_MATH='-lm' LIBS="$LIB_MATH $LIBS" - +#printf "LIBS=${LIBS}\n" # @@ -26567,19 +26572,11 @@ have_png='no' LIB_PNG='' -if test "$have_zlib" = 'yes' +if test "$have_zlib" = 'yes' -a "$with_png" = 'yes' then # # Check for PNG delegate library. # - -# Check whether --with-png was given. -if test "${with_png+set}" = set; then : - withval=$with_png; with_png=$withval -else - with_png='yes' -fi - OLD_CPPFLAGS=$CPPFLAGS OLD_LDFLAGS=$LDFLAGS OLD_LIBS=$LIBS @@ -27059,21 +27056,22 @@ failed=0 passed=0 + #PKG_CHECK_MODULES([JPEG], [libturbojpeg, libjpeg], [passed=`expr $passed + 1`], [failed=`expr $failed + 1`]) pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libturbojpeg, libjpeg" >&5 -$as_echo_n "checking for libturbojpeg, libjpeg... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libturbojpeg" >&5 +$as_echo_n "checking for libturbojpeg... " >&6; } if test -n "$JPEG_CFLAGS"; then pkg_cv_JPEG_CFLAGS="$JPEG_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libturbojpeg, libjpeg\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libturbojpeg, libjpeg") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_JPEG_CFLAGS=`$PKG_CONFIG --cflags "libturbojpeg, libjpeg" 2>/dev/null` + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libturbojpeg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libturbojpeg") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_JPEG_CFLAGS=`$PKG_CONFIG --cflags "libturbojpeg" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -27085,12 +27083,12 @@ pkg_cv_JPEG_LIBS="$JPEG_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libturbojpeg, libjpeg\""; } >&5 - ($PKG_CONFIG --exists --print-errors "libturbojpeg, libjpeg") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - pkg_cv_JPEG_LIBS=`$PKG_CONFIG --libs "libturbojpeg, libjpeg" 2>/dev/null` + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libturbojpeg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libturbojpeg") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_JPEG_LIBS=`$PKG_CONFIG --libs "libturbojpeg" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -27111,9 +27109,68 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - JPEG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libturbojpeg, libjpeg" 2>&1` + JPEG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libturbojpeg" 2>&1` else - JPEG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libturbojpeg, libjpeg" 2>&1` + JPEG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libturbojpeg" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$JPEG_PKG_ERRORS" >&5 + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libjpeg" >&5 +$as_echo_n "checking for libjpeg... " >&6; } + +if test -n "$JPEG_CFLAGS"; then + pkg_cv_JPEG_CFLAGS="$JPEG_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libjpeg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libjpeg") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_JPEG_CFLAGS=`$PKG_CONFIG --cflags "libjpeg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$JPEG_LIBS"; then + pkg_cv_JPEG_LIBS="$JPEG_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libjpeg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libjpeg") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_JPEG_LIBS=`$PKG_CONFIG --libs "libjpeg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + JPEG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libjpeg" 2>&1` + else + JPEG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libjpeg" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$JPEG_PKG_ERRORS" >&5 @@ -27130,6 +27187,87 @@ $as_echo "yes" >&6; } passed=`expr $passed + 1` fi +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libjpeg" >&5 +$as_echo_n "checking for libjpeg... " >&6; } + +if test -n "$JPEG_CFLAGS"; then + pkg_cv_JPEG_CFLAGS="$JPEG_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libjpeg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libjpeg") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_JPEG_CFLAGS=`$PKG_CONFIG --cflags "libjpeg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$JPEG_LIBS"; then + pkg_cv_JPEG_LIBS="$JPEG_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libjpeg\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libjpeg") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_JPEG_LIBS=`$PKG_CONFIG --libs "libjpeg" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + JPEG_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libjpeg" 2>&1` + else + JPEG_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libjpeg" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$JPEG_PKG_ERRORS" >&5 + + failed=`expr $failed + 1` +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + failed=`expr $failed + 1` +else + JPEG_CFLAGS=$pkg_cv_JPEG_CFLAGS + JPEG_LIBS=$pkg_cv_JPEG_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + passed=`expr $passed + 1` +fi +else + JPEG_CFLAGS=$pkg_cv_JPEG_CFLAGS + JPEG_LIBS=$pkg_cv_JPEG_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + passed=`expr $passed + 1` +fi #printf "JPEG_LIBS=${JPEG_LIBS}\n" #printf "JPEG_CFLAGS=${JPEG_CFLAGS}\n" if test $failed -eq 0 ; then @@ -27550,6 +27688,12 @@ # libwebpmux depends on webp # libwebp depends on libsharpyuv + # FIXME: For static build to succeed the link order needs to be + # "-lwebp -lwebpmux -lsharpyuv" but "-lsharpyuv -lwebp -lwebpmux" + # is being produced! Order is reversed! Maybe fixed now. + # WEBPMUX_LIBS=-L/work/lib -lwebpmux -lm -lwebp -lm -lsharpyuv -lm + # WEBP_LIBS=-L/work/lib -lwebp -lm -lsharpyuv -lm + # Need to add libsharp libsharpyuv.pc # libwebp, libwebpmux, libwebpdemux @@ -27644,8 +27788,8 @@ $as_echo "yes" >&6; } fi - printf "WEBPMUX_LIBS=${WEBPMUX_LIBS}\n" - printf "WEBPMUX_CFLAGS=${WEBPMUX_CFLAGS}\n" + #printf "WEBPMUX_LIBS=${WEBPMUX_LIBS}\n" + #printf "WEBPMUX_CFLAGS=${WEBPMUX_CFLAGS}\n" if test $failed -eq 0 ; then pkg_config_to_flags 'libwebpmux' "${WEBPMUX_LIBS}" "${WEBPMUX_CFLAGS}" fi @@ -27731,8 +27875,8 @@ $as_echo "yes" >&6; } passed=`expr $passed + 1` fi - printf "WEBP_LIBS=${WEBP_LIBS}\n" - printf "WEBP_CFLAGS=${WEBP_CFLAGS}\n" + #printf "WEBP_LIBS=${WEBP_LIBS}\n" + #printf "WEBP_CFLAGS=${WEBP_CFLAGS}\n" if test $failed -eq 0 ; then pkg_config_to_flags 'libwebp' "${WEBP_LIBS}" "${WEBP_CFLAGS}" fi @@ -28910,7 +29054,6 @@ OLD_LIBS=$LIBS failed=0 passed=0 - heif_libs='' heif_cflags='' # Use pkg-config to handle different optional codec libs # and if pkg-config is not available fallback to manual search. @@ -29004,7 +29147,7 @@ $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lheif $heif_libs $LIBS" +LIBS="-lheif ${HEIF_LIBS} $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -29064,8 +29207,9 @@ CPPFLAGS=$OLD_CPPFLAGS LDFLAGS=$OLD_LDFLAGS LIBS=$OLD_LIBS - else - LIB_HEIF="$heif_libs" + LIB_HEIF='' + else + LIB_HEIF="${HEIF_LIBS}" #LIBS="$LIB_HEIF $LIBS" for flag in $heif_cflags do diff -r 0217b1ed1784 -r 4f171c233ba4 configure.ac --- a/configure.ac Sat Nov 25 08:37:00 2023 -0600 +++ b/configure.ac Tue Nov 28 09:13:51 2023 -0600 @@ -1547,8 +1547,13 @@ esac done # -l + reverse_pkg_libs="" for token in $pkg_libs do + reverse_pkg_libs="$token $reverse_pkg_libs" + done + for token in $reverse_pkg_libs + do case $token in -l*) # Add token to LIBS if not already present @@ -1762,10 +1767,11 @@ # LIB_MATH='' AC_CHECK_LIB([m],[sqrt],[LIB_MATH="-lm"],,) +LIB_MATH='-lm' LIBS="$LIB_MATH $LIBS" +#printf "LIBS=${LIBS}\n" AC_SUBST([LIB_MATH]) - # # If vsnprintf is missing, look for TRIO # @@ -2341,15 +2347,11 @@ have_png='no' LIB_PNG='' -if test "$have_zlib" = 'yes' +if test "$have_zlib" = 'yes' -a "$with_png" = 'yes' then # # Check for PNG delegate library. # - AC_ARG_WITH([png], - [AS_HELP_STRING([--without-png],[disable PNG support])], - [with_png=$withval], - [with_png='yes']) OLD_CPPFLAGS=$CPPFLAGS OLD_LDFLAGS=$LDFLAGS OLD_LIBS=$LIBS @@ -2477,7 +2479,10 @@ failed=0 passed=0 - PKG_CHECK_MODULES([JPEG], [libturbojpeg, libjpeg], [passed=`expr $passed + 1`], [failed=`expr $failed + 1`]) + #PKG_CHECK_MODULES([JPEG], [libturbojpeg, libjpeg], [passed=`expr $passed + 1`], [failed=`expr $failed + 1`]) + PKG_CHECK_MODULES([JPEG], [libturbojpeg], [passed=`expr $passed + 1`], + [PKG_CHECK_MODULES([JPEG], [libjpeg], [passed=`expr $passed + 1`], + [failed=`expr $failed + 1`])]) #printf "JPEG_LIBS=${JPEG_LIBS}\n" #printf "JPEG_CFLAGS=${JPEG_CFLAGS}\n" if test $failed -eq 0 ; then @@ -2663,12 +2668,18 @@ # libwebpmux depends on webp # libwebp depends on libsharpyuv + # FIXME: For static build to succeed the link order needs to be + # "-lwebp -lwebpmux -lsharpyuv" but "-lsharpyuv -lwebp -lwebpmux" + # is being produced! Order is reversed! Maybe fixed now. + # WEBPMUX_LIBS=-L/work/lib -lwebpmux -lm -lwebp -lm -lsharpyuv -lm + # WEBP_LIBS=-L/work/lib -lwebp -lm -lsharpyuv -lm + # Need to add libsharp libsharpyuv.pc # libwebp, libwebpmux, libwebpdemux PKG_CHECK_MODULES([WEBPMUX], [libwebpmux], [], []) - printf "WEBPMUX_LIBS=${WEBPMUX_LIBS}\n" - printf "WEBPMUX_CFLAGS=${WEBPMUX_CFLAGS}\n" + #printf "WEBPMUX_LIBS=${WEBPMUX_LIBS}\n" + #printf "WEBPMUX_CFLAGS=${WEBPMUX_CFLAGS}\n" if test $failed -eq 0 ; then pkg_config_to_flags 'libwebpmux' "${WEBPMUX_LIBS}" "${WEBPMUX_CFLAGS}" fi @@ -2684,8 +2695,8 @@ # pkg-config libwebp --static --libs #-L/work/lib -lwebp -lm -lsharpyuv -lm PKG_CHECK_MODULES([WEBP], [libwebp], [passed=`expr $passed + 1`], [failed=`expr $failed + 1`]) - printf "WEBP_LIBS=${WEBP_LIBS}\n" - printf "WEBP_CFLAGS=${WEBP_CFLAGS}\n" + #printf "WEBP_LIBS=${WEBP_LIBS}\n" + #printf "WEBP_CFLAGS=${WEBP_CFLAGS}\n" if test $failed -eq 0 ; then pkg_config_to_flags 'libwebp' "${WEBP_LIBS}" "${WEBP_CFLAGS}" fi @@ -2971,7 +2982,6 @@ OLD_LIBS=$LIBS failed=0 passed=0 - heif_libs='' heif_cflags='' # Use pkg-config to handle different optional codec libs # and if pkg-config is not available fallback to manual search. @@ -2982,7 +2992,7 @@ pkg_config_to_flags 'libheif' "${HEIF_LIBS}" "${HEIF_CFLAGS}" fi AC_CHECK_HEADER([libheif/heif.h],[passed=`expr $passed + 1`],[failed=`expr $failed + 1`]) - AC_CHECK_LIB([heif],[heif_context_alloc],[passed=`expr $passed + 1`],[failed=`expr $failed + 1`],[$heif_libs]) + AC_CHECK_LIB([heif],[heif_context_alloc],[passed=`expr $passed + 1`],[failed=`expr $failed + 1`],[${HEIF_LIBS}]) AC_CHECK_FUNCS([heif_init heif_deinit]) AC_MSG_CHECKING([if HEIF package is complete]) if test $passed -gt 0 @@ -2994,8 +3004,9 @@ CPPFLAGS=$OLD_CPPFLAGS LDFLAGS=$OLD_LDFLAGS LIBS=$OLD_LIBS + LIB_HEIF='' else - LIB_HEIF="$heif_libs" + LIB_HEIF="${HEIF_LIBS}" #LIBS="$LIB_HEIF $LIBS" for flag in $heif_cflags do diff -r 0217b1ed1784 -r 4f171c233ba4 fuzzing/oss-fuzz-build.sh --- a/fuzzing/oss-fuzz-build.sh Sat Nov 25 08:37:00 2023 -0600 +++ b/fuzzing/oss-fuzz-build.sh Tue Nov 28 09:13:51 2023 -0600 @@ -3,6 +3,16 @@ # This is intended to be run from OSS-Fuzz's build environment. We intend to