AC_PROG_CC
AC_PROG_CPP
AC_PROG_RANLIB
+AC_PROG_INSTALL
AC_CHECK_PROG(AR, ar, ar)
+
+dnl Checks for compiler characteristics
if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -Wall"; fi
+AC_C_INLINE
dnl Check for OpenSSL/SSLeay directories.
AC_MSG_CHECKING([for OpenSSL/SSLeay directory])
AC_DEFINE_UNQUOTED(ssldir, "$ssldir")
if test "$ssldir" != "/usr"; then
CFLAGS="$CFLAGS -I$ssldir/include"
- LIBS="$LIBS -L$ssldir/lib"
+ LDFLAGS="$LDFLAGS -L$ssldir/lib"
fi
LIBS="$LIBS -lssl -lcrypto"
AC_MSG_RESULT($ssldir)
AC_CHECK_LIB(pam, pam_authenticate, , )
dnl Checks for header files.
-AC_CHECK_HEADERS(pty.h endian.h paths.h lastlog.h shadow.h netgroup.h)
+AC_CHECK_HEADERS(endian.h lastlog.h login.h maillock.h netgroup.h paths.h poll.h pty.h shadow.h util.h utmp.h utmpx.h sys/poll.h sys/select.h sys/stropts.h sys/time.h)
-dnl Check for ut_host field in utmp
-AC_MSG_CHECKING([whether utmp.h has ut_host field])
-AC_EGREP_HEADER(ut_host, utmp.h,
- [AC_DEFINE(HAVE_HOST_IN_UTMP) AC_MSG_RESULT(yes); ],
- [AC_MSG_RESULT(no)]
+dnl Checks for library functions.
+AC_CHECK_FUNCS(arc4random mkdtemp openpty _getpty setenv setlogin setproctitle snprintf strlcat strlcpy vsnprintf)
+
+AC_CHECK_FUNC(login,
+ [AC_DEFINE(HAVE_LOGIN)],
+ [AC_CHECK_LIB(bsd, login, [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_LOGIN)])]
)
-dnl Checks for library functions.
-AC_CHECK_FUNCS(openpty strlcpy mkdtemp arc4random setproctitle setlogin)
+AC_CHECK_FUNC(daemon,
+ [AC_DEFINE(HAVE_DAEMON)],
+ [AC_CHECK_LIB(bsd, daemon, [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_DAEMON)])]
+)
+
+dnl Checks for data types
+AC_CHECK_SIZEOF(short int, 2)
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(long int, 4)
+AC_CHECK_SIZEOF(long long int, 8)
+
+dnl More checks for data types
+AC_MSG_CHECKING([for quad_t])
+AC_TRY_COMPILE(
+ [#include <sys/types.h>],
+ [quad_t a; a = 1235;],
+ [
+ AC_DEFINE(HAVE_QUAD_T)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
+AC_MSG_CHECKING([for intXX_t types])
+AC_TRY_COMPILE(
+ [#include <sys/types.h>],
+ [int16_t a; int32_t b; a = 1235; b = 1235;],
+ [
+ AC_DEFINE(HAVE_INTXX_T)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
-dnl Check whether use wants to disable the external ssh-askpass
-INSTALL_ASKPASS="yes"
-AC_MSG_CHECKING([whether to enable external ssh-askpass support])
-AC_ARG_WITH(askpass,
- [ --with-askpass=yes/no Enable external ssh-askpass support (default=no)],
+AC_MSG_CHECKING([for u_intXX_t types])
+AC_TRY_COMPILE(
+ [#include <sys/types.h>],
+ [u_int16_t c; u_int32_t d; c = 1235; d = 1235;],
+ [
+ AC_DEFINE(HAVE_U_INTXX_T)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
+AC_MSG_CHECKING([For uintXX_t types])
+AC_TRY_COMPILE(
+ [#include <sys/types.h>],
+ [uint16_t c; uint32_t d; c = 1235; d = 1235;],
+ [
+ AC_DEFINE(HAVE_UINTXX_T)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+)
+
+dnl Check PAM strerror arguments
+AC_MSG_CHECKING([whether pam_strerror takes only one argument])
+AC_TRY_COMPILE(
+ [
+ #include <stdlib.h>
+ #include <security/pam_appl.h>
+ ],
+ [(void)pam_strerror((pam_handle_t *)NULL, -1);],
+ [AC_MSG_RESULT(no)],
+ [
+ AC_DEFINE(HAVE_OLD_PAM)
+ AC_MSG_RESULT(yes)
+ ]
+)
+
+AC_MSG_CHECKING([whether to build GNOME ssh-askpass])
+dnl Check whether user wants GNOME ssh-askpass
+AC_ARG_WITH(gnome-askpass,
+ [ --with-gnome-askpass Build the GNOME passphrase requester (default=no)],
[
if test x$withval = xno ; then
- INSTALL_ASKPASS="no"
+ GNOME_ASKPASS="";
else
- INSTALL_ASKPASS="yes"
+ GNOME_ASKPASS="gnome-ssh-askpass";
fi
- ]
-)
-if test "x$INSTALL_ASKPASS" = "xyes" ; then
- AC_DEFINE(USE_EXTERNAL_ASKPASS)
- AC_SUBST(INSTALL_ASKPASS)
- AC_MSG_RESULT(yes)
-else
- AC_MSG_RESULT(no)
-fi
+ ])
+AC_SUBST(GNOME_ASKPASS)
-if test "x$INSTALL_ASKPASS" = "xyes" ; then
- AC_MSG_CHECKING([whether to build GNOME ssh-askpass])
- dnl Check whether user wants GNOME ssh-askpass
- AC_ARG_WITH(gnome-askpass,
- [ --with-gnome-askpass Build the GNOME passphrase requester (default=no)],
- [
- if test x$withval = xno ; then
- GNOME_ASKPASS="";
- else
- GNOME_ASKPASS="gnome-ssh-askpass";
- fi
- ])
- AC_SUBST(GNOME_ASKPASS)
-
- if test -z "$GNOME_ASKPASS" ; then
- AC_MSG_RESULT(no)
- else
- AC_MSG_RESULT(yes)
- fi
+if test -z "$GNOME_ASKPASS" ; then
+ AC_MSG_RESULT(no)
+else
+ AC_MSG_RESULT(yes)
fi
dnl Check for user-specified random device
AC_MSG_ERROR([No random device found, and no EGD random pool specified])
fi
+dnl Check for ut_host field in utmp
+AC_MSG_CHECKING([whether utmp.h has ut_host field])
+AC_EGREP_HEADER(ut_host, utmp.h,
+ [AC_DEFINE(HAVE_HOST_IN_UTMP) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+
+dnl Check for ut_host field in utmpx
+AC_MSG_CHECKING([whether utmpx.h has ut_host field])
+AC_EGREP_HEADER(ut_host, utmpx.h,
+ [AC_DEFINE(HAVE_HOST_IN_UTMPX) AC_MSG_RESULT(yes); ],
+ [AC_MSG_RESULT(no)]
+)
+
+dnl Look for lastlog location
+AC_MSG_CHECKING([location of lastlog file])
+for lastlog in /var/log/lastlog /var/adm/lastlog /etc/security/lastlog ; do
+ if test -f $lastlog ; then
+ gotlastlog="file"
+ break
+ fi
+ if test -d $lastlog ; then
+ gotlastlog="dir"
+ break
+ fi
+done
+if test -z "$gotlastlog" ; then
+ AC_MSG_ERROR([*** Cannot find lastlog ***])
+else
+ if test "x$gotlastlog" = "xdir" ; then
+ AC_DEFINE(LASTLOG_IS_DIR)
+ AC_MSG_ERROR([*** Directory-based lastlogs are not yet supported ***])
+ fi
+ AC_MSG_RESULT($lastlog)
+ AC_DEFINE_UNQUOTED(LASTLOG_LOCATION, "$lastlog")
+fi
+
+AC_CHECK_FILE("/dev/ptmx", AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX))
+AC_CHECK_FILE("/dev/ptc", AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC))
+
+AC_MSG_CHECKING([whether libc defines __progname])
+AC_TRY_LINK([],
+ [extern char *__progname; printf("%s", __progname);],
+ [
+ AC_DEFINE(HAVE___PROGNAME)
+ AC_MSG_RESULT(yes)
+ ],
+ [
+ AC_MSG_RESULT(no)
+ ]
+)
+
+dnl Check whether user wants Kerberos support
+AC_ARG_WITH(kerberos4,
+ [ --with-kerberos4 Enable Kerberos 4 support],
+ [
+ AC_DEFINE(KRB4)
+ LIBS="$LIBS -lkrb"
+ CFLAGS="$CFLAGS -I/usr/include/kerberosIV"
+ ]
+)
+
+dnl Check whether user wants AFS support
+AC_ARG_WITH(afs,
+ [ --with-afs Enable AFS support],
+ [
+ AC_DEFINE(AFS)
+ LIBS="$LIBS -lkafs"
+ ]
+)
+
+dnl Check whether user wants S/Key support
+AC_ARG_WITH(skey,
+ [ --with-skey Enable S/Key support],
+ [
+ AC_DEFINE(SKEY)
+ LIBS="$LIBS -lskey"
+ ]
+)
+
+dnl Check whether user wants TCP wrappers support
+AC_ARG_WITH(tcp-wrappers,
+ [ --with-tcp-wrappers Enable tcpwrappers support],
+ [
+ AC_DEFINE(LIBWRAP)
+ LIBWRAP="-lwrap"
+ ]
+)
+AC_SUBST(LIBWRAP)
+
+dnl Check whether to enable MD5 passwords
+AC_ARG_WITH(md5-passwords,
+ [ --with-md5-passwords Enable use of MD5 passwords],
+ [AC_DEFINE(HAVE_MD5_PASSWORDS)]
+)
+
+dnl Check for the path to xauth
+AC_PATH_PROG(xauth_path, xauth)
+AC_DEFINE_UNQUOTED(XAUTH_PATH, "$xauth_path")
+
AC_OUTPUT(Makefile)