dnl Requires the `AC_ARG_WITHX' macros from with.m4
dnl
dnl AC_CHECK_LIBOPTIONS(SHORTNAME, NAME, HEADERS, FUNCTION)
dnl SHORTNAME=name used for sh variables and such
dnl NAME="official" name of the library, used for -l
dnl
AC_DEFUN(AC_CHECK_LIBOPTIONS, [
  define([LIB], translit($1,[a-z-],[A-Z_]))
  define([NAME], translit($1,[A-Z],[a-z]))
AC_ARG_WITHX(NAME[-headers], [location of the $1 headers],
  [case "$withval" in
    yes) AC_MSG_WARN([no value specified for [--with-]NAME[-headers]] ;;
    no)  NAME[_headers]= ;;
    *)   NAME[_headers]=$withval ;;
  esac], ,[=DIR])
AC_ARG_WITHX(NAME[-library], [location of the $1 library],
  [case "$withval" in
    yes) AC_MSG_WARN([no value specified for [--with-]NAME[-library]] ;;
    no)  NAME[_library]= ;;
    *)   NAME[_library]=$withval ;;
  esac], ,[=DIR])
  AC_SUBST(LIB[_CFLAGS])
  AC_SUBST(LIB[_LDFLAGS])
  AC_SUBST(LIB[_LIBS])
  LIB[_CFLAGS]=
  LIB[_LDFLAGS]=
  [have_]NAME[_headers]=no
  [have_]NAME[_library]=no
[#] Check for $2 headers
  AC_MSG_CHECKING([for $2 headers])
  OCF=$CFLAGS;
  TMPCFLAGS=
  [#] If we were given PATH/lib, try PATH/include
  if test -z "[$]NAME[_headers]"; then
    test -n "[$]NAME[_library]" && NAME[_headers]=[$]NAME[_library]/../include
  fi
  test -n "[$]NAME[_headers]" && TMPCFLAGS="-I[$]NAME[_headers]"
  CFLAGS="$OCF $TMPCFLAGS"
  AC_TRY_COMPILE([$3], [$4],
    [[have_]NAME[_headers]=yes; LIB[_CFLAGS]=$TMPCFLAGS],
    [if test -n "[$]NAME[_headers]"; then
      TMPCFLAGS="-I[$]NAME[_headers]/.."
      CFLAGS="$OCF $TMPCFLAGS"
      AC_TRY_COMPILE([$3], [$4],
        [[have_]NAME[_headers]=yes; LIB[_CFLAGS]=$TMPCFLAGS],
        [[have_]NAME[_headers]=no; LIB[_CFLAGS]=])
    fi])
  AC_MSG_RESULT([$have_]NAME[_headers])
[#] Check for the $2 library
  AC_MSG_CHECKING([for the $2 library])
  OLD=$LDFLAGS; OLI=$LIBS
  TMPLDFLAGS=
  [#] If we were given PATH/include, try PATH/lib
  if test -z "[$]NAME[_library]"; then
    test -n "[$]NAME[_headers]" && NAME[_library]=[$]NAME[_headers]/../lib
  fi
  test -n "[$]NAME[_library]" && TMPLDFLAGS="-L[$]NAME[_library]"
  LDFLAGS="$OLD $TMPLDFLAGS"
  LIBS="$LIBS -l$2"
  AC_TRY_LINK([$3], [$4],
    [[have_]NAME[_library]=yes; LIB[_LDFLAGS]=$TMPLDFLAGS],
    [[have_]NAME[_library]=no; LIB[_LDFLAGS]=])
  AC_MSG_RESULT([$have_]NAME[_library])
  if test "[$have_]NAME[_headers]" = yes -a "[$have_]NAME[_library]" = yes; then
    LIB[_LIBS]="-l$2"
  fi
undefine([LIB])
  TMPCFLAGS=
  TMPLDFLAGS=
[#] Restore things
  CFLAGS=$OCF
  LDFLAGS=$OLD
  LIBS=$OLI
])
AC_DEFUN(AC_SAVE_FLAGS, [
ac_mdvi_CFLAGS="$CFLAGS"
ac_mdvi_LDFLAGS="$LDFLAGS"
ac_mdvi_LIBS="$LIBS"
])
AC_DEFUN(AC_RESTORE_FLAGS, [
CFLAGS="$ac_mdvi_CFLAGS"
LDFLAGS="$ac_mdvi_LDFLAGS"
LIBS="$ac_mdvi_LIBS"
])
AC_DEFUN(AC_CHANGE_FLAGS, [
AC_SAVE_FLAGS
ifelse([$1], , ,CFLAGS="$CFLAGS $1")
ifelse([$2], , ,LDFLAGS="$LDFLAGS $2")
ifelse([$3], , ,LIBS="$3 $LIBS")
])