]> granicus.if.org Git - shadow/blobdiff - configure.in
[svn-upgrade] Integrating new upstream version, shadow (4.0.14)
[shadow] / configure.in
index 142891f5df5b09100491ee6187011f5d1d7a12f1..de9b27e38c3280206760e36d62fcb969b19e6241 100644 (file)
@@ -1,12 +1,14 @@
 dnl Process this file with autoconf to produce a configure script.
 AC_INIT
-AM_INIT_AUTOMAKE(shadow, 4.0.7)
+AM_INIT_AUTOMAKE(shadow, 4.0.14)
 AC_CONFIG_HEADERS([config.h])
 
 dnl Some hacks...
 test "$prefix" = "NONE" && prefix="/usr"
 test "$prefix" = "/usr" && exec_prefix=""
 
+AC_GNU_SOURCE
+
 AM_DISABLE_SHARED
 AM_ENABLE_STATIC
 
@@ -32,7 +34,7 @@ AC_CHECK_HEADERS(errno.h fcntl.h limits.h unistd.h sys/time.h utmp.h \
        utime.h ulimit.h sys/resource.h gshadow.h shadow.h lastlog.h \
        locale.h rpc/key_prot.h)
 
-AC_CHECK_FUNCS(a64l fchmod fchown fseeko fsync getgroups gethostname getspnam \
+AC_CHECK_FUNCS(a64l fchmod fchown fsync getgroups gethostname getspnam \
        gettimeofday getusershell getutent initgroups lchown lckpwdf lstat \
        memcpy memset setgroups sigaction strchr updwtmp updwtmpx)
 AC_SYS_LARGEFILE
@@ -61,7 +63,7 @@ if test "$ac_cv_header_utmp_h" = "yes"; then
        )
 
        if test "$ac_cv_struct_utmp_ut_host" = "yes"; then
-               AC_DEFINE(UT_HOST)
+               AC_DEFINE(UT_HOST, 1, [Define if you have ut_host in struct utmp.])
        fi
 
        AC_CACHE_CHECK(for ut_user in struct utmp,
@@ -75,7 +77,8 @@ if test "$ac_cv_header_utmp_h" = "yes"; then
        )
 
        if test "$ac_cv_struct_utmp_ut_user" = "no"; then
-               AC_DEFINE(ut_user, ut_name)
+               AC_DEFINE(ut_user, ut_name,
+                       [Define to ut_name if struct utmp has ut_name (not ut_user).])
        fi
 fi
 
@@ -91,13 +94,13 @@ if test "$ac_cv_header_lastlog_h" = "yes"; then
        )
 
        if test "$ac_cv_struct_lastlog_ll_host" = "yes"; then
-               AC_DEFINE(HAVE_LL_HOST)
+               AC_DEFINE(HAVE_LL_HOST, 1,
+                       [Define if struct lastlog has ll_host])
        fi
 fi
 
 dnl Checks for library functions.
 AC_TYPE_GETGROUPS
-AC_PROG_GCC_TRADITIONAL
 AC_TYPE_SIGNAL
 AC_FUNC_UTIME_NULL
 AC_FUNC_STRFTIME
@@ -109,26 +112,26 @@ AC_CHECK_FUNC(setpgrp)
 AC_FUNC_SETPGRP
 
 if test "$ac_cv_header_shadow_h" = "yes"; then
