dnl AC_WITH_PAM([ACTION-IF-FOUND[,ACTION-IF-NOT-FOUND]])
dnl Output:
dnl AC_SUBST: @PAM_LDFLAGS@ @PAM_INCLUDES@
dnl AM_CONDITIONAL: HAVE_PAM
AC_DEFUN(AC_WITH_PAM,[
 PAMLOCATIONS="/lib,/usr,/usr/local,/opt/pam"
 HAVE_PAM="no"
 PAM_LDFLAGS=""
 PAM_INCLUDES=""
 AC_ARG_WITH(pam,
  AC_HELP_STRING([--with-pam],[enable use of PAM]),
  [
   if test "$withval" = "no" ; then
    PAMLOCATIONS=""
   else
    test "$withval" = "yes" || PAMLOCATIONS="$withval,${PAMLOCATIONS}"
   fi
  ]
 )
 if test -z "${PAMLOCATIONS}" ; then
  ifelse([$2], , :, [$2])
 else
  AC_MSG_CHECKING([for pam library])
  for p in `eval "echo {${PAMLOCATIONS}}{/lib,/lib64}"` ; do
   if test -r "${p}/libpam.a" -o -r "${p}/libpam.so" ; then
    PAM_LDFLAGS="-L${p}"
    AC_MSG_RESULT([found in ${p}])
    break
   fi
  done
  if test -z "${PAM_LDFLAGS}" ; then
   AC_MSG_RESULT([not found])
   ifelse([$2], , :, [$2])
  else
   AC_MSG_CHECKING([for pam headers])
   for p in `eval "echo {${PAMLOCATIONS}}{/include,/include/pam,,/pam}"` ; do
    if test -r "${p}/security/pam_appl.h" ; then
     PAM_INCLUDES="-I${p}"
     AC_MSG_RESULT([found in ${p}])
     break
    fi
   done
   if test -z "${PAM_INCLUDES}" ; then
    AC_MSG_RESULT([not found])
    ifelse([$2], , :, [$2])
   else
    AC_LANG_PUSH(C)
     AC_MSG_CHECKING([if pam test program compiles])
     xLIBS="${LIBS}"
     xCPPFLAGS="${CPPFLAGS}"
     CPPFLAGS="${CPPFLAGS} ${PAM_INCLUDES}"
     LIBS="${LIBS} ${PAM_LDFLAGS} -lpam"
     AC_LINK_IFELSE(
      AC_LANG_SOURCE([
       #include <security/pam_appl.h>
       main(int argc,char **argv) {
       }
      ]),[
       AC_MSG_RESULT([yes])
       HAVE_PAM="yes"
      ],[
       AC_MSG_RESULT([no])
      ]
     )
     CPPFLAGS="${xCPPFLAGS}"
     LIBS="${xLIBS}"
    AC_LANG_POP(C)
    if test "${HAVE_PAM}" = "yes" ; then
     AC_SUBST(PAM_INCLUDES)
     AC_SUBST(PAM_LDFLAGS)
     ifelse([$1], , :, [$1])
    fi
   fi
  fi
 fi
 AM_CONDITIONAL(HAVE_PAM,[test "${HAVE_PAM}" = "yes"])
])


syntax highlighted by Code2HTML, v. 0.9.1