3 AC_DEFUN([AC_NETATALK_PATH_PAM], [
5 AC_ARG_WITH(pam, [ --with-pam[[=PATH]] specify path to PAM installation [[auto]]],
8 if test "x$withval" = "xno"; then
11 elif test "x$withval" = "xyes"; then
17 [PAMDIR="NONE";require_pam="no"]
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
24 pam_paths="/ /usr/ /usr/local/"
25 for path in $pam_paths; do
26 if test -d "${path}etc/pam.d"; then
33 if test "x$PAMDIR" != "xNONE"; then
34 AC_MSG_RESULT([yes (path: ${PAMDIR}etc/pam.d)])
39 AC_MSG_RESULT([/etc/pam.conf (solaris)])
43 if test "x$require_pam" != "xnever"; then
46 savedLDFLAGS="$LDFLAGS"
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"
56 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
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
61 AC_CHECK_LIB(pam, pam_set_item, [
62 PAM_LIBS="$PAM_LDFLAGS -lpam"
67 LDFLAGS="$savedLDFLAGS"
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
76 dnl Check for some system|common auth file
77 AC_MSG_CHECKING([for includable common PAM config])
78 pampath="${PAMDIR}etc/pam.d"
80 if test -f "$pampath/common-auth" ; then
83 PAM_ACCOUNT=common-account
84 PAM_PASSWORD=common-password
85 PAM_SESSION=common-session
87 elif test -f "$pampath/system-auth" ; then
90 PAM_ACCOUNT=system-auth
91 PAM_PASSWORD=system-auth
92 PAM_SESSION=system-auth
94 elif test -f "$pampath/system" ; then
101 elif test -f "$pampath/other" ; then
102 PAM_DIRECTIVE=include
103 PAM_AUTH=${PAMDIR}etc/pam.d/other
104 PAM_ACCOUNT=${PAMDIR}etc/pam.d/other
105 PAM_PASSWORD=${PAMDIR}etc/pam.d/other
106 PAM_SESSION=${PAMDIR}etc/pam.d/other
109 PAM_DIRECTIVE=required
111 PAM_ACCOUNT=pam_unix.so
112 PAM_PASSWORD="pam_unix.so use_authtok"
113 PAM_SESSION=pam_unix.so
116 if test "x$PAM_DIRECTIVE" != "xrequired" ; then
117 AC_MSG_RESULT([yes ($PAM_DIRECTIVE $PAM_AUTH)])
119 AC_MSG_RESULT([no (using defaut pam_unix.so)])
123 AC_MSG_CHECKING([whether to enable PAM support])
124 if test "x$pam_found" = "xno"; then
125 netatalk_cv_install_pam=no
126 if test "x$require_pam" = "xyes"; then
127 AC_MSG_ERROR([PAM support missing])
131 ifelse([$2], , :, [$2])
134 ifelse([$1], , :, [$1])
137 netatalk_cv_use_pam=yes
138 AC_DEFINE(USE_PAM, 1, [Define to enable PAM support])
143 [AS_HELP_STRING([--with-pam-confdir=PATH],[Path to PAM config dir (default: ${sysconfdir}/pam.d)])],
144 ac_cv_pamdir=$withval,
145 ac_cv_pamdir='${sysconfdir}/pam.d'
148 PAMDIR="$ac_cv_pamdir"
150 LIB_REMOVE_USR_LIB(PAM_LIBS)
151 CFLAGS_REMOVE_USR_INCLUDE(PAM_CFLAGS)
155 AC_SUBST(PAM_DIRECTIVE)
157 AC_SUBST(PAM_ACCOUNT)
158 AC_SUBST(PAM_PASSWORD)
159 AC_SUBST(PAM_SESSION)