summaryrefslogtreecommitdiff
path: root/Linux-PAM/configure.in
diff options
context:
space:
mode:
Diffstat (limited to 'Linux-PAM/configure.in')
-rw-r--r--Linux-PAM/configure.in761
1 files changed, 414 insertions, 347 deletions
diff --git a/Linux-PAM/configure.in b/Linux-PAM/configure.in
index f090a542..0c4c8cb0 100644
--- a/Linux-PAM/configure.in
+++ b/Linux-PAM/configure.in
@@ -1,171 +1,272 @@
dnl Process this file with autoconf to produce a configure script.
-AC_INIT(conf/pam_conv1/pam_conv.y)
+AC_INIT(conf/pam_conv1/pam_conv_y.y)
+AM_INIT_AUTOMAKE("Linux-PAM", 0.99.7.1)
+AC_PREREQ([2.60])
+AM_CONFIG_HEADER(config.h)
+AC_CANONICAL_HOST
-dnl The configuration header file
-AC_CONFIG_HEADER(_pam_aconf.h)
+AC_SUBST(PACKAGE)
+AC_SUBST(VERSION)
dnl
-dnl Release specific
+dnl By default, everything under PAM is installed below /usr.
dnl
-
-LIBPAM_VERSION_MAJOR=0
-LIBPAM_VERSION_MINOR=79
-
-AC_SUBST(LIBPAM_VERSION_MAJOR)
-AC_SUBST(LIBPAM_VERSION_MINOR)
-AC_DEFINE(LIBPAM_VERSION_MAJOR)
-AC_DEFINE(LIBPAM_VERSION_MINOR)
-
-dnl
-dnl By default, everything under PAM is installed under the root fs.
-dnl
-
-AC_PREFIX_DEFAULT()
-
-dnl
-dnl Useful info (believed to be portable) - in the future
-dnl the LOCALSRCDIR and LOCALOBJDIRs may be different
-dnl
-LOCALSRCDIR=`/bin/pwd` ; AC_SUBST(LOCALSRCDIR)
-LOCALOBJDIR=`/bin/pwd` ; AC_SUBST(LOCALOBJDIR)
-OS=`uname|sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
-AC_SUBST(OS)
+AC_PREFIX_DEFAULT(/usr)
+
+dnl and some hacks to use /etc and /lib
+test "${prefix}" = "NONE" && prefix="/usr"
+if test ${prefix} = '/usr'
+then
+dnl If we use /usr as prefix, use /etc for config files
+ if test ${sysconfdir} = '${prefix}/etc'
+ then
+ sysconfdir="/etc"
+ fi
+ if test ${libdir} = '${exec_prefix}/lib'
+ then
+ libdir="/lib"
+ fi
+ if test ${sbindir} = '${exec_prefix}/sbin'
+ then
+ sbindir="/sbin"
+ fi
+dnl If we use /usr as prefix, use /usr/share/man for manual pages
+ if test ${mandir} = '${prefix}/man'
+ then
+ mandir='${prefix}/share/man'
+ fi
+dnl Add security to include directory
+ if test ${includedir} = '${prefix}/include'
+ then
+ includedir="${prefix}/include/security"
+ fi
+fi
dnl
-dnl Rules needed for the following (hardcoded Linux defaults for now)
+dnl check if we should link everything static into libpam
dnl
-
-CONF_CFLAGS= ; AC_SUBST(CONF_CFLAGS)
-MKDIR="mkdir -p" ; AC_SUBST(MKDIR)
-
-SHLIBMODE=755 ; AC_SUBST(SHLIBMODE)
-MANMODE=644 ; AC_SUBST(MANMODE)
-
-dnl These are most likely platform specific - I think HPUX differs
-USESONAME=yes ; AC_SUBST(USESONAME)
-SOSWITCH="-Wl,-soname -Wl," ; AC_SUBST(SOSWITCH)
-NEEDSONAME=yes ; AC_SUBST(NEEDSONAME)
-LDCONFIG=/sbin/ldconfig ; AC_SUBST(LDCONFIG)
+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_PROG_CC
-dnl ### AC_PROG_CXX
AC_PROG_YACC
-AC_PROG_LEX
+AM_PROG_LEX
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
+AC_PROG_LIBTOOL
+AM_PROG_CC_C_O
+PAM_LD_AS_NEEDED
+PAM_LD_O1
+
+dnl Largefile support
+AC_SYS_LARGEFILE
+
+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 \
+ -Wbad-function-cast \
+ -Wcast-align \
+ -Wcast-qual \
+ -Wmissing-declarations \
+ -Wmissing-prototypes \
+ -Wpointer-arith \
+ -Wreturn-type \
+ -Wstrict-prototypes \
+ -Wwrite-strings \
+ -Winline \
+ -Wshadow
+ do
+ 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
+
+AC_C___ATTRIBUTE__
dnl
-dnl options and defaults
+dnl Check if --version-script is supported by ld
dnl
+AC_CACHE_CHECK(for .symver assembler directive, libc_cv_asm_symver_directive,
+[cat > conftest.s <<EOF
+${libc_cv_dot_text}
+_sym:
+.symver _sym,sym@VERS
+EOF
+if ${CC-cc} -c $ASFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD; then
+ libc_cv_asm_symver_directive=yes
+else
+ libc_cv_asm_symver_directive=no
+fi
+rm -f conftest*])
+AC_CACHE_CHECK(for ld --version-script, libc_cv_ld_version_script_option, [dnl
+if test $libc_cv_asm_symver_directive = yes; then
+ cat > conftest.s <<EOF
+${libc_cv_dot_text}
+_sym:
+.symver _sym,sym@VERS
+EOF
+ cat > conftest.map <<EOF
+VERS_1 {
+ global: sym;
+};
+
+VERS_2 {
+ global: sym;
+} VERS_1;
+EOF
+ 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
+ -nostartfiles -nostdlib
+ -Wl,--version-script,conftest.map
+ 1>&AS_MESSAGE_LOG_FD]);
+ then
+ libc_cv_ld_version_script_option=yes
+ else
+ libc_cv_ld_version_script_option=no
+ fi
+ else
+ libc_cv_ld_version_script_option=no
+ fi
+else
+ libc_cv_ld_version_script_option=no
+fi
+rm -f conftest*])
+AM_CONDITIONAL([HAVE_VERSIONING],
+ [test "$libc_cv_ld_version_script_option" = "yes"])
-dnl lots of debugging information goes to /tmp/pam-debug.log
-AC_ARG_ENABLE(debug,
-[ --enable-debug specify you are building with debugging on],
- WITH_DEBUG=yes ; AC_DEFINE(DEBUG) , WITH_DEBUG=no)
-AC_SUBST(WITH_DEBUG)
+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)]),
+ USE_PIE=$enableval, USE_PIE=yes)
+
+AC_CACHE_CHECK(for -fpie, libc_cv_fpie, [dnl
+ cat > conftest.c <<EOF
+int foo;
+main () { return 0;}
+EOF
+ 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
+ libc_cv_fpie=yes
+ PIE_CFLAGS="-fpie"
+ PIE_LDFLAGS="-pie"
+ else
+ libc_cv_fpie=no
+ PIE_CFLAGS=""
+ PIE_LDFLAGS=""
+ fi
+ rm -f conftest*])
+AC_SUBST(libc_cv_fpie)
+AC_SUBST(PIE_CFLAGS)
+AC_SUBST(PIE_LDFLAGS)
-AC_ARG_ENABLE(memory-debug,
-[ --enable-memory-debug specify you want every malloc etc. call tracked],
- WITH_MEMORY_DEBUG=yes ; AC_DEFINE(MEMORY_DEBUG) , WITH_MEMORY_DEBUG=no)
-AC_SUBST(WITH_MEMORY_DEBUG)
-dnl build specially named libraries (for debugging purposes)
-AC_ARG_ENABLE(libdebug,
-[ --enable-libdebug specify you are building debugging libraries],
- WITH_LIBDEBUG=yes ; AC_DEFINE(WITH_LIBDEBUG) , WITH_LIBDEBUG=no)
-AC_SUBST(WITH_LIBDEBUG)
+dnl
+dnl options and defaults
+dnl
-dnl have prelude support
-AC_ARG_ENABLE(prelude,
-[ --enable-prelude build prelude ids support],
- WITH_PRELUDE=yes ; AC_DEFINE(WITH_PRELUDE), WITH_PRELUDE=no)
-AC_SUBST(WITH_PRELUDE)
+AC_ARG_ENABLE([prelude],
+ AC_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 packaging convenience
-AC_ARG_ENABLE(fakeroot,
-[ --enable-fakeroot=<path to packaging directory>], FAKEROOT=$enableval)
-AC_SUBST(FAKEROOT)
+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(securedir,
-[ --enable-securedir=<path to location of PAMs> [default \$libdir/security]],
+ AC_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,
-[ --enable-isadir=<path to arch-specific module files> [default ../../\`basename \$libdir\`/security]],
+AC_ARG_ENABLE([isadir],
+ AC_HELP_STRING([--enable-isadir=DIR],[path to arch-specific module files @<:@default=../../(basename of $libdir)/security@:>@]),
ISA=$enableval,
ISA=../../`basename $libdir`/security)
unset mylibdirbase
AC_DEFINE_UNQUOTED(_PAM_ISA,"$ISA",[Define to the path, relative to SECUREDIR, where PAMs specific to this architecture can be found.])
-AC_MSG_RESULT([Defining \$ISA to \"$ISA\".])
+AC_MSG_RESULT([Defining \$ISA to "$ISA"])
AC_ARG_ENABLE(sconfigdir,
-[ --enable-sconfigdir=<path to module conf files> [default \$sysconfdir/security]],
+ AC_HELP_STRING([--enable-sconfigdir=DIR],[path to module conf files @<:@default=$sysconfdir/security@:>@]),
SCONFIGDIR=$enableval, SCONFIGDIR=$sysconfdir/security)
AC_SUBST(SCONFIGDIR)
-AC_ARG_ENABLE(suplementedir,
-[ --enable-suplementedir=<path to module helper binaries> [default \$sbindir]],
- SUPLEMENTED=$enableval, SUPLEMENTED=$sbindir)
-AC_SUBST(SUPLEMENTED)
-
-AC_ARG_ENABLE(includedir,
-[ --enable-includedir=<path to include location> - where to put <security>],
- INCLUDEDIR=$enableval, INCLUDEDIR=/usr/include)
-AC_SUBST(INCLUDEDIR)
-
-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(mandir,
-[ --enable-mandir=<path to store manuals in - /usr/share/man>],
- MANDIR=$enableval, MANDIR=/usr/share/man)
-AC_SUBST(MANDIR)
-
AC_ARG_ENABLE(pamlocking,
-[ --enable-pamlocking configure libpam to observe a global authentication lock],
- WITH_PAMLOCKING=yes ; AC_DEFINE(PAM_LOCKING) , WITH_PAMLOCKING=no)
+ AC_HELP_STRING([--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)
-AC_ARG_ENABLE(uglyhack,
-[ --enable-uglyhack configure libpam to try to honor old pam_strerror syntax],
- AC_DEFINE(UGLY_HACK_FOR_PRIOR_BEHAVIOR_SUPPORT))
-
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))
+ AC_HELP_STRING([--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)
-AC_ARG_ENABLE(static-libpam, [ --enable-static-libpam build a libpam.a library],
- STATIC_LIBPAM=yes , STATIC_LIBPAM=no)
-AC_SUBST(STATIC_LIBPAM)
-
-AC_ARG_ENABLE(dynamic-libpam,
-[ --disable-dynamic-libpam do not build a shared libpam library],
- DYNAMIC_LIBPAM=no, DYNAMIC_LIBPAM=yes)
-AC_SUBST(DYNAMIC_LIBPAM)
-
-DYNAMIC=-DPAM_DYNAMIC
-AC_SUBST(DYNAMIC)
-
-AC_ARG_ENABLE(static-modules,
-[ --enable-static-modules do not make the modules dynamically loadable],
- STATIC=-DPAM_STATIC)
-AC_SUBST(STATIC)
-
-AC_ARG_ENABLE(lckpwdf,
-[ --disable-lckpwdf do not use the lckpwdf function],
- WITH_LCKPWDF=no, WITH_LCKPWDF=yes)
-AC_SUBST(WITH_LCKPWDF)
+AC_ARG_ENABLE([lckpwdf],
+ AC_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,
+ [Define to 1 if the lckpwdf function should be used])
+fi
AC_CHECK_HEADERS(paths.h)
AC_ARG_WITH(mailspool,
-[ --with-mailspool path to mail spool directory
- [default _PATH_MAILDIR if defined in paths.h, otherwise /var/spool/mail]],
+[ --with-mailspool path to mail spool directory
+ [default _PATH_MAILDIR if defined in paths.h, otherwise /var/spool/mail]],
with_mailspool=${withval})
if test x$with_mailspool != x ; then
pam_mail_spool="\"$with_mailspool\""
@@ -182,229 +283,119 @@ exit(1);
pam_mail_spool="\"/var/spool/mail\"",
pam_mail_spool="\"/var/spool/mail\"")
fi
-AC_DEFINE_UNQUOTED(PAM_PATH_MAILDIR, $pam_mail_spool)
-
-dnl Checks for libraries.
-AC_CHECK_LIB(c, __libc_sched_setscheduler, PAM_NEEDS_LIBC=, PAM_NEEDS_LIBC=-lc)
-AC_SUBST(PAM_NEEDS_LIBC)
+AC_DEFINE_UNQUOTED(PAM_PATH_MAILDIR, $pam_mail_spool,
+ [Path where mails are stored])
+
+AC_ARG_WITH(xauth,
+[ --with-xauth additional path to check for xauth when it is called from pam_xauth
+ [added to the default of /usr/X11R6/bin/xauth, /usr/bin/xauth, /usr/bin/X11/xauth]],
+pam_xauth_path=${withval})
+if test x$with_xauth == x ; then
+ AC_PATH_PROG(pam_xauth_path, xauth)
+dnl There is no sense in adding the first default path
+ if test x$pam_xauth_path == x/usr/X11R6/bin/xauth ; then
+ unset pam_xauth_path
+ fi
+fi
-dnl Checks for the existence of lckpwdf in libc
-AC_CHECK_LIB(c, lckpwdf, HAVE_LCKPWDF=yes, HAVE_LCKPWDF=no)
-AC_SUBST(HAVE_LCKPWDF)
+if test x$pam_xauth_path != x ; then
+ AC_DEFINE_UNQUOTED(PAM_PATH_XAUTH, "$pam_xauth_path",
+ [Additional path of xauth executable])
+fi
dnl Checks for the existence of libdl - on BSD and Tru64 its part of libc
-AC_CHECK_LIB(dl, dlopen, LIBDL=-ldl)
+AC_CHECK_LIB([dl], [dlopen], LIBDL="-ldl", LIBDL="")
AC_SUBST(LIBDL)
-dnl
-dnl At least on Solaris, the existing libcrack must be dynamic.
-dnl Ought to introduce a check for this.
-dnl
-AC_CHECK_LIB(crack, FascistCheck, HAVE_LIBCRACK=yes ; AC_DEFINE(HAVE_LIBCRACK),
- HAVE_LIBCRACK=no)
-AC_SUBST(HAVE_LIBCRACK)
-
-AC_CHECK_LIB(crypt, crypt, HAVE_LIBCRYPT=yes ; AC_DEFINE(HAVE_LIBCRYPT),
- HAVE_LIBCRYPT=no)
-AC_SUBST(HAVE_LIBCRYPT)
-AC_CHECK_LIB(util, logwtmp, HAVE_LIBUTIL=yes ; AC_DEFINE(HAVE_LIBUTIL),
- HAVE_LIBUTIL=no)
-AC_SUBST(HAVE_LIBUTIL)
-AC_CHECK_LIB(ndbm, dbm_store, HAVE_LIBNDBM=yes ; AC_DEFINE(HAVE_LIBNDBM),
- HAVE_LIBNDBM=no)
-AC_SUBST(HAVE_LIBNDBM)
-AC_CHECK_LIB(db, dbm_store, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
- HAVE_LIBDB=no)
-if test x$HAVE_LIBDB != xyes ; then
- AC_CHECK_LIB(db, db_create, HAVE_LIBDB=yes ; AC_DEFINE(HAVE_LIBDB),
- HAVE_LIBDB=no)
+# Check for cracklib
+AC_ARG_ENABLE([cracklib],
+ AC_HELP_STRING([--disable-cracklib],[do not use cracklib]),
+ WITH_CRACKLIB=$enableval, WITH_CRACKLIB=yes)
+if test x"$WITH_CRACKLIB" != xno ; then
+ AC_CHECK_HEADER([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_ARG_ENABLE([audit],
+ AC_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_user_message, LIBAUDIT=-laudit, LIBAUDIT="")]
+ )
+ if test ! -z "$LIBAUDIT" -a "ac_cv_header_libaudit_h" != "no" ; then
+ AC_DEFINE([HAVE_LIBAUDIT], 1, [Defined if audit support should be compiled in])
+ fi
+else
+ LIBAUDIT=""
fi
-AC_SUBST(HAVE_LIBDB)
-AC_CHECK_LIB(fl, yylex, yyterminate, HAVE_LIBFL=yes ; AC_DEFINE(HAVE_LIBFL),
- HAVE_LIBFL=no)
-AC_SUBST(HAVE_LIBFL)
-AC_CHECK_LIB(nsl, yp_maplist, HAVE_LIBNSL=yes ; AC_DEFINE(HAVE_LIBNSL),
- HAVE_LIBNSL=no)
-AC_SUBST(HAVE_LIBNSL)
-
-if test $HAVE_LIBNSL = yes ; then
- pwdblibs="$pwdblibs -lnsl"
+AC_SUBST(LIBAUDIT)
+
+BACKUP_LIBS=$LIBS
+AC_SEARCH_LIBS([crypt],[xcrypt crypt], LIBCRYPT="-l$ac_lib", LIBCRYPT="")
+LIBS=$BACKUP_LIBS
+AC_SUBST(LIBCRYPT)
+
+dnl check for libdb or libndbm as fallback. Some libndbm compat
+dnl libraries are unuseable, so try libdb first.
+AC_ARG_ENABLE([db],
+ AC_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)
+if test x"$WITH_DB" != xno ; then
+ if test x"$WITH_DB" = xyes -o x"$WITH_DB" = xdb ; then
+ AC_CHECK_LIB([db], [db_create], LIBDB="-ldb", LIBDB="")
+ if test -z "$LIBDB" ; then
+ AC_CHECK_LIB([db], [dbm_store], LIBDB="-ldb", 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"])
+
+AC_CHECK_LIB([nsl],[yp_get_default_domain], LIBNSL="-lnsl", LIBNSL="")
+LIBS="$LIBS $LIBNSL"
+AC_CHECK_FUNCS(yp_get_default_domain)
+LIBS=$BACKUP_LIBS
+AC_SUBST(LIBNSL)
+
+AC_ARG_ENABLE([selinux],
+ AC_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"])
+if test ! -z "$LIBSELINUX" ; then
+ AC_DEFINE([WITH_SELINUX], 1, [Defined if SE Linux support is compiled in])
fi
-AC_CHECK_LIB(pwdb, pwdb_db_name, HAVE_LIBPWDB=yes ; AC_DEFINE(HAVE_LIBPWDB),
- HAVE_LIBPWDB=no,$pwdblibs)
-AC_SUBST(HAVE_LIBPWDB)
-unset pwdblibs
-
-AC_CHECK_LIB(fl, yywrap, HAVE_LIBFLEX=yes ; AC_DEFINE(HAVE_LIBFLEX),
- HAVE_LIBFLEX=no)
-AC_SUBST(HAVE_LIBFLEX)
-AC_CHECK_LIB(l, yywrap, HAVE_LIBLEX=yes ; AC_DEFINE(HAVE_LIBLEX),
- HAVE_LIBLEX=no)
-AC_SUBST(HAVE_LIBLEX)
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)
-
-dnl Linux wants features.h in some of the source files.
-AC_CHECK_HEADERS(features.h)
+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)
-dnl For module/pam_cracklib
AC_CHECK_HEADERS(crypt.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)
-
dnl For module/pam_lastlog
AC_CHECK_HEADERS(lastlog.h utmp.h utmpx.h)
-dnl This following rule should be made conditional upon HAVE_LIBCRYPT
-dnl being found.
-
-dnl Look for cracklib dictionary
-AC_MSG_CHECKING(path to cracklib dictionary)
-DICT_DIR_CANDIDATES="/usr/lib /usr/share/dict /usr/share/lib \
- /usr/local/lib /usr/local/share/lib /usr/share/cracklib"
-DICT_FILE_CANDIDATES="pw_dict cracklib_dict"
-CRACKLIB_DICTPATH=""
-for d in $DICT_DIR_CANDIDATES ; do
- for f in $DICT_FILE_CANDIDATES ; do
- if test -r $d/$f.hwm ; then
- CRACKLIB_DICTPATH=$d/$f
- break 2
- elif test -r $d/dict/$f.hwm ; then
- CRACKLIB_DICTPATH=$d/dict/$f
- break 2
- fi
- done
-done
-if test -z "$CRACKLIB_DICTPATH" ; then
- AC_MSG_WARN([none found - pam_cracklib will not be built])
-else
- AC_MSG_RESULT($CRACKLIB_DICTPATH)
-fi
-AC_SUBST(CRACKLIB_DICTPATH)
-
-dnl Set FLAGS, linker options etc. depending on C compiler.
-dnl gcc is tested and much preferred; others less so, if at all
-dnl
-dnl If compiling with gcc, linking is also supposed to be done with gcc
-dnl
-dnl For the moment, gcc is enforced above at "CC=gcc".
-dnl
-dnl There is an issue over _POSIX_SOURCE _BSD_SOURCE and _GNU_SOURCE .
-dnl The original "Linux-PAM" had blanket inclusion. But portability
-dnl requires their default absence: if particular OSes require them,
-dnl this should be done selectively.
-
-GCC_WARNINGS="-Wall -Wwrite-strings \
- -Wpointer-arith -Wcast-qual -Wcast-align \
- -Wstrict-prototypes -Wmissing-prototypes \
- -Wnested-externs -Winline -Wshadow"
-
-if test "$GCC" = yes; then
- CC=gcc ; AC_SUBST(CC)
-### May need per-OS attention
-### Example: -D_POSIX_SOURCE: needed on Linux but harms Solaris.
- case $OS in
- linux)
- OS_CFLAGS=
- LD_D="$CC -shared $LDFLAGS"
- WARNINGS="$GCC_WARNINGS"
- PIC="-fPIC"
- DYNTYPE=so
- LD=gcc
- LD_L="$CC -shared $LDFLAGS"
- RANLIB=:
- STRIP=strip
- CC_STATIC="-Xlinker -export-dynamic"
- ;;
- sunos)
- OS_CFLAGS="-ansi -pedantic"
- LD_D="gcc -shared -Xlinker -x"
- WARNINGS="$GCC_WARNINGS"
- PIC="-fPIC"
- DYNTYPE=so
- LD=ld
- LD_L="$LD -x -shared"
- RANLIB=ranlib
- STRIP=strip
- CC_STATIC="-Xlinker -export-dynamic"
- ;;
- aix)
- OS_CFLAGS=""
- DYNTYPE=lo
- LD=ld
- LD_L=ld -bexpall -bM:SRE -bnoentry
- LD_D="$LD_L"
- RANLIB=ranlib
- STRIP=strip
- ;;
- *)
- OS_CFLAGS=""
- ;;
- esac
-else
-###
-### Non-gcc needs attention on per-OS basis
-###
- case "$OS" in
- darwin)
-# add some stuff here (see sourceforge bug 534205)
-# DOCDIR=/System/Documentation/Administration/Libraries/PAM
-# MANDIR=/usr/share/man
- ;;
- solaris)
- ### Support for Solaris-C
- OS_CFLAGS=""
- WARNINGS=""
- PIC="-K pic"
- LD=ld
- LD_D="cc -z text -G -R."
- LD_L="$LD_D"
- RANLIB=ranlib
- STRIP=strip
- CC_STATIC=
- ;;
- irix*)
- OSRELEASE=`uname -r`
- if test "$OSRELEASE" = 6.5; then
- OS_CFLAGS=""
- WARNINGS="-fullwarn"
- PIC= #PIC code is default for IRIX
- LD="cc -shared" # modules friendly approach
- LD_D="cc -shared"
- LD_L="ld -G -z redlocsym"
- RANLIB=echo
- STRIP=strip
- CC_STATIC=
- else
- echo "IRIX prior to 6.5 not allowed for"
- exit
- fi
- ;;
- *) echo "Native compiler on $OS is not yet supported"
- exit
- ;;
- esac
-fi
-
-AC_SUBST(DYNTYPE)
-AC_SUBST(OS_CFLAGS)
-AC_SUBST(WARNINGS)
-AC_SUBST(PIC)
-AC_SUBST(LD)
-AC_SUBST(LD_D)
-AC_SUBST(LD_L)
-AC_SUBST(RANLIB)
-AC_SUBST(STRIP)
-AC_SUBST(CC_STATIC)
-
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_BIGENDIAN
AC_C_CONST
@@ -420,29 +411,105 @@ AC_TYPE_GETGROUPS
AC_PROG_GCC_TRADITIONAL
AC_FUNC_MEMCMP
AC_FUNC_VPRINTF
-AC_CHECK_FUNCS(gethostname gettimeofday mkdir select strcspn strdup strerror strspn strstr strtol uname)
+AC_CHECK_FUNCS(fseeko gethostname gettimeofday lckpwdf mkdir select)
+AC_CHECK_FUNCS(strcspn strdup strspn strstr strtol uname)
+AC_CHECK_FUNCS(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(getpwnam_r getpwuid_r getgrnam_r getgrgid_r getspnam_r getgrouplist)
+AC_CHECK_FUNCS(unshare, [UNSHARE=yes], [UNSHARE=no])
+AM_CONDITIONAL([HAVE_UNSHARE], [test "$UNSHARE" = yes])
-dnl Checks for programs/utilities
-AC_CHECK_PROG(HAVE_SGML2TXT, sgml2txt, yes, no)
-AC_CHECK_PROG(HAVE_SGML2HTML, sgml2html, yes, no)
-AC_CHECK_PROG(HAVE_SGML2LATEX, sgml2latex, yes, no)
-if test $HAVE_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_PROG(HAVE_PS2PDF, ps2pdf, yes, no)
+dnl
+dnl Check for xsltproc
+dnl
+enable_man=yes
+AC_PATH_PROG([XSLTPROC], [xsltproc])
+if test -z "$XSLTPROC"; then
+ enable_man=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_man=no)
+JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
+ [DocBook XSL Stylesheets], [], enable_man=no)
+
+AC_PATH_PROG([BROWSER], [w3m])
+if test ! -z "$BROWSER"; then
+ BROWSER="$BROWSER -T text/html -dump"
else
- AC_CHECK_PROG(HAVE_SGML2PS, sgml2ps, yes, no)
- if test $HAVE_SGML2PS = yes ; then
- PSER="sgml2ps"
- fi
+ enable_man=no
fi
-AC_SUBST(PSER)
-AC_SUBST(PS2PDF)
+
+AC_PATH_PROG([FO2PDF], [fop])
+
+AM_CONDITIONAL(ENABLE_REGENERATE_MAN, test x$enable_man != xno)
+AM_CONDITIONAL(ENABLE_GENERATE_PDF, test ! -z "$FO2PDF")
+
+
+AM_GNU_GETTEXT_VERSION
+AM_GNU_GETTEXT([external])
+AC_CHECK_FUNCS(dngettext)
+
+AH_VERBATIM([_ZZENABLE_NLS],
+[#ifdef ENABLE_NLS
+#include <libintl.h>
+#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(Make.Rules)
+AC_OUTPUT(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_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_rhosts/Makefile \
+ modules/pam_rootok/Makefile modules/pam_exec/Makefile \
+ modules/pam_securetty/Makefile modules/pam_selinux/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_unix/Makefile modules/pam_userdb/Makefile \
+ modules/pam_warn/Makefile modules/pam_wheel/Makefile \
+ modules/pam_xauth/Makefile doc/Makefile doc/specs/Makefile \
+ doc/man/Makefile doc/sag/Makefile doc/adg/Makefile \
+ doc/mwg/Makefile examples/Makefile tests/Makefile \
+ xtests/Makefile)