1dnl $Id: pam-check.m4,v 1.6 2010-01-11 13:06:02 franklahm Exp $ 2dnl PAM finding macro 3 4AC_DEFUN([AC_PATH_PAM], [ 5 AC_ARG_WITH(pam, [ --with-pam[[=PATH]] specify path to PAM installation [[auto]]], 6 [ 7 require_pam="yes" 8 if test "x$withval" = "xno"; then 9 PAMDIR="NONE" 10 require_pam="never" 11 elif test "x$withval" = "xyes"; then 12 PAMDIR="NONE" 13 else 14 PAMDIR="$withval" 15 fi 16 ], 17 [PAMDIR="NONE";require_pam="no"] 18 ) 19 20 AC_MSG_CHECKING([for PAM installation directory]) 21 if test "$host_os" != "solaris"; then 22 if test "x$PAMDIR" = "xNONE" -a "x$require_pam" != "xnever"; then 23 dnl Test for PAM 24 pam_paths="/ /usr/ /usr/local/" 25 for path in $pam_paths; do 26 if test -d "${path}etc/pam.d"; then 27 PAMDIR="$path" 28 break 29 fi 30 done 31 fi 32 33 if test "x$PAMDIR" != "xNONE"; then 34 AC_MSG_RESULT([yes (path: ${PAMDIR}etc/pam.d)]) 35 else 36 AC_MSG_RESULT([no]) 37 fi 38 else 39 AC_MSG_RESULT([/etc/pam.conf (solaris)]) 40 fi 41 42 pam_found="no" 43 if test "x$require_pam" != "xnever"; then 44 45 savedCFLAGS="$CFLAGS" 46 savedLDFLAGS="$LDFLAGS" 47 savedLIBS="$LIBS" 48 49 if test "x$PAMDIR" != "xNONE" -a "x$PAMDIR" != "x/"; then 50 PAM_CFLAGS="-I${PAMDIR}include" 51 PAM_LDFLAGS="-L${PAMDIR}lib" 52 LDFLAGS="$LDFLAGS $PAM_LDFLAGS" 53 CFLAGS="$CFLAGS $PAM_CFLAGS" 54 fi 55 56 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h) 57 58 if test x"$ac_cv_header_security_pam_appl_h" = x"no" -a x"$ac_cv_header_pam_pam_appl_h" = x"no"; then 59 pam_found=no 60 else 61 AC_CHECK_LIB(pam, pam_set_item, [ 62 PAM_LIBS="$PAM_LDFLAGS -lpam" 63 pam_found="yes" 64 ]) 65 fi 66 CFLAGS="$savedCFLAGS" 67 LDFLAGS="$savedLDFLAGS" 68 LIBS="$savedLIBS" 69 fi 70 71 netatalk_cv_install_pam=yes 72 if test x"$pam_found" = "xyes" -a "x$PAMDIR" = "xNONE"; then 73 AC_MSG_WARN([PAM support can be compiled, but the install location for the netatalk.pamd file could not be determined. Either install this file by hand or specify the install path.]) 74 netatalk_cv_install_pam=no 75 else 76 dnl Check for some system|common auth file 77 AC_MSG_CHECKING([for includable common PAM config]) 78 pampath="${PAMDIR}etc/pam.d" 79 dnl Debian/SuSE 80 if test -f "$pampath/common-auth" ; then 81 PAM_DIRECTIVE=include 82 PAM_AUTH=common-auth 83 PAM_ACCOUNT=common-account 84 PAM_PASSWORD=common-password 85 PAM_SESSION=common-session 86 dnl RHEL/FC 87 elif test -f "$pampath/system-auth" ; then 88 PAM_DIRECTIVE=include 89 PAM_AUTH=system-auth 90 PAM_ACCOUNT=system-auth 91 PAM_PASSWORD=system-auth 92 PAM_SESSION=system-auth 93 dnl FreeBSD 94 elif test -f "$pampath/system" ; then 95 PAM_DIRECTIVE=include 96 PAM_AUTH=system 97 PAM_ACCOUNT=system 98 PAM_PASSWORD=system 99 PAM_SESSION=system 100 dnl Fallback 101 else 102 PAM_DIRECTIVE=required 103 PAM_AUTH=pam_unix.so 104 PAM_ACCOUNT=pam_unix.so 105 PAM_PASSWORD="pam_unix.so use_authtok" 106 PAM_SESSION=pam_unix.so 107 fi 108 109 if test "x$PAM_DIRECTIVE" != "xrequired" ; then 110 AC_MSG_RESULT([yes ($PAM_DIRECTIVE $PAM_AUTH)]) 111 else 112 AC_MSG_RESULT([no (using defaut pam_unix.so)]) 113 fi 114 fi 115 116 AC_MSG_CHECKING([whether to enable PAM support]) 117 if test "x$pam_found" = "xno"; then 118 netatalk_cv_install_pam=no 119 if test "x$require_pam" = "xyes"; then 120 AC_MSG_ERROR([PAM support missing]) 121 else 122 AC_MSG_RESULT([no]) 123 fi 124 ifelse([$2], , :, [$2]) 125 else 126 AC_MSG_RESULT([yes]) 127 ifelse([$1], , :, [$1]) 128 fi 129 130 LIB_REMOVE_USR_LIB(PAM_LIBS) 131 CFLAGS_REMOVE_USR_INCLUDE(PAM_CFLAGS) 132 AC_SUBST(PAMDIR) 133 AC_SUBST(PAM_CFLAGS) 134 AC_SUBST(PAM_LIBS) 135 AC_SUBST(PAM_DIRECTIVE) 136 AC_SUBST(PAM_AUTH) 137 AC_SUBST(PAM_ACCOUNT) 138 AC_SUBST(PAM_PASSWORD) 139 AC_SUBST(PAM_SESSION) 140]) 141