X-Git-Url: https://git.draconx.ca/gitweb/liblbx.git/blobdiff_plain/a5900574a2d9257695b70ec9a065e4638162e7d6..00e318f5bb311bf787776e79d73fc05b2a616bd0:/m4/libpng.m4 diff --git a/m4/libpng.m4 b/m4/libpng.m4 index 5adeb0f..52db43e 100644 --- a/m4/libpng.m4 +++ b/m4/libpng.m4 @@ -1,102 +1,52 @@ -dnl Copyright (C) 2009 Nick Bowler +dnl Copyright (C) 2009-2010 Nick Bowler dnl Copying and distribution of this file, with or without modification, dnl are permitted in any medium without royalty provided the copyright dnl notice and this notice are preserved. This file is offered as-is, dnl without any warranty. -dnl _LIBPNG_TRY_VERSION(min-version) -AC_DEFUN([_LIBPNG_TRY_VERSION], [dnl -sedhead='s/@<:@0-9@:>@@<:@0-9@:>@*/<<<&>>>/' -sedtail='s/.*<<<\(.*\)>>>.*/\1/;t;s/.*/0/' -png_min_major=`printf '%s' '$1' | sed -e "$sedhead"1 -e "$sedtail"` -png_min_minor=`printf '%s' '$1' | sed -e "$sedhead"2 -e "$sedtail"` -png_min_release=`printf '%s' '$1' | sed -e "$sedhead"3 -e "$sedtail"` -png_min_build=`printf '%s' '$1' | sed -e "$sedhead"4 -e "$sedtail"` -png_min_status=`printf '%s' '$1' | sed ' - t; s/.*alpha.*/PNG_LIBPNG_BUILD_ALPHA/ - t; s/.*beta.*/PNG_LIBPNG_BUILD_BETA/ - t; s/.*rc.*/PNG_LIBPNG_BUILD_RC/ - t; s/.*/PNG_LIBPNG_BUILD_STABLE/ -'` - -AC_CACHE_CHECK([for libpng version at least $1], - [libpng_cv_sufficient_ver], - [AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl +dnl _DX_LIBPNG_TEST_PROGRAM(major, minor, release) +AC_DEFUN([_DX_LIBPNG_TEST_PROGRAM], [AC_LANG_PROGRAM([dnl #include -#if PNG_LIBPNG_VER_MAJOR < $png_min_major +ifelse([$1], [], [], [dnl +#if PNG_LIBPNG_VER_MAJOR < $1 # error Invalid libpng major version -#elif PNG_LIBPNG_VER_MAJOR == $png_min_major -# if PNG_LIBPNG_VER_MINOR < $png_min_minor +ifelse([$2], [], [], [dnl +#elif PNG_LIBPNG_VER_MAJOR == $1 +# if PNG_LIBPNG_VER_MINOR < $2 # error Invalid libpng minor version -# elif PNG_LIBPNG_VER_MINOR == $png_min_minor -# if PNG_LIBPNG_VER_RELEASE < $png_min_release +ifelse([$3], [], [], [dnl +# elif PNG_LIBPNG_VER_MINOR == $2 +# if PNG_LIBPNG_VER_RELEASE < $3 # error Invalid libpng release -# elif PNG_LIBPNG_VER_RELEASE == $png_min_release -# if PNG_LIBPNG_BUILD_BASE_TYPE < $png_min_status -# error Invalid libpng release status -# elif PNG_LIBPNG_BUILD_BASE_TYPE == $png_min_status -# if PNG_LIBPNG_VER_BUILD < $png_min_build -# error Invalid libpng build -# endif -# endif # endif +])dnl # endif +])dnl #endif +])dnl ], [dnl png_structp png = png_create_read_struct("", 0, 0, 0); png_infop info = png_create_info_struct(png); -])], [libpng_cv_sufficient_ver=yes], [libpng_cv_sufficient_ver=no])]) -]) - -dnl CHECK_LIBPNG([min-version], [action-if-ok], [action-if-fail]) -AC_DEFUN([CHECK_LIBPNG], -[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl -AC_ARG_VAR([LIBPNG_CFLAGS], [C compiler flags for libpng])dnl -AC_ARG_VAR([LIBPNG_LIBS], [linker flags for libpng])dnl - -if test x"$PKG_CONFIG" != x; then - AC_MSG_CHECKING([pkg-config database for libpng]) - _PKG_CONFIG([libpng_cflags], [cflags], [libpng]) - _PKG_CONFIG([libpng_libs], [libs], [libpng]) - if test x$pkg_failed = xyes; then - errors=`$PKG_CONFIG --errors-to-stdout --print-errors libpng` - echo "$errors" >&AS_MESSAGE_LOG_FD - AC_MSG_RESULT([no]) - else - if test x"$LIBPNG_CFLAGS" = x; then - LIBPNG_CFLAGS=$pkg_cv_libpng_cflags - fi - if test x"$LIBPNG_LIBS" = x; then - LIBPNG_LIBS=$pkg_cv_libpng_libs - fi - - AC_MSG_RESULT([yes]) - fi -fi - -if test x"$LIBPNG_LIBS" = x; then - LIBPNG_LIBS=-lpng -fi - -AC_LANG_PUSH([C]) -old_cflags=$CFLAGS -old_libs=$LIBS -CFLAGS="$LIBPNG_CFLAGS $CFLAGS" -LIBS="$LIBPNG_LIBS $LIBS" - -_LIBPNG_TRY_VERSION(ifelse([$1], [], [1.0], [$1])) - -CFLAGS=$old_cflags -LIBS=$old_libs -AC_LANG_POP([C]) - -if test x"$libpng_cv_sufficient_ver" = x"yes"; then - AC_SUBST([LIBPNG_CFLAGS]) - AC_SUBST([LIBPNG_LIBS]) - ifelse([$2], [], [true], [$2]) +])]) + +dnl DX_CHECK_LIBPNG([min-version], [action-if-ok], [action-if-fail]) +AC_DEFUN([DX_CHECK_LIBPNG], +[DX_PKG_CONFIG([libpng], [libpng], [libpng]) + +DX_CHECK_LIB([libpng], + [for libpng[]ifelse([$1], [], [], [ version at least $1])], + [m4_apply([_DX_LIBPNG_TEST_PROGRAM], m4_split([$1], [\.]))], [dnl + [[$LIBPNG_CFLAGS], [$LIBPNG_LIBS]], + [[$pkg_cv_libpng_cflags], [$pkg_cv_libpng_libs], + [test ! x"$pkg_failed" = x"yes"]], + [[], [-lpng]], + ]) + +if test x"$dx_cv_libpng_found" = x"yes"; then + ifelse([$2], [], [:], [$2]) else ifelse([$3], [], [AC_MSG_FAILURE([dnl -libpng version >= ifelse([$1], [], [1.0], [$1]) is required. The latest +libpng[]ifelse([$1], [], [], [ version at least $1]) is required. The latest version can be obtained from http://libpng.org/pub/png/libpng.html. If libpng is installed but was not found by this configure script,