libvips/m4/png.m4

118 lines
2.7 KiB
Plaintext

dnl From FIND_MOTIF and ACX_PTHREAD, without much understanding
dnl
dnl FIND_PNG[ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]
dnl ------------------------------------------------
dnl
dnl Find PNG libraries and headers
dnl
dnl Put compile stuff in PNG_INCLUDES
dnl Put link stuff in PNG_LIBS
dnl Define HAVE_PNG if found.
dnl
AC_DEFUN([FIND_PNG], [
AC_REQUIRE([AC_PATH_XTRA])
PNG_INCLUDES=""
PNG_LIBS=""
AC_ARG_WITH(png,
AS_HELP_STRING([--without-png], [build without libpng (default: test)]))
# Treat --without-png like --without-png-includes --without-png-libraries.
if test "$with_png" = "no"; then
PNG_INCLUDES=no
PNG_LIBS=no
fi
AC_ARG_WITH(png-includes,
AS_HELP_STRING([--with-png-includes=DIR], [libpng includes are in DIR]),
PNG_INCLUDES="-I$withval")
AC_ARG_WITH(png-libraries,
AS_HELP_STRING([--with-png-libraries=DIR], [libpng libraries are in DIR]),
PNG_LIBS="-L$withval -lpng")
AC_MSG_CHECKING(for libpng)
# Look for png.h
if test "$PNG_INCLUDES" = ""; then
# Check the standard search path
AC_TRY_COMPILE([#include <png.h>],[int a;],[
PNG_INCLUDES=""
], [
# png.h is not in the standard search path, try
# $prefix
png_save_CFLAGS="$CFLAGS"
CFLAGS="-I${prefix}/include $CFLAGS"
AC_TRY_COMPILE([#include <png.h>],[int a;],[
PNG_INCLUDES="-I${prefix}/include"
], [
PNG_INCLUDES="no"
])
CFLAGS=$png_save_CFLAGS
])
fi
# Now for the libraries
if test "$PNG_LIBS" = ""; then
png_save_LIBS="$LIBS"
png_save_CFLAGS="$CFLAGS"
LIBS="-lpng $LIBS"
CFLAGS="$PNG_INCLUDES $CFLAGS"
# Try the standard search path first
AC_TRY_LINK([#include <png.h>],[png_access_version_number()], [
PNG_LIBS="-lpng"
], [
# libpng is not in the standard search path, try $prefix
LIBS="-L${prefix}/lib $LIBS"
AC_TRY_LINK([#include <png.h>],[png_access_version_number()], [
PNG_LIBS="-L${prefix}/lib -lpng"
], [
PNG_LIBS=no
])
])
LIBS="$png_save_LIBS"
CFLAGS="$png_save_CFLAGS"
fi
AC_SUBST(PNG_LIBS)
AC_SUBST(PNG_INCLUDES)
# Print a helpful message
png_libraries_result="$PNG_LIBS"
png_includes_result="$PNG_INCLUDES"
if test x"$png_libraries_result" = x""; then
png_libraries_result="in default path"
fi
if test x"$png_includes_result" = x""; then
png_includes_result="in default path"
fi
if test "$png_libraries_result" = "no"; then
png_libraries_result="(none)"
fi
if test "$png_includes_result" = "no"; then
png_includes_result="(none)"
fi
AC_MSG_RESULT([libraries $png_libraries_result, headers $png_includes_result])
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
if test "$PNG_INCLUDES" != "no" && test "$PNG_LIBS" != "no"; then
AC_DEFINE(HAVE_PNG,1,[Define if you have png libraries and header files.])
$1
else
PNG_INCLUDES=""
PNG_LIBS=""
$2
fi
])dnl