summaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
authorTim Rice <tim@multitalents.net>2001-10-24 21:15:26 -0700
committerTim Rice <tim@multitalents.net>2001-10-24 21:15:26 -0700
commit8ad995fd07876b6ca38c7a94a1896935d167b589 (patch)
tree3ce5927792d405cc316e4710251db44936f1522c /configure.ac
parent3a78c845354096ffe3fb7275a763e67a5d45e797 (diff)
Use configure.ac instead of configure.in so older versions of autoconf
don't even try.
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac2251
1 files changed, 2251 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 00000000..185ed30e
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,2251 @@
+# $Id: configure.ac,v 1.1 2001/10/25 04:15:26 tim Exp $
+
+AC_INIT
+AC_CONFIG_SRCDIR([ssh.c])
+
+AC_CONFIG_HEADER(config.h)
+AC_PROG_CC
+AC_CANONICAL_HOST
+AC_C_BIGENDIAN
+
+# Checks for programs.
+AC_PROG_CPP
+AC_PROG_RANLIB
+AC_PROG_INSTALL
+AC_PATH_PROG(AR, ar)
+AC_PATH_PROGS(PERL, perl5 perl)
+AC_SUBST(PERL)
+AC_PATH_PROG(ENT, ent)
+AC_SUBST(ENT)
+AC_PATH_PROGS(FILEPRIV, filepriv, true, /sbin:/usr/sbin)
+AC_PATH_PROG(TEST_MINUS_S_SH, bash)
+AC_PATH_PROG(TEST_MINUS_S_SH, ksh)
+AC_PATH_PROG(TEST_MINUS_S_SH, sh)
+
+# System features
+AC_SYS_LARGEFILE
+
+if test -z "$AR" ; then
+ AC_MSG_ERROR([*** 'ar' missing, please install or fix your \$PATH ***])
+fi
+
+# Use LOGIN_PROGRAM from environment if possible
+if test ! -z "$LOGIN_PROGRAM" ; then
+ AC_DEFINE_UNQUOTED(LOGIN_PROGRAM_FALLBACK, "$LOGIN_PROGRAM")
+else
+ # Search for login
+ AC_PATH_PROG(LOGIN_PROGRAM_FALLBACK, login)
+ if test ! -z "$LOGIN_PROGRAM_FALLBACK" ; then
+ AC_DEFINE_UNQUOTED(LOGIN_PROGRAM_FALLBACK, "$LOGIN_PROGRAM_FALLBACK")
+ fi
+fi
+
+if test -z "$LD" ; then
+ LD=$CC
+fi
+AC_SUBST(LD)
+
+AC_C_INLINE
+if test "$GCC" = "yes" || test "$GCC" = "egcs"; then
+ CFLAGS="$CFLAGS -Wall -Wpointer-arith -Wno-uninitialized"
+fi
+
+# Check for some target-specific stuff
+case "$host" in
+*-*-aix*)
+ AFS_LIBS="-lld"
+ CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+ LDFLAGS="$LDFLAGS -L/usr/local/lib"
+ if (test "$LD" != "gcc" && test -z "$blibpath"); then
+ blibpath="/usr/lib:/lib:/usr/local/lib"
+ fi
+ AC_CHECK_FUNC(authenticate, [AC_DEFINE(WITH_AIXAUTHENTICATE)])
+ AC_DEFINE(BROKEN_GETADDRINFO)
+ dnl AIX handles lastlog as part of its login message
+ AC_DEFINE(DISABLE_LASTLOG)
+ ;;
+*-*-cygwin*)
+ LIBS="$LIBS -lregex /usr/lib/textmode.o"
+ AC_DEFINE(HAVE_CYGWIN)
+ AC_DEFINE(USE_PIPES)
+ AC_DEFINE(DISABLE_SHADOW)
+ AC_DEFINE(IPV4_DEFAULT)
+ AC_DEFINE(IP_TOS_IS_BROKEN)
+ AC_DEFINE(NO_X11_UNIX_SOCKETS)
+ ;;
+*-*-dgux*)
+ AC_DEFINE(IP_TOS_IS_BROKEN)
+ ;;
+*-*-darwin*)
+ AC_DEFINE(BROKEN_GETADDRINFO)
+ ;;
+*-*-hpux10*)
+ if test -z "$GCC"; then
+ CFLAGS="$CFLAGS -Ae"
+ fi
+ CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
+ IPADDR_IN_DISPLAY=yes
+ AC_DEFINE(USE_PIPES)
+ AC_DEFINE(DISABLE_SHADOW)
+ AC_DEFINE(DISABLE_UTMP)
+ AC_DEFINE(SPT_TYPE,SPT_PSTAT)
+ LIBS="$LIBS -lxnet -lsec"
+ ;;
+*-*-hpux11*)
+ CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
+ IPADDR_IN_DISPLAY=yes
+ AC_DEFINE(PAM_SUN_CODEBASE)
+ AC_DEFINE(USE_PIPES)
+ AC_DEFINE(DISABLE_SHADOW)
+ AC_DEFINE(DISABLE_UTMP)
+ AC_DEFINE(SPT_TYPE,SPT_PSTAT)
+ LIBS="$LIBS -lxnet -lsec"
+ ;;
+*-*-irix5*)
+ CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+ LDFLAGS="$LDFLAGS"
+ PATH="$PATH:/usr/etc"
+ AC_DEFINE(BROKEN_INET_NTOA)
+ ;;
+*-*-irix6*)
+ CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+ LDFLAGS="$LDFLAGS"
+ PATH="$PATH:/usr/etc"
+ AC_DEFINE(WITH_IRIX_ARRAY)
+ AC_DEFINE(WITH_IRIX_PROJECT)
+ AC_DEFINE(WITH_IRIX_AUDIT)
+ AC_CHECK_FUNC(jlimit_startjob, [AC_DEFINE(WITH_IRIX_JOBS)])
+ AC_DEFINE(BROKEN_INET_NTOA)
+ ;;
+*-*-linux*)
+ no_dev_ptmx=1
+ check_for_libcrypt_later=1
+ AC_DEFINE(DONT_TRY_OTHER_AF)
+ AC_DEFINE(PAM_TTY_KLUDGE)
+ inet6_default_4in6=yes
+ ;;
+mips-sony-bsd|mips-sony-newsos4)
+ AC_DEFINE(HAVE_NEWS4)
+ SONY=1
+ AC_CHECK_LIB(iberty, xatexit, AC_DEFINE(HAVE_XATEXIT),
+ AC_MSG_ERROR([*** libiberty missing - please install first or check config.log ***])
+ )
+ ;;
+*-*-netbsd*)
+ need_dash_r=1
+ ;;
+*-*-freebsd*)
+ check_for_libcrypt_later=1
+ ;;
+*-next-*)
+ conf_lastlog_location="/usr/adm/lastlog"
+ conf_utmp_location=/etc/utmp
+ conf_wtmp_location=/usr/adm/wtmp
+ MAIL=/usr/spool/mail
+ AC_DEFINE(HAVE_NEXT)
+ AC_DEFINE(BROKEN_REALPATH)
+ AC_DEFINE(USE_PIPES)
+ AC_DEFINE(BROKEN_SAVED_UIDS)
+ CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+ CFLAGS="$CFLAGS"
+ ;;
+*-*-solaris*)
+ CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+ LDFLAGS="$LDFLAGS -L/usr/local/lib -R/usr/local/lib"
+ need_dash_r=1
+ AC_DEFINE(PAM_SUN_CODEBASE)
+ AC_DEFINE(LOGIN_NEEDS_UTMPX)
+ AC_DEFINE(LOGIN_NEEDS_TERM)
+ AC_DEFINE(PAM_TTY_KLUDGE)
+ # hardwire lastlog location (can't detect it on some versions)
+ conf_lastlog_location="/var/adm/lastlog"
+ AC_MSG_CHECKING(for obsolete utmp and wtmp in solaris2.x)
+ sol2ver=`echo "$host"| sed -e 's/.*[[0-9]]\.//'`
+ if test "$sol2ver" -ge 8; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(DISABLE_UTMP)
+ AC_DEFINE(DISABLE_WTMP)
+ else
+ AC_MSG_RESULT(no)
+ fi
+ ;;
+*-*-sunos4*)
+ CPPFLAGS="$CPPFLAGS -DSUNOS4"
+ AC_CHECK_FUNCS(getpwanam)
+ AC_DEFINE(PAM_SUN_CODEBASE)
+ AC_DEFINE(HAVE_BOGUS_SYS_QUEUE_H)
+ conf_utmp_location=/etc/utmp
+ conf_wtmp_location=/var/adm/wtmp
+ conf_lastlog_location=/var/adm/lastlog
+ AC_DEFINE(USE_PIPES)
+ ;;
+*-ncr-sysv*)
+ CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+ LDFLAGS="$LDFLAGS -L/usr/local/lib"
+ LIBS="$LIBS -lc89"
+ AC_DEFINE(HAVE_BOGUS_SYS_QUEUE_H)
+ ;;
+*-sni-sysv*)
+ CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+ LDFLAGS="$LDFLAGS -L/usr/local/lib -L/usr/ucblib"
+ IPADDR_IN_DISPLAY=yes
+ AC_DEFINE(USE_PIPES)
+ AC_DEFINE(IP_TOS_IS_BROKEN)
+ AC_DEFINE(HAVE_BOGUS_SYS_QUEUE_H)
+ LIBS="$LIBS -lgen -lnsl -lucb"
+ ;;
+*-*-sysv4.2*)
+ CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+ LDFLAGS="$LDFLAGS -L/usr/local/lib"
+# enable_suid_ssh=no
+ AC_DEFINE(USE_PIPES)
+ ;;
+*-*-sysv5*)
+ CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+ LDFLAGS="$LDFLAGS -L/usr/local/lib"
+# enable_suid_ssh=no
+ AC_DEFINE(USE_PIPES)
+ ;;
+*-*-sysv*)
+ CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+ LDFLAGS="$LDFLAGS -L/usr/local/lib"
+ ;;
+*-*-sco3.2v4*)
+ CPPFLAGS="$CPPFLAGS -Dftruncate=chsize -I/usr/local/include"
+ LDFLAGS="$LDFLAGS -L/usr/local/lib"
+ LIBS="$LIBS -los -lprot -lx -ltinfo -lm"
+ rsh_path="/usr/bin/rcmd"
+ RANLIB=true
+ no_dev_ptmx=1
+ AC_DEFINE(BROKEN_SYS_TERMIO_H)
+ AC_DEFINE(USE_PIPES)
+ AC_DEFINE(HAVE_SCO_PROTECTED_PW)
+ AC_DEFINE(DISABLE_SHADOW)
+ AC_DEFINE(HAVE_BOGUS_SYS_QUEUE_H)
+ AC_DEFINE(BROKEN_SAVED_UIDS)
+ AC_CHECK_FUNCS(getluid setluid)
+ MANTYPE=man
+ do_sco3_extra_lib_check=yes
+ ;;
+*-*-sco3.2v5*)
+ CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+ LDFLAGS="$LDFLAGS -L/usr/local/lib"
+ LIBS="$LIBS -lprot -lx -ltinfo -lm"
+ no_dev_ptmx=1
+ rsh_path="/usr/bin/rcmd"
+ AC_DEFINE(USE_PIPES)
+ AC_DEFINE(HAVE_SCO_PROTECTED_PW)
+ AC_DEFINE(DISABLE_SHADOW)
+ AC_DEFINE(HAVE_BOGUS_SYS_QUEUE_H)
+ AC_CHECK_FUNCS(getluid setluid)
+ MANTYPE=man
+ ;;
+*-*-unicos*)
+ no_libsocket=1
+ no_libnsl=1
+ AC_DEFINE(USE_PIPES)
+ LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal,-L/usr/local/lib"
+ LIBS="$LIBS -lgen -lrsc"
+ ;;
+*-dec-osf*)
+ AC_MSG_CHECKING(for Digital Unix SIA)
+ no_osfsia=""
+ AC_ARG_WITH(osfsia,
+ [ --with-osfsia Enable Digital Unix SIA],
+ [
+ if test "x$withval" = "xno" ; then
+ AC_MSG_RESULT(disabled)
+ no_osfsia=1
+ fi
+ ],
+ )
+ if test -z "$no_osfsia" ; then
+ if test -f /etc/sia/matrix.conf; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_OSF_SIA)
+ AC_DEFINE(DISABLE_LOGIN)
+ LIBS="$LIBS -lsecurity -ldb -lm -laud"
+ else
+ AC_MSG_RESULT(no)
+ fi
+ fi
+ ;;
+
+*-*-nto-qnx)
+ AC_DEFINE(USE_PIPES)
+ AC_DEFINE(NO_X11_UNIX_SOCKETS)
+ AC_DEFINE(MISSING_NFDBITS)
+ AC_DEFINE(MISSING_HOWMANY)
+ AC_DEFINE(MISSING_FD_MASK)
+ ;;
+esac
+
+# Allow user to specify flags
+AC_ARG_WITH(cflags,
+ [ --with-cflags Specify additional flags to pass to compiler],
+ [
+ if test "x$withval" != "xno" ; then
+ CFLAGS="$CFLAGS $withval"
+ fi
+ ]
+)
+AC_ARG_WITH(cppflags,
+ [ --with-cppflags Specify additional flags to pass to preprocessor] ,
+ [
+ if test "x$withval" != "xno"; then
+ CPPFLAGS="$CPPFLAGS $withval"
+ fi
+ ]
+)
+AC_ARG_WITH(ldflags,
+ [ --with-ldflags Specify additional flags to pass to linker],
+ [
+ if test "x$withval" != "xno" ; then
+ LDFLAGS="$LDFLAGS $withval"
+ fi
+ ]
+)
+AC_ARG_WITH(libs,
+ [ --with-libs Specify additional libraries to link with],
+ [
+ if test "x$withval" != "xno" ; then
+ LIBS="$LIBS $withval"
+ fi
+ ]
+)
+
+AC_ARG_WITH(pcre,
+ [ --with-pcre[[=PATH]] Override built in regex library with pcre
+ (optionally in PATH)],
+ [
+ case "$withval" in
+ no) ;;
+ *)
+ if test "x$withval" != "xyes"; then
+ if test -d "$withval/lib"; then
+ if test -n "${need_dash_r}"; then
+ LDFLAGS="${LDFLAGS} -L$withval/lib -R$withval/lib"
+ else
+ LDFLAGS="${LDFLAGS} -L$withval/lib"
+ fi
+ else
+ if test -n "${need_dash_r}"; then
+ LDFLAGS="${LDFLAGS} -L$withval -R$withval"
+ else
+ LDFLAGS="${LDFLAGS} -L$withval"
+ fi
+ fi
+ if test -d "$withval/include"; then
+ CPPFLAGS="${CPPFLAGS} -I$withval/include"
+ else
+ CPPFLAGS="${CPPFLAGS} -I$withval"
+ fi
+ fi
+
+ AC_CHECK_HEADER(pcreposix.h,
+ AC_CHECK_LIB(pcre, pcre_info,[
+ AC_DEFINE(HAVE_LIBPCRE)
+ LIBS="$LIBS -lpcreposix -lpcre"
+ no_comp_check=yes],
+ AC_MSG_ERROR([*** unable to locate pcre library ***])),
+ AC_MSG_ERROR([*** unable to locate pcreposix.h include file ***]))
+ ;;
+ esac
+ ]
+)
+
+# Checks for libraries.
+AC_CHECK_FUNC(yp_match, , AC_CHECK_LIB(nsl, yp_match))
+AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt))
+
+dnl SCO OS3 needs this for libwrap
+if test "x$with_tcp_wrappers" != "xno" ; then
+ if test "x$do_sco3_extra_lib_check" = "xyes" ; then
+ AC_CHECK_LIB(rpc, innetgr, LIBS="-lrpc -lyp -lrpc $LIBS" , , -lyp -lrpc)
+ fi
+fi
+
+AC_CHECK_FUNC(getspnam, ,
+ AC_CHECK_LIB(gen, getspnam, LIBS="$LIBS -lgen"))
+AC_CHECK_FUNC(login, ,
+ AC_CHECK_LIB(util, login,
+ AC_DEFINE(HAVE_LIBUTIL_LOGIN) LIBS="$LIBS -lutil"))
+
+dnl zlib is required
+AC_ARG_WITH(zlib,
+ [ --with-zlib=PATH Use zlib in PATH],
+ [
+ if test -d "$withval/lib"; then
+ if test -n "${need_dash_r}"; then
+ LDFLAGS="${LDFLAGS} -L$withval/lib -R$withval/lib"
+ else
+ LDFLAGS="${LDFLAGS} -L$withval/lib"
+ fi
+ else
+ if test -n "${need_dash_r}"; then
+ LDFLAGS="${LDFLAGS} -L$withval -R$withval"
+ else
+ LDFLAGS="${LDFLAGS} -L$withval"
+ fi
+ fi
+ if test -d "$withval/include"; then
+ CPPFLAGS="${CPPFLAGS} -I$withval/include"
+ else
+ CPPFLAGS="${CPPFLAGS} -I$withval"
+ fi
+ ]
+)
+
+AC_CHECK_LIB(z, deflate, ,AC_MSG_ERROR([*** zlib missing - please install first or check config.log ***]))
+
+# We don't want to check if we did an pcre override.
+if test -z "$no_comp_check" ; then
+ AC_CHECK_FUNC(regcomp,
+ [ AC_DEFINE(HAVE_REGCOMP)],
+ [
+ AC_CHECK_LIB(pcre, pcre_info,
+ [
+ AC_DEFINE(HAVE_LIBPCRE)
+ LIBS="$LIBS -lpcreposix -lpcre"
+ ],
+ [
+ AC_MSG_ERROR([*** No regex library found.])
+ ])
+ ]
+ )
+fi
+
+dnl UnixWare 2.x
+AC_CHECK_FUNC(strcasecmp,
+ [], [ AC_CHECK_LIB(resolv, strcasecmp, LIBS="$LIBS -lresolv") ]
+)
+AC_CHECK_FUNC(utimes,
+ [], [ AC_CHECK_LIB(c89, utimes, LIBS="$LIBS -lc89") ]
+)
+
+AC_FUNC_STRFTIME
+
+# Checks for header files.
+AC_CHECK_HEADERS(bstring.h crypt.h endian.h floatingpoint.h \
+ getopt.h glob.h lastlog.h limits.h login.h \
+ login_cap.h maillock.h netdb.h netgroup.h \
+ netinet/in_systm.h paths.h poll.h pty.h regex.h \
+ security/pam_appl.h shadow.h stddef.h stdint.h \
+ strings.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h \
+ sys/poll.h sys/queue.h sys/select.h sys/stat.h \
+ sys/stropts.h sys/sysmacros.h sys/time.h \
+ sys/ttcompat.h sys/un.h time.h ttyent.h usersec.h \
+ util.h utime.h utmp.h utmpx.h)
+
+# Check for ALTDIRFUNC glob() extension
+AC_MSG_CHECKING(for GLOB_ALTDIRFUNC support)
+AC_EGREP_CPP(FOUNDIT,
+ [
+ #include <glob.h>
+ #ifdef GLOB_ALTDIRFUNC
+ FOUNDIT
+ #endif
+ ],
+ [
+ AC_DEFINE(GLOB_HAS_ALTDIRFUNC)
+ AC_MSG_RESULT(yes)
+ ],
+ [
+ AC_MSG_RESULT(no)
+ ]
+)
+
+# Check for g.gl_matchc glob() extension
+AC_MSG_CHECKING(for gl_matchc field in glob_t)
+AC_EGREP_CPP(FOUNDIT,
+ [
+ #include <glob.h>
+ int main(void){glob_t g; g.gl_matchc = 1;}
+ ],
+ [
+ AC_DEFINE(GLOB_HAS_GL_MATCHC)
+ AC_MSG_RESULT(yes)
+ ],
+ [
+ AC_MSG_RESULT(no)
+ ]
+)
+
+AC_MSG_CHECKING([whether struct dirent allocates space for d_name])
+AC_TRY_RUN(
+ [
+#include <sys/types.h>
+#include <dirent.h>
+int main(void){struct dirent d;return(sizeof(d.d_name)<=sizeof(char));}
+ ],
+ [AC_MSG_RESULT(yes)],
+ [
+ AC_MSG_RESULT(no)
+ AC_DEFINE(BROKEN_ONE_BYTE_DIRENT_D_NAME)
+ ]
+)
+
+# Check whether user wants S/Key support
+SKEY_MSG="no"
+AC_ARG_WITH(skey,
+ [ --with-skey[[=PATH]] Enable S/Key support
+ (optionally in PATH)],
+ [
+ if test "x$withval" != "xno" ; then
+
+ if test "x$withval" != "xyes" ; then
+ CPPFLAGS="$CPPFLAGS -I${withval}/include"
+ LDFLAGS="$LDFLAGS -L${withval}/lib"
+ fi
+
+ AC_DEFINE(SKEY)
+ LIBS="-lskey $LIBS"
+ SKEY_MSG="yes"
+
+ AC_CHECK_FUNC(skey_keyinfo,
+ [],
+ [
+ AC_MSG_ERROR([** Incomplete or missing s/key libraries.])
+ ])
+ fi
+ ]
+)
+
+# Check whether user wants TCP wrappers support
+TCPW_MSG="no"
+AC_ARG_WITH(tcp-wrappers,
+ [ --with-tcp-wrappers[[=PATH]] Enable tcpwrappers support
+ (optionally in PATH)],
+ [
+ if test "x$withval" != "xno" ; then
+ saved_LIBS="$LIBS"
+ saved_LDFLAGS="$LDFLAGS"
+ saved_CPPFLAGS="$CPPFLAGS"
+ if test -n "${withval}" -a "${withval}" != "yes"; then
+ if test -d "${withval}/lib"; then
+ if test -n "${need_dash_r}"; then
+ LDFLAGS="$LDFLAGS -L${withval}/lib -R${withval}/lib"
+ else
+ LDFLAGS="$LDFLAGS -L${withval}/lib"
+ fi
+ else
+ if test -n "${need_dash_r}"; then
+ LDFLAGS="$LDFLAGS -L${withval} -R${withval}"
+ else
+ LDFLAGS="$LDFLAGS -L${withval}"
+ fi
+ fi
+ if test -d "${withval}/include"; then
+ CPPFLAGS="$CPPFLAGS -I${withval}/include"
+ else
+ CPPFLAGS="$CPPFLAGS -I${withval}"
+ fi
+ fi
+ LIBS="-lwrap $LIBS"
+ AC_MSG_CHECKING(for libwrap)
+ AC_TRY_LINK(
+ [
+#include <tcpd.h>
+ int deny_severity = 0, allow_severity = 0;
+ ],
+ [hosts_access(0);],
+ [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(LIBWRAP)
+ TCPW_MSG="yes"
+ ],
+ [
+ AC_MSG_ERROR([*** libwrap missing])
+ ]
+ )
+ fi
+ ]
+)
+
+dnl Checks for library functions.
+AC_CHECK_FUNCS(arc4random atexit b64_ntop bcopy bindresvport_sa \
+ clock fchmod fchown freeaddrinfo futimes gai_strerror \
+ getaddrinfo getcwd getgrouplist getnameinfo getopt \
+ getrlimit getrusage getttyent glob inet_aton inet_ntoa \
+ inet_ntop innetgr login_getcapbool md5_crypt memmove \
+ mkdtemp on_exit openpty readpassphrase realpath \
+ rresvport_af setdtablesize setegid setenv seteuid \
+ setlogin setproctitle setresgid setreuid setrlimit \
+ setsid setvbuf sigaction sigvec snprintf strerror \
+ strlcat strlcpy strmode strsep sysconf tcgetpgrp utimes \
+ vhangup vsnprintf waitpid __b64_ntop _getpty)
+
+dnl IRIX and Solaris 2.5.1 have dirname() in libgen
+AC_CHECK_FUNCS(dirname, [AC_CHECK_HEADERS(libgen.h)] ,[
+ AC_CHECK_LIB(gen, dirname,[
+ AC_CACHE_CHECK([for broken dirname],
+ ac_cv_have_broken_dirname, [
+ save_LIBS="$LIBS"
+ LIBS="$LIBS -lgen"
+ AC_TRY_RUN(
+ [
+#include <libgen.h>
+#include <string.h>
+
+int main(int argc, char **argv) {
+ char *s, buf[32];
+
+ strncpy(buf,"/etc", 32);
+ s = dirname(buf);
+ if (!s || strncmp(s, "/", 32) != 0) {
+ exit(1);
+ } else {
+ exit(0);
+ }
+}
+ ],
+ [ ac_cv_have_broken_dirname="no" ],
+ [ ac_cv_have_broken_dirname="yes" ]
+ )
+ LIBS="$save_LIBS"
+ ])
+ if test "x$ac_cv_have_broken_dirname" = "xno" ; then
+ LIBS="$LIBS -lgen"
+ AC_DEFINE(HAVE_DIRNAME)
+ AC_CHECK_HEADERS(libgen.h)
+ fi
+ ])
+])
+
+dnl Checks for time functions
+AC_CHECK_FUNCS(gettimeofday time)
+dnl Checks for libutil functions
+AC_CHECK_HEADERS(libutil.h)
+AC_CHECK_FUNCS(login logout updwtmp logwtmp)
+dnl Checks for utmp functions
+AC_CHECK_FUNCS(endutent getutent getutid getutline pututline setutent)
+AC_CHECK_FUNCS(utmpname)
+dnl Checks for utmpx functions
+AC_CHECK_FUNCS(endutxent getutxent getutxid getutxline pututxline )
+AC_CHECK_FUNCS(setutxent utmpxname)
+
+AC_CHECK_FUNC(getuserattr,
+ [AC_DEFINE(HAVE_GETUSERATTR)],
+ [AC_CHECK_LIB(s, getuserattr, [LIBS="$LIBS -ls"; AC_DEFINE(HAVE_GETUSERATTR)])]
+)
+
+AC_CHECK_FUNC(login,
+ [AC_DEFINE(HAVE_LOGIN)],
+ [AC_CHECK_LIB(bsd, login, [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_LOGIN)])]
+)
+
+AC_CHECK_FUNC(daemon,
+ [AC_DEFINE(HAVE_DAEMON)],
+ [AC_CHECK_LIB(bsd, daemon, [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_DAEMON)])]
+)
+
+AC_CHECK_FUNC(getpagesize,
+ [AC_DEFINE(HAVE_GETPAGESIZE)],
+ [AC_CHECK_LIB(ucb, getpagesize, [LIBS="$LIBS -lucb"; AC_DEFINE(HAVE_GETPAGESIZE)])]
+)
+
+# Check for broken snprintf
+if test "x$ac_cv_func_snprintf" = "xyes" ; then
+ AC_MSG_CHECKING([whether snprintf correctly terminates long strings])
+ AC_TRY_RUN(
+ [
+#include <stdio.h>
+int main(void){char b[5];snprintf(b,5,"123456789");return(b[4]!='\0');}
+ ],
+ [AC_MSG_RESULT(yes)],
+ [
+ AC_MSG_RESULT(no)
+ AC_DEFINE(BROKEN_SNPRINTF)
+ AC_MSG_WARN([****** Your snprintf() function is broken, complain to your vendor])
+ ]
+ )
+fi
+
+AC_FUNC_GETPGRP
+
+# Check for PAM libs
+PAM_MSG="no"
+AC_ARG_WITH(pam,
+ [ --with-pam Enable PAM support ],
+ [
+ if test "x$withval" != "xno" ; then
+ if test "x$ac_cv_header_security_pam_appl_h" != "xyes" ; then
+ AC_MSG_ERROR([PAM headers not found])
+ fi
+
+ AC_CHECK_LIB(dl, dlopen, , )
+ AC_CHECK_LIB(pam, pam_set_item, , AC_MSG_ERROR([*** libpam missing]))
+ AC_CHECK_FUNCS(pam_getenvlist)
+
+ disable_shadow=yes
+ PAM_MSG="yes"
+
+ AC_DEFINE(USE_PAM)
+ fi
+ ]
+)
+
+# Check for older PAM
+if test "x$PAM_MSG" = "xyes" ; then
+ # Check PAM strerror arguments (old PAM)
+ 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)
+ PAM_MSG="yes (old library)"
+ ]
+ )
+fi
+
+# The big search for OpenSSL
+AC_ARG_WITH(ssl-dir,
+ [ --with-ssl-dir=PATH Specify path to OpenSSL installation ],
+ [
+ if test "x$withval" != "xno" ; then
+ tryssldir=$withval
+ fi
+ ]
+)
+
+saved_LIBS="$LIBS"
+saved_LDFLAGS="$LDFLAGS"
+saved_CPPFLAGS="$CPPFLAGS"
+if test "x$prefix" != "xNONE" ; then
+ tryssldir="$tryssldir $prefix"
+fi
+AC_CACHE_CHECK([for OpenSSL directory], ac_cv_openssldir, [
+ for ssldir in $tryssldir "" /usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/pkg /opt /opt/openssl ; do
+ CPPFLAGS="$saved_CPPFLAGS"
+ LDFLAGS="$saved_LDFLAGS"
+ LIBS="$saved_LIBS -lcrypto"
+
+ # Skip directories if they don't exist
+ if test ! -z "$ssldir" -a ! -d "$ssldir" ; then
+ continue;
+ fi
+ if test ! -z "$ssldir" -a "x$ssldir" != "x/usr"; then
+ # Try to use $ssldir/lib if it exists, otherwise
+ # $ssldir
+ if test -d "$ssldir/lib" ; then
+ LDFLAGS="-L$ssldir/lib $saved_LDFLAGS"
+ if test ! -z "$need_dash_r" ; then
+ LDFLAGS="-R$ssldir/lib $LDFLAGS"
+ fi
+ else
+ LDFLAGS="-L$ssldir $saved_LDFLAGS"
+ if test ! -z "$need_dash_r" ; then
+ LDFLAGS="-R$ssldir $LDFLAGS"
+ fi
+ fi
+ # Try to use $ssldir/include if it exists, otherwise
+ # $ssldir
+ if test -d "$ssldir/include" ; then
+ CPPFLAGS="-I$ssldir/include $saved_CPPFLAGS"
+ else
+ CPPFLAGS="-I$ssldir $saved_CPPFLAGS"
+ fi
+ fi
+
+ # Basic test to check for compatible version and correct linking
+ # *does not* test for RSA - that comes later.
+ AC_TRY_RUN(
+ [
+#include <string.h>
+#include <openssl/rand.h>
+int main(void)
+{
+ char a[2048];
+ memset(a, 0, sizeof(a));
+ RAND_add(a, sizeof(a), sizeof(a));
+ return(RAND_status() <= 0);
+}
+ ],
+ [
+ found_crypto=1
+ break;
+ ], []
+ )
+
+ if test ! -z "$found_crypto" ; then
+ break;
+ fi
+ done
+
+ if test -z "$found_crypto" ; then
+ AC_MSG_ERROR([Could not find working OpenSSL library, please install or check config.log])
+ fi
+ if test -z "$ssldir" ; then
+ ssldir="(system)"
+ fi
+
+ ac_cv_openssldir=$ssldir
+])
+
+if (test ! -z "$ac_cv_openssldir" && test "x$ac_cv_openssldir" != "x(system)") ; then
+ AC_DEFINE(HAVE_OPENSSL)
+ dnl Need to recover ssldir - test above runs in subshell
+ ssldir=$ac_cv_openssldir
+ if test ! -z "$ssldir" -a "x$ssldir" != "x/usr"; then
+ # Try to use $ssldir/lib if it exists, otherwise
+ # $ssldir
+ if test -d "$ssldir/lib" ; then
+ LDFLAGS="-L$ssldir/lib $saved_LDFLAGS"
+ if test ! -z "$need_dash_r" ; then
+ LDFLAGS="-R$ssldir/lib $LDFLAGS"
+ fi
+ else
+ LDFLAGS="-L$ssldir $saved_LDFLAGS"
+ if test ! -z "$need_dash_r" ; then
+ LDFLAGS="-R$ssldir $LDFLAGS"
+ fi
+ fi
+ # Try to use $ssldir/include if it exists, otherwise
+ # $ssldir
+ if test -d "$ssldir/include" ; then
+ CPPFLAGS="-I$ssldir/include $saved_CPPFLAGS"
+ else
+ CPPFLAGS="-I$ssldir $saved_CPPFLAGS"
+ fi
+ fi
+fi
+LIBS="$saved_LIBS -lcrypto"
+
+# Now test RSA support
+saved_LIBS="$LIBS"
+AC_MSG_CHECKING([for RSA support])
+for WANTS_RSAREF in "" 1 ; do
+ if test -z "$WANTS_RSAREF" ; then
+ LIBS="$saved_LIBS"
+ else
+ LIBS="$saved_LIBS -lRSAglue -lrsaref"
+ fi
+ AC_TRY_RUN([
+#include <string.h>
+#include <openssl/rand.h>
+#include <openssl/rsa.h>
+#include <openssl/bn.h>
+#include <openssl/sha.h>
+int main(void)
+{
+ int num; RSA *key; static unsigned char p_in[] = "blahblah";
+ unsigned char c[256], p[256];
+ memset(c, 0, sizeof(c)); RAND_add(c, sizeof(c), sizeof(c));
+ if ((key=RSA_generate_key(512, 3, NULL, NULL))==NULL) return(1);
+ num = RSA_public_encrypt(sizeof(p_in) - 1, p_in, c, key, RSA_PKCS1_PADDING);
+ return(-1 == RSA_private_decrypt(num, c, p, key, RSA_PKCS1_PADDING));
+}
+ ],
+ [
+ rsa_works=1
+ break;
+ ], [])
+done
+LIBS="$saved_LIBS"
+
+if test ! -z "$no_rsa" ; then
+ AC_MSG_RESULT(disabled)
+ RSA_MSG="disabled"
+else
+ if test -z "$rsa_works" ; then
+ AC_MSG_WARN([*** No RSA support found *** ])
+ RSA_MSG="no"
+ else
+ if test -z "$WANTS_RSAREF" ; then
+ AC_MSG_RESULT(yes)
+ RSA_MSG="yes"
+ else
+ RSA_MSG="yes (using RSAref)"
+ AC_MSG_RESULT(using RSAref)
+ LIBS="$LIBS -lcrypto -lRSAglue -lrsaref"
+ fi
+ fi
+fi
+
+# Some Linux systems (Slackware) need crypt() from libcrypt, *not* the
+# version in OpenSSL. Skip this for PAM
+if test "x$PAM_MSG" = "xno" -a "x$check_for_libcrypt_later" = "x1"; then
+ AC_CHECK_LIB(crypt, crypt, LIBS="$LIBS -lcrypt")
+fi
+
+# Cheap hack to ensure NEWS-OS libraries are arranged right.
+if test ! -z "$SONY" ; then
+ LIBS="$LIBS -liberty";
+fi
+
+# Checks for data types
+AC_CHECK_SIZEOF(char, 1)
+AC_CHECK_SIZEOF(short int, 2)
+AC_CHECK_SIZEOF(int, 4)
+AC_CHECK_SIZEOF(long int, 4)
+AC_CHECK_SIZEOF(long long int, 8)
+
+# More checks for data types
+AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int, [
+ AC_TRY_COMPILE(
+ [ #include <sys/types.h> ],
+ [ u_int a; a = 1;],
+ [ ac_cv_have_u_int="yes" ],
+ [ ac_cv_have_u_int="no" ]
+ )
+])
+if test "x$ac_cv_have_u_int" = "xyes" ; then
+ AC_DEFINE(HAVE_U_INT)
+ have_u_int=1
+fi
+
+AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t, [
+ AC_TRY_COMPILE(
+ [ #include <sys/types.h> ],
+ [ int8_t a; int16_t b; int32_t c; a = b = c = 1;],
+ [ ac_cv_have_intxx_t="yes" ],
+ [ ac_cv_have_intxx_t="no" ]
+ )
+])
+if test "x$ac_cv_have_intxx_t" = "xyes" ; then
+ AC_DEFINE(HAVE_INTXX_T)
+ have_intxx_t=1
+fi
+
+if (test -z "$have_intxx_t" && \
+ test "x$ac_cv_header_stdint_h" = "xyes")
+then
+ AC_MSG_CHECKING([for intXX_t types in stdint.h])
+ AC_TRY_COMPILE(
+ [ #include <stdint.h> ],
+ [ int8_t a; int16_t b; int32_t c; a = b = c = 1;],
+ [
+ AC_DEFINE(HAVE_INTXX_T)
+ AC_MSG_RESULT(yes)
+ ],
+ [ AC_MSG_RESULT(no) ]
+ )
+fi
+
+AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t, [
+ AC_TRY_COMPILE(
+ [ #include <sys/types.h> ],
+ [ int64_t a; a = 1;],
+ [ ac_cv_have_int64_t="yes" ],
+ [ ac_cv_have_int64_t="no" ]
+ )
+])
+if test "x$ac_cv_have_int64_t" = "xyes" ; then
+ AC_DEFINE(HAVE_INT64_T)
+ have_int64_t=1
+fi
+
+if test -z "$have_int64_t" ; then
+ AC_MSG_CHECKING([for int64_t type in sys/socket.h])
+ AC_TRY_COMPILE(
+ [ #include <sys/socket.h> ],
+ [ int64_t a; a = 1],
+ [
+ AC_DEFINE(HAVE_INT64_T)
+ AC_MSG_RESULT(yes)
+ ],
+ [ AC_MSG_RESULT(no) ]
+ )
+fi
+
+AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t, [
+ AC_TRY_COMPILE(
+ [ #include <sys/types.h> ],
+ [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;],
+ [ ac_cv_have_u_intxx_t="yes" ],
+ [ ac_cv_have_u_intxx_t="no" ]
+ )
+])
+if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
+ AC_DEFINE(HAVE_U_INTXX_T)
+ have_u_intxx_t=1
+fi
+
+if test -z "$have_u_intxx_t" ; then
+ AC_MSG_CHECKING([for u_intXX_t types in sys/socket.h])
+ AC_TRY_COMPILE(
+ [ #include <sys/socket.h> ],
+ [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;],
+ [
+ AC_DEFINE(HAVE_U_INTXX_T)
+ AC_MSG_RESULT(yes)
+ ],
+ [ AC_MSG_RESULT(no) ]
+ )
+fi
+
+AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t, [
+ AC_TRY_COMPILE(
+ [ #include <sys/types.h> ],
+ [ u_int64_t a; a = 1;],
+ [ ac_cv_have_u_int64_t="yes" ],
+ [ ac_cv_have_u_int64_t="no" ]
+ )
+])
+if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
+ AC_DEFINE(HAVE_U_INT64_T)
+ have_u_int64_t=1
+fi
+
+if test -z "$have_u_intxx_t" ; then
+ AC_CACHE_CHECK([for uintXX_t types], ac_cv_have_uintxx_t, [
+ AC_TRY_COMPILE(
+ [
+#include <sys/types.h>
+ ],
+ [ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1; ],
+ [ ac_cv_have_uintxx_t="yes" ],
+ [ ac_cv_have_uintxx_t="no" ]
+ )
+ ])
+ if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
+ AC_DEFINE(HAVE_UINTXX_T)
+ fi
+fi
+
+if test -z "$have_uintxx_t" ; then
+ AC_MSG_CHECKING([for uintXX_t types in stdint.h])
+ AC_TRY_COMPILE(
+ [ #include <stdint.h> ],
+ [ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1;],
+ [
+ AC_DEFINE(HAVE_UINTXX_T)
+ AC_MSG_RESULT(yes)
+ ],
+ [ AC_MSG_RESULT(no) ]
+ )
+fi
+
+if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
+ test "x$ac_cv_header_sys_bitypes_h" = "xyes")
+then
+ AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
+ AC_TRY_COMPILE(
+ [
+#include <sys/bitypes.h>
+ ],
+ [
+ int8_t a; int16_t b; int32_t c;
+ u_int8_t e; u_int16_t f; u_int32_t g;
+ a = b = c = e = f = g = 1;
+ ],
+ [
+ AC_DEFINE(HAVE_U_INTXX_T)
+ AC_DEFINE(HAVE_INTXX_T)
+ AC_MSG_RESULT(yes)
+ ],
+ [AC_MSG_RESULT(no)]
+ )
+fi
+
+
+AC_CACHE_CHECK([for u_char], ac_cv_have_u_char, [
+ AC_TRY_COMPILE(
+ [
+#include <sys/types.h>
+ ],
+ [ u_char foo; foo = 125; ],
+ [ ac_cv_have_u_char="yes" ],
+ [ ac_cv_have_u_char="no" ]
+ )
+])
+if test "x$ac_cv_have_u_char" = "xyes" ; then
+ AC_DEFINE(HAVE_U_CHAR)
+fi
+
+TYPE_SOCKLEN_T
+
+AC_CACHE_CHECK([for size_t], ac_cv_have_size_t, [
+ AC_TRY_COMPILE(
+ [
+#include <sys/types.h>
+ ],
+ [ size_t foo; foo = 1235; ],
+ [ ac_cv_have_size_t="yes" ],
+ [ ac_cv_have_size_t="no" ]
+ )
+])
+if test "x$ac_cv_have_size_t" = "xyes" ; then
+ AC_DEFINE(HAVE_SIZE_T)
+fi
+
+AC_CACHE_CHECK([for ssize_t], ac_cv_have_ssize_t, [
+ AC_TRY_COMPILE(
+ [
+#include <sys/types.h>
+ ],
+ [ ssize_t foo; foo = 1235; ],
+ [ ac_cv_have_ssize_t="yes" ],
+ [ ac_cv_have_ssize_t="no" ]
+ )
+])
+if test "x$ac_cv_have_ssize_t" = "xyes" ; then
+ AC_DEFINE(HAVE_SSIZE_T)
+fi
+
+AC_CACHE_CHECK([for clock_t], ac_cv_have_clock_t, [
+ AC_TRY_COMPILE(
+ [
+#include <time.h>
+ ],
+ [ clock_t foo; foo = 1235; ],
+ [ ac_cv_have_clock_t="yes" ],
+ [ ac_cv_have_clock_t="no" ]
+ )
+])
+if test "x$ac_cv_have_clock_t" = "xyes" ; then
+ AC_DEFINE(HAVE_CLOCK_T)
+fi
+
+AC_CACHE_CHECK([for sa_family_t], ac_cv_have_sa_family_t, [
+ AC_TRY_COMPILE(
+ [
+#include <sys/types.h>
+#include <sys/socket.h>
+ ],
+ [ sa_family_t foo; foo = 1235; ],
+ [ ac_cv_have_sa_family_t="yes" ],
+ [ AC_TRY_COMPILE(
+ [
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+ ],
+ [ sa_family_t foo; foo = 1235; ],
+ [ ac_cv_have_sa_family_t="yes" ],
+
+ [ ac_cv_have_sa_family_t="no" ]
+ )]
+ )
+])
+if test "x$ac_cv_have_sa_family_t" = "xyes" ; then
+ AC_DEFINE(HAVE_SA_FAMILY_T)
+fi
+
+AC_CACHE_CHECK([for pid_t], ac_cv_have_pid_t, [
+ AC_TRY_COMPILE(
+ [
+#include <sys/types.h>
+ ],
+ [ pid_t foo; foo = 1235; ],
+ [ ac_cv_have_pid_t="yes" ],
+ [ ac_cv_have_pid_t="no" ]
+ )
+])
+if test "x$ac_cv_have_pid_t" = "xyes" ; then
+ AC_DEFINE(HAVE_PID_T)
+fi
+
+AC_CACHE_CHECK([for mode_t], ac_cv_have_mode_t, [
+ AC_TRY_COMPILE(
+ [
+#include <sys/types.h>
+ ],
+ [ mode_t foo; foo = 1235; ],
+ [ ac_cv_have_mode_t="yes" ],
+ [ ac_cv_have_mode_t="no" ]
+ )
+])
+if test "x$ac_cv_have_mode_t" = "xyes" ; then
+ AC_DEFINE(HAVE_MODE_T)
+fi
+
+
+AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_have_struct_sockaddr_storage, [
+ AC_TRY_COMPILE(
+ [
+#include <sys/types.h>
+#include <sys/socket.h>
+ ],
+ [ struct sockaddr_storage s; ],
+ [ ac_cv_have_struct_sockaddr_storage="yes" ],
+ [ ac_cv_have_struct_sockaddr_storage="no" ]
+ )
+])
+if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then
+ AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE)
+fi
+
+AC_CACHE_CHECK([for struct sockaddr_in6], ac_cv_have_struct_sockaddr_in6, [
+ AC_TRY_COMPILE(
+ [
+#include <sys/types.h>
+#include <netinet/in.h>
+ ],
+ [ struct sockaddr_in6 s; s.sin6_family = 0; ],
+ [ ac_cv_have_struct_sockaddr_in6="yes" ],
+ [ ac_cv_have_struct_sockaddr_in6="no" ]
+ )
+])
+if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then
+ AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6)
+fi
+
+AC_CACHE_CHECK([for struct in6_addr], ac_cv_have_struct_in6_addr, [
+ AC_TRY_COMPILE(