1dnl 2dnl PAM stuff for CUPS. 3dnl 4dnl Copyright © 2020-2024 by OpenPrinting. 5dnl Copyright © 2007-2017 by Apple Inc. 6dnl Copyright © 1997-2005 by Easy Software Products, all rights reserved. 7dnl 8dnl Licensed under Apache License v2.0. See the file "LICENSE" for more 9dnl information. 10dnl 11 12AC_ARG_ENABLE([pam], AS_HELP_STRING([--disable-pam], [disable PAM support])) 13AC_ARG_WITH([pam_module], AS_HELP_STRING([--with-pam-module], [set the PAM module to use])) 14 15PAMDIR="" 16PAMFILE="pam.std" 17PAMLIBS="" 18PAMMOD="pam_unknown.so" 19PAMMODAUTH="pam_unknown.so" 20 21AS_IF([test x$enable_pam != xno], [ 22 SAVELIBS="$LIBS" 23 24 AC_CHECK_LIB([dl], [dlopen]) 25 AC_CHECK_LIB([pam], [pam_start]) 26 AC_CHECK_LIB([pam], [pam_set_item], [ 27 AC_DEFINE([HAVE_PAM_SET_ITEM], [1], [Have pam_set_item function?]) 28 ]) 29 AC_CHECK_LIB([pam], [pam_setcred], [ 30 AC_DEFINE([HAVE_PAM_SETCRED], [1], [Have pam_setcred function?]) 31 ]) 32 AC_CHECK_HEADER([security/pam_appl.h]) 33 AS_IF([test x$ac_cv_header_security_pam_appl_h != xyes], [ 34 AC_CHECK_HEADER([pam/pam_appl.h], [ 35 AC_DEFINE([HAVE_PAM_PAM_APPL_H], [1], [Have <pam/pam_appl.h> header?]) 36 ]) 37 ]) 38 39 AS_IF([test x$ac_cv_lib_pam_pam_start != xno], [ 40 # Set the necessary libraries for PAM... 41 AS_IF([test x$ac_cv_lib_dl_dlopen != xno], [ 42 PAMLIBS="-lpam -ldl" 43 ], [ 44 PAMLIBS="-lpam" 45 ]) 46 47 # Find the PAM configuration directory, if any... 48 for dir in /private/etc/pam.d /etc/pam.d; do 49 AS_IF([test -d $dir], [ 50 PAMDIR="$dir" 51 break; 52 ]) 53 done 54 ]) 55 56 LIBS="$SAVELIBS" 57 58 AS_CASE(["$host_os_name"], [darwin*], [ 59 # Darwin/macOS 60 AS_IF([test "x$with_pam_module" != x], [ 61 PAMFILE="pam.$with_pam_module" 62 ], [test -f /usr/lib/pam/pam_opendirectory.so.2], [ 63 PAMFILE="pam.opendirectory" 64 ], [ 65 PAMFILE="pam.securityserver" 66 ]) 67 ], [*], [ 68 # All others; this test might need to be updated 69 # as Linux distributors move things around... 70 AS_IF([test "x$with_pam_module" != x], [ 71 PAMMOD="pam_${with_pam_module}.so" 72 ], [test -f /etc/pam.d/common-auth], [ 73 PAMFILE="pam.common" 74 ], [test -f /etc/pam.d/password-auth], [ 75 PAMFILE="pam.password" 76 ], [test -f /etc/pam.d/system-auth], [ 77 PAMFILE="pam.system" 78 ], [ 79 moddir="" 80 for dir in /lib/security /lib64/security /lib/x86_64-linux-gnu/security /var/lib/pam; do 81 AS_IF([test -d $dir], [ 82 moddir="$dir" 83 break; 84 ]) 85 done 86 87 AS_IF([test -f $moddir/pam_unix2.so], [ 88 PAMMOD="pam_unix2.so" 89 ], [test -f $moddir/pam_unix.so], [ 90 PAMMOD="pam_unix.so" 91 ]) 92 ]) 93 94 AS_IF([test "x$PAMMOD" = xpam_unix.so], [ 95 PAMMODAUTH="$PAMMOD shadow nodelay" 96 ], [ 97 PAMMODAUTH="$PAMMOD nodelay" 98 ]) 99 ]) 100]) 101 102AC_SUBST([PAMDIR]) 103AC_SUBST([PAMFILE]) 104AC_SUBST([PAMLIBS]) 105AC_SUBST([PAMMOD]) 106AC_SUBST([PAMMODAUTH]) 107