]> granicus.if.org Git - linux-pam/blobdiff - configure.in
Relevant BUGIDs:
[linux-pam] / configure.in
index 0b0b18f28b19248a6f152bd8dd22d81afd9d560f..76fac05f483eba2c693472e5d06152d48df35987 100644 (file)
@@ -1,14 +1,15 @@
 dnl Process this file with autoconf to produce a configure script.
-AC_INIT(conf/pam_conv1/pam_conv.y)
-AM_INIT_AUTOMAKE("Linux-PAM", 0.99.2.1)
-AM_CONFIG_HEADER(config.h)
+AC_INIT
+AC_CONFIG_SRCDIR([conf/pam_conv1/pam_conv_y.y])
+AM_INIT_AUTOMAKE("Linux-PAM", 1.1.2)
+AC_PREREQ(2.61)
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_MACRO_DIR([m4])
 AC_CANONICAL_HOST
 
 AC_SUBST(PACKAGE)
 AC_SUBST(VERSION)
 
-ALL_LINGUAS="cs de es fi fr hu it ja nb pa pl pt_BR pt zh_CN zh_TW"
-
 dnl
 dnl By default, everything under PAM is installed below /usr.
 dnl
@@ -25,7 +26,12 @@ dnl If we use /usr as prefix, use /etc for config files
         fi
        if test ${libdir} = '${exec_prefix}/lib'
        then
-               libdir="/lib"
+               case "`uname -m`" in
+                   x86_64|ppc64|s390x|sparc64)
+                       libdir="/lib64" ;;
+                   *)
+                       libdir="/lib" ;;
+               esac
        fi
        if test ${sbindir} = '${exec_prefix}/sbin'
         then
@@ -41,32 +47,50 @@ dnl Add security to include directory
        then
                includedir="${prefix}/include/security"
        fi
+
+dnl Add /var directory
+        if test ${localstatedir} = '${prefix}/var'
+        then
+                localstatedir="/var"
+        fi
+
 fi
 
+dnl
+dnl check if we should link everything static into libpam
+dnl
+AC_ARG_ENABLE(static-modules,AS_HELP_STRING([--enable-static-modules],
+       [do not make the modules dynamically loadable]),
+       STATIC_MODULES=$enableval,STATIC_MODULES=no)
+if test "$STATIC_MODULES" != "no" ; then
+        CFLAGS="$CFLAGS -DPAM_STATIC"
+       AC_ENABLE_STATIC([yes])
+       AC_ENABLE_SHARED([no])
+else
+# per default don't build static libraries
+       AC_ENABLE_STATIC([no])
+       AC_ENABLE_SHARED([yes])
+fi
+AM_CONDITIONAL([STATIC_MODULES], [test "$STATIC_MODULES" != "no"])
 
 dnl Checks for programs.
-AC_GNU_SOURCE
+AC_USE_SYSTEM_EXTENSIONS
 AC_PROG_CC
 AC_PROG_YACC
 AM_PROG_LEX
 AC_PROG_INSTALL
 AC_PROG_LN_S
 AC_PROG_MAKE_SET
-# per default don't build static libraries
-AC_DISABLE_STATIC
 AC_PROG_LIBTOOL
+AM_PROG_CC_C_O
+PAM_LD_AS_NEEDED
+PAM_LD_O1
 
-if test "$enable_static" = yes; then
-   CFLAGS="$CFLAGS -DPAM_STATIC"
-fi
-if test "$enable_shared" = yes; then
-   CFLAGS="$CFLAGS -DPAM_DYNAMIC"
-fi
-
-# Largefile support
+dnl Largefile support
 AC_SYS_LARGEFILE
 
-if eval "test x$GCC = xyes"; then
+dnl icc claims to be GCC compatible, but use other flags for warnings
+if eval "test x$GCC = xyes -a $CC != icc"; then
   for flag in \
       -W \
       -Wall \
@@ -85,12 +109,59 @@ if eval "test x$GCC = xyes"; then
     JAPHAR_GREP_CFLAGS($flag, [ CFLAGS="$CFLAGS $flag" ])
   done
 fi
