diff options
author | Steve Langasek <steve.langasek@ubuntu.com> | 2019-01-03 12:48:14 -0800 |
---|---|---|
committer | Steve Langasek <steve.langasek@ubuntu.com> | 2019-01-03 12:48:14 -0800 |
commit | d5b06b67bbeeed7c05c0eb2e05d6a972ad050d1c (patch) | |
tree | ba5654cffacfd2002eefc5bc3764a7971afff1dc /Linux-PAM/configure.in | |
parent | 4c51da22e068907adb7857d50f5109a467c94d7c (diff) | |
parent | 7cbfa335c57d068d59508c844f3957165cccfb9b (diff) | |
download | pam-d5b06b67bbeeed7c05c0eb2e05d6a972ad050d1c.tar.gz pam-d5b06b67bbeeed7c05c0eb2e05d6a972ad050d1c.tar.bz2 pam-d5b06b67bbeeed7c05c0eb2e05d6a972ad050d1c.zip |
New upstream version 0.99.7.1
Diffstat (limited to 'Linux-PAM/configure.in')
-rw-r--r-- | Linux-PAM/configure.in | 761 |
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) |