3 AC_CONFIG_HEADER(config.h)
11 AC_CHECK_PROG(AR, ar, ar)
12 AC_PATH_PROG(PERL, perl)
15 if test -z "$LD" ; then
22 if test "$GCC" = "yes"; then
23 CFLAGS="$CFLAGS -Wall"
26 # Check for some target-specific stuff
30 CFLAGS="$CFLAGS -I/usr/local/include"
31 LDFLAGS="$LDFLAGS -L/usr/local/lib"
32 if test "$LD" != "gcc" -a -z "$blibpath"; then
33 blibpath="/usr/lib:/lib:/usr/local/lib"
35 AC_DEFINE(BROKEN_GETADDRINFO)
38 if test -z "$GCC"; then
41 CFLAGS="$CFLAGS -D_HPUX_SOURCE"
42 CFLAGS="$CFLAGS -I/usr/local/include"
43 LDFLAGS="$LDFLAGS -L/usr/local/lib"
44 AC_DEFINE(IPADDR_IN_DISPLAY)
46 AC_MSG_CHECKING(for HPUX trusted system password database)
47 if test -f /tcb/files/auth/system/default; then
49 AC_DEFINE(HAVE_HPUX_TRUSTED_SYSTEM_PW)
51 AC_MSG_WARN([This configuration is untested])
54 AC_DEFINE(DISABLE_SHADOW)
60 CFLAGS="$CFLAGS -I/usr/local/include"
61 LDFLAGS="$LDFLAGS -L/usr/local/lib"
67 CFLAGS="$CFLAGS -I/usr/local/include"
68 LDFLAGS="$LDFLAGS -L/usr/local/lib"
70 AC_MSG_WARN([*** Irix 6.x is not tested, please report you experiences *** ])
76 AC_DEFINE(DONT_TRY_OTHER_AF)
77 inet6_default_4in6=yes
83 CFLAGS="$CFLAGS -I/usr/local/include"
84 LDFLAGS="$LDFLAGS -L/usr/local/lib -R/usr/local/lib -L/usr/ucblib -R/usr/ucblib"
89 CFLAGS="$CFLAGS -I/usr/local/include"
90 LDFLAGS="$LDFLAGS -L/usr/local/lib"
94 LIBS="$LIBS -lgen -lsocket"
98 # Checks for libraries.
99 AC_CHECK_LIB(z, deflate, ,AC_MSG_ERROR([*** zlib missing - please install first ***]))
100 AC_CHECK_LIB(util, login, AC_DEFINE(HAVE_LIBUTIL_LOGIN) LIBS="$LIBS -lutil")
102 if test -z "$no_libsocket" ; then
103 AC_CHECK_LIB(nsl, yp_match, , )
105 if test -z "$no_libnsl" ; then
106 AC_CHECK_LIB(socket, main, , )
109 # Checks for header files.
110 AC_CHECK_HEADERS(bstring.h endian.h lastlog.h login.h maillock.h netdb.h netgroup.h paths.h poll.h pty.h shadow.h security/pam_appl.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h sys/poll.h sys/select.h sys/stropts.h sys/sysmacros.h sys/time.h sys/ttcompat.h stddef.h util.h utmp.h utmpx.h)
112 # Checks for library functions.
113 AC_CHECK_FUNCS(arc4random bindresvport_af freeaddrinfo gai_strerror getaddrinfo getnameinfo innetgr md5_crypt mkdtemp openpty rresvport_af setenv seteuid setlogin setproctitle setreuid snprintf strlcat strlcpy updwtmpx vsnprintf _getpty)
116 [AC_DEFINE(HAVE_LOGIN)],
117 [AC_CHECK_LIB(bsd, login, [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_LOGIN)])]
120 AC_CHECK_FUNC(daemon,
121 [AC_DEFINE(HAVE_DAEMON)],
122 [AC_CHECK_LIB(bsd, daemon, [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_DAEMON)])]
125 AC_CHECK_FUNC(getpagesize,
126 [AC_DEFINE(HAVE_GETPAGESIZE)],
127 [AC_CHECK_LIB(ucb, getpagesize, [LIBS="$LIBS -lucb"; AC_DEFINE(HAVE_GETPAGESIZE)])]
131 [ --without-pam Disable PAM support ],
133 if test "x$withval" = "xno" ; then
135 AC_DEFINE(DISABLE_PAM)
139 if test -z "$no_pam" -a "x$ac_cv_header_security_pam_appl_h" = "xyes" ; then
140 AC_CHECK_LIB(dl, dlopen, , )
143 # Check PAM strerror arguments (old PAM)
144 AC_MSG_CHECKING([whether pam_strerror takes only one argument])
148 #include <security/pam_appl.h>
150 [(void)pam_strerror((pam_handle_t *)NULL, -1);],
153 AC_DEFINE(HAVE_OLD_PAM)
159 # The big search for OpenSSL
161 [ --with-ssl-dir=PATH Specify path to OpenSSL installation ],
163 if test "x$withval" != "$xno" ; then
170 saved_LDFLAGS="$LDFLAGS"
171 saved_CFLAGS="$CFLAGS"
172 if test "x$prefix" != "xNONE" ; then
173 tryssldir="$tryssldir $prefix"
175 AC_MSG_CHECKING([for OpenSSL/SSLeay directory])
176 for ssldir in "" $tryssldir /usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/pkg /opt /opt/openssl ; do
177 if test ! -z "$ssldir" ; then
178 LDFLAGS="$saved_LDFLAGS -L$ssldir/lib -L$ssldir"
179 CFLAGS="$saved_CFLAGS -I$ssldir/include"
180 if test ! -z "$need_dash_r" ; then
181 LDFLAGS="$LDFLAGS -R$ssldir/lib -R$ssldir"
184 LDFLAGS="$saved_LDFLAGS"
187 for WANTS_RSAREF in "" 1 ; do
189 if test -z "$WANTS_RSAREF" ; then
190 LIBS="$saved_LIBS -lcrypto"
192 LIBS="$saved_LIBS -lcrypto -lRSAglue -lrsaref"
197 #include <openssl/rsa.h>
198 #include <openssl/bn.h>
199 #include <openssl/sha.h>
201 {RSA *key; char seed[2048];memset(seed, 0, sizeof(seed));
202 RAND_seed(seed, sizeof(seed));key=RSA_generate_key(32,3,NULL,NULL);
206 AC_DEFINE(HAVE_OPENSSL)
217 {RSA *key; char seed[2048];memset(seed, 0, sizeof(seed));
218 RAND_seed(seed, sizeof(seed));key=RSA_generate_key(32,3,NULL,NULL);
229 if test ! -z "$found_crypto" ; then
234 if test -z "$found_crypto" ; then
235 AC_MSG_ERROR([Could not find working SSLeay / OpenSSL libraries, please install])
237 if test -z "$ssldir" ; then
240 CFLAGS="$saved_CFLAGS -I$ssldir/include"
241 LDFLAGS="$saved_LDFLAGS -L$ssldir/lib -L$ssldir"
242 if test ! -z "$need_dash_r" ; then
243 LDFLAGS="$LDFLAGS -R$ssldir/lib -R$ssldir"
245 if test ! -z "$blibpath" ; then
246 blibpath="$blibpath:$ssldir:$ssldir/lib"
249 if test -z "$WANTS_RSAREF" ; then
250 LIBS="$saved_LIBS -lcrypto"
252 LIBS="$saved_LIBS -lcrypto -lRSAglue -lrsaref"
254 AC_MSG_RESULT($ssldir)
256 # Checks for data types
257 AC_CHECK_SIZEOF(char, 1)
258 AC_CHECK_SIZEOF(short int, 2)
259 AC_CHECK_SIZEOF(int, 4)
260 AC_CHECK_SIZEOF(long int, 4)
261 AC_CHECK_SIZEOF(long long int, 8)
263 # More checks for data types
264 AC_MSG_CHECKING([for intXX_t types])
266 [#include <sys/types.h>],
267 [int8_t a; int16_t b; int32_t c; int64_t d; a = b = c = d = 1;],
269 AC_DEFINE(HAVE_INTXX_T)
276 AC_MSG_CHECKING([for u_intXX_t types])
278 [#include <sys/types.h>],
279 [u_int8_t a; u_int16_t b; u_int32_t c; u_int64_t d; a = b = c = d = 1;],
281 AC_DEFINE(HAVE_U_INTXX_T)
288 if test -z "$have_u_intxx_t" -o -z "$have_intxx_t" -a \
289 "x$ac_cv_header_sys_bitypes_h" = "xyes"
291 AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
293 [#include <sys/bitypes.h>],
295 int8_t a; int16_t b; int32_t c; int64_t d;
296 u_int8_t e; u_int16_t f; u_int32_t g; u_int64_t h;
297 a = b = c = d = e = f = g = h = 1;
300 AC_DEFINE(HAVE_U_INTXX_T)
301 AC_DEFINE(HAVE_INTXX_T)
308 if test -z "$have_u_intxx_t" ; then
309 AC_MSG_CHECKING([for uintXX_t types])
311 [#include <sys/types.h>],
312 [uint8_t a; uint16_t b; uint32_t c; uint64_t d; a = b = c = d = 1;],
314 AC_DEFINE(HAVE_UINTXX_T)
321 AC_MSG_CHECKING([for socklen_t])
324 #include <sys/types.h>
325 #include <sys/socket.h>
327 [socklen_t foo; foo = 1235;],
329 AC_DEFINE(HAVE_SOCKLEN_T)
335 AC_MSG_CHECKING([for size_t])
337 [#include <sys/types.h>],
338 [size_t foo; foo = 1235;],
340 AC_DEFINE(HAVE_SIZE_T)
346 AC_MSG_CHECKING([for struct sockaddr_storage])
349 #include <sys/types.h>
350 #include <sys/socket.h>
352 [struct sockaddr_storage s;],
354 AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE)
360 AC_MSG_CHECKING([for struct sockaddr_in6])
362 [#include <netinet/in.h>],
363 [struct sockaddr_in6 s; s.sin6_family = 0;],
365 AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6)
371 AC_MSG_CHECKING([for struct in6_addr])
373 [#include <netinet/in.h>],
374 [struct in6_addr s; s.s6_addr[0] = 0;],
376 AC_DEFINE(HAVE_STRUCT_IN6_ADDR)
382 AC_MSG_CHECKING([for struct addrinfo])
385 #include <sys/types.h>
386 #include <sys/socket.h>
389 [struct addrinfo s; s.ai_flags = AI_PASSIVE;],
391 AC_DEFINE(HAVE_STRUCT_ADDRINFO)
397 # Checks for structure members
398 AC_MSG_CHECKING([whether utmp.h has ut_host field])
399 AC_EGREP_HEADER(ut_host, utmp.h,
400 [AC_DEFINE(HAVE_HOST_IN_UTMP) AC_MSG_RESULT(yes); ],
403 AC_MSG_CHECKING([whether utmpx.h has ut_host field])
404 AC_EGREP_HEADER(ut_host, utmpx.h,
405 [AC_DEFINE(HAVE_HOST_IN_UTMPX) AC_MSG_RESULT(yes); ],
408 AC_MSG_CHECKING([whether utmpx.h has syslen field])
409 AC_EGREP_HEADER(syslen, utmpx.h,
410 [AC_DEFINE(HAVE_SYSLEN_IN_UTMPX) AC_MSG_RESULT(yes); ],
413 AC_MSG_CHECKING([whether utmp.h has ut_pid field])
414 AC_EGREP_HEADER(ut_pid, utmp.h,
415 [AC_DEFINE(HAVE_PID_IN_UTMP) AC_MSG_RESULT(yes); ],
418 AC_MSG_CHECKING([whether utmp.h has ut_type field])
419 AC_EGREP_HEADER(ut_type, utmp.h,
420 [AC_DEFINE(HAVE_TYPE_IN_UTMP) AC_MSG_RESULT(yes); ],
423 AC_MSG_CHECKING([whether utmp.h has ut_tv field])
424 AC_EGREP_HEADER(ut_tv, utmp.h,
425 [AC_DEFINE(HAVE_TV_IN_UTMP) AC_MSG_RESULT(yes); ],
428 AC_MSG_CHECKING([whether utmp.h has ut_id field])
429 AC_EGREP_HEADER(ut_id, utmp.h,
430 [AC_DEFINE(HAVE_ID_IN_UTMP) AC_MSG_RESULT(yes); ],
433 AC_MSG_CHECKING([whether utmp.h has ut_addr field])
434 AC_EGREP_HEADER(ut_addr, utmp.h,
435 [AC_DEFINE(HAVE_ADDR_IN_UTMP) AC_MSG_RESULT(yes); ],
438 AC_MSG_CHECKING([whether utmpx.h has ut_addr field])
439 AC_EGREP_HEADER(ut_addr, utmpx.h,
440 [AC_DEFINE(HAVE_ADDR_IN_UTMPX) AC_MSG_RESULT(yes); ],
443 AC_MSG_CHECKING([whether utmp.h has ut_addr_v6 field])
444 AC_EGREP_HEADER(ut_addr_v6, utmp.h,
445 [AC_DEFINE(HAVE_ADDR_V6_IN_UTMP) AC_MSG_RESULT(yes); ],
448 AC_MSG_CHECKING([whether utmpx.h has ut_addr_v6 field])
449 AC_EGREP_HEADER(ut_addr_v6, utmpx.h,
450 [AC_DEFINE(HAVE_ADDR_V6_IN_UTMPX) AC_MSG_RESULT(yes); ],
454 AC_MSG_CHECKING([whether struct sockaddr_storage has ss_family field])
457 #include <sys/types.h>
458 #include <sys/socket.h>
460 [struct sockaddr_storage s; s.ss_family = 1;],
462 AC_DEFINE(HAVE_SS_FAMILY_IN_SS)
467 AC_MSG_CHECKING([whether struct sockaddr_storage has __ss_family field])
470 #include <sys/types.h>
471 #include <sys/socket.h>
473 [struct sockaddr_storage s; s.__ss_family = 1;],
475 AC_DEFINE(HAVE___SS_FAMILY_IN_SS)
481 AC_MSG_CHECKING([whether libc defines __progname])
483 [extern char *__progname; printf("%s", __progname);],
485 AC_DEFINE(HAVE___PROGNAME)
493 # Looking for programs, paths and files
495 [ --with-rsh=PATH Specify path to remote shell program ],
497 if test "x$withval" != "$no" ; then
498 AC_DEFINE_UNQUOTED(RSH_PATH, "$withval")
502 AC_PATH_PROG(rsh_path, rsh)
507 [ --with-xauth=PATH Specify path to xauth program ],
509 if test "x$withval" != "$xno" ; then
510 AC_DEFINE_UNQUOTED(XAUTH_PATH, "$withval")
514 AC_PATH_PROG(xauth_path, xauth)
515 if test ! -z "$xauth_path" -a -x "/usr/openwin/bin/xauth" ; then
516 xauth_path="/usr/openwin/bin/xauth"
521 if test ! -z "$xauth_path" ; then
522 AC_DEFINE_UNQUOTED(XAUTH_PATH, "$xauth_path")
524 if test ! -z "$rsh_path" ; then
525 AC_DEFINE_UNQUOTED(RSH_PATH, "$rsh_path")
528 # Check for mail directory (last resort if we cannot get it from headers)
529 if test ! -z "$MAIL" ; then
530 maildir=`dirname $MAIL`
531 AC_DEFINE_UNQUOTED(MAIL_DIRECTORY, "$maildir")
534 # Look for lastlog location
536 [ --with-lastlog=FILE Location of lastlog file],
538 if test "x$withval" = "xno" ; then
539 AC_DEFINE(DISABLE_LASTLOG)
541 AC_DEFINE_UNQUOTED(LASTLOG_LOCATION, "$withval")
545 AC_MSG_CHECKING([location of lastlog file])
546 for lastlog in /var/log/lastlog /var/adm/lastlog /usr/adm/lastlog /etc/security/lastlog ; do
547 if test -f $lastlog ; then
551 if test -d $lastlog ; then
556 if test -z "$gotlastlog" ; then
557 AC_MSG_RESULT(not found)
560 if test "x$gotlastlog" = "xdir" ; then
561 AC_MSG_RESULT(${lastlog}/)
562 AC_DEFINE(LASTLOG_IS_DIR)
564 AC_MSG_RESULT($lastlog)
565 AC_DEFINE_UNQUOTED(LASTLOG_LOCATION, "$lastlog")
571 if test ! -z "$nolastlog" ; then
572 AC_MSG_WARN([*** Disabling lastlog support *** ])
573 AC_DEFINE(DISABLE_LASTLOG)
576 if test -z "$no_dev_ptmx" ; then
577 AC_CHECK_FILE("/dev/ptmx",
579 AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX)
584 AC_CHECK_FILE("/dev/ptc",
586 AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC)
591 # Options from here on. Some of these are preset by platform above
593 # Check for user-specified random device, otherwise check /dev/urandom
595 [ --with-random=FILE read randomness from FILE (default=/dev/urandom)],
597 RANDOM_POOL="$withval";
598 AC_DEFINE_UNQUOTED(RANDOM_POOL, "$RANDOM_POOL")
601 # Check for random device
602 AC_CHECK_FILE("/dev/urandom",
604 RANDOM_POOL="/dev/urandom";
605 AC_SUBST(RANDOM_POOL)
606 AC_DEFINE_UNQUOTED(RANDOM_POOL, "$RANDOM_POOL")
612 # Check for EGD pool file
613 AC_ARG_WITH(egd-pool,
614 [ --with-egd-pool=FILE read randomness from EGD pool FILE (default none)],
616 RANDOM_POOL="$withval";
618 AC_SUBST(RANDOM_POOL)
619 AC_DEFINE_UNQUOTED(RANDOM_POOL, "$RANDOM_POOL")
623 # Make sure we have some random number support
624 if test -z "$RANDOM_POOL" -a -z "$EGD_POOL"; then
625 AC_MSG_ERROR([No random device found, and no EGD random pool specified])
629 [ --with-catman=man|cat Install preformatted manpages[no]],
632 if test x"$withval" != x"yes" ; then
638 if test -z "$MANTYPE" ; then
639 MANTYPE='$(TROFFMAN)'
647 # Check whether user wants Kerberos support
648 AC_ARG_WITH(kerberos4,
649 [ --with-kerberos4=PATH Enable Kerberos 4 support],
651 if test "x$withval" != "xno" ; then
653 if test "x$withval" != "$xyes" ; then
654 CFLAGS="$CFLAGS -I${withval}/include"
655 LDFLAGS="$LDFLAGS -L${withval}/lib"
656 if test ! -z "$need_dash_r" ; then
657 LDFLAGS="$LDFLAGS -R${withval}/lib"
659 if test ! -z "$blibpath" ; then
660 blibpath="$blibpath:${withval}/lib"
663 if test -d /usr/include/kerberosIV ; then
664 CFLAGS="$CFLAGS -I/usr/include/kerberosIV"
668 AC_CHECK_HEADERS(krb.h)
669 AC_CHECK_LIB(krb, main)
670 if test "$ac_cv_header_krb_h" != yes; then
671 AC_MSG_WARN([Cannot find krb.h, build may fail])
673 if test "$ac_cv_lib_krb_main" != yes; then
674 AC_MSG_WARN([Cannot find libkrb, build may fail])
678 AC_CHECK_LIB(resolv, dn_expand, , )
685 # Check whether user wants AFS support
687 [ --with-afs=PATH Enable AFS support],
689 if test "x$withval" != "xno" ; then
691 if test "x$withval" != "$xyes" ; then
692 CFLAGS="$CFLAGS -I${withval}/include"
693 LFLAGS="$LFLAGS -L${withval}/lib"
696 if test -z "$KRB4" ; then
697 AC_MSG_WARN([AFS requires Kerberos IV support, build may fail])
701 if test ! -z "$AFS_LIBS" ; then
702 LIBS="$LIBS $AFS_LIBS"
710 # Check whether user wants S/Key support
712 [ --with-skey Enable S/Key support],
714 if test "x$withval" != "xno" ; then
721 # Check whether user wants TCP wrappers support
722 AC_ARG_WITH(tcp-wrappers,
723 [ --with-tcp-wrappers Enable tcpwrappers support],
725 if test "x$withval" != "xno" ; then
728 AC_MSG_CHECKING(for libwrap)
732 int deny_severity = 0, allow_severity = 0;
741 AC_MSG_WARN([*** libwrap missing - tcpwrapper support disabled ***])
749 # Check whether to enable MD5 passwords
750 AC_ARG_WITH(md5-passwords,
751 [ --with-md5-passwords Enable use of MD5 passwords],
753 if test "x$withval" != "xno" ; then
754 AC_DEFINE(HAVE_MD5_PASSWORDS)
759 # Check whether to enable utmpx support
761 [ --with-utmpx Enable utmpx support],
763 if test "x$withval" != "xno" ; then
769 # Whether to disable shadow password support
771 [ --without-shadow Disable shadow password support],
773 if test "x$withval" = "xno" ; then
774 AC_DEFINE(DISABLE_SHADOW)
779 # Use ip address instead of hostname in $DISPLAY
780 AC_ARG_WITH(ipaddr-display,
781 [ --with-ipaddr-display Use ip address instead of hostname in \$DISPLAY],
783 if test "x$withval" = "xno" ; then
784 AC_DEFINE(IPADDR_IN_DISPLAY)
789 # Whether to mess with the default path
790 AC_ARG_WITH(default-path,
791 [ --with-default-path=PATH Specify default \$PATH environment for server],
793 if test "x$withval" != "xno" ; then
794 AC_DEFINE_UNQUOTED(USER_PATH, "$withval")
799 # Whether to force IPv4 by default (needed on broken glibc Linux)
800 AC_ARG_WITH(ipv4-default,
801 [ --with-ipv4-default Use IPv4 by connections unless '-6' specified],
803 if test "x$withval" != "xno" ; then
804 AC_DEFINE(IPV4_DEFAULT)
809 AC_MSG_CHECKING([to convert IPv4 in IPv6-mapped addresses])
811 [ --with-4in6 Check for and convert IPv4 in IPv6 mapped addresses],
813 if test "x$withval" != "xno" ; then
815 AC_DEFINE(IPV4_IN_IPV6)
820 if test "x$inet6_default_4in6" = "xyes"; then
821 AC_MSG_RESULT([yes (default)])
822 AC_DEFINE(IPV4_IN_IPV6)
824 AC_MSG_RESULT([no (default)])
829 # Where to place sshd.pid
832 [ --with-pid-dir=PATH Specify location of ssh.pid file],
834 if test "x$withval" != "xno" ; then
839 AC_DEFINE_UNQUOTED(PIDDIR, "$piddir")
842 if test ! -z "$blibpath" ; then
843 LDFLAGS="$LDFLAGS -blibpath:$blibpath"
844 AC_MSG_WARN([Please check and edit -blibpath in LDFLAGS in Makefile])