]> granicus.if.org Git - imagemagick/commitdiff
Support the WebP Mux library
authorCristy <urban-warrior@imagemagick.org>
Sun, 19 Nov 2017 17:35:18 +0000 (12:35 -0500)
committerCristy <urban-warrior@imagemagick.org>
Sun, 19 Nov 2017 17:35:18 +0000 (12:35 -0500)
Makefile.in
coders/Makefile.am
coders/webp.c
config/config.h.in
configure
configure.ac

index b5292e987676228ccc0bae6ee4397830a4ed412a..9b8ad1f05af96c49e6abfc069469c62857175952 100644 (file)
@@ -1710,7 +1710,7 @@ coders_wbmp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
        $@
 @WITH_MODULES_TRUE@am_coders_wbmp_la_rpath = -rpath $(codersdir)
 coders_webp_la_DEPENDENCIES = $(MAGICKCORE_LIBS) $(am__DEPENDENCIES_1) \
-       $(am__DEPENDENCIES_1)
+       $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
 am_coders_webp_la_OBJECTS = coders/coders_webp_la-webp.lo
 coders_webp_la_OBJECTS = $(am_coders_webp_la_OBJECTS)
 coders_webp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
@@ -2814,6 +2814,9 @@ WARN_CFLAGS = @WARN_CFLAGS@
 WARN_CXXFLAGS = @WARN_CXXFLAGS@
 WARN_LDFLAGS = @WARN_LDFLAGS@
 WARN_SCANNERFLAGS = @WARN_SCANNERFLAGS@
+WEBPMUX_CFLAGS = @WEBPMUX_CFLAGS@
+WEBPMUX_LIBS = @WEBPMUX_LIBS@
+WEBP_CFLAGS = @WEBP_CFLAGS@
 WEBP_LIBS = @WEBP_LIBS@
 WMF_CFLAGS = @WMF_CFLAGS@
 WMF_LIBS = @WMF_LIBS@
@@ -4077,7 +4080,7 @@ coders_wbmp_la_LIBADD = $(MAGICKCORE_LIBS)
 coders_webp_la_SOURCES = coders/webp.c
 coders_webp_la_CPPFLAGS = $(MAGICK_CODER_CPPFLAGS)
 coders_webp_la_LDFLAGS = $(MODULECOMMONFLAGS)
-coders_webp_la_LIBADD = $(MAGICKCORE_LIBS) $(WEBP_LIBS) $(MATH_LIBS)
+coders_webp_la_LIBADD = $(MAGICKCORE_LIBS) $(WEBPMUX_LIBS) $(WEBP_LIBS) $(MATH_LIBS)
 
 # WMF coder module
 coders_wmf_la_SOURCES = coders/wmf.c
index 7141abe9860a5650bfbd5edf86fb8c6d19be65ec..5204bc0a8042abb0e6e9240cd8b3df22af7867b8 100644 (file)
@@ -1050,7 +1050,7 @@ coders_wbmp_la_LIBADD      = $(MAGICKCORE_LIBS)
 coders_webp_la_SOURCES     = coders/webp.c
 coders_webp_la_CPPFLAGS    = $(MAGICK_CODER_CPPFLAGS)
 coders_webp_la_LDFLAGS     = $(MODULECOMMONFLAGS)
-coders_webp_la_LIBADD      = $(MAGICKCORE_LIBS) $(WEBP_LIBS) $(MATH_LIBS)
+coders_webp_la_LIBADD      = $(MAGICKCORE_LIBS) $(WEBPMUX_LIBS) $(WEBP_LIBS) $(MATH_LIBS)
 
 # WMF coder module
 coders_wmf_la_SOURCES      = coders/wmf.c
index 05dfb28b1d625656bf496b0060535ca015bf81cc..11e2c1462e71cfbef8ead9c73d0e7ac09482718a 100644 (file)
@@ -57,6 +57,7 @@
 #include "MagickCore/memory_.h"
 #include "MagickCore/option.h"
 #include "MagickCore/pixel-accessor.h"
+#include "MagickCore/profile.h"
 #include "MagickCore/quantum-private.h"
 #include "MagickCore/static.h"
 #include "MagickCore/string_.h"
@@ -68,6 +69,9 @@
 #if defined(MAGICKCORE_WEBP_DELEGATE)
 #include <webp/decode.h>
 #include <webp/encode.h>