-AC_CACHE_CHECK(for working shadow group support,
-       ac_cv_libc_shadowgrp,
-       AC_RUN_IFELSE([AC_LANG_SOURCE([
-                       #include <shadow.h>
-                       main()
-                       {
-                               struct sgrp *sg = sgetsgent("test:x::");
-                               /* NYS libc on Red Hat 3.0.3 has broken shadow group support */
-                               return !sg || !sg->sg_adm || !sg->sg_mem;
-                       }]
-               )],
-               [ac_cv_libc_shadowgrp=yes],
-               [ac_cv_libc_shadowgrp=no],
-               [ac_cv_libc_shadowgrp=no]
+       AC_CACHE_CHECK(for working shadow group support,
+               ac_cv_libc_shadowgrp,
+               AC_RUN_IFELSE([AC_LANG_SOURCE([
+                               #include <shadow.h>
+                               main()
+                               {
+                                       struct sgrp *sg = sgetsgent("test:x::");
+                                       /* NYS libc on Red Hat 3.0.3 has broken shadow group support */
+                                       return !sg || !sg->sg_adm || !sg->sg_mem;
+                               }]
+                       )],
+                       [ac_cv_libc_shadowgrp=yes],
+                       [ac_cv_libc_shadowgrp=no],
+                       [ac_cv_libc_shadowgrp=no]
+               )
        )
-)
 
-if test "$ac_cv_libc_shadowgrp" = "yes"; then
-       AC_DEFINE(HAVE_SHADOWGRP)
-fi
+       if test "$ac_cv_libc_shadowgrp" = "yes"; then
+               AC_DEFINE(HAVE_SHADOWGRP, 1, [Have working shadow group support in libc])
+       fi
 fi
 
 AC_CACHE_CHECK([location of shared mail directory], shadow_cv_maildir,
@@ -138,7 +141,8 @@ AC_CACHE_CHECK([location of shared mail directory], shadow_cv_maildir,
        fi
 done])
 if test $shadow_cv_maildir != none; then
-       AC_DEFINE_UNQUOTED(MAIL_SPOOL_DIR, "$shadow_cv_maildir")
+       AC_DEFINE_UNQUOTED(MAIL_SPOOL_DIR, "$shadow_cv_maildir",
+               [Location of system mail spool directory.])
 fi
 
 AC_CACHE_CHECK([location of user mail file], shadow_cv_mailfile,
@@ -148,11 +152,12 @@ AC_CACHE_CHECK([location of user mail file], shadow_cv_mailfile,
        fi
 done])
 if test $shadow_cv_mailfile != none; then
-       AC_DEFINE_UNQUOTED(MAIL_SPOOL_FILE, "$shadow_cv_mailfile")
+       AC_DEFINE_UNQUOTED(MAIL_SPOOL_FILE, "$shadow_cv_mailfile",
+               [Name of user's mail spool file if stored in user's home directory.])
 fi
 
 AC_CACHE_CHECK([location of utmp], shadow_cv_utmpdir,
-[for utmpdir in /var/run /var/adm /usr/adm /etc none; do
+[for shadow_cv_utmpdir in /var/run /var/adm /usr/adm /etc none; do
        if test -f $shadow_cv_utmpdir/utmp; then
                break
        fi
@@ -160,17 +165,21 @@ done])
 if test "$shadow_cv_utmpdir" = "none"; then
        AC_MSG_WARN(utmp file not found)
 fi
-AC_DEFINE_UNQUOTED(_UTMP_FILE, "$shadow_cv_utmpdir/utmp")
+AC_DEFINE_UNQUOTED(_UTMP_FILE, "$shadow_cv_utmpdir/utmp",
+       [Path for utmp file.])
 
 AC_CACHE_CHECK([location of faillog/lastlog/wtmp], shadow_cv_logdir,
 [for shadow_cv_logdir in /var/log /var/adm /usr/adm /etc; do
-       if test -d $logdir; then
+       if test -d $shadow_cv_logdir; then
                break
        fi
 done])
-AC_DEFINE_UNQUOTED(_WTMP_FILE, "$shadow_cv_logdir/wtmp")
-AC_DEFINE_UNQUOTED(LASTLOG_FILE, "$shadow_cv_logdir/lastlog")
-AC_DEFINE_UNQUOTED(FAILLOG_FILE, "$shadow_cv_logdir/faillog")
+AC_DEFINE_UNQUOTED(_WTMP_FILE, "$shadow_cv_logdir/wtmp",
+       [Path for wtmp file.])
+AC_DEFINE_UNQUOTED(LASTLOG_FILE, "$shadow_cv_logdir/lastlog",
+       [Path for lastlog file.])
+AC_DEFINE_UNQUOTED(FAILLOG_FILE, "$shadow_cv_logdir/faillog",
+       [Path for faillog file.])
 
 AC_CACHE_CHECK([location of the passwd program], shadow_cv_passwd_dir,
 [if test -f /usr/bin/passwd; then
@@ -178,29 +187,52 @@ AC_CACHE_CHECK([location of the passwd program], shadow_cv_passwd_dir,
 else
        shadow_cv_passwd_dir=/bin
 fi])
-AC_DEFINE_UNQUOTED(PASSWD_PROGRAM, "$shadow_cv_passwd_dir/passwd")
+AC_DEFINE_UNQUOTED(PASSWD_PROGRAM, "$shadow_cv_passwd_dir/passwd",
+       [Path to passwd program.])
 
 dnl XXX - quick hack, should disappear before anyone notices :).
-AC_DEFINE(SHADOWPWD)
-AC_DEFINE(USG)
-AC_DEFINE(USE_SYSLOG)
-AC_DEFINE(RLOGIN)
-AC_DEFINE(RUSEROK, 0)
+AC_DEFINE(USE_SYSLOG, 1, [Define to use syslog().])
+AC_DEFINE(RLOGIN, 1, [Define if login should support the -r flag for rlogind.])
+AC_DEFINE(RUSEROK, 0, [Define to the ruserok() "success" return value (0 or 1).])
 
 dnl Use our own version of getpass(), which handles long passwords
 dnl (unlike many systems which have a limit of 8 characters), and can
 dnl be interrupted with Ctrl-C (unlike Linux libc).
-AC_DEFINE(getpass, libshadow_getpass)
+AC_DEFINE(getpass, libshadow_getpass,
+       [Define to libshadow_getpass to use our own version of getpass().])
+
+AC_ARG_ENABLE(shadowgrp,
+       [AC_HELP_STRING([--enable-shadowgrp], [enable shadow group support @<:@default=yes@:>@])],
+       [case "${enableval}" in
+        yes) enable_shadowgrp="yes" ;;
+         no) enable_shadowgrp="no" ;;
+          *) AC_MSG_ERROR(bad value ${enableval} for --enable-shadowgrp) ;;
+        esac],
+       [enable_shadowgrp="yes"]
+)
 
-AC_ARG_ENABLE(desrpc, [  --enable-desrpc         try to use secure RPC in login (default if found)])
-AC_ARG_ENABLE(shadowgrp, [  --enable-shadowgrp      enable shadow group support [default=yes]])
+AC_ARG_ENABLE(man,
+       [AC_HELP_STRING([--enable-man],
+               [regenerate roff man pages from Docbook @<:@default=no@:>@])],
+       [enable_man=yes],
+        [enable_man=no]
+)
 
-AC_ARG_WITH(libcrack, [  --with-libcrack       try to use libcrack (default if found)])
-AC_ARG_WITH(libcrypt, [  --with-libcrypt       try to use libcrypt (default if found)])
-AC_ARG_WITH(libopie,  [  --with-libopie                use libopie for OPIE support])
-AC_ARG_WITH(libpam,   [  --with-libpam                 use libpam for PAM support])
-AC_ARG_WITH(libskey,  [  --with-libskey                use libskey for S/Key support])
-AC_ARG_WITH(selinux,  [  --with-selinux                use SELinux support])
+AC_ARG_WITH(audit, 
+       [AC_HELP_STRING([--with-audit], [use auditing support @<:@default=yes if found@:>@])],
+       [with_audit=$withval], [with_audit=yes])
+AC_ARG_WITH(libpam,
+       [AC_HELP_STRING([--with-libpam], [use libpam for PAM support @<:@default=yes if found@:>@])],
+       [with_libpam=$withval], [with_libpam=yes])
+AC_ARG_WITH(selinux,
+       [AC_HELP_STRING([--with-selinux], [use SELinux support @<:@default=autodetect@:>@])],
+       [with_selinux=$withval], [with_selinux=yes])
+AC_ARG_WITH(skey,
+       [AC_HELP_STRING([--with-skey], [use S/Key support @<:@default=no@:>@])],
+       [with_skey=$withval], [with_skey=no])
+AC_ARG_WITH(libcrack,
+       [AC_HELP_STRING([--with-libcrack], [use libcrack @<:@default=yes if found and if PAM not enabled@:>@])],
+       [with_libcrack=$withval], [with_libcrack=no])
 
 dnl Check for some functions in libc first, only if not found check for
 dnl other libraries.  This should prevent linking libnsl if not really
@@ -210,43 +242,56 @@ AC_SEARCH_LIBS(inet_ntoa, inet)
 AC_SEARCH_LIBS(socket, socket)
 AC_SEARCH_LIBS(gethostbyname, nsl)
 
-dnl XXX - getsecretkey() causes login to hang for 5 minutes on at least
-dnl one RH 4.0 system.  Use --disable-desrpc if you have this problem.
-dnl Reported by Mohan Khurana <mohan@stealth.net>.
-
-if test "$enable_desrpc" != "no" -a "$ac_cv_header_rpc_key_prot_h" = "yes" ; then
-       AC_CHECK_FUNC(getsecretkey, AC_DEFINE(DES_RPC),
-               AC_CHECK_LIB(rpcsvc, getsecretkey, AC_DEFINE(DES_RPC)))
+if test "$enable_shadowgrp" = "yes"; then
+       AC_DEFINE(SHADOWGRP, 1, [Define to support the shadow group file.])
 fi
 
-if test "$enable_shadowgrp" != "no"; then
-       AC_DEFINE(SHADOWGRP)
+if test "$enable_man" = "yes"; then
+       dnl
+       dnl Check for xsltproc
+       dnl
+       AC_PATH_PROG([XSLTPROC], [xsltproc])
+       if test -z "$XSLTPROC"; then
+               enable_man=no
+       fi
+
+       dnl check for DocBook DTD and stylesheets in the local catalog.
+       JH_CHECK_XML_CATALOG([-//OASIS//DTD DocBook XML V4.1.2//EN],
+               [DocBook XML DTD V4.1.2], [], enable_man=no)
+       JH_CHECK_XML_CATALOG([http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl],
+               [DocBook XSL Stylesheets], [], enable_man=no)
 fi
+AM_CONDITIONAL(ENABLE_REGENERATE_MAN, test x$enable_man != xno)
 
 AC_SUBST(LIBCRYPT)
-if test "$with_libcrypt" != "no"; then
-       AC_CHECK_LIB(crypt, crypt, [AC_DEFINE(HAVE_LIBCRYPT) LIBCRYPT=-lcrypt])
+AC_CHECK_LIB(crypt, crypt, [LIBCRYPT=-lcrypt],
+       [AC_MSG_ERROR([crypt() not found])])
+
+AC_SUBST(LIBAUDIT)
+if test "$with_audit" = "yes"; then
+       AC_CHECK_HEADER(libaudit.h, [audit_header="yes"], [audit_header="no"])
+       if test "$audit_header" = "yes"; then
+               AC_CHECK_LIB(audit, audit_log_acct_message,
+                       [AC_DEFINE(WITH_AUDIT, 1, [Define if you want to enable Audit messages])
+                       LIBAUDIT="-laudit"])
+       fi
 fi
 
 AC_SUBST(LIBCRACK)
-if test "$with_libcrack" != "no"; then
+if test "$with_libcrack" = "yes"; then
        echo "checking cracklib flavour, don't be surprised by the results"
-       AC_CHECK_LIB(crack, FascistCheck, AC_DEFINE(HAVE_LIBCRACK) LIBCRACK=-lcrack)
-       AC_CHECK_LIB(crack, FascistHistory, AC_DEFINE(HAVE_LIBCRACK_HIST))
-       AC_CHECK_LIB(crack, FascistHistoryPw, AC_DEFINE(HAVE_LIBCRACK_PW))
-fi
-
-AC_SUBST(LIBSKEY)
-AC_SUBST(LIBMD)
-if test "$with_libskey" = "yes"; then
-       AC_CHECK_LIB(md, MD5Init, LIBMD=-lmd)
-       AC_CHECK_LIB(skey, skeychallenge, AC_DEFINE(SKEY) LIBSKEY=-lskey, [], $LIBMD $LIBCRYPT)
-elif test "$with_libopie" = "yes"; then
-       AC_CHECK_LIB(opie, opiechallenge, AC_DEFINE(OPIE) LIBSKEY=-lopie, [], $LIBCRYPT)
+       AC_CHECK_LIB(crack, FascistCheck,
+               [LIBCRACK=-lcrack AC_DEFINE(HAVE_LIBCRACK, 1, [Defined if you have libcrack.])])
+       AC_CHECK_LIB(crack, FascistHistory,
+               AC_DEFINE(HAVE_LIBCRACK_HIST, 1, [Defined if you have the ts&szs cracklib.]))
+       AC_CHECK_LIB(crack, FascistHistoryPw,
+               AC_DEFINE(HAVE_LIBCRACK_PW, 1, [Defined if it includes *Pw functions.]))
 fi
 
 if test "$with_selinux" = "yes"; then
-       AC_CHECK_LIB(selinux, is_selinux_enabled, [LIBSELINUX="-lselinux"], [SELinuux enabled but libselinux not found])
+       AC_CHECK_LIB(selinux, is_selinux_enabled,
+               [LIBSELINUX="-lselinux"],
+               [AC_MSG_ERROR([libselinux not found])])
        AC_SUBST(LIBSELINUX)
        AC_CHECK_HEADERS(selinux/selinux.h, [], [selinux/selinux.h is missing])
        AC_DEFINE(WITH_SELINUX, 1, [Build shadow with SELinux support])
@@ -259,24 +304,30 @@ if test "$with_libpam" = "yes"; then
                LIBPAM="-lpam"
                AC_CHECK_LIB(pam_misc, main,
                        [LIBPAM="$LIBPAM -lpam_misc"],
-                       AC_MSG_ERROR(libpam_misc is missing)
-               )]
+                       AC_MSG_ERROR(libpam_misc is missing for enable PAM support)
+               )],
                [AC_MSG_CHECKING(use login access checking if PAM not used)
-               AC_DEFINE(LOGIN_ACCESS)
                AC_MSG_RESULT(yes)]
        )
        AC_MSG_CHECKING(use login and su access checking if PAM not used)
        AC_MSG_RESULT(no)
 else
        AC_MSG_CHECKING(use login and su access checking if PAM not used)
-       AC_DEFINE(LOGIN_ACCESS)
-       AC_DEFINE(SU_ACCESS)
+       AC_DEFINE(SU_ACCESS, 1, [Define to support /etc/suauth su access control.])
        AC_MSG_RESULT(yes)
 fi
 
+AC_SUBST(LIBSKEY)
+AC_SUBST(LIBMD)
+if test "$with_skey" = "yes"; then
+       AC_CHECK_LIB(md, MD5Init, [LIBMD=-lmd])
+       AC_CHECK_LIB(skey, skeychallenge, [LIBSKEY=-lskey],
+               [AC_MSG_ERROR([liskey missing. You can download S/Key source code from http://rsync1.it.gentoo.org/gentoo/distfiles/skey-1.1.5.tar.bz2])])
+       AC_DEFINE(SKEY, 1, [Define to support S/Key logins.])
+fi
+
 AM_GNU_GETTEXT_VERSION(0.12.1)
-AM_GNU_GETTEXT([external])
-AC_DEFINE_UNQUOTED(LOCALEDIR, "${datadir}/locale", [locale directory])
+AM_GNU_GETTEXT([external], [need-ngettext])
 
 AC_CONFIG_FILES([
        Makefile
@@ -286,6 +337,7 @@ AC_CONFIG_FILES([
        man/cs/Makefile
        man/de/Makefile
        man/es/Makefile
+       man/fi/Makefile
        man/fr/Makefile
        man/hu/Makefile
        man/id/Makefile
@@ -295,6 +347,7 @@ AC_CONFIG_FILES([
        man/pl/Makefile
        man/pt_BR/Makefile
        man/ru/Makefile
+       man/tr/Makefile
        man/zh_CN/Makefile
        man/zh_TW/Makefile
        libmisc/Makefile
@@ -306,3 +359,14 @@ AC_CONFIG_FILES([
        shadow.spec
 ])
 AC_OUTPUT
+
+echo
+echo "shadow will be compiled with the followig feactures:"
+echo
+echo " auditing support:               $with_audit"
+echo " CrackLib support:               $with_libcrack"
+echo " PAM support:                    $with_libpam"
+echo " SELinux support:                $with_selinux"
+echo " shadow group support:           $enable_shadowgrp"
+echo " S/Key support:                  $with_skey"
+echo