Add configure check for zlib with inflateInit2
and replace old unused and poorly named FIND_ZIP. The new code prefers pkgconfig and only falls back to manual detection if needed. This also prioritizes detected zlib flags and includes to be preferred over the ones that are added by pkgconfig for libpng, tifflib etc. which would otherwise have caused the system default zlib to be used.
This commit is contained in:
parent
14953c19e7
commit
5ab0001ec6
38
configure.ac
38
configure.ac
@ -626,6 +626,29 @@ if test x"$with_rsvg" != x"no"; then
|
||||
)
|
||||
fi
|
||||
|
||||
# zlib
|
||||
# some platforms, like macosx, are missing the .pc files for zlib, so
|
||||
# we fall back to FIND_ZLIB
|
||||
AC_ARG_WITH([zlib],
|
||||
AS_HELP_STRING([--without-zlib], [build without zlib (default: test)]))
|
||||
|
||||
if test x"$with_zlib" != "xno"; then
|
||||
PKG_CHECK_MODULES(ZLIB, zlib >= 0.4,
|
||||
[AC_DEFINE(HAVE_ZLIB,1,[define if you have zlib installed.])
|
||||
with_zlib=yes
|
||||
PACKAGES_USED="$PACKAGES_USED zlib"
|
||||
],
|
||||
[FIND_ZLIB(
|
||||
[with_zlib="yes (found by search)"
|
||||
],
|
||||
[AC_MSG_WARN([zlib not found; disabling SVGZ buffer support])
|
||||
with_zlib=no
|
||||
]
|
||||
)
|
||||
]
|
||||
)
|
||||
fi
|
||||
|
||||
# OpenSlide
|
||||
AC_ARG_WITH([openslide],
|
||||
AS_HELP_STRING([--without-openslide],
|
||||
@ -786,15 +809,6 @@ fi
|
||||
|
||||
AM_CONDITIONAL(ENABLE_PYVIPS8, test x"$enable_pyvips8" = x"yes")
|
||||
|
||||
# hmm, these don't have .pc files on ubuntu 5.10, how odd
|
||||
FIND_ZIP(
|
||||
[with_zip=yes
|
||||
],
|
||||
[AC_MSG_WARN([libz not found; disabling ZIP support])
|
||||
with_zip=no
|
||||
]
|
||||
)
|
||||
|
||||
# look for TIFF with pkg-config ... fall back to our tester
|
||||
# pkgconfig support for libtiff starts with libtiff-4
|
||||
AC_ARG_WITH([tiff],
|
||||
@ -943,14 +957,14 @@ fi
|
||||
# Gather all up for VIPS_CFLAGS, VIPS_INCLUDES, VIPS_LIBS
|
||||
# sort includes to get longer, more specific dirs first
|
||||
# helps, for example, selecting graphicsmagick over imagemagick
|
||||
VIPS_CFLAGS=`for i in $VIPS_CFLAGS $GTHREAD_CFLAGS $REQUIRED_CFLAGS $PANGOFT2_CFLAGS $GSF_CFLAGS $FFTW_CFLAGS $MAGICK_CFLAGS $PNG_CFLAGS $EXIF_CFLAGS $MATIO_CFLAGS $CFITSIO_CFLAGS $LIBWEBP_CFLAGS $GIFLIB_INCLUDES $RSVG_CFLAGS $POPPLER_CFLAGS $OPENEXR_CFLAGS $OPENSLIDE_CFLAGS $ORC_CFLAGS $TIFF_CFLAGS $LCMS_CFLAGS
|
||||
VIPS_CFLAGS=`for i in $VIPS_CFLAGS $GTHREAD_CFLAGS $REQUIRED_CFLAGS $ZLIB_CFLAGS $PANGOFT2_CFLAGS $GSF_CFLAGS $FFTW_CFLAGS $MAGICK_CFLAGS $PNG_CFLAGS $EXIF_CFLAGS $MATIO_CFLAGS $CFITSIO_CFLAGS $LIBWEBP_CFLAGS $GIFLIB_INCLUDES $RSVG_CFLAGS $POPPLER_CFLAGS $OPENEXR_CFLAGS $OPENSLIDE_CFLAGS $ORC_CFLAGS $TIFF_CFLAGS $LCMS_CFLAGS
|
||||
do
|
||||
echo $i
|
||||
done | sort -ru`
|
||||
VIPS_CFLAGS=`echo $VIPS_CFLAGS`
|
||||
VIPS_CFLAGS="$VIPS_DEBUG_FLAGS $VIPS_CFLAGS"
|
||||
VIPS_INCLUDES="$PNG_INCLUDES $TIFF_INCLUDES $ZIP_INCLUDES $JPEG_INCLUDES"
|
||||
VIPS_LIBS="$MAGICK_LIBS $PNG_LIBS $TIFF_LIBS $ZIP_LIBS $JPEG_LIBS $GTHREAD_LIBS $REQUIRED_LIBS $PANGOFT2_LIBS $GSF_LIBS $FFTW_LIBS $ORC_LIBS $LCMS_LIBS $GIFLIB_LIBS $RSVG_LIBS $POPPLER_LIBS $OPENEXR_LIBS $OPENSLIDE_LIBS $CFITSIO_LIBS $LIBWEBP_LIBS $MATIO_LIBS $EXIF_LIBS -lm"
|
||||
VIPS_INCLUDES="$ZLIB_INCLUDES $PNG_INCLUDES $TIFF_INCLUDES $JPEG_INCLUDES"
|
||||
VIPS_LIBS="$ZLIB_LIBS $MAGICK_LIBS $PNG_LIBS $TIFF_LIBS $JPEG_LIBS $GTHREAD_LIBS $REQUIRED_LIBS $PANGOFT2_LIBS $GSF_LIBS $FFTW_LIBS $ORC_LIBS $LCMS_LIBS $GIFLIB_LIBS $RSVG_LIBS $POPPLER_LIBS $OPENEXR_LIBS $OPENSLIDE_LIBS $CFITSIO_LIBS $LIBWEBP_LIBS $MATIO_LIBS $EXIF_LIBS -lm"
|
||||
|
||||
AC_SUBST(VIPS_LIBDIR)
|
||||
|
||||
|
@ -61,7 +61,7 @@
|
||||
#include <librsvg/librsvg-features.h>
|
||||
#endif
|
||||
|
||||
#if LIBRSVG_CHECK_FEATURE(SVGZ) && defined(HAVE_ZIP)
|
||||
#if LIBRSVG_CHECK_FEATURE(SVGZ) && defined(HAVE_ZLIB)
|
||||
#include <zlib.h>
|
||||
#endif
|
||||
|
||||
@ -377,7 +377,7 @@ typedef VipsForeignLoadSvgClass VipsForeignLoadSvgBufferClass;
|
||||
G_DEFINE_TYPE( VipsForeignLoadSvgBuffer, vips_foreign_load_svg_buffer,
|
||||
vips_foreign_load_svg_get_type() );
|
||||
|
||||
#if LIBRSVG_CHECK_FEATURE(SVGZ) && defined(HAVE_ZIP)
|
||||
#if LIBRSVG_CHECK_FEATURE(SVGZ) && defined(HAVE_ZLIB)
|
||||
static void *
|
||||
vips_zalloc( void *opaque, unsigned items, unsigned size )
|
||||
{
|
||||
@ -398,7 +398,7 @@ vips_foreign_load_svg_is_a_buffer( const void *buf, size_t len )
|
||||
|
||||
int i;
|
||||
|
||||
#if LIBRSVG_CHECK_FEATURE(SVGZ) && defined(HAVE_ZIP)
|
||||
#if LIBRSVG_CHECK_FEATURE(SVGZ) && defined(HAVE_ZLIB)
|
||||
/* Check for SVGZ gzip signature and inflate.
|
||||
* Minimum gzip size is 18 bytes, starting with 1F 8B.
|
||||
*/
|
||||
|
117
m4/zip.m4
117
m4/zip.m4
@ -1,117 +0,0 @@
|
||||
dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding
|
||||
dnl
|
||||
dnl FIND_ZIP[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]
|
||||
dnl ------------------------------------------------
|
||||
dnl
|
||||
dnl Find ZIP libraries and headers
|
||||
dnl
|
||||
dnl Put includes stuff in ZIP_INCLUDES
|
||||
dnl Put link stuff in ZIP_LIBS
|
||||
dnl Define HAVE_ZIP if found
|
||||
dnl
|
||||
AC_DEFUN([FIND_ZIP], [
|
||||
AC_REQUIRE([AC_PATH_XTRA])
|
||||
|
||||
ZIP_INCLUDES=""
|
||||
ZIP_LIBS=""
|
||||
|
||||
AC_ARG_WITH(zip,
|
||||
AS_HELP_STRING([--without-zip], [build without libx (default: test)]))
|
||||
# Treat --without-zip like --without-zip-includes --without-zip-libraries.
|
||||
if test "$with_zip" = "no"; then
|
||||
ZIP_INCLUDES=no
|
||||
ZIP_LIBS=no
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(zip-includes,
|
||||
AS_HELP_STRING([--with-zip-includes=DIR], [libz includes are in DIR]),
|
||||
ZIP_INCLUDES="-I$withval")
|
||||
AC_ARG_WITH(zip-libraries,
|
||||
AS_HELP_STRING([--with-zip-libraries=DIR], [libz libraries are in DIR]),
|
||||
ZIP_LIBS="-L$withval -lz")
|
||||
|
||||
AC_MSG_CHECKING(for ZIP)
|
||||
|
||||
# Look for zlib.h
|
||||
if test "$ZIP_INCLUDES" = ""; then
|
||||
# Check the standard search path
|
||||
AC_TRY_COMPILE([#include <zlib.h>],[int a;],[
|
||||
ZIP_INCLUDES=""
|
||||
], [
|
||||
# zlib.h is not in the standard search path, try
|
||||
# $prefix
|
||||
zip_save_INCLUDES="$INCLUDES"
|
||||
|
||||
INCLUDES="-I${prefix}/include $INCLUDES"
|
||||
|
||||
AC_TRY_COMPILE([#include <zlib.h>],[int a;],[
|
||||
ZIP_INCLUDES="-I${prefix}/include"
|
||||
], [
|
||||
ZIP_INCLUDES="no"
|
||||
])
|
||||
|
||||
INCLUDES=$zip_save_INCLUDES
|
||||
])
|
||||
fi
|
||||
|
||||
# Now for the libraries
|
||||
if test "$ZIP_LIBS" = ""; then
|
||||
zip_save_LIBS="$LIBS"
|
||||
zip_save_INCLUDES="$INCLUDES"
|
||||
|
||||
LIBS="-lz $LIBS"
|
||||
INCLUDES="$ZIP_INCLUDES $INCLUDES"
|
||||
|
||||
# Try the standard search path first
|
||||
AC_TRY_LINK([#include <zlib.h>],[zlibVersion()], [
|
||||
ZIP_LIBS="-lz"
|
||||
], [
|
||||
# libz is not in the standard search path, try $prefix
|
||||
|
||||
LIBS="-L${prefix}/lib $LIBS"
|
||||
|
||||
AC_TRY_LINK([#include <zlib.h>],[zlibVersion()], [
|
||||
ZIP_LIBS="-L${prefix}/lib -lz"
|
||||
], [
|
||||
ZIP_LIBS=no
|
||||
])
|
||||
])
|
||||
|
||||
LIBS="$zip_save_LIBS"
|
||||
INCLUDES="$zip_save_INCLUDES"
|
||||
fi
|
||||
|
||||
AC_SUBST(ZIP_LIBS)
|
||||
AC_SUBST(ZIP_INCLUDES)
|
||||
|
||||
# Print a helpful message
|
||||
zip_libraries_result="$ZIP_LIBS"
|
||||
zip_includes_result="$ZIP_INCLUDES"
|
||||
|
||||
if test x"$zip_libraries_result" = x""; then
|
||||
zip_libraries_result="in default path"
|
||||
fi
|
||||
if test x"$zip_includes_result" = x""; then
|
||||
zip_includes_result="in default path"
|
||||
fi
|
||||
|
||||
if test "$zip_libraries_result" = "no"; then
|
||||
zip_libraries_result="(none)"
|
||||
fi
|
||||
if test "$zip_includes_result" = "no"; then
|
||||
zip_includes_result="(none)"
|
||||
fi
|
||||
|
||||
AC_MSG_RESULT([libraries $zip_libraries_result, headers $zip_includes_result])
|
||||
|
||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
||||
if test "$ZIP_INCLUDES" != "no" && test "$ZIP_LIBS" != "no"; then
|
||||
AC_DEFINE(HAVE_ZIP,1,[Define if you have libz libraries and header files.])
|
||||
$1
|
||||
else
|
||||
ZIP_LIBS=""
|
||||
ZIP_INCLUDES=""
|
||||
$2
|
||||
fi
|
||||
|
||||
])dnl
|
124
m4/zlib.m4
Normal file
124
m4/zlib.m4
Normal file
@ -0,0 +1,124 @@
|
||||
dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding
|
||||
dnl
|
||||
dnl FIND_ZLIB[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]
|
||||
dnl ------------------------------------------------
|
||||
dnl
|
||||
dnl Find zlib libraries and headers ... useful for platforms which are missing
|
||||
dnl the zlib .pc file
|
||||
dnl
|
||||
dnl Put compile stuff in ZLIB_INCLUDES
|
||||
dnl Put link stuff in ZLIB_LIBS
|
||||
dnl Define HAVE_ZLIB if found
|
||||
dnl
|
||||
AC_DEFUN([FIND_ZLIB], [
|
||||
AC_REQUIRE([AC_PATH_XTRA])
|
||||
|
||||
ZLIB_INCLUDES=""
|
||||
ZLIB_LIBS=""
|
||||
|
||||
AC_ARG_WITH(zlib,
|
||||
AS_HELP_STRING([--without-zlib], [build without zlib (default: test)]))
|
||||
# Treat --without-zlib like --without-zlib-includes --without-zlib-libraries.
|
||||
if test "$with_zlib" = "no"; then
|
||||
ZLIB_INCLUDES=no
|
||||
ZLIB_LIBS=no
|
||||
fi
|
||||
|
||||
AC_ARG_WITH(zlib-includes,
|
||||
AS_HELP_STRING([--with-zlib-includes=DIR], [libz includes are in DIR]),
|
||||
ZLIB_INCLUDES="-I$withval")
|
||||
AC_ARG_WITH(zlib-libraries,
|
||||
AS_HELP_STRING([--with-zlib-libraries=DIR], [libz libraries are in DIR]),
|
||||
ZLIB_LIBS="-L$withval -lz")
|
||||
|
||||
AC_MSG_CHECKING(for ZLIB)
|
||||
|
||||
# Look for zlib.h
|
||||
if test "$ZLIB_INCLUDES" = ""; then
|
||||
# Check the standard search path
|
||||
AC_TRY_COMPILE([#include <stdio.h>
|
||||
#include <zlib.h>],[int a;],[
|
||||
ZLIB_INCLUDES=""
|
||||
], [
|
||||
# zlib.h is not in the standard search path, try
|
||||
# $prefix
|
||||
zlib_save_INCLUDES="$INCLUDES"
|
||||
|
||||
INCLUDES="-I${prefix}/include $INCLUDES"
|
||||
|
||||
AC_TRY_COMPILE([#include <stdio.h>
|
||||
#include <zlib.h>],[int a;],[
|
||||
ZLIB_INCLUDES="-I${prefix}/include"
|
||||
], [
|
||||
ZLIB_INCLUDES="no"
|
||||
])
|
||||
|
||||
INCLUDES=$zlib_save_INCLUDES
|
||||
])
|
||||
fi
|
||||
|
||||
# Now for the libraries
|
||||
if test "$ZLIB_LIBS" = ""; then
|
||||
zlib_save_LIBS="$LIBS"
|
||||
zlib_save_INCLUDES="$INCLUDES"
|
||||
|
||||
LIBS="-lz $LIBS"
|
||||
INCLUDES="$ZLIB_INCLUDES $INCLUDES"
|
||||
|
||||
# Try the standard search path first
|
||||
AC_TRY_LINK([#include <stdio.h>
|
||||
#include <zlib.h>
|
||||
],[z_stream zs;inflateInit2(&zs, 15 | 32)], [
|
||||
ZLIB_LIBS="-lz"
|
||||
], [
|
||||
# libz is not in the standard search path, try $prefix
|
||||
|
||||
LIBS="-L${prefix}/lib $LIBS"
|
||||
|
||||
AC_TRY_LINK([#include <stdio.h>
|
||||
#include <zlib.h>
|
||||
],[z_stream zs;inflateInit2(&zs, 15 | 32)], [
|
||||
ZLIB_LIBS="-L${prefix}/lib -lz"
|
||||
], [
|
||||
ZLIB_LIBS=no
|
||||
])
|
||||
])
|
||||
|
||||
LIBS="$zlib_save_LIBS"
|
||||
INCLUDES="$zlib_save_INCLUDES"
|
||||
fi
|
||||
|
||||
AC_SUBST(ZLIB_LIBS)
|
||||
AC_SUBST(ZLIB_INCLUDES)
|
||||
|
||||
# Print a helpful message
|
||||
zlib_libraries_result="$ZLIB_LIBS"
|
||||
zlib_includes_result="$ZLIB_INCLUDES"
|
||||
|
||||
if test x"$zlib_libraries_result" = x""; then
|
||||
zlib_libraries_result="in default path"
|
||||
fi
|
||||
if test x"$zlib_includes_result" = x""; then
|
||||
zlib_includes_result="in default path"
|
||||
fi
|
||||
|
||||
if test "$zlib_libraries_result" = "no"; then
|
||||
zlib_libraries_result="(none)"
|
||||
fi
|
||||
if test "$zlib_includes_result" = "no"; then
|
||||
zlib_includes_result="(none)"
|
||||
fi
|
||||
|
||||
AC_MSG_RESULT([libraries $zlib_libraries_result, headers $zlib_includes_result])
|
||||
|
||||
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
|
||||
if test "$ZLIB_INCLUDES" != "no" && test "$ZLIB_LIBS" != "no"; then
|
||||
AC_DEFINE(HAVE_ZLIB,1,[Define if you have zlib libraries and header files.])
|
||||
$1
|
||||
else
|
||||
ZLIB_INCLUDES=""
|
||||
ZLIB_LIBS=""
|
||||
$2
|
||||
fi
|
||||
|
||||
])dnl
|
Loading…
Reference in New Issue
Block a user