+#if defined(MAGICKCORE_WEBPMUX_DELEGATE)
+#include <webp/mux.h>
+#endif
 #endif
 \f
 /*
@@ -378,6 +382,59 @@ static Image *ReadWEBPImage(const ImageInfo *image_info,
       break;
   }
   WebPFreeDecBuffer(webp_image);
+#if defined(MAGICKCORE_WEBPMUX_DELEGATE)
+  {
+    StringInfo
+      *profile;
+
+    uint32_t
+      webp_flags = 0;
+
+    WebPData
+     content = { stream, length },
+     chunk ={ 0 };
+
+    WebPMux
+      *mux;
+
+    /*
+      Extract any profiles.
+    */
+    mux=WebPMuxCreate(&content,0);
+    WebPMuxGetFeatures(mux,&webp_flags);
+    if (webp_flags & ICCP_FLAG)
+      {
+        WebPMuxGetChunk(mux,"ICCP",&chunk);
+        profile=BlobToStringInfo(chunk.bytes,chunk.size);
+        if (profile != (StringInfo *) NULL)
+          {
+            SetImageProfile(image,"ICC",profile,exception);
+            profile=DestroyStringInfo(profile);
+          }
+      }
+    if (webp_flags & EXIF_FLAG)
+      {
+        WebPMuxGetChunk(mux,"EXIF",&chunk);
+        profile=BlobToStringInfo(chunk.bytes,chunk.size);
+        if (profile != (StringInfo *) NULL)
+          {
+            SetImageProfile(image,"EXIF",profile,exception);
+            profile=DestroyStringInfo(profile);
+          }
+      }
+    if (webp_flags & XMP_FLAG)
+      {
+        WebPMuxGetChunk(mux,"XMP",&chunk);
+        profile=BlobToStringInfo(chunk.bytes,chunk.size);
+        if (profile != (StringInfo *) NULL)
+          {
+            SetImageProfile(image,"XMP",profile,exception);
+            profile=DestroyStringInfo(profile);
+          }
+      }
+    WebPMuxDelete(mux);
+  }
+#endif
   stream=(unsigned char*) RelinquishMagickMemory(stream);
   (void) CloseBlob(image);
   return(image);
index 4050e6fa84edfc452ede7a760f41492ff91d98ec..b13b934d109eac0b3f7240d97214005a3d2d451a 100644 (file)
 /* Version number of package */
 #undef VERSION
 
+/* Define if you have WEBPMUX library */
+#undef WEBPMUX_DELEGATE
+
 /* Define if you have WEBP library */
 #undef WEBP_DELEGATE
 
index 01a3ebc50d5361bab0a21fe21a4e10a697f9e35d..942e18be7f5b484bf50ed64649d5acd8162dc641 100755 (executable)
--- a/configure
+++ b/configure
@@ -760,9 +760,14 @@ WMF_LIBS
 WMF_CFLAGS
 WMF_DELEGATE_FALSE
 WMF_DELEGATE_TRUE
-WEBP_LIBS
+WEBPMUX_DELEGATE_FALSE
+WEBPMUX_DELEGATE_TRUE
 WEBP_DELEGATE_FALSE
 WEBP_DELEGATE_TRUE
+WEBPMUX_LIBS
+WEBPMUX_CFLAGS
+WEBP_LIBS
+WEBP_CFLAGS
 TIFF_LIBS
 TIFF_DELEGATE_FALSE
 TIFF_DELEGATE_TRUE
@@ -1293,6 +1298,10 @@ RSVG_CFLAGS
 RSVG_LIBS
 CAIRO_SVG_CFLAGS
 CAIRO_SVG_LIBS
+WEBP_CFLAGS
+WEBP_LIBS
+WEBPMUX_CFLAGS
+WEBPMUX_LIBS
 XML_CFLAGS
 XML_LIBS'
 
@@ -2123,6 +2132,12 @@ Some influential environment variables:
               C compiler flags for CAIRO_SVG, overriding pkg-config
   CAIRO_SVG_LIBS
               linker flags for CAIRO_SVG, overriding pkg-config
+  WEBP_CFLAGS C compiler flags for WEBP, overriding pkg-config
+  WEBP_LIBS   linker flags for WEBP, overriding pkg-config
+  WEBPMUX_CFLAGS
+              C compiler flags for WEBPMUX, overriding pkg-config
+  WEBPMUX_LIBS
+              linker flags for WEBPMUX, overriding pkg-config
   XML_CFLAGS  C compiler flags for XML, overriding pkg-config
   XML_LIBS    linker flags for XML, overriding pkg-config
 
@@ -4544,7 +4559,7 @@ MAGICK_PATCHLEVEL_VERSION=12
 
 MAGICK_VERSION=7.0.7-12
 
-MAGICK_GIT_REVISION=21694:15073a984:20171119
+MAGICK_GIT_REVISION=21695:9e7b981d8:20171119
 
 
 # Substitute library versioning
@@ -34824,7 +34839,7 @@ fi
 
 
 #
-# Check for WEBP delegate library.
+# Check for the WEBP delegate library.
 #
 
 # Check whether --with-webp was given.
@@ -34840,88 +34855,176 @@ if test "$with_webp" != 'yes'; then
 fi
 
 have_webp='no'
-WEBP_LIBS=''
-if test "$with_webp" != 'no'; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: -------------------------------------------------------------" >&5
+have_webpmux='no'
+WEBP_CFLAGS=""
+WEBP_LIBS=""
+WEBP_PKG=""
+WEBPMUX_CFLAGS=""
+WEBPMUX_LIBS=""
+WEBPMUX_PKG=""
+if test "x$with_webp" = "xyes"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: -------------------------------------------------------------" >&5
 $as_echo "-------------------------------------------------------------" >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WEBP" >&5
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WEBP" >&5
 $as_echo_n "checking for WEBP... " >&6; }
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
-$as_echo "" >&6; }
-    failed=0
-    passed=0
-    ac_fn_c_check_header_mongrel "$LINENO" "webp/decode.h" "ac_cv_header_webp_decode_h" "$ac_includes_default"
-if test "x$ac_cv_header_webp_decode_h" = xyes; then :
-  passed=`expr $passed + 1`
+
+if test -n "$WEBP_CFLAGS"; then
+    pkg_cv_WEBP_CFLAGS="$WEBP_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libwebp\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libwebp") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_WEBP_CFLAGS=`$PKG_CONFIG --cflags "libwebp" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
-  failed=`expr $failed + 1`
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
+fi
+if test -n "$WEBP_LIBS"; then
+    pkg_cv_WEBP_LIBS="$WEBP_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libwebp\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libwebp") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_WEBP_LIBS=`$PKG_CONFIG --libs "libwebp" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
 fi
 
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WebPPictureInitInternal in -lwebp" >&5
-$as_echo_n "checking for WebPPictureInitInternal in -lwebp... " >&6; }
-if ${ac_cv_lib_webp_WebPPictureInitInternal+:} false; then :
-  $as_echo_n "(cached) " >&6
+
+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
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lwebp  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+               WEBP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libwebp" 2>&1`
+        else
+               WEBP_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libwebp" 2>&1`
+        fi
+       # Put the nasty error message in config.log where it belongs
+       echo "$WEBP_PKG_ERRORS" >&5
 
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char WebPPictureInitInternal ();
-int
-main ()
-{
-return WebPPictureInitInternal ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_webp_WebPPictureInitInternal=yes
+       have_webp=no
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+       have_webp=no
 else
-  ac_cv_lib_webp_WebPPictureInitInternal=no
+       WEBP_CFLAGS=$pkg_cv_WEBP_CFLAGS
+       WEBP_LIBS=$pkg_cv_WEBP_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       have_webp=yes
 fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WEBPMUX" >&5
+$as_echo_n "checking for WEBPMUX... " >&6; }
+
+if test -n "$WEBPMUX_CFLAGS"; then
+    pkg_cv_WEBPMUX_CFLAGS="$WEBPMUX_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libwebpmux\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libwebpmux") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_WEBPMUX_CFLAGS=`$PKG_CONFIG --cflags "libwebpmux" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
+else
+  pkg_failed=yes
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_webp_WebPPictureInitInternal" >&5
-$as_echo "$ac_cv_lib_webp_WebPPictureInitInternal" >&6; }
-if test "x$ac_cv_lib_webp_WebPPictureInitInternal" = xyes; then :
-  passed=`expr $passed + 1`
+ else
+    pkg_failed=untried
+fi
+if test -n "$WEBPMUX_LIBS"; then
+    pkg_cv_WEBPMUX_LIBS="$WEBPMUX_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+    if test -n "$PKG_CONFIG" && \
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libwebpmux\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "libwebpmux") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then
+  pkg_cv_WEBPMUX_LIBS=`$PKG_CONFIG --libs "libwebpmux" 2>/dev/null`
+                     test "x$?" != "x0" && pkg_failed=yes
 else
-  failed=`expr $failed + 1`
+  pkg_failed=yes
+fi
+ else
+    pkg_failed=untried
 fi
 
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if WEBP package is complete" >&5
-$as_echo_n "checking if WEBP package is complete... " >&6; }
-    if test $passed -gt 0; then
-        if test $failed -gt 0; then
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no -- some components failed test" >&5
-$as_echo "no -- some components failed test" >&6; }
-            have_webp='no (failed tests)'
-        else
-            WEBP_LIBS='-lwebp'
-            LIBS="$WEBP_LIBS $LIBS"
 
-$as_echo "#define WEBP_DELEGATE 1" >>confdefs.h
 
-            { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-            have_webp='yes'
+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
+               WEBPMUX_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libwebpmux" 2>&1`
+        else
+               WEBPMUX_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libwebpmux" 2>&1`
         fi
-    else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+       # Put the nasty error message in config.log where it belongs
+       echo "$WEBPMUX_PKG_ERRORS" >&5
+
+       have_webpmux=no
+elif test $pkg_failed = untried; then
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
-    fi
+       have_webpmux=no
+else
+       WEBPMUX_CFLAGS=$pkg_cv_WEBPMUX_CFLAGS
+       WEBPMUX_LIBS=$pkg_cv_WEBPMUX_LIBS
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+       have_webpmux=yes
 fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5
+$as_echo "" >&6; }
+fi
+
+if test "$have_webp" = 'yes'; then
+
+$as_echo "#define WEBP_DELEGATE 1" >>confdefs.h
+
+  CFLAGS="$WEBP_CFLAGS $CFLAGS"
+fi
+
+if test "$have_webpmux" = 'yes'; then
+
+$as_echo "#define WEBPMUX_DELEGATE 1" >>confdefs.h
+
+  CFLAGS="$WEBPMUX_CFLAGS $CFLAGS"
+fi
+
  if test "$have_webp" = 'yes'; then
   WEBP_DELEGATE_TRUE=
   WEBP_DELEGATE_FALSE='#'
@@ -34930,6 +35033,16 @@ else
   WEBP_DELEGATE_FALSE=
 fi
 
+ if test "$have_webpmux" = 'yes'; then
+  WEBPMUX_DELEGATE_TRUE=
+  WEBPMUX_DELEGATE_FALSE='#'
+else
+  WEBPMUX_DELEGATE_TRUE='#'
+  WEBPMUX_DELEGATE_FALSE=
+fi
+
+
+
 
 
 
@@ -38269,7 +38382,7 @@ fi
 if test "$build_modules" != 'no'; then
     MAGICK_DEP_LIBS="$USER_LIBS $LCMS_LIBS $FREETYPE_LIBS $RAQM_LIBS $LQR_LIBS $FFTW_LIBS $FLIF_LIBS $FONTCONFIG_LIBS $XEXT_LIBS $IPC_LIBS $X11_LIBS $XT_LIBS $LZMA_LIBS $BZLIB_LIBS $ZLIB_LIBS $LTDL_LIBS $GDI32_LIBS $MATH_LIBS $GOMP_LIBS $CL_LIBS $UMEM_LIBS $JEMALLOC_LIBS $THREAD_LIBS"
 else
-    MAGICK_DEP_LIBS="$USER_LIBS $JBIG_LIBS $LCMS_LIBS $TIFF_LIBS $FREETYPE_LIBS $RAQM_LIBS $JPEG_LIBS $GS_LIBS $LQR_LIBS $PNG_LIBS $AUTOTRACE_LIBS $DJVU_LIBS $FFTW_LIBS $FLIF_LIBS $FPX_LIBS $FONTCONFIG_LIBS $HEIC_LIBS $WEBP_LIBS $WMF_LIBS $DPS_LIBS $XEXT_LIBS $XT_LIBS $IPC_LIBS $X11_LIBS $LZMA_LIBS $BZLIB_LIBS $OPENEXR_LIBS $LIBOPENJP2_LIBS $PANGO_LIBS $RAW_R_LIBS $RSVG_LIBS $XML_LIBS $GVC_LIBS $HEIC_$ZLIB_LIBS $GDI32_LIBS $MATH_LIBS $GOMP_LIBS $CL_LIBS $UMEM_LIBS $JEMALLOC_LIBS $THREAD_LIBS"
+    MAGICK_DEP_LIBS="$USER_LIBS $JBIG_LIBS $LCMS_LIBS $TIFF_LIBS $FREETYPE_LIBS $RAQM_LIBS $JPEG_LIBS $GS_LIBS $LQR_LIBS $PNG_LIBS $AUTOTRACE_LIBS $DJVU_LIBS $FFTW_LIBS $FLIF_LIBS $FPX_LIBS $FONTCONFIG_LIBS $HEIC_LIBS $WEBPMUX_LIBS $WEBP_LIBS $WMF_LIBS $DPS_LIBS $XEXT_LIBS $XT_LIBS $IPC_LIBS $X11_LIBS $LZMA_LIBS $BZLIB_LIBS $OPENEXR_LIBS $LIBOPENJP2_LIBS $PANGO_LIBS $RAW_R_LIBS $RSVG_LIBS $XML_LIBS $GVC_LIBS $HEIC_$ZLIB_LIBS $GDI32_LIBS $MATH_LIBS $GOMP_LIBS $CL_LIBS $UMEM_LIBS $JEMALLOC_LIBS $THREAD_LIBS"
 fi
 
 
@@ -38664,6 +38777,10 @@ if test -z "${WEBP_DELEGATE_TRUE}" && test -z "${WEBP_DELEGATE_FALSE}"; then
   as_fn_error $? "conditional \"WEBP_DELEGATE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${WEBPMUX_DELEGATE_TRUE}" && test -z "${WEBPMUX_DELEGATE_FALSE}"; then
+  as_fn_error $? "conditional \"WEBPMUX_DELEGATE\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 if test -z "${WMF_DELEGATE_TRUE}" && test -z "${WMF_DELEGATE_FALSE}"; then
   as_fn_error $? "conditional \"WMF_DELEGATE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
index a19fadbc10d77bc6453742bbf3e30f921a0b3654..2eb25d14b1edd4402275cd853f7f69450be2682e 100644 (file)
@@ -2774,9 +2774,9 @@ fi
 dnl ===========================================================================
 
 #
-# Check for WEBP delegate library.
+# Check for the WEBP delegate library.
 #
-AC_ARG_WITH(webp,
+AC_ARG_WITH([webp],
     [AC_HELP_STRING([--without-webp],
                     [disable WEBP support])],
     [with_webp=$withval],
@@ -2787,34 +2787,36 @@ if test "$with_webp" != 'yes'; then
 fi
 
 have_webp='no'
-WEBP_LIBS=''
-if test "$with_webp" != 'no'; then
-    AC_MSG_RESULT([-------------------------------------------------------------])
-    AC_MSG_CHECKING([for WEBP])
-    AC_MSG_RESULT([])
-    failed=0
-    passed=0
-    AC_CHECK_HEADER(webp/decode.h,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
-    AC_CHECK_LIB(webp,WebPPictureInitInternal,passed=`expr $passed + 1`,failed=`expr $failed + 1`,)
-    AC_MSG_CHECKING([if WEBP package is complete])
-    if test $passed -gt 0; then
-        if test $failed -gt 0; then
-            AC_MSG_RESULT([no -- some components failed test])
-            have_webp='no (failed tests)'
-        else
-            WEBP_LIBS='-lwebp'
-            LIBS="$WEBP_LIBS $LIBS"
-            AC_DEFINE(WEBP_DELEGATE,1,Define if you have WEBP library)
-            AC_MSG_RESULT([yes])
-            have_webp='yes'
-        fi
-    else
-        AC_MSG_RESULT([no])
-    fi
+have_webpmux='no'
+WEBP_CFLAGS=""
+WEBP_LIBS=""
+WEBP_PKG=""
+WEBPMUX_CFLAGS=""
+WEBPMUX_LIBS=""
+WEBPMUX_PKG=""
+if test "x$with_webp" = "xyes"; then
+  AC_MSG_RESULT([-------------------------------------------------------------])
+  PKG_CHECK_MODULES(WEBP,[libwebp], have_webp=yes, have_webp=no)
+  PKG_CHECK_MODULES(WEBPMUX,[libwebpmux], have_webpmux=yes, have_webpmux=no)
+  AC_MSG_RESULT([])
 fi
-AM_CONDITIONAL(WEBP_DELEGATE,test "$have_webp" = 'yes')
-AC_SUBST(WEBP_LIBS)
 
+if test "$have_webp" = 'yes'; then
+  AC_DEFINE(WEBP_DELEGATE,1,Define if you have WEBP library)
+  CFLAGS="$WEBP_CFLAGS $CFLAGS"
+fi
+
+if test "$have_webpmux" = 'yes'; then
+  AC_DEFINE(WEBPMUX_DELEGATE,1,Define if you have WEBPMUX library)
+  CFLAGS="$WEBPMUX_CFLAGS $CFLAGS"
+fi
+
+AM_CONDITIONAL(WEBP_DELEGATE, test "$have_webp" = 'yes')
+AM_CONDITIONAL(WEBPMUX_DELEGATE, test "$have_webpmux" = 'yes')
+AC_SUBST(WEBPMUX_CFLAGS)
+AC_SUBST(WEBPMUX_LIBS)
+AC_SUBST(WEBP_CFLAGS)
+AC_SUBST(WEBP_LIBS)
 
 dnl ===========================================================================
 
@@ -3874,7 +3876,7 @@ fi
 if test "$build_modules" != 'no'; then
     MAGICK_DEP_LIBS="$USER_LIBS $LCMS_LIBS $FREETYPE_LIBS $RAQM_LIBS $LQR_LIBS $FFTW_LIBS $FLIF_LIBS $FONTCONFIG_LIBS $XEXT_LIBS $IPC_LIBS $X11_LIBS $XT_LIBS $LZMA_LIBS $BZLIB_LIBS $ZLIB_LIBS $LTDL_LIBS $GDI32_LIBS $MATH_LIBS $GOMP_LIBS $CL_LIBS $UMEM_LIBS $JEMALLOC_LIBS $THREAD_LIBS"
 else
-    MAGICK_DEP_LIBS="$USER_LIBS $JBIG_LIBS $LCMS_LIBS $TIFF_LIBS $FREETYPE_LIBS $RAQM_LIBS $JPEG_LIBS $GS_LIBS $LQR_LIBS $PNG_LIBS $AUTOTRACE_LIBS $DJVU_LIBS $FFTW_LIBS $FLIF_LIBS $FPX_LIBS $FONTCONFIG_LIBS $HEIC_LIBS $WEBP_LIBS $WMF_LIBS $DPS_LIBS $XEXT_LIBS $XT_LIBS $IPC_LIBS $X11_LIBS $LZMA_LIBS $BZLIB_LIBS $OPENEXR_LIBS $LIBOPENJP2_LIBS $PANGO_LIBS $RAW_R_LIBS $RSVG_LIBS $XML_LIBS $GVC_LIBS $HEIC_$ZLIB_LIBS $GDI32_LIBS $MATH_LIBS $GOMP_LIBS $CL_LIBS $UMEM_LIBS $JEMALLOC_LIBS $THREAD_LIBS"
+    MAGICK_DEP_LIBS="$USER_LIBS $JBIG_LIBS $LCMS_LIBS $TIFF_LIBS $FREETYPE_LIBS $RAQM_LIBS $JPEG_LIBS $GS_LIBS $LQR_LIBS $PNG_LIBS $AUTOTRACE_LIBS $DJVU_LIBS $FFTW_LIBS $FLIF_LIBS $FPX_LIBS $FONTCONFIG_LIBS $HEIC_LIBS $WEBPMUX_LIBS $WEBP_LIBS $WMF_LIBS $DPS_LIBS $XEXT_LIBS $XT_LIBS $IPC_LIBS $X11_LIBS $LZMA_LIBS $BZLIB_LIBS $OPENEXR_LIBS $LIBOPENJP2_LIBS $PANGO_LIBS $RAW_R_LIBS $RSVG_LIBS $XML_LIBS $GVC_LIBS $HEIC_$ZLIB_LIBS $GDI32_LIBS $MATH_LIBS $GOMP_LIBS $CL_LIBS $UMEM_LIBS $JEMALLOC_LIBS $THREAD_LIBS"
 fi
 AC_SUBST(MAGICK_DEP_LIBS)