+dnl icc has special warning flags
+if eval "test x$CC = xicc"; then
+  for flag in \
+      -Wall \
+      -Wmissing-prototypes \
+      -Wpointer-arith \
+      -Wreturn-type \
+      -Wstrict-prototypes \
+      -Wwrite-strings \
+      -Wshadow \
+      -Wp64 \
+      -Wdeprecated \
+      -Wuninitialized \
+      -Wmain
+  do
+    JAPHAR_GREP_CFLAGS($flag, [ CFLAGS="$CFLAGS $flag" ])
+  done
+fi
+
+if test "x${CC_FOR_BUILD+set}" != "xset" ; then
+  if test "x$cross_compiling" = "xyes" ; then
+    AC_CHECK_PROGS(CC_FOR_BUILD, gcc cc)
+  else
+    CC_FOR_BUILD=${CC}
+  fi
+fi
+AC_MSG_CHECKING([for CC_FOR_BUILD])
+AC_MSG_RESULT([$CC_FOR_BUILD])
+AC_SUBST(CC_FOR_BUILD)
+
+if test "x${BUILD_CFLAGS+set}" != "xset" ; then
+  if test "x$cross_compiling" = "xyes" ; then
+    BUILD_CFLAGS=
+  else
+    BUILD_CFLAGS=${CFLAGS}
+  fi
+fi
+AC_SUBST(BUILD_CFLAGS)
+
+if test "x${BUILD_LDFLAGS+set}" != "xset" ; then
+  if test "x$cross_compiling" = "xyes" ; then
+    BUILD_LDFLAGS=
+  else
+    BUILD_LDFLAGS=${LDFLAGS}
+  fi
+fi
+AC_SUBST(BUILD_LDFLAGS)
 
 AC_C___ATTRIBUTE__
 
 dnl
 dnl Check if --version-script is supported by ld
-dnl 
+dnl
 AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
 [cat > conftest.s <<EOF
 ${libc_cv_dot_text}
@@ -119,7 +190,7 @@ VERS_2 {
         global: sym;
 } VERS_1;
 EOF
-  if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; 
+  if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD;
 then
     if AC_TRY_COMMAND([${CC-cc} $CFLAGS $LDFLAGS -shared
                                 -o conftest.so conftest.o
@@ -144,8 +215,10 @@ AM_CONDITIONAL([HAVE_VERSIONING],
 dnl
 dnl check for -fPIE/-pie support
 dnl
+dnl icc handles -fpie as -fp without error, so blacklist icc
+dnl
 AC_ARG_ENABLE(pie,AS_HELP_STRING([--disable-pie],
-                        [Disable position-independent executeables (PIE)]),
+                        [disable position-independent executeables (PIE)]),
         USE_PIE=$enableval, USE_PIE=yes)
 
 AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
@@ -153,7 +226,7 @@ AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
 int foo;
 main () { return 0;}
 EOF
-  if test "$USE_PIE" = "yes" &&
+  if test "$USE_PIE" = "yes" -a "$CC" != "icc" &&
         AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fpie
                               -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
   then
@@ -175,44 +248,32 @@ dnl
 dnl options and defaults
 dnl
 
-AM_PATH_LIBPRELUDE([0.9.0])
-if test "$LIBPRELUDE_CONFIG" != "no" ; then
-  LIBPRELUDE_CFLAGS="$LIBPRELUDE_CFLAGS -DPRELUDE=1"
+AC_ARG_ENABLE([prelude],
+       AS_HELP_STRING([--disable-prelude],[do not use prelude]),
+       WITH_PRELUDE=$enableval, WITH_PRELUDE=yes)
+if test "$WITH_PRELUDE" == "yes" ; then
+  AM_PATH_LIBPRELUDE([0.9.0])
+  if test "$LIBPRELUDE_CONFIG" != "no" ; then
+    LIBPRELUDE_CFLAGS="$LIBPRELUDE_CFLAGS -DPRELUDE=1"
+  fi
 fi
 
 dnl lots of debugging information goes to /var/run/pam-debug.log
 AC_ARG_ENABLE([debug],
-    AC_HELP_STRING([--enable-debug],
-       [specify you are building with debugging on]),
-       WITH_DEBUG=yes ; AC_DEFINE([DEBUG],,
-               [lots of stuff gets written to /var/run/pam-debug.log]),
-               WITH_DEBUG=no)
-AC_SUBST(WITH_DEBUG)
-
-AC_ARG_ENABLE([memory-debug],
-    AC_HELP_STRING([--enable-memory-debug],[specify you want every malloc etc. call tracked]),
-    WITH_MEMORY_DEBUG=$enableval, WITH_MEMORY_DEBUG=no)
-if test "$WITH_MEMORY_DEBUG" != "no" ; then
-    AC_DEFINE([MEMORY_DEBUG], 1, [Every malloc etc. call will be tracked])
+    AS_HELP_STRING([--enable-debug],[specify you are building with debugging on]))
+
+if test x"$enable_debug" = x"yes" ; then
+   AC_DEFINE([PAM_DEBUG],,
+               [lots of stuff gets written to /var/run/pam-debug.log])
 fi
-AH_VERBATIM([_MEMORY_DEBUG],
-[#ifdef MEMORY_DEBUG
-/*
- * this is basically a hack - we need to include a semiarbitrary
- * number of headers to ensure that we don't get silly prototype/macro
- */
-# include <string.h>
-# include <stdlib.h>
-# include <security/pam_malloc.h>
-#endif /* MEMORY_DEBUG */])
 
 AC_ARG_ENABLE(securedir,
-[  --enable-securedir=<path to location of PAMs> [default \$libdir/security]],
+       AS_HELP_STRING([--enable-securedir=DIR],[path to location of PAMs @<:@default=$libdir/security@:>@]),
        SECUREDIR=$enableval, SECUREDIR=$libdir/security)
 AC_SUBST(SECUREDIR)
 
 AC_ARG_ENABLE([isadir],
-       AC_HELP_STRING([--enable-isadir=DIR],[path to arch-specific module files [default ../../`basename $libdir`/security]]),
+       AS_HELP_STRING([--enable-isadir=DIR],[path to arch-specific module files @<:@default=../../(basename of $libdir)/security@:>@]),
 ISA=$enableval,
 ISA=../../`basename $libdir`/security)
 unset mylibdirbase
@@ -220,31 +281,28 @@ AC_DEFINE_UNQUOTED(_PAM_ISA,"$ISA",[Define to the path, relative to SECUREDIR, w
 AC_MSG_RESULT([Defining \$ISA to "$ISA"])
 
 AC_ARG_ENABLE(sconfigdir,
-[  --enable-sconfigdir=<path to module conf files> [default \$sysconfdir/security]],
+       AS_HELP_STRING([--enable-sconfigdir=DIR],[path to module conf files @<:@default=$sysconfdir/security@:>@]),
        SCONFIGDIR=$enableval, SCONFIGDIR=$sysconfdir/security)
 AC_SUBST(SCONFIGDIR)
 
-AC_ARG_ENABLE(docdir,
-[  --enable-docdir=<path to store documentation in - /usr/share/doc/pam>],
-       DOCDIR=$enableval, DOCDIR=/usr/share/doc/pam)
-AC_SUBST(DOCDIR)
-
-
 AC_ARG_ENABLE(pamlocking,
-[  --enable-pamlocking      configure libpam to observe a global authentication lock],
-       WITH_PAMLOCKING=yes ; AC_DEFINE([PAM_LOCKING],,
-               [libpam should observe a global authentication lock]),
-               WITH_PAMLOCKING=no)
-AC_SUBST(WITH_PAMLOCKING)
+       AS_HELP_STRING([--enable-pamlocking],[configure libpam to observe a global authentication lock]))
+
+if test x"$enable_pamlocking" = "xyes"; then
+   AC_DEFINE([PAM_LOCKING],,
+       [libpam should observe a global authentication lock])
+fi
 
 AC_ARG_ENABLE(read-both-confs,
-[  --enable-read-both-confs  read both /etc/pam.d and /etc/pam.conf files],
-       AC_DEFINE([PAM_READ_BOTH_CONFS],,
-               [read both /etc/pam.d and /etc/pam.conf files]))
-AC_SUBST(PAM_READ_BOTH_CONFS)
+       AS_HELP_STRING([--enable-read-both-confs],[read both /etc/pam.d and /etc/pam.conf files]))
+
+if test x"$enable_read_both_confs" = "xyes"; then
+   AC_DEFINE([PAM_READ_BOTH_CONFS],,
+               [read both /etc/pam.d and /etc/pam.conf files])
+fi
 
 AC_ARG_ENABLE([lckpwdf],
-       AC_HELP_STRING([--disable-lckpwdf],[do not use the lckpwdf function]),
+       AS_HELP_STRING([--disable-lckpwdf],[do not use the lckpwdf function]),
        WITH_LCKPWDF=$enableval, WITH_LCKPWDF=yes)
 if test "$WITH_LCKPWDF" == "yes" ; then
     AC_DEFINE([USE_LCKPWDF], 1,
@@ -259,7 +317,7 @@ with_mailspool=${withval})
 if test x$with_mailspool != x ; then
        pam_mail_spool="\"$with_mailspool\""
 else
-       AC_TRY_RUN([
+       AC_RUN_IFELSE([AC_LANG_SOURCE([[
 #include <paths.h>
 int main() {
 #ifdef _PATH_MAILDIR
@@ -267,9 +325,7 @@ exit(0);
 #else
 exit(1);
 #endif
-}], pam_mail_spool="_PATH_MAILDIR",
-pam_mail_spool="\"/var/spool/mail\"",
-pam_mail_spool="\"/var/spool/mail\"")
+}]])],[pam_mail_spool="_PATH_MAILDIR"],[pam_mail_spool="\"/var/spool/mail\""],[pam_mail_spool="\"/var/spool/mail\""])
 fi
 AC_DEFINE_UNQUOTED(PAM_PATH_MAILDIR, $pam_mail_spool,
        [Path where mails are stored])
@@ -295,82 +351,125 @@ dnl Checks for the existence of libdl - on BSD and Tru64 its part of libc
 AC_CHECK_LIB([dl], [dlopen], LIBDL="-ldl", LIBDL="")
 AC_SUBST(LIBDL)
 
-BACKUP_LIBS=$LIBS
-AC_SEARCH_LIBS([FascistCheck],[crack], LIBCRACK="-l$ac_lib", LIBCRACK="")
-LIBS=$BACKUP_LIBS
+# Check for cracklib
+AC_ARG_ENABLE([cracklib],
+        AS_HELP_STRING([--disable-cracklib],[do not use cracklib]),
+        WITH_CRACKLIB=$enableval, WITH_CRACKLIB=yes)
+if test x"$WITH_CRACKLIB" != xno ; then
+        AC_CHECK_HEADERS([crack.h],
+              AC_CHECK_LIB([crack], [FascistCheck], LIBCRACK="-lcrack", LIBCRACK=""))
+else
+       LIBCRACK=""
+fi
 AC_SUBST(LIBCRACK)
 AM_CONDITIONAL([HAVE_LIBCRACK], [test ! -z "$LIBCRACK"])
 
 dnl Look for Linux Auditing library - see documentation
-AC_CHECK_HEADER([libaudit.h])
-BACKUP_LIBS=$LIBS
-AC_CHECK_LIB(audit, audit_log_user_message, LIBAUDIT=-laudit, LIBAUDIT="")
-LIBS=$BACKUP_LIBS
-AC_SUBST(LIBAUDIT)
-if test ! -z "$LIBAUDIT" ; then
-    AC_DEFINE([HAVE_LIBAUDIT], 1, [Defined if audit support should be compiled in])
+AC_ARG_ENABLE([audit],
+        AS_HELP_STRING([--disable-audit],[do not enable audit support]),
+        WITH_LIBAUDIT=$enableval, WITH_LIBAUDIT=yes)
+if test x"$WITH_LIBAUDIT" != xno ; then
+        AC_CHECK_HEADER([libaudit.h],
+              [AC_CHECK_LIB(audit, audit_log_acct_message, LIBAUDIT=-laudit, LIBAUDIT="")
+              AC_CHECK_TYPE([struct audit_tty_status],
+                            [HAVE_AUDIT_TTY_STATUS=yes],
+                            [HAVE_AUDIT_TTY_STATUS=""],
+                            [#include <libaudit.h>])]
+        )
+        if test ! -z "$LIBAUDIT" -a "$ac_cv_header_libaudit_h" != "no" ; then
+            AC_DEFINE([HAVE_LIBAUDIT], 1, [Define to 1 if audit support should be compiled in.])
+        fi
+        if test ! -z "$HAVE_AUDIT_TTY_STATUS" ; then
+            AC_DEFINE([HAVE_AUDIT_TTY_STATUS], 1, [Define to 1 if struct audit_tty_status exists.])
+        fi
+else
+       LIBAUDIT=""
 fi
+AC_SUBST(LIBAUDIT)
+AM_CONDITIONAL([HAVE_AUDIT_TTY_STATUS],
+              [test "x$HAVE_AUDIT_TTY_STATUS" = xyes])
+
+AC_CHECK_HEADERS(xcrypt.h crypt.h)
+AS_IF([test "x$ac_cv_header_xcrypt_h" = "xyes"],
+  [crypt_libs="xcrypt crypt"],
+  [crypt_libs="crypt"])
 
 BACKUP_LIBS=$LIBS
-AC_SEARCH_LIBS([crypt],[xcrypt crypt], LIBCRYPT="-l$ac_lib", LIBCRYPT="")
+AC_SEARCH_LIBS([crypt],[$crypt_libs], LIBCRYPT="-l$ac_lib", LIBCRYPT="")
+AC_CHECK_FUNCS(crypt_r crypt_gensalt_r)
 LIBS=$BACKUP_LIBS
 AC_SUBST(LIBCRYPT)
+if test "$LIBCRYPT" = "-lxcrypt" -a "$ac_cv_header_xcrypt_h" = "yes" ; then
+       AC_DEFINE([HAVE_LIBXCRYPT], 1, [Define to 1 if xcrypt support should be compiled in.])
+fi
 
-dnl check for libndbm or libdb as fallback
-BACKUP_LIBS=$LIBS
-AC_CHECK_LIB([ndbm],[dbm_store], LIBDB="-lndbm", LIBDB="") 
-LIBS=$BACKUP_LIBS
-if test -z "$LIBDB" ; then
-    BACKUP_LIBS=$LIBS
-    AC_CHECK_LIB([db], [dbm_store], LIBDB="-ldb", LIBDB="")
-    LIBS=$BACKUP_LIBS
+AC_ARG_WITH([randomdev], AS_HELP_STRING([--with-randomdev=(<path>|yes|no)],[use specified random device instead of /dev/urandom or 'no' to disable]), opt_randomdev=$withval)
+if test "$opt_randomdev" = yes -o -z "$opt_randomdev"; then
+       opt_randomdev="/dev/urandom"
+elif test "$opt_randomdev" = no; then
+       opt_randomdev=
 fi
-if test -z "$LIBDB" ; then
-    BACKUP_LIBS=$LIBS
-    AC_CHECK_LIB([db], [db_create], LIBDB="-ldb", LIBDB="")
-    LIBS=$BACKUP_LIBS
+if test -n "$opt_randomdev"; then
+       AC_DEFINE_UNQUOTED(PAM_PATH_RANDOMDEV, "$opt_randomdev", [Random device path.])
+fi
+
+dnl check for libdb or libndbm as fallback. Some libndbm compat
+dnl libraries are unuseable, so try libdb first.
+AC_ARG_ENABLE([db],
+        AS_HELP_STRING([--enable-db=(db|ndbm|yes|no)],[Default behavior 'yes', which is to check for libdb first, followed by ndbm. Use 'no' to disable db support.]),
+        WITH_DB=$enableval, WITH_DB=yes)
+AC_ARG_WITH([db-uniquename],
+       AS_HELP_STRING([--with-db-uniquename=extension],[Unique name for db libraries and functions.]))
+if test x"$WITH_DB" != xno ; then
+        if test x"$WITH_DB" = xyes -o x"$WITH_DB" = xdb ; then
+              AC_CHECK_LIB([db$with_db_uniquename], [db_create$with_db_uniquename], LIBDB="-ldb$with_db_uniquename", LIBDB="")
+              if test -z "$LIBDB" ; then
+                  AC_CHECK_LIB([db$with_db_uniquename], [dbm_store$with_db_uniquename], LIBDB="-ldb$with_db_uniquename", LIBDB="")
+              fi
+        fi
+        if test -z "$LIBDB" ; then
+            AC_CHECK_LIB([ndbm],[dbm_store], LIBDB="-lndbm", LIBDB="")
+            if test ! -z "$LIBDB" ; then
+                AC_CHECK_HEADERS(ndbm.h)
+            fi
+        else
+            AC_CHECK_HEADERS(db.h)
+        fi
 fi
 AC_SUBST(LIBDB)
 AM_CONDITIONAL([HAVE_LIBDB], [test ! -z "$LIBDB"])
 
-BACKUP_LIBS=$LIBS
 AC_CHECK_LIB([nsl],[yp_get_default_domain], LIBNSL="-lnsl", LIBNSL="")
+BACKUP_LIBS=$LIBS
+LIBS="$LIBS $LIBNSL"
+AC_CHECK_FUNCS(yp_get_default_domain getdomainname innetgr yperr_string yp_master yp_bind yp_match yp_unbind)
 LIBS=$BACKUP_LIBS
 AC_SUBST(LIBNSL)
 
-BACKUP_LIBS=$LIBS
-AC_CHECK_LIB([selinux],[getfilecon], LIBSELINUX="-lselinux", LIBSELINUX="")
-LIBS=$BACKUP_LIBS
+AC_ARG_ENABLE([selinux],
+        AS_HELP_STRING([--disable-selinux],[do not use SELinux]),
+        WITH_SELINUX=$enableval, WITH_SELINUX=yes)
+if test "$WITH_SELINUX" == "yes" ; then
+  AC_CHECK_LIB([selinux],[getfilecon], LIBSELINUX="-lselinux", LIBSELINUX="")
+else
+  LIBSELINUX=""
+fi
 AC_SUBST(LIBSELINUX)
 AM_CONDITIONAL([HAVE_LIBSELINUX], [test ! -z "$LIBSELINUX"])
-
-dnl Checks for Libcap
-BACKUP_LIBS=$LIBS
-AC_CHECK_LIB([cap], [cap_get_proc], LIBCAP="-lcap", LIBCAP="" )
-LIBS=$BACKUP_LIBS
-AC_SUBST(LIBCAP)
-AM_CONDITIONAL([HAVE_LIBCAP], [test ! -z "$LIBCAP"])
-
-BACKUP_LIBS=$LIBS
-AC_CHECK_LIB([pwdb],[pwdb_db_name], LIBPWDB="-lpwdb", LIBPWDB="")
-LIBS=$BACKUP_LIBS
-AC_SUBST(LIBPWDB)
-AM_CONDITIONAL([HAVE_LIBPWDB], [test ! -z "$LIBPWDB"])
+if test ! -z "$LIBSELINUX" ; then
+    AC_DEFINE([WITH_SELINUX], 1, [Defined if SE Linux support is compiled in])
+    BACKUP_LIBS=$LIBS
+    LIBS="$LIBS $LIBSELINUX"
+    AC_CHECK_FUNCS(setkeycreatecon)
+    AC_CHECK_FUNCS(getseuser)
+    LIBS=$BACKUP_LIBS
+fi
 
 dnl Checks for header files.
 AC_HEADER_DIRENT
 AC_HEADER_STDC
 AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/file.h sys/ioctl.h sys/time.h syslog.h termio.h unistd.h sys/fsuid.h inittypes.h)
-
-AC_CHECK_HEADERS(crypt.h)
-AC_CHECK_HEADERS(crack.h)
-
-dnl For module/pam_userdb
-AC_CHECK_HEADERS(ndbm.h db.h)
-dnl I suspect the following two lines are a hack.
-HAVE_NDBM_H=$ac_cv_header_ndbm_h
-AC_SUBST(HAVE_NDBM_H)
+AC_CHECK_HEADERS(fcntl.h limits.h malloc.h sys/file.h sys/ioctl.h sys/time.h syslog.h net/if.h termio.h unistd.h sys/fsuid.h inittypes.h rpcsvc/ypclnt.h rpcsvc/yp_prot.h)
 
 dnl For module/pam_lastlog
 AC_CHECK_HEADERS(lastlog.h utmp.h utmpx.h)
@@ -390,68 +489,110 @@ AC_TYPE_GETGROUPS
 AC_PROG_GCC_TRADITIONAL
 AC_FUNC_MEMCMP
 AC_FUNC_VPRINTF
-AC_CHECK_FUNCS(gethostname gettimeofday lckpwdf mkdir select strcspn strdup strspn strstr strtol uname)
-
-AC_CHECK_FUNCS(getpwnam_r getpwuid_r getgrnam_r getgrgid_r getspnam_r getgrouplist)
-
-dnl Checks for programs/utilities
-AC_CHECK_PROG(SGML2PS, sgml2ps, yes, no)
-AC_CHECK_PROG(SGML2TXT, sgml2txt, yes, no)
-AC_CHECK_PROG(SGML2HTML, sgml2html, yes, no)
-AC_CHECK_PROG(SGML2LATEX, sgml2latex, yes, no)
-AC_CHECK_PROG(PS2PDF, ps2pdf, yes, no)
-AM_CONDITIONAL([HAVE_SGML2PS], [test "$SGML2PS" = yes || test "$SGML2LATEX" = yes])
-AM_CONDITIONAL([HAVE_SGML2TXT], [test "$SGML2TXT" = yes])
-AM_CONDITIONAL([HAVE_SGML2HTML], [test "$SGML2HTML" = yes])
-AM_CONDITIONAL([HAVE_PS2PDF], [test "$PS2PDF" = yes])
-if test $SGML2LATEX = "yes" ; then
-  if sgml2latex -h | grep -e --paper | grep  ' -p ' > /dev/null ; then
-    PSER="sgml2latex -o ps"
-  else
-    PSER="sgml2latex -p"
-  fi
+AC_CHECK_FUNCS(fseeko gethostname gettimeofday lckpwdf mkdir select)
+AC_CHECK_FUNCS(strcspn strdup strspn strstr strtol uname)
+AC_CHECK_FUNCS(getutent_r getpwnam_r getpwuid_r getgrnam_r getgrgid_r getspnam_r)
+AC_CHECK_FUNCS(getgrouplist getline getdelim)
+AC_CHECK_FUNCS(inet_ntop inet_pton ruserok_af)
+
+AC_CHECK_FUNCS(unshare, [UNSHARE=yes], [UNSHARE=no])
+AM_CONDITIONAL([HAVE_UNSHARE], [test "$UNSHARE" = yes])
+
+AC_ARG_ENABLE([regenerate-docu],
+  AC_HELP_STRING([--disable-regenerate-docu], [Don't re-build documentation from XML souces]),
+  [enable_docu=$enableval], [enable_docu=yes])
+dnl
+dnl Check for xsltproc
+dnl
+AC_PATH_PROG([XSLTPROC], [xsltproc])
+if test -z "$XSLTPROC"; then
+     enable_docu=no
+fi
+AC_PATH_PROG([XMLLINT], [xmllint],[/bin/true])
+dnl check for DocBook DTD and stylesheets in the local catalog.
+JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.4//EN],
+                [DocBook XML DTD V4.4], [], enable_docu=no)
+JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
+                [DocBook XSL Stylesheets], [], enable_docu=no)
+
+AC_PATH_PROG([BROWSER], [w3m])
+if test ! -z "$BROWSER"; then
+     BROWSER="$BROWSER -T text/html -dump"
 else
-  if test $SGML2PS = yes ; then
-    PSER="sgml2ps"
-  fi
+     enable_docu=no
 fi
-AC_SUBST(PSER)
 
-AM_GNU_GETTEXT_VERSION
+AC_PATH_PROG([FO2PDF], [fop])
+
+AM_CONDITIONAL(ENABLE_REGENERATE_MAN, test x$enable_docu != xno)
+AM_CONDITIONAL(ENABLE_GENERATE_PDF, test ! -z "$FO2PDF")
+
+
+AM_GNU_GETTEXT_VERSION([0.15])
 AM_GNU_GETTEXT([external])
+AC_CHECK_FUNCS(dngettext)
 
-AH_VERBATIM([_ZZENABLE_NLS],
-[#ifdef ENABLE_NLS
+AH_BOTTOM([#ifdef ENABLE_NLS
 #include <libintl.h>
-#define _(msgid) dgettext("Linux-PAM", msgid)
+#define _(msgid) dgettext(PACKAGE, msgid)
 #define N_(msgid) msgid
 #else
 #define _(msgid) (msgid)
 #define N_(msgid) msgid
 #endif /* ENABLE_NLS */])
 
+dnl
+dnl Check for the availability of the kernel key management facility
+dnl - The pam_keyinit module only requires the syscalls, not the error codes
+dnl
+AC_CHECK_DECL(__NR_keyctl, [have_key_syscalls=1],[have_key_syscalls=0],[#include <sys/syscall.h>])
+AC_CHECK_DECL(ENOKEY, [have_key_errors=1],[have_key_errors=0],[#include <errno.h>])
+
+HAVE_KEY_MANAGEMENT=0
+if test $have_key_syscalls$have_key_errors = 11
+then
+       HAVE_KEY_MANAGEMENT=1
+fi
+
+if test $HAVE_KEY_MANAGEMENT = 1; then
+   AC_DEFINE([HAVE_KEY_MANAGEMENT], 1,
+            [Defined if the kernel key management facility is available])
+fi
+AC_SUBST([HAVE_KEY_MANAGEMENT], $HAVE_KEY_MANAGEMENT)
+
+AM_CONDITIONAL([HAVE_KEY_MANAGEMENT], [test "$have_key_syscalls" = 1])
+
 dnl Files to be created from when we run configure
-AC_OUTPUT(Makefile libpam/Makefile libpamc/Makefile libpamc/test/Makefile \
+AC_CONFIG_FILES([Makefile libpam/Makefile libpamc/Makefile libpamc/test/Makefile \
        libpam_misc/Makefile conf/Makefile conf/pam_conv1/Makefile \
        po/Makefile.in \
        modules/Makefile \
        modules/pam_access/Makefile modules/pam_cracklib/Makefile \
         modules/pam_debug/Makefile modules/pam_deny/Makefile \
        modules/pam_echo/Makefile modules/pam_env/Makefile \
+       modules/pam_faildelay/Makefile \
        modules/pam_filter/Makefile modules/pam_filter/upperLOWER/Makefile \
        modules/pam_ftp/Makefile modules/pam_group/Makefile \
-       modules/pam_issue/Makefile modules/pam_lastlog/Makefile \
-       modules/pam_limits/Makefile modules/pam_listfile/Makefile \
-       modules/pam_localuser/Makefile modules/pam_mail/Makefile \
+       modules/pam_issue/Makefile modules/pam_keyinit/Makefile \
+       modules/pam_lastlog/Makefile modules/pam_limits/Makefile \
+       modules/pam_listfile/Makefile modules/pam_localuser/Makefile \
+       modules/pam_loginuid/Makefile modules/pam_mail/Makefile \
        modules/pam_mkhomedir/Makefile modules/pam_motd/Makefile \
+       modules/pam_namespace/Makefile \
        modules/pam_nologin/Makefile modules/pam_permit/Makefile \
-       modules/pam_pwdb/Makefile modules/pam_rhosts/Makefile \
-       modules/pam_rootok/Makefile \
+       modules/pam_pwhistory/Makefile modules/pam_rhosts/Makefile \
+       modules/pam_rootok/Makefile modules/pam_exec/Makefile \
        modules/pam_securetty/Makefile modules/pam_selinux/Makefile \
+       modules/pam_sepermit/Makefile \
        modules/pam_shells/Makefile modules/pam_stress/Makefile \
        modules/pam_succeed_if/Makefile modules/pam_tally/Makefile \
-       modules/pam_time/Makefile modules/pam_umask/Makefile \
+       modules/pam_tally2/Makefile modules/pam_time/Makefile \
+       modules/pam_timestamp/Makefile modules/pam_tty_audit/Makefile \
+       modules/pam_umask/Makefile \
        modules/pam_unix/Makefile modules/pam_userdb/Makefile \
        modules/pam_warn/Makefile modules/pam_wheel/Makefile \
        modules/pam_xauth/Makefile doc/Makefile doc/specs/Makefile \
-       examples/Makefile)
+       doc/man/Makefile doc/sag/Makefile doc/adg/Makefile \
+       doc/mwg/Makefile examples/Makefile tests/Makefile \
+       xtests/Makefile])
+AC_OUTPUT