]> andersk Git - gssapi-openssh.git/blob - openssh/configure.ac
Import of OpenSSH 3.3p1
[gssapi-openssh.git] / openssh / configure.ac
1 # $Id$
2
3 AC_INIT
4 AC_CONFIG_SRCDIR([ssh.c])
5
6 AC_CONFIG_HEADER(config.h)
7 AC_PROG_CC
8 AC_CANONICAL_HOST
9 AC_C_BIGENDIAN
10
11 # Checks for programs.
12 AC_PROG_CPP
13 AC_PROG_RANLIB
14 AC_PROG_INSTALL
15 AC_PATH_PROG(AR, ar)
16 AC_PATH_PROGS(PERL, perl5 perl)
17 AC_SUBST(PERL)
18 AC_PATH_PROG(ENT, ent)
19 AC_SUBST(ENT)
20 AC_PATH_PROGS(FILEPRIV, filepriv, true, /sbin:/usr/sbin)
21 AC_PATH_PROG(TEST_MINUS_S_SH, bash)
22 AC_PATH_PROG(TEST_MINUS_S_SH, ksh)
23 AC_PATH_PROG(TEST_MINUS_S_SH, sh)
24 AC_PATH_PROG(SH, sh)
25
26 # System features
27 AC_SYS_LARGEFILE
28
29 if test -z "$AR" ; then
30         AC_MSG_ERROR([*** 'ar' missing, please install or fix your \$PATH ***])
31 fi
32
33 # Use LOGIN_PROGRAM from environment if possible
34 if test ! -z "$LOGIN_PROGRAM" ; then
35         AC_DEFINE_UNQUOTED(LOGIN_PROGRAM_FALLBACK, "$LOGIN_PROGRAM")
36 else
37         # Search for login
38         AC_PATH_PROG(LOGIN_PROGRAM_FALLBACK, login)
39         if test ! -z "$LOGIN_PROGRAM_FALLBACK" ; then
40                 AC_DEFINE_UNQUOTED(LOGIN_PROGRAM_FALLBACK, "$LOGIN_PROGRAM_FALLBACK")
41         fi
42 fi
43
44 if test -z "$LD" ; then
45         LD=$CC
46 fi
47 AC_SUBST(LD)
48         
49 AC_C_INLINE
50 if test "$GCC" = "yes" || test "$GCC" = "egcs"; then 
51         CFLAGS="$CFLAGS -Wall -Wpointer-arith -Wno-uninitialized"
52 fi
53
54 # Check for some target-specific stuff
55 case "$host" in
56 *-*-aix*)
57         AFS_LIBS="-lld"
58         CPPFLAGS="$CPPFLAGS -I/usr/local/include"
59         LDFLAGS="$LDFLAGS -L/usr/local/lib"
60         if (test "$LD" != "gcc" && test -z "$blibpath"); then
61                 AC_MSG_CHECKING([if linkage editor ($LD) accepts -blibpath])
62                 saved_LDFLAGS="$LDFLAGS"
63                 LDFLAGS="$LDFLAGS -blibpath:/usr/lib:/lib:/usr/local/lib"
64                 AC_TRY_LINK([],
65                         [],
66                         [
67                                 AC_MSG_RESULT(yes)
68                                 blibpath="/usr/lib:/lib:/usr/local/lib"
69                         ],
70                         [ AC_MSG_RESULT(no) ]
71                 )
72                 LDFLAGS="$saved_LDFLAGS"
73         fi
74         AC_CHECK_FUNC(authenticate, [AC_DEFINE(WITH_AIXAUTHENTICATE)])
75         AC_DEFINE(BROKEN_GETADDRINFO)
76         AC_DEFINE(BROKEN_REALPATH)
77         dnl AIX handles lastlog as part of its login message
78         AC_DEFINE(DISABLE_LASTLOG)
79         ;;
80 *-*-cygwin*)
81         LIBS="$LIBS /usr/lib/textmode.o"
82         AC_DEFINE(HAVE_CYGWIN)
83         AC_DEFINE(USE_PIPES)
84         AC_DEFINE(DISABLE_SHADOW)
85         AC_DEFINE(IPV4_DEFAULT)
86         AC_DEFINE(IP_TOS_IS_BROKEN)
87         AC_DEFINE(NO_X11_UNIX_SOCKETS)
88         AC_DEFINE(SETGROUPS_NOOP)
89         ;;
90 *-*-dgux*)
91         AC_DEFINE(IP_TOS_IS_BROKEN)
92         ;;
93 *-*-darwin*)
94         AC_DEFINE(BROKEN_GETADDRINFO)
95         ;;
96 *-*-hpux10.26)
97         if test -z "$GCC"; then
98                 CFLAGS="$CFLAGS -Ae"
99         fi
100         CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
101         IPADDR_IN_DISPLAY=yes
102         AC_DEFINE(HAVE_SECUREWARE)
103         AC_DEFINE(USE_PIPES)
104         AC_DEFINE(LOGIN_NO_ENDOPT)
105         AC_DEFINE(LOGIN_NEEDS_UTMPX)
106         AC_DEFINE(DISABLE_SHADOW)
107         AC_DEFINE(DISABLE_UTMP)
108         AC_DEFINE(SPT_TYPE,SPT_PSTAT)
109         LIBS="$LIBS -lxnet -lsec -lsecpw"
110         disable_ptmx_check=yes
111         ;;
112 *-*-hpux10*)
113         if test -z "$GCC"; then
114                 CFLAGS="$CFLAGS -Ae"
115         fi
116         CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
117         IPADDR_IN_DISPLAY=yes
118         AC_DEFINE(USE_PIPES)
119         AC_DEFINE(LOGIN_NO_ENDOPT)
120         AC_DEFINE(LOGIN_NEEDS_UTMPX)
121         AC_DEFINE(DISABLE_SHADOW)
122         AC_DEFINE(DISABLE_UTMP)
123         AC_DEFINE(SPT_TYPE,SPT_PSTAT)
124         LIBS="$LIBS -lxnet -lsec"
125         ;;
126 *-*-hpux11*)
127         CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
128         IPADDR_IN_DISPLAY=yes
129         AC_DEFINE(PAM_SUN_CODEBASE)
130         AC_DEFINE(USE_PIPES)
131         AC_DEFINE(LOGIN_NO_ENDOPT)
132         AC_DEFINE(LOGIN_NEEDS_UTMPX)
133         AC_DEFINE(DISABLE_SHADOW)
134         AC_DEFINE(DISABLE_UTMP)
135         AC_DEFINE(SPT_TYPE,SPT_PSTAT)
136         LIBS="$LIBS -lxnet -lsec"
137         ;;
138 *-*-irix5*)
139         CPPFLAGS="$CPPFLAGS -I/usr/local/include"
140         LDFLAGS="$LDFLAGS"
141         PATH="$PATH:/usr/etc"
142         AC_DEFINE(BROKEN_INET_NTOA)
143         AC_DEFINE(WITH_ABBREV_NO_TTY)
144         ;;
145 *-*-irix6*)
146         CPPFLAGS="$CPPFLAGS -I/usr/local/include"
147         LDFLAGS="$LDFLAGS"
148         PATH="$PATH:/usr/etc"
149         AC_DEFINE(WITH_IRIX_ARRAY)
150         AC_DEFINE(WITH_IRIX_PROJECT)
151         AC_DEFINE(WITH_IRIX_AUDIT)
152         AC_CHECK_FUNC(jlimit_startjob, [AC_DEFINE(WITH_IRIX_JOBS)])
153         AC_DEFINE(BROKEN_INET_NTOA)
154         AC_DEFINE(WITH_ABBREV_NO_TTY)
155         ;;
156 *-*-linux*)
157         no_dev_ptmx=1
158         check_for_libcrypt_later=1
159         AC_DEFINE(DONT_TRY_OTHER_AF)
160         AC_DEFINE(PAM_TTY_KLUDGE)
161         inet6_default_4in6=yes
162         ;;
163 mips-sony-bsd|mips-sony-newsos4)
164         AC_DEFINE(HAVE_NEWS4)
165         SONY=1
166         ;;
167 *-*-netbsd*)
168         need_dash_r=1
169         ;;
170 *-*-freebsd*)
171         check_for_libcrypt_later=1
172         ;;
173 *-next-*)
174         conf_lastlog_location="/usr/adm/lastlog"
175         conf_utmp_location=/etc/utmp
176         conf_wtmp_location=/usr/adm/wtmp
177         MAIL=/usr/spool/mail
178         AC_DEFINE(HAVE_NEXT)
179         AC_DEFINE(BROKEN_REALPATH)
180         AC_DEFINE(USE_PIPES)
181         AC_DEFINE(BROKEN_SAVED_UIDS)
182         CPPFLAGS="$CPPFLAGS -I/usr/local/include"
183         CFLAGS="$CFLAGS"
184         ;;
185 *-*-solaris*)
186         CPPFLAGS="$CPPFLAGS -I/usr/local/include"
187         LDFLAGS="$LDFLAGS -L/usr/local/lib -R/usr/local/lib" 
188         need_dash_r=1
189         AC_DEFINE(PAM_SUN_CODEBASE)
190         AC_DEFINE(LOGIN_NEEDS_UTMPX)
191         AC_DEFINE(LOGIN_NEEDS_TERM)
192         AC_DEFINE(PAM_TTY_KLUDGE)
193         # hardwire lastlog location (can't detect it on some versions)
194         conf_lastlog_location="/var/adm/lastlog"
195         AC_MSG_CHECKING(for obsolete utmp and wtmp in solaris2.x)
196         sol2ver=`echo "$host"| sed -e 's/.*[[0-9]]\.//'`
197         if test "$sol2ver" -ge 8; then
198                 AC_MSG_RESULT(yes)
199                 AC_DEFINE(DISABLE_UTMP)
200                 AC_DEFINE(DISABLE_WTMP)
201         else
202                 AC_MSG_RESULT(no)
203         fi
204         ;;
205 *-*-sunos4*)
206         CPPFLAGS="$CPPFLAGS -DSUNOS4"
207         AC_CHECK_FUNCS(getpwanam)
208         AC_DEFINE(PAM_SUN_CODEBASE)
209         conf_utmp_location=/etc/utmp
210         conf_wtmp_location=/var/adm/wtmp
211         conf_lastlog_location=/var/adm/lastlog
212         AC_DEFINE(USE_PIPES)
213         ;;
214 *-ncr-sysv*)
215         CPPFLAGS="$CPPFLAGS -I/usr/local/include"
216         LDFLAGS="$LDFLAGS -L/usr/local/lib"
217         LIBS="$LIBS -lc89"
218         AC_DEFINE(USE_PIPES)
219         ;;
220 *-sni-sysv*)
221         CPPFLAGS="$CPPFLAGS -I/usr/local/include"
222         # /usr/ucblib MUST NOT be searched on ReliantUNIX
223         LDFLAGS="$LDFLAGS -L/usr/local/lib"
224         IPADDR_IN_DISPLAY=yes
225         AC_DEFINE(USE_PIPES)
226         AC_DEFINE(IP_TOS_IS_BROKEN)
227         # /usr/ucblib/libucb.a no longer needed on ReliantUNIX
228         # Attention: always take care to bind libsocket and libnsl before libc,
229         # otherwise you will find lots of "SIOCGPGRP errno 22" on syslog
230         ;;
231 *-*-sysv4.2*)
232         CPPFLAGS="$CPPFLAGS -I/usr/local/include"
233         LDFLAGS="$LDFLAGS -L/usr/local/lib"
234         AC_DEFINE(USE_PIPES)
235         ;;
236 *-*-sysv5*)
237         CPPFLAGS="$CPPFLAGS -I/usr/local/include"
238         LDFLAGS="$LDFLAGS -L/usr/local/lib"
239         AC_DEFINE(USE_PIPES)
240         ;;
241 *-*-sysv*)
242         CPPFLAGS="$CPPFLAGS -I/usr/local/include"
243         LDFLAGS="$LDFLAGS -L/usr/local/lib"
244         ;;
245 *-*-sco3.2v4*)
246         CPPFLAGS="$CPPFLAGS -Dftruncate=chsize -I/usr/local/include"
247         LDFLAGS="$LDFLAGS -L/usr/local/lib"
248         LIBS="$LIBS -los -lprot -lx -ltinfo -lm"
249         rsh_path="/usr/bin/rcmd"
250         RANLIB=true
251         no_dev_ptmx=1
252         AC_DEFINE(BROKEN_SYS_TERMIO_H)
253         AC_DEFINE(USE_PIPES)
254         AC_DEFINE(HAVE_SECUREWARE)
255         AC_DEFINE(DISABLE_SHADOW)
256         AC_DEFINE(BROKEN_SAVED_UIDS)
257         AC_CHECK_FUNCS(getluid setluid)
258         MANTYPE=man
259         do_sco3_extra_lib_check=yes
260         ;;
261 *-*-sco3.2v5*)
262         CPPFLAGS="$CPPFLAGS -I/usr/local/include"
263         LDFLAGS="$LDFLAGS -L/usr/local/lib"
264         LIBS="$LIBS -lprot -lx -ltinfo -lm"
265         no_dev_ptmx=1
266         rsh_path="/usr/bin/rcmd"
267         AC_DEFINE(USE_PIPES)
268         AC_DEFINE(HAVE_SECUREWARE)
269         AC_DEFINE(DISABLE_SHADOW)
270         AC_CHECK_FUNCS(getluid setluid)
271         MANTYPE=man
272         ;;
273 *-*-unicos*)
274         no_libsocket=1
275         no_libnsl=1
276         AC_DEFINE(USE_PIPES)
277         LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal,-L/usr/local/lib"
278         LIBS="$LIBS -lgen -lrsc"
279         ;;
280 *-dec-osf*)
281         AC_MSG_CHECKING(for Digital Unix SIA)
282         no_osfsia=""
283         AC_ARG_WITH(osfsia,
284                 [  --with-osfsia           Enable Digital Unix SIA],
285                 [
286                         if test "x$withval" = "xno" ; then
287                                 AC_MSG_RESULT(disabled)
288                                 no_osfsia=1
289                         fi
290                 ],
291         )
292         if test -z "$no_osfsia" ; then
293                 if test -f /etc/sia/matrix.conf; then
294                         AC_MSG_RESULT(yes)
295                         AC_DEFINE(HAVE_OSF_SIA)
296                         AC_DEFINE(DISABLE_LOGIN)
297                         LIBS="$LIBS -lsecurity -ldb -lm -laud"
298                 else
299                         AC_MSG_RESULT(no)
300                 fi
301         fi
302         ;;
303
304 *-*-nto-qnx)
305         AC_DEFINE(USE_PIPES)
306         AC_DEFINE(NO_X11_UNIX_SOCKETS)
307         AC_DEFINE(MISSING_NFDBITS)
308         AC_DEFINE(MISSING_HOWMANY)
309         AC_DEFINE(MISSING_FD_MASK)
310         ;;
311 esac
312
313 # Allow user to specify flags
314 AC_ARG_WITH(cflags,
315         [  --with-cflags           Specify additional flags to pass to compiler],
316         [
317                 if test "x$withval" != "xno" ; then
318                         CFLAGS="$CFLAGS $withval"
319                 fi
320         ]       
321 )
322 AC_ARG_WITH(cppflags,
323         [  --with-cppflags         Specify additional flags to pass to preprocessor] ,
324         [
325                 if test "x$withval" != "xno"; then
326                         CPPFLAGS="$CPPFLAGS $withval"
327                 fi
328         ]
329 )
330 AC_ARG_WITH(ldflags,
331         [  --with-ldflags          Specify additional flags to pass to linker],
332         [
333                 if test "x$withval" != "xno" ; then
334                         LDFLAGS="$LDFLAGS $withval"
335                 fi
336         ]       
337 )
338 AC_ARG_WITH(libs,
339         [  --with-libs             Specify additional libraries to link with],
340         [
341                 if test "x$withval" != "xno" ; then
342                         LIBS="$LIBS $withval"
343                 fi
344         ]       
345 )
346
347 # Checks for header files.
348 AC_CHECK_HEADERS(bstring.h crypt.h endian.h floatingpoint.h \
349         getopt.h glob.h lastlog.h limits.h login.h \
350         login_cap.h maillock.h netdb.h netgroup.h \
351         netinet/in_systm.h paths.h pty.h readpassphrase.h \
352         rpc/types.h security/pam_appl.h shadow.h stddef.h stdint.h \
353         strings.h sys/bitypes.h sys/bsdtty.h sys/cdefs.h \
354         sys/mman.h sys/select.h sys/stat.h \
355         sys/stropts.h sys/sysmacros.h sys/time.h \
356         sys/un.h time.h ttyent.h usersec.h \
357         util.h utime.h utmp.h utmpx.h)
358
359 # Checks for libraries.
360 AC_CHECK_FUNC(yp_match, , AC_CHECK_LIB(nsl, yp_match))
361 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt))
362
363 dnl SCO OS3 needs this for libwrap
364 if test "x$with_tcp_wrappers" != "xno" ; then
365     if test "x$do_sco3_extra_lib_check" = "xyes" ; then
366         AC_CHECK_LIB(rpc, innetgr, LIBS="-lrpc -lyp -lrpc $LIBS" , , -lyp -lrpc)
367     fi
368 fi
369
370 AC_CHECK_FUNC(getspnam, ,
371         AC_CHECK_LIB(gen, getspnam, LIBS="$LIBS -lgen"))
372
373 AC_ARG_WITH(rpath,
374         [  --without-rpath         Disable auto-added -R linker paths],
375         [
376                 if test "x$withval" = "xno" ; then      
377                         need_dash_r=""
378                 fi
379                 if test "x$withval" = "xyes" ; then
380                         need_dash_r=1
381                 fi
382         ]
383 )
384
385 dnl zlib is required
386 AC_ARG_WITH(zlib,
387         [  --with-zlib=PATH        Use zlib in PATH],
388         [
389                 if test "x$withval" = "xno" ; then
390                         AC_MSG_ERROR([*** zlib is required ***])
391                 fi
392                 if test -d "$withval/lib"; then
393                         if test -n "${need_dash_r}"; then
394                                 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
395                         else
396                                 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
397                         fi
398                 else
399                         if test -n "${need_dash_r}"; then
400                                 LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
401                         else
402                                 LDFLAGS="-L${withval} ${LDFLAGS}"
403                         fi
404                 fi
405                 if test -d "$withval/include"; then
406                         CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
407                 else
408                         CPPFLAGS="-I${withval} ${CPPFLAGS}"
409                 fi
410         ]
411 )
412
413 AC_CHECK_LIB(z, deflate, ,AC_MSG_ERROR([*** zlib missing - please install first or check config.log ***]))
414
415 dnl UnixWare 2.x
416 AC_CHECK_FUNC(strcasecmp, 
417         [], [ AC_CHECK_LIB(resolv, strcasecmp, LIBS="$LIBS -lresolv") ]
418 )
419 AC_CHECK_FUNC(utimes, 
420         [], [ AC_CHECK_LIB(c89, utimes, LIBS="$LIBS -lc89") ]
421 )
422
423 dnl    Checks for libutil functions
424 AC_CHECK_HEADERS(libutil.h)
425 AC_SEARCH_LIBS(login, util bsd, [AC_DEFINE(HAVE_LOGIN)])
426 AC_CHECK_FUNCS(logout updwtmp logwtmp)
427
428 AC_FUNC_STRFTIME
429
430 # Check for ALTDIRFUNC glob() extension
431 AC_MSG_CHECKING(for GLOB_ALTDIRFUNC support)
432 AC_EGREP_CPP(FOUNDIT,
433         [
434                 #include <glob.h>
435                 #ifdef GLOB_ALTDIRFUNC
436                 FOUNDIT
437                 #endif
438         ], 
439         [
440                 AC_DEFINE(GLOB_HAS_ALTDIRFUNC)
441                 AC_MSG_RESULT(yes)
442         ],
443         [
444                 AC_MSG_RESULT(no)
445         ]
446 )
447
448 # Check for g.gl_matchc glob() extension
449 AC_MSG_CHECKING(for gl_matchc field in glob_t)
450 AC_EGREP_CPP(FOUNDIT,
451         [
452                 #include <glob.h>
453                 int main(void){glob_t g; g.gl_matchc = 1;}
454         ],
455         [
456                 AC_DEFINE(GLOB_HAS_GL_MATCHC)
457                 AC_MSG_RESULT(yes)
458         ],
459         [
460                 AC_MSG_RESULT(no)
461         ]
462 )
463
464 AC_MSG_CHECKING([whether struct dirent allocates space for d_name])
465 AC_TRY_RUN(
466         [
467 #include <sys/types.h>
468 #include <dirent.h>
469 int main(void){struct dirent d;return(sizeof(d.d_name)<=sizeof(char));}
470         ],
471         [AC_MSG_RESULT(yes)], 
472         [
473                 AC_MSG_RESULT(no)
474                 AC_DEFINE(BROKEN_ONE_BYTE_DIRENT_D_NAME)
475         ]
476 )
477
478 # Check whether user wants S/Key support
479 SKEY_MSG="no" 
480 AC_ARG_WITH(skey,
481         [  --with-skey[[=PATH]]      Enable S/Key support
482                             (optionally in PATH)],
483         [
484                 if test "x$withval" != "xno" ; then
485
486                         if test "x$withval" != "xyes" ; then
487                                 CPPFLAGS="$CPPFLAGS -I${withval}/include"
488                                 LDFLAGS="$LDFLAGS -L${withval}/lib"
489                         fi
490
491                         AC_DEFINE(SKEY)
492                         LIBS="-lskey $LIBS"
493                         SKEY_MSG="yes" 
494         
495                         AC_MSG_CHECKING([for s/key support])
496                         AC_TRY_RUN(
497                                 [
498 #include <stdio.h>
499 #include <skey.h>
500 int main() { char *ff = skey_keyinfo(""); ff=""; return 0; }
501                                 ],
502                                 [AC_MSG_RESULT(yes)],
503                                 [
504                                         AC_MSG_RESULT(no)
505                                         AC_MSG_ERROR([** Incomplete or missing s/key libraries.])
506                                 ])
507                 fi
508         ]
509 )
510
511 # Check whether user wants TCP wrappers support
512 TCPW_MSG="no"
513 AC_ARG_WITH(tcp-wrappers,
514         [  --with-tcp-wrappers[[=PATH]]      Enable tcpwrappers support
515                             (optionally in PATH)],
516         [
517                 if test "x$withval" != "xno" ; then
518                         saved_LIBS="$LIBS"
519                         saved_LDFLAGS="$LDFLAGS"
520                         saved_CPPFLAGS="$CPPFLAGS"
521                         if test -n "${withval}" -a "${withval}" != "yes"; then
522                                 if test -d "${withval}/lib"; then
523                                         if test -n "${need_dash_r}"; then
524                                                 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
525                                         else
526                                                 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
527                                         fi
528                                 else
529                                         if test -n "${need_dash_r}"; then
530                                                 LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
531                                         else
532                                                 LDFLAGS="-L${withval} ${LDFLAGS}"
533                                         fi
534                                 fi
535                                 if test -d "${withval}/include"; then
536                                         CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
537                                 else
538                                         CPPFLAGS="-I${withval} ${CPPFLAGS}"
539                                 fi
540                         fi
541                         LIBWRAP="-lwrap"
542                         LIBS="$LIBWRAP $LIBS"
543                         AC_MSG_CHECKING(for libwrap)
544                         AC_TRY_LINK(
545                                 [
546 #include <tcpd.h>
547                                         int deny_severity = 0, allow_severity = 0;
548                                 ],
549                                 [hosts_access(0);],
550                                 [
551                                         AC_MSG_RESULT(yes)
552                                         AC_DEFINE(LIBWRAP)
553                                         AC_SUBST(LIBWRAP)
554                                         TCPW_MSG="yes"
555                                 ],
556                                 [
557                                         AC_MSG_ERROR([*** libwrap missing])
558                                 ]
559                         )
560                         LIBS="$saved_LIBS"
561                 fi
562         ]
563 )
564
565 dnl    Checks for library functions.
566 AC_CHECK_FUNCS(arc4random b64_ntop bcopy bindresvport_sa \
567         clock fchmod fchown freeaddrinfo futimes gai_strerror \
568         getaddrinfo getcwd getgrouplist getnameinfo getopt \
569         getrlimit getrusage getttyent glob inet_aton inet_ntoa \
570         inet_ntop innetgr login_getcapbool md5_crypt memmove \
571         mkdtemp mmap ngetaddrinfo openpty ogetaddrinfo readpassphrase \
572         realpath recvmsg rresvport_af sendmsg setdtablesize setegid \
573         setenv seteuid setgroups setlogin setproctitle setresgid setreuid \
574         setrlimit setsid setpcred setvbuf sigaction sigvec snprintf \
575         socketpair strerror strlcat strlcpy strmode strsep sysconf tcgetpgrp \
576         truncate utimes vhangup vsnprintf waitpid __b64_ntop _getpty)
577
578 dnl IRIX and Solaris 2.5.1 have dirname() in libgen
579 AC_CHECK_FUNCS(dirname, [AC_CHECK_HEADERS(libgen.h)] ,[
580         AC_CHECK_LIB(gen, dirname,[
581                 AC_CACHE_CHECK([for broken dirname],
582                         ac_cv_have_broken_dirname, [
583                         save_LIBS="$LIBS"
584                         LIBS="$LIBS -lgen"
585                         AC_TRY_RUN(
586                                 [
587 #include <libgen.h>
588 #include <string.h>
589
590 int main(int argc, char **argv) {
591     char *s, buf[32];
592
593     strncpy(buf,"/etc", 32);
594     s = dirname(buf);
595     if (!s || strncmp(s, "/", 32) != 0) {
596         exit(1);
597     } else {
598         exit(0);
599     }
600 }
601                                 ],
602                                 [ ac_cv_have_broken_dirname="no" ],
603                                 [ ac_cv_have_broken_dirname="yes" ]
604                         )
605                         LIBS="$save_LIBS"
606                 ])
607                 if test "x$ac_cv_have_broken_dirname" = "xno" ; then
608                         LIBS="$LIBS -lgen"
609                         AC_DEFINE(HAVE_DIRNAME)
610                         AC_CHECK_HEADERS(libgen.h)
611                 fi
612         ])
613 ])
614
615 dnl    Checks for time functions
616 AC_CHECK_FUNCS(gettimeofday time)
617 dnl    Checks for utmp functions
618 AC_CHECK_FUNCS(endutent getutent getutid getutline pututline setutent)
619 AC_CHECK_FUNCS(utmpname)
620 dnl    Checks for utmpx functions
621 AC_CHECK_FUNCS(endutxent getutxent getutxid getutxline pututxline )
622 AC_CHECK_FUNCS(setutxent utmpxname)
623
624 AC_CHECK_FUNC(daemon, 
625         [AC_DEFINE(HAVE_DAEMON)],
626         [AC_CHECK_LIB(bsd, daemon, [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_DAEMON)])]
627 )
628
629 AC_CHECK_FUNC(getpagesize, 
630         [AC_DEFINE(HAVE_GETPAGESIZE)],
631         [AC_CHECK_LIB(ucb, getpagesize, [LIBS="$LIBS -lucb"; AC_DEFINE(HAVE_GETPAGESIZE)])]
632 )
633
634 # Check for broken snprintf
635 if test "x$ac_cv_func_snprintf" = "xyes" ; then
636         AC_MSG_CHECKING([whether snprintf correctly terminates long strings])
637         AC_TRY_RUN(
638                 [
639 #include <stdio.h>
640 int main(void){char b[5];snprintf(b,5,"123456789");return(b[4]!='\0');}
641                 ],
642                 [AC_MSG_RESULT(yes)], 
643                 [
644                         AC_MSG_RESULT(no)
645                         AC_DEFINE(BROKEN_SNPRINTF)
646                         AC_MSG_WARN([****** Your snprintf() function is broken, complain to your vendor])
647                 ]
648         )
649 fi
650
651 AC_FUNC_GETPGRP
652
653 # Check for PAM libs
654 PAM_MSG="no"
655 AC_ARG_WITH(pam,
656         [  --with-pam              Enable PAM support ],
657         [
658                 if test "x$withval" != "xno" ; then
659                         if test "x$ac_cv_header_security_pam_appl_h" != "xyes" ; then
660                                 AC_MSG_ERROR([PAM headers not found])
661                         fi
662
663                         AC_CHECK_LIB(dl, dlopen, , )
664                         AC_CHECK_LIB(pam, pam_set_item, , AC_MSG_ERROR([*** libpam missing]))
665                         AC_CHECK_FUNCS(pam_getenvlist)
666
667                         disable_shadow=yes
668                         PAM_MSG="yes"
669
670                         AC_DEFINE(USE_PAM)
671                         if test $ac_cv_lib_dl_dlopen = yes; then
672                                 LIBPAM="-lpam -ldl"
673                         else
674                                 LIBPAM="-lpam"
675                         fi
676                         AC_SUBST(LIBPAM)
677                 fi
678         ]
679 )
680
681 # Check for older PAM
682 if test "x$PAM_MSG" = "xyes" ; then
683         # Check PAM strerror arguments (old PAM)
684         AC_MSG_CHECKING([whether pam_strerror takes only one argument])
685         AC_TRY_COMPILE(
686                 [
687 #include <stdlib.h>
688 #include <security/pam_appl.h>
689                 ], 
690                 [(void)pam_strerror((pam_handle_t *)NULL, -1);], 
691                 [AC_MSG_RESULT(no)],
692                 [
693                         AC_DEFINE(HAVE_OLD_PAM)
694                         AC_MSG_RESULT(yes)
695                         PAM_MSG="yes (old library)"
696                 ]
697         )
698 fi
699
700 # Search for OpenSSL
701 saved_CPPFLAGS="$CPPFLAGS"
702 saved_LDFLAGS="$LDFLAGS"
703 AC_ARG_WITH(ssl-dir,
704         [  --with-ssl-dir=PATH     Specify path to OpenSSL installation ],
705         [
706                 if test "x$withval" != "xno" ; then
707                         if test -d "$withval/lib"; then
708                                 if test -n "${need_dash_r}"; then
709                                         LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
710                                 else
711                                         LDFLAGS="-L${withval}/lib ${LDFLAGS}"
712                                 fi
713                         else
714                                 if test -n "${need_dash_r}"; then
715                                         LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
716                                 else
717                                         LDFLAGS="-L${withval} ${LDFLAGS}"
718                                 fi
719                         fi
720                         if test -d "$withval/include"; then
721                                 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
722                         else
723                                 CPPFLAGS="-I${withval} ${CPPFLAGS}"
724                         fi
725                 fi
726         ]
727 )
728 LIBS="$LIBS -lcrypto"
729 AC_TRY_LINK_FUNC(RAND_add, AC_DEFINE(HAVE_OPENSSL),
730         [
731                 dnl Check default openssl install dir
732                 if test -n "${need_dash_r}"; then
733                         LDFLAGS="-L/usr/local/ssl/lib -R/usr/local/ssl/lib ${saved_LDFLAGS}"
734                 else
735                         LDFLAGS="-L/usr/local/ssl/lib ${saved_LDFLAGS}"
736                 fi
737                 CPPFLAGS="-I/usr/local/ssl/include ${saved_CPPFLAGS}"
738                 AC_TRY_LINK_FUNC(RAND_add, AC_DEFINE(HAVE_OPENSSL),
739                         [
740                                 AC_MSG_ERROR([*** Can't find recent OpenSSL libcrypto (see config.log for details) ***])
741                         ]
742                 )
743         ]
744 )
745
746
747 # Sanity check OpenSSL headers
748 AC_MSG_CHECKING([whether OpenSSL's headers match the library])
749 AC_TRY_RUN(
750         [
751 #include <string.h>
752 #include <openssl/opensslv.h>
753 int main(void) { return(SSLeay() == OPENSSL_VERSION_NUMBER ? 0 : 1); }
754         ],
755         [
756                 AC_MSG_RESULT(yes)
757         ],
758         [
759                 AC_MSG_RESULT(no)
760                 AC_MSG_ERROR(Your OpenSSL headers do not match your library)
761         ]
762 )
763
764 # Some Linux systems (Slackware) need crypt() from libcrypt, *not* the 
765 # version in OpenSSL. Skip this for PAM
766 if test "x$PAM_MSG" = "xno" -a "x$check_for_libcrypt_later" = "x1"; then
767         AC_CHECK_LIB(crypt, crypt, LIBS="$LIBS -lcrypt")
768 fi
769
770
771 ### Configure cryptographic random number support
772
773 # Check wheter OpenSSL seeds itself
774 AC_MSG_CHECKING([whether OpenSSL's PRNG is internally seeded])
775 AC_TRY_RUN(
776         [
777 #include <string.h>
778 #include <openssl/rand.h>
779 int main(void) { return(RAND_status() == 1 ? 0 : 1); }
780         ],
781         [
782                 OPENSSL_SEEDS_ITSELF=yes
783                 AC_MSG_RESULT(yes)
784         ],
785         [
786                 AC_MSG_RESULT(no)
787                 # Default to use of the rand helper if OpenSSL doesn't
788                 # seed itself
789                 USE_RAND_HELPER=yes
790         ]
791 )
792
793
794 # Do we want to force the use of the rand helper?
795 AC_ARG_WITH(rand-helper,
796         [  --with-rand-helper      Use subprocess to gather strong randomness ],
797         [
798                 if test "x$withval" = "xno" ; then
799                         # Force use of OpenSSL's internal RNG, even if 
800                         # the previous test showed it to be unseeded.
801                         if test -z "$OPENSSL_SEEDS_ITSELF" ; then
802                                 AC_MSG_WARN([*** Forcing use of OpenSSL's non-self-seeding PRNG])
803                                 OPENSSL_SEEDS_ITSELF=yes
804                                 USE_RAND_HELPER=""
805                         fi
806                 else
807                         USE_RAND_HELPER=yes
808                 fi
809         ],
810 )       
811
812 # Which randomness source do we use?
813 if test ! -z "$OPENSSL_SEEDS_ITSELF" -a -z "$USE_RAND_HELPER" ; then
814         # OpenSSL only
815         AC_DEFINE(OPENSSL_PRNG_ONLY)
816         RAND_MSG="OpenSSL internal ONLY"
817         INSTALL_SSH_RAND_HELPER=""
818 elif test ! -z "$USE_RAND_HELPER" ; then
819         # install rand helper
820         RAND_MSG="ssh-rand-helper"
821         INSTALL_SSH_RAND_HELPER="yes"
822 fi
823 AC_SUBST(INSTALL_SSH_RAND_HELPER)
824
825 ### Configuration of ssh-rand-helper
826
827 # PRNGD TCP socket
828 AC_ARG_WITH(prngd-port,
829         [  --with-prngd-port=PORT  read entropy from PRNGD/EGD TCP localhost:PORT],
830         [
831                 case "$withval" in
832                 no)
833                         withval=""
834                         ;;
835                 [[0-9]]*)
836                         ;;
837                 *)
838                         AC_MSG_ERROR(You must specify a numeric port number for --with-prngd-port)
839                         ;;
840                 esac
841                 if test ! -z "$withval" ; then
842                         PRNGD_PORT="$withval"
843                         AC_DEFINE_UNQUOTED(PRNGD_PORT, $PRNGD_PORT)
844                 fi
845         ]
846 )
847
848 # PRNGD Unix domain socket
849 AC_ARG_WITH(prngd-socket,
850         [  --with-prngd-socket=FILE read entropy from PRNGD/EGD socket FILE (default=/var/run/egd-pool)],
851         [
852                 case "$withval" in
853                 yes)
854                         withval="/var/run/egd-pool"
855                         ;;
856                 no)
857                         withval=""
858                         ;;
859                 /*)
860                         ;;
861                 *)
862                         AC_MSG_ERROR(You must specify an absolute path to the entropy socket)
863                         ;;
864                 esac
865
866                 if test ! -z "$withval" ; then
867                         if test ! -z "$PRNGD_PORT" ; then
868                                 AC_MSG_ERROR(You may not specify both a PRNGD/EGD port and socket)
869                         fi
870                         if test ! -r "$withval" ; then
871                                 AC_MSG_WARN(Entropy socket is not readable)
872                         fi
873                         PRNGD_SOCKET="$withval"
874                         AC_DEFINE_UNQUOTED(PRNGD_SOCKET, "$PRNGD_SOCKET")
875                 fi
876         ],
877         [
878                 # Check for existing socket only if we don't have a random device already
879                 if test "$USE_RAND_HELPER" = yes ; then
880                         AC_MSG_CHECKING(for PRNGD/EGD socket)
881                         # Insert other locations here
882                         for sock in /var/run/egd-pool /dev/egd-pool /etc/entropy; do
883                                 if test -r $sock && $TEST_MINUS_S_SH -c "test -S $sock -o -p $sock" ; then
884                                         PRNGD_SOCKET="$sock"
885                                         AC_DEFINE_UNQUOTED(PRNGD_SOCKET, "$PRNGD_SOCKET")
886                                         break;
887                                 fi
888                         done
889                         if test ! -z "$PRNGD_SOCKET" ; then
890                                 AC_MSG_RESULT($PRNGD_SOCKET)
891                         else
892                                 AC_MSG_RESULT(not found)
893                         fi
894                 fi
895         ]
896 )
897
898 # Change default command timeout for hashing entropy source
899 entropy_timeout=200
900 AC_ARG_WITH(entropy-timeout,
901         [  --with-entropy-timeout  Specify entropy gathering command timeout (msec)],
902         [
903                 if test "x$withval" != "xno" ; then
904                         entropy_timeout=$withval
905                 fi
906         ]       
907 )
908 AC_DEFINE_UNQUOTED(ENTROPY_TIMEOUT_MSEC, $entropy_timeout)
909
910 ssh_privsep_user=sshd
911 AC_ARG_WITH(privsep-user,
912         [  --with-privsep-user=user Specify non-privileged user for privilege separation],
913         [
914                 if test -n "$withval"; then
915                         ssh_privsep_user=$withval
916                 fi
917         ]       
918 )
919 AC_DEFINE_UNQUOTED(SSH_PRIVSEP_USER, "$ssh_privsep_user")
920
921 # We do this little dance with the search path to insure
922 # that programs that we select for use by installed programs
923 # (which may be run by the super-user) come from trusted
924 # locations before they come from the user's private area.
925 # This should help avoid accidentally configuring some
926 # random version of a program in someone's personal bin.
927
928 OPATH=$PATH
929 PATH=/bin:/usr/bin
930 test -h /bin 2> /dev/null && PATH=/usr/bin
931 test -d /sbin && PATH=$PATH:/sbin
932 test -d /usr/sbin && PATH=$PATH:/usr/sbin
933 PATH=$PATH:/etc:$OPATH
934
935 # These programs are used by the command hashing source to gather entropy 
936 OSSH_PATH_ENTROPY_PROG(PROG_LS, ls)
937 OSSH_PATH_ENTROPY_PROG(PROG_NETSTAT, netstat)
938 OSSH_PATH_ENTROPY_PROG(PROG_ARP, arp)
939 OSSH_PATH_ENTROPY_PROG(PROG_IFCONFIG, ifconfig)
940 OSSH_PATH_ENTROPY_PROG(PROG_JSTAT, jstat)
941 OSSH_PATH_ENTROPY_PROG(PROG_PS, ps)
942 OSSH_PATH_ENTROPY_PROG(PROG_SAR, sar)
943 OSSH_PATH_ENTROPY_PROG(PROG_W, w)
944 OSSH_PATH_ENTROPY_PROG(PROG_WHO, who)
945 OSSH_PATH_ENTROPY_PROG(PROG_LAST, last)
946 OSSH_PATH_ENTROPY_PROG(PROG_LASTLOG, lastlog)
947 OSSH_PATH_ENTROPY_PROG(PROG_DF, df)
948 OSSH_PATH_ENTROPY_PROG(PROG_VMSTAT, vmstat)
949 OSSH_PATH_ENTROPY_PROG(PROG_UPTIME, uptime)
950 OSSH_PATH_ENTROPY_PROG(PROG_IPCS, ipcs)
951 OSSH_PATH_ENTROPY_PROG(PROG_TAIL, tail)
952 # restore PATH
953 PATH=$OPATH
954
955 # Where does ssh-rand-helper get its randomness from?
956 INSTALL_SSH_PRNG_CMDS=""
957 if test ! -z "$INSTALL_SSH_RAND_HELPER" ; then
958         if test ! -z "$PRNGD_PORT" ; then
959                 RAND_HELPER_MSG="TCP localhost:$PRNGD_PORT"
960         elif test ! -z "$PRNGD_SOCKET" ; then
961                 RAND_HELPER_MSG="Unix domain socket \"$PRNGD_SOCKET\""
962         else
963                 RAND_HELPER_MSG="Command hashing (timeout $entropy_timeout)"
964                 RAND_HELPER_CMDHASH=yes
965                 INSTALL_SSH_PRNG_CMDS="yes"
966         fi
967 fi
968 AC_SUBST(INSTALL_SSH_PRNG_CMDS)
969
970
971 # Cheap hack to ensure NEWS-OS libraries are arranged right.
972 if test ! -z "$SONY" ; then
973   LIBS="$LIBS -liberty";
974 fi
975
976 # Checks for data types
977 AC_CHECK_SIZEOF(char, 1)
978 AC_CHECK_SIZEOF(short int, 2)
979 AC_CHECK_SIZEOF(int, 4)
980 AC_CHECK_SIZEOF(long int, 4)
981 AC_CHECK_SIZEOF(long long int, 8)
982
983 # Sanity check long long for some platforms (AIX)
984 if test "x$ac_cv_sizeof_long_long_int" = "x4" ; then
985         ac_cv_sizeof_long_long_int=0
986 fi
987
988 # More checks for data types
989 AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int, [
990         AC_TRY_COMPILE(
991                 [ #include <sys/types.h> ], 
992                 [ u_int a; a = 1;], 
993                 [ ac_cv_have_u_int="yes" ],
994                 [ ac_cv_have_u_int="no" ]
995         )
996 ])
997 if test "x$ac_cv_have_u_int" = "xyes" ; then
998         AC_DEFINE(HAVE_U_INT)
999         have_u_int=1
1000 fi
1001
1002 AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t, [
1003         AC_TRY_COMPILE(
1004                 [ #include <sys/types.h> ], 
1005                 [ int8_t a; int16_t b; int32_t c; a = b = c = 1;], 
1006                 [ ac_cv_have_intxx_t="yes" ],
1007                 [ ac_cv_have_intxx_t="no" ]
1008         )
1009 ])
1010 if test "x$ac_cv_have_intxx_t" = "xyes" ; then
1011         AC_DEFINE(HAVE_INTXX_T)
1012         have_intxx_t=1
1013 fi
1014
1015 if (test -z "$have_intxx_t" && \
1016            test "x$ac_cv_header_stdint_h" = "xyes")
1017 then
1018     AC_MSG_CHECKING([for intXX_t types in stdint.h])
1019         AC_TRY_COMPILE(
1020                 [ #include <stdint.h> ], 
1021                 [ int8_t a; int16_t b; int32_t c; a = b = c = 1;], 
1022                 [
1023                         AC_DEFINE(HAVE_INTXX_T)
1024                         AC_MSG_RESULT(yes)
1025                 ],
1026                 [ AC_MSG_RESULT(no) ]
1027         )
1028 fi
1029
1030 AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t, [
1031         AC_TRY_COMPILE(
1032                 [ #include <sys/types.h> ], 
1033                 [ int64_t a; a = 1;], 
1034                 [ ac_cv_have_int64_t="yes" ],
1035                 [ ac_cv_have_int64_t="no" ]
1036         )
1037 ])
1038 if test "x$ac_cv_have_int64_t" = "xyes" ; then
1039         AC_DEFINE(HAVE_INT64_T)
1040         have_int64_t=1
1041 fi
1042         
1043 if test -z "$have_int64_t" ; then
1044     AC_MSG_CHECKING([for int64_t type in sys/socket.h])
1045         AC_TRY_COMPILE(
1046                 [ #include <sys/socket.h> ], 
1047                 [ int64_t a; a = 1],
1048                 [
1049                         AC_DEFINE(HAVE_INT64_T)
1050                         AC_MSG_RESULT(yes)
1051                 ],
1052                 [ AC_MSG_RESULT(no) ]
1053         )
1054 fi
1055
1056 if test -z "$have_int64_t" ; then
1057     AC_MSG_CHECKING([for int64_t type in sys/bitypes.h])
1058         AC_TRY_COMPILE(
1059                 [ #include <sys/bitypes.h> ], 
1060                 [ int64_t a; a = 1],
1061                 [
1062                         AC_DEFINE(HAVE_INT64_T)
1063                         AC_MSG_RESULT(yes)
1064                 ],
1065                 [ AC_MSG_RESULT(no) ]
1066         )
1067 fi
1068
1069 AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t, [
1070         AC_TRY_COMPILE(
1071                 [ #include <sys/types.h> ], 
1072                 [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;], 
1073                 [ ac_cv_have_u_intxx_t="yes" ],
1074                 [ ac_cv_have_u_intxx_t="no" ]
1075         )
1076 ])
1077 if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
1078         AC_DEFINE(HAVE_U_INTXX_T)
1079         have_u_intxx_t=1
1080 fi
1081
1082 if test -z "$have_u_intxx_t" ; then
1083     AC_MSG_CHECKING([for u_intXX_t types in sys/socket.h])
1084         AC_TRY_COMPILE(
1085                 [ #include <sys/socket.h> ], 
1086                 [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;], 
1087                 [
1088                         AC_DEFINE(HAVE_U_INTXX_T)
1089                         AC_MSG_RESULT(yes)
1090                 ],
1091                 [ AC_MSG_RESULT(no) ]
1092         )
1093 fi
1094
1095 AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t, [
1096         AC_TRY_COMPILE(
1097                 [ #include <sys/types.h> ], 
1098                 [ u_int64_t a; a = 1;], 
1099                 [ ac_cv_have_u_int64_t="yes" ],
1100                 [ ac_cv_have_u_int64_t="no" ]
1101         )
1102 ])
1103 if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
1104         AC_DEFINE(HAVE_U_INT64_T)
1105         have_u_int64_t=1
1106 fi
1107
1108 if test -z "$have_u_int64_t" ; then
1109     AC_MSG_CHECKING([for u_int64_t type in sys/bitypes.h])
1110         AC_TRY_COMPILE(
1111                 [ #include <sys/bitypes.h> ], 
1112                 [ u_int64_t a; a = 1],
1113                 [
1114                         AC_DEFINE(HAVE_U_INT64_T)
1115                         AC_MSG_RESULT(yes)
1116                 ],
1117                 [ AC_MSG_RESULT(no) ]
1118         )
1119 fi
1120
1121 if test -z "$have_u_intxx_t" ; then
1122         AC_CACHE_CHECK([for uintXX_t types], ac_cv_have_uintxx_t, [
1123                 AC_TRY_COMPILE(
1124                         [
1125 #include <sys/types.h>
1126                         ], 
1127                         [ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1; ], 
1128                         [ ac_cv_have_uintxx_t="yes" ],
1129                         [ ac_cv_have_uintxx_t="no" ]
1130                 )
1131         ])
1132         if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
1133                 AC_DEFINE(HAVE_UINTXX_T)
1134         fi
1135 fi
1136
1137 if test -z "$have_uintxx_t" ; then
1138     AC_MSG_CHECKING([for uintXX_t types in stdint.h])
1139         AC_TRY_COMPILE(
1140                 [ #include <stdint.h> ], 
1141                 [ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1;], 
1142                 [
1143                         AC_DEFINE(HAVE_UINTXX_T)
1144                         AC_MSG_RESULT(yes)
1145                 ],
1146                 [ AC_MSG_RESULT(no) ]
1147         )
1148 fi
1149
1150 if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
1151            test "x$ac_cv_header_sys_bitypes_h" = "xyes")
1152 then
1153         AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
1154         AC_TRY_COMPILE(
1155                 [
1156 #include <sys/bitypes.h>
1157                 ], 
1158                 [
1159                         int8_t a; int16_t b; int32_t c;
1160                         u_int8_t e; u_int16_t f; u_int32_t g;
1161                         a = b = c = e = f = g = 1;
1162                 ], 
1163                 [
1164                         AC_DEFINE(HAVE_U_INTXX_T)
1165                         AC_DEFINE(HAVE_INTXX_T)
1166                         AC_MSG_RESULT(yes)
1167                 ],
1168                 [AC_MSG_RESULT(no)]
1169         ) 
1170 fi
1171
1172
1173 AC_CACHE_CHECK([for u_char], ac_cv_have_u_char, [
1174         AC_TRY_COMPILE(
1175                 [
1176 #include <sys/types.h>
1177                 ],
1178                 [ u_char foo; foo = 125; ],
1179                 [ ac_cv_have_u_char="yes" ],
1180                 [ ac_cv_have_u_char="no" ]
1181         )
1182 ])
1183 if test "x$ac_cv_have_u_char" = "xyes" ; then
1184         AC_DEFINE(HAVE_U_CHAR)
1185 fi
1186
1187 TYPE_SOCKLEN_T
1188
1189 AC_CHECK_TYPES(sig_atomic_t,,,[#include <signal.h>])
1190
1191 AC_CACHE_CHECK([for size_t], ac_cv_have_size_t, [
1192         AC_TRY_COMPILE(
1193                 [
1194 #include <sys/types.h>
1195                 ],
1196                 [ size_t foo; foo = 1235; ],
1197                 [ ac_cv_have_size_t="yes" ],
1198                 [ ac_cv_have_size_t="no" ]
1199         )
1200 ])
1201 if test "x$ac_cv_have_size_t" = "xyes" ; then
1202         AC_DEFINE(HAVE_SIZE_T)
1203 fi
1204
1205 AC_CACHE_CHECK([for ssize_t], ac_cv_have_ssize_t, [
1206         AC_TRY_COMPILE(
1207                 [
1208 #include <sys/types.h>
1209                 ],
1210                 [ ssize_t foo; foo = 1235; ],
1211                 [ ac_cv_have_ssize_t="yes" ],
1212                 [ ac_cv_have_ssize_t="no" ]
1213         )
1214 ])
1215 if test "x$ac_cv_have_ssize_t" = "xyes" ; then
1216         AC_DEFINE(HAVE_SSIZE_T)
1217 fi
1218
1219 AC_CACHE_CHECK([for clock_t], ac_cv_have_clock_t, [
1220         AC_TRY_COMPILE(
1221                 [
1222 #include <time.h>
1223                 ],
1224                 [ clock_t foo; foo = 1235; ],
1225                 [ ac_cv_have_clock_t="yes" ],
1226                 [ ac_cv_have_clock_t="no" ]
1227         )
1228 ])
1229 if test "x$ac_cv_have_clock_t" = "xyes" ; then
1230         AC_DEFINE(HAVE_CLOCK_T)
1231 fi
1232
1233 AC_CACHE_CHECK([for sa_family_t], ac_cv_have_sa_family_t, [
1234         AC_TRY_COMPILE(
1235                 [
1236 #include <sys/types.h>
1237 #include <sys/socket.h>
1238                 ],
1239                 [ sa_family_t foo; foo = 1235; ],
1240                 [ ac_cv_have_sa_family_t="yes" ],
1241                 [ AC_TRY_COMPILE(
1242                   [
1243 #include <sys/types.h>
1244 #include <sys/socket.h>
1245 #include <netinet/in.h>
1246                 ],
1247                 [ sa_family_t foo; foo = 1235; ],
1248                 [ ac_cv_have_sa_family_t="yes" ],
1249
1250                 [ ac_cv_have_sa_family_t="no" ]
1251         )]
1252         )
1253 ])
1254 if test "x$ac_cv_have_sa_family_t" = "xyes" ; then
1255         AC_DEFINE(HAVE_SA_FAMILY_T)
1256 fi
1257
1258 AC_CACHE_CHECK([for pid_t], ac_cv_have_pid_t, [
1259         AC_TRY_COMPILE(
1260                 [
1261 #include <sys/types.h>
1262                 ],
1263                 [ pid_t foo; foo = 1235; ],
1264                 [ ac_cv_have_pid_t="yes" ],
1265                 [ ac_cv_have_pid_t="no" ]
1266         )
1267 ])
1268 if test "x$ac_cv_have_pid_t" = "xyes" ; then
1269         AC_DEFINE(HAVE_PID_T)
1270 fi
1271
1272 AC_CACHE_CHECK([for mode_t], ac_cv_have_mode_t, [
1273         AC_TRY_COMPILE(
1274                 [
1275 #include <sys/types.h>
1276                 ],
1277                 [ mode_t foo; foo = 1235; ],
1278                 [ ac_cv_have_mode_t="yes" ],
1279                 [ ac_cv_have_mode_t="no" ]
1280         )
1281 ])
1282 if test "x$ac_cv_have_mode_t" = "xyes" ; then
1283         AC_DEFINE(HAVE_MODE_T)
1284 fi
1285
1286
1287 AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_have_struct_sockaddr_storage, [
1288         AC_TRY_COMPILE(
1289                 [
1290 #include <sys/types.h>
1291 #include <sys/socket.h>
1292                 ],
1293                 [ struct sockaddr_storage s; ],
1294                 [ ac_cv_have_struct_sockaddr_storage="yes" ],
1295                 [ ac_cv_have_struct_sockaddr_storage="no" ]
1296         )
1297 ])
1298 if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then
1299         AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE)
1300 fi
1301
1302 AC_CACHE_CHECK([for struct sockaddr_in6], ac_cv_have_struct_sockaddr_in6, [
1303         AC_TRY_COMPILE(
1304                 [
1305 #include <sys/types.h>
1306 #include <netinet/in.h>
1307                 ],
1308                 [ struct sockaddr_in6 s; s.sin6_family = 0; ],
1309                 [ ac_cv_have_struct_sockaddr_in6="yes" ],
1310                 [ ac_cv_have_struct_sockaddr_in6="no" ]
1311         )
1312 ])
1313 if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then
1314         AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6)
1315 fi
1316
1317 AC_CACHE_CHECK([for struct in6_addr], ac_cv_have_struct_in6_addr, [
1318         AC_TRY_COMPILE(
1319                 [
1320 #include <sys/types.h>
1321 #include <netinet/in.h>
1322                 ],
1323                 [ struct in6_addr s; s.s6_addr[0] = 0; ],
1324                 [ ac_cv_have_struct_in6_addr="yes" ],
1325                 [ ac_cv_have_struct_in6_addr="no" ]
1326         )
1327 ])
1328 if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then
1329         AC_DEFINE(HAVE_STRUCT_IN6_ADDR)
1330 fi
1331
1332 AC_CACHE_CHECK([for struct addrinfo], ac_cv_have_struct_addrinfo, [
1333         AC_TRY_COMPILE(
1334                 [
1335 #include <sys/types.h>
1336 #include <sys/socket.h>
1337 #include <netdb.h>
1338                 ],
1339                 [ struct addrinfo s; s.ai_flags = AI_PASSIVE; ],
1340                 [ ac_cv_have_struct_addrinfo="yes" ],
1341                 [ ac_cv_have_struct_addrinfo="no" ]
1342         )
1343 ])
1344 if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then
1345         AC_DEFINE(HAVE_STRUCT_ADDRINFO)
1346 fi
1347
1348 AC_CACHE_CHECK([for struct timeval], ac_cv_have_struct_timeval, [
1349         AC_TRY_COMPILE(
1350                 [ #include <sys/time.h> ], 
1351                 [ struct timeval tv; tv.tv_sec = 1;], 
1352                 [ ac_cv_have_struct_timeval="yes" ],
1353                 [ ac_cv_have_struct_timeval="no" ]
1354         )
1355 ])
1356 if test "x$ac_cv_have_struct_timeval" = "xyes" ; then
1357         AC_DEFINE(HAVE_STRUCT_TIMEVAL)
1358         have_struct_timeval=1
1359 fi
1360
1361 # If we don't have int64_t then we can't compile sftp-server.  So don't
1362 # even attempt to do it. 
1363 if test "x$ac_cv_have_int64_t" = "xno" -a \
1364         "x$ac_cv_sizeof_long_int" != "x8" -a \
1365         "x$ac_cv_sizeof_long_long_int" = "x0" ; then
1366         NO_SFTP='#'
1367 else
1368 dnl test snprintf (broken on SCO w/gcc)
1369         AC_TRY_RUN(
1370                 [
1371 #include <stdio.h>
1372 #include <string.h>
1373 #ifdef HAVE_SNPRINTF
1374 main()
1375 {
1376         char buf[50];
1377         char expected_out[50];
1378         int mazsize = 50 ;
1379 #if (SIZEOF_LONG_INT == 8)
1380         long int num = 0x7fffffffffffffff;
1381 #else
1382         long long num = 0x7fffffffffffffffll;
1383 #endif
1384         strcpy(expected_out, "9223372036854775807");
1385         snprintf(buf, mazsize, "%lld", num);
1386         if(strcmp(buf, expected_out) != 0)
1387                 exit(1);
1388         exit(0);
1389 }
1390 #else
1391 main() { exit(0); }
1392 #endif
1393                 ], [ true ], [ AC_DEFINE(BROKEN_SNPRINTF) ]
1394         )
1395 fi
1396 AC_SUBST(NO_SFTP)
1397
1398 dnl Checks for structure members
1399 OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmp.h, HAVE_HOST_IN_UTMP)
1400 OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmpx.h, HAVE_HOST_IN_UTMPX)
1401 OSSH_CHECK_HEADER_FOR_FIELD(syslen, utmpx.h, HAVE_SYSLEN_IN_UTMPX)
1402 OSSH_CHECK_HEADER_FOR_FIELD(ut_pid, utmp.h, HAVE_PID_IN_UTMP)
1403 OSSH_CHECK_HEADER_FOR_FIELD(ut_type, utmp.h, HAVE_TYPE_IN_UTMP)
1404 OSSH_CHECK_HEADER_FOR_FIELD(ut_type, utmpx.h, HAVE_TYPE_IN_UTMPX)
1405 OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmp.h, HAVE_TV_IN_UTMP)
1406 OSSH_CHECK_HEADER_FOR_FIELD(ut_id, utmp.h, HAVE_ID_IN_UTMP)
1407 OSSH_CHECK_HEADER_FOR_FIELD(ut_id, utmpx.h, HAVE_ID_IN_UTMPX)
1408 OSSH_CHECK_HEADER_FOR_FIELD(ut_addr, utmp.h, HAVE_ADDR_IN_UTMP)
1409 OSSH_CHECK_HEADER_FOR_FIELD(ut_addr, utmpx.h, HAVE_ADDR_IN_UTMPX)
1410 OSSH_CHECK_HEADER_FOR_FIELD(ut_addr_v6, utmp.h, HAVE_ADDR_V6_IN_UTMP)
1411 OSSH_CHECK_HEADER_FOR_FIELD(ut_addr_v6, utmpx.h, HAVE_ADDR_V6_IN_UTMPX)
1412 OSSH_CHECK_HEADER_FOR_FIELD(ut_exit, utmp.h, HAVE_EXIT_IN_UTMP)
1413 OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmp.h, HAVE_TIME_IN_UTMP)
1414 OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmpx.h, HAVE_TIME_IN_UTMPX)
1415 OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmpx.h, HAVE_TV_IN_UTMPX)
1416
1417 AC_CHECK_MEMBERS([struct stat.st_blksize])
1418
1419 AC_CACHE_CHECK([for ss_family field in struct sockaddr_storage],
1420                 ac_cv_have_ss_family_in_struct_ss, [
1421         AC_TRY_COMPILE(
1422                 [
1423 #include <sys/types.h>
1424 #include <sys/socket.h>
1425                 ],
1426                 [ struct sockaddr_storage s; s.ss_family = 1; ],
1427                 [ ac_cv_have_ss_family_in_struct_ss="yes" ],
1428                 [ ac_cv_have_ss_family_in_struct_ss="no" ],
1429         )
1430 ])
1431 if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
1432         AC_DEFINE(HAVE_SS_FAMILY_IN_SS)
1433 fi
1434
1435 AC_CACHE_CHECK([for __ss_family field in struct sockaddr_storage],
1436                 ac_cv_have___ss_family_in_struct_ss, [
1437         AC_TRY_COMPILE(
1438                 [
1439 #include <sys/types.h>
1440 #include <sys/socket.h>
1441                 ],
1442                 [ struct sockaddr_storage s; s.__ss_family = 1; ],
1443                 [ ac_cv_have___ss_family_in_struct_ss="yes" ],
1444                 [ ac_cv_have___ss_family_in_struct_ss="no" ]
1445         )
1446 ])
1447 if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then
1448         AC_DEFINE(HAVE___SS_FAMILY_IN_SS)
1449 fi
1450
1451 AC_CACHE_CHECK([for pw_class field in struct passwd],
1452                 ac_cv_have_pw_class_in_struct_passwd, [
1453         AC_TRY_COMPILE(
1454                 [
1455 #include <pwd.h>
1456                 ],
1457                 [ struct passwd p; p.pw_class = 0; ],
1458                 [ ac_cv_have_pw_class_in_struct_passwd="yes" ],
1459                 [ ac_cv_have_pw_class_in_struct_passwd="no" ]
1460         )
1461 ])
1462 if test "x$ac_cv_have_pw_class_in_struct_passwd" = "xyes" ; then
1463         AC_DEFINE(HAVE_PW_CLASS_IN_PASSWD)
1464 fi
1465
1466 AC_CACHE_CHECK([for pw_expire field in struct passwd],
1467                 ac_cv_have_pw_expire_in_struct_passwd, [
1468         AC_TRY_COMPILE(
1469                 [
1470 #include <pwd.h>
1471                 ],
1472                 [ struct passwd p; p.pw_expire = 0; ],
1473                 [ ac_cv_have_pw_expire_in_struct_passwd="yes" ],
1474                 [ ac_cv_have_pw_expire_in_struct_passwd="no" ]
1475         )
1476 ])
1477 if test "x$ac_cv_have_pw_expire_in_struct_passwd" = "xyes" ; then
1478         AC_DEFINE(HAVE_PW_EXPIRE_IN_PASSWD)
1479 fi
1480
1481 AC_CACHE_CHECK([for pw_change field in struct passwd],
1482                 ac_cv_have_pw_change_in_struct_passwd, [
1483         AC_TRY_COMPILE(
1484                 [
1485 #include <pwd.h>
1486                 ],
1487                 [ struct passwd p; p.pw_change = 0; ],
1488                 [ ac_cv_have_pw_change_in_struct_passwd="yes" ],
1489                 [ ac_cv_have_pw_change_in_struct_passwd="no" ]
1490         )
1491 ])
1492 if test "x$ac_cv_have_pw_change_in_struct_passwd" = "xyes" ; then
1493         AC_DEFINE(HAVE_PW_CHANGE_IN_PASSWD)
1494 fi
1495
1496 dnl make sure we're using the real structure members and not defines
1497 AC_CACHE_CHECK([for msg_accrights field in struct msghdr],
1498                 ac_cv_have_accrights_in_msghdr, [
1499         AC_TRY_RUN(
1500                 [
1501 #include <sys/types.h>
1502 #include <sys/socket.h>
1503 #include <sys/uio.h>
1504 int main() {
1505 #ifdef msg_accrights
1506 exit(1);
1507 #endif
1508 struct msghdr m;
1509 m.msg_accrights = 0;
1510 exit(0);
1511 }
1512                 ],
1513                 [ ac_cv_have_accrights_in_msghdr="yes" ],
1514                 [ ac_cv_have_accrights_in_msghdr="no" ]
1515         )
1516 ])
1517 if test "x$ac_cv_have_accrights_in_msghdr" = "xyes" ; then
1518         AC_DEFINE(HAVE_ACCRIGHTS_IN_MSGHDR)
1519 fi
1520
1521 AC_CACHE_CHECK([for msg_control field in struct msghdr],
1522                 ac_cv_have_control_in_msghdr, [
1523         AC_TRY_RUN(
1524                 [
1525 #include <sys/types.h>
1526 #include <sys/socket.h>
1527 #include <sys/uio.h>
1528 int main() {
1529 #ifdef msg_control
1530 exit(1);
1531 #endif
1532 struct msghdr m;
1533 m.msg_control = 0;
1534 exit(0);
1535 }
1536                 ],
1537                 [ ac_cv_have_control_in_msghdr="yes" ],
1538                 [ ac_cv_have_control_in_msghdr="no" ]
1539         )
1540 ])
1541 if test "x$ac_cv_have_control_in_msghdr" = "xyes" ; then
1542         AC_DEFINE(HAVE_CONTROL_IN_MSGHDR)
1543 fi
1544
1545 AC_CACHE_CHECK([if libc defines __progname], ac_cv_libc_defines___progname, [
1546         AC_TRY_LINK([], 
1547                 [ extern char *__progname; printf("%s", __progname); ], 
1548                 [ ac_cv_libc_defines___progname="yes" ],
1549                 [ ac_cv_libc_defines___progname="no" ]
1550         )
1551 ])
1552 if test "x$ac_cv_libc_defines___progname" = "xyes" ; then
1553         AC_DEFINE(HAVE___PROGNAME)
1554 fi
1555
1556 AC_CACHE_CHECK([whether $CC implements __FUNCTION__], ac_cv_cc_implements___FUNCTION__, [
1557         AC_TRY_LINK([
1558 #include <stdio.h>
1559 ], 
1560                 [ printf("%s", __FUNCTION__); ], 
1561                 [ ac_cv_cc_implements___FUNCTION__="yes" ],
1562                 [ ac_cv_cc_implements___FUNCTION__="no" ]
1563         )
1564 ])
1565 if test "x$ac_cv_cc_implements___FUNCTION__" = "xyes" ; then
1566         AC_DEFINE(HAVE___FUNCTION__)
1567 fi
1568
1569 AC_CACHE_CHECK([whether $CC implements __func__], ac_cv_cc_implements___func__, [
1570         AC_TRY_LINK([
1571 #include <stdio.h>
1572 ], 
1573                 [ printf("%s", __func__); ], 
1574                 [ ac_cv_cc_implements___func__="yes" ],
1575                 [ ac_cv_cc_implements___func__="no" ]
1576         )
1577 ])
1578 if test "x$ac_cv_cc_implements___func__" = "xyes" ; then
1579         AC_DEFINE(HAVE___func__)
1580 fi
1581
1582 AC_CACHE_CHECK([whether getopt has optreset support],
1583                 ac_cv_have_getopt_optreset, [
1584         AC_TRY_LINK(
1585                 [
1586 #include <getopt.h>
1587                 ],
1588                 [ extern int optreset; optreset = 0; ],
1589                 [ ac_cv_have_getopt_optreset="yes" ],
1590                 [ ac_cv_have_getopt_optreset="no" ]
1591         )
1592 ])
1593 if test "x$ac_cv_have_getopt_optreset" = "xyes" ; then
1594         AC_DEFINE(HAVE_GETOPT_OPTRESET)
1595 fi
1596
1597 AC_CACHE_CHECK([if libc defines sys_errlist], ac_cv_libc_defines_sys_errlist, [
1598         AC_TRY_LINK([], 
1599                 [ extern const char *const sys_errlist[]; printf("%s", sys_errlist[0]);], 
1600                 [ ac_cv_libc_defines_sys_errlist="yes" ],
1601                 [ ac_cv_libc_defines_sys_errlist="no" ]
1602         )
1603 ])
1604 if test "x$ac_cv_libc_defines_sys_errlist" = "xyes" ; then
1605         AC_DEFINE(HAVE_SYS_ERRLIST)
1606 fi
1607
1608
1609 AC_CACHE_CHECK([if libc defines sys_nerr], ac_cv_libc_defines_sys_nerr, [
1610         AC_TRY_LINK([], 
1611                 [ extern int sys_nerr; printf("%i", sys_nerr);], 
1612                 [ ac_cv_libc_defines_sys_nerr="yes" ],
1613                 [ ac_cv_libc_defines_sys_nerr="no" ]
1614         )
1615 ])
1616 if test "x$ac_cv_libc_defines_sys_nerr" = "xyes" ; then
1617         AC_DEFINE(HAVE_SYS_NERR)
1618 fi
1619
1620 SCARD_MSG="no" 
1621
1622 # Check whether user wants sectok support
1623 AC_ARG_WITH(sectok,
1624         [  --with-sectok           Enable smartcard support using libsectok],
1625         [
1626                 if test "x$withval" != "xno" ; then
1627                         if test "x$withval" != "xyes" ; then
1628                                 CPPFLAGS="$CPPFLAGS -I${withval}"
1629                                 LDFLAGS="$LDFLAGS -L${withval}"
1630                                 if test ! -z "$need_dash_r" ; then
1631                                         LDFLAGS="$LDFLAGS -R${withval}"
1632                                 fi
1633                                 if test ! -z "$blibpath" ; then
1634                                         blibpath="$blibpath:${withval}"
1635                                 fi
1636                         fi
1637                         AC_CHECK_HEADERS(sectok.h)
1638                         if test "$ac_cv_header_sectok_h" != yes; then
1639                                 AC_MSG_ERROR(Can't find sectok.h)
1640                         fi
1641                         AC_CHECK_LIB(sectok, sectok_open)
1642                         if test "$ac_cv_lib_sectok_sectok_open" != yes; then
1643                                 AC_MSG_ERROR(Can't find libsectok)
1644                         fi
1645                         AC_DEFINE(SMARTCARD)
1646                         AC_DEFINE(USE_SECTOK)
1647                         SCARD_MSG="yes, using sectok" 
1648                 fi
1649         ]
1650 )
1651
1652 # Check whether user wants OpenSC support
1653 AC_ARG_WITH(opensc,
1654         AC_HELP_STRING([--with-opensc=PFX],
1655                        [Enable smartcard support using OpenSC]),
1656         opensc_config_prefix="$withval", opensc_config_prefix="")
1657 if test x$opensc_config_prefix != x ; then
1658   OPENSC_CONFIG=$opensc_config_prefix/bin/opensc-config
1659   AC_PATH_PROG(OPENSC_CONFIG, opensc-config, no)
1660   if test "$OPENSC_CONFIG" != "no"; then
1661     LIBOPENSC_CFLAGS=`$OPENSC_CONFIG --cflags`
1662     LIBOPENSC_LIBS=`$OPENSC_CONFIG --libs`
1663     CPPFLAGS="$CPPFLAGS $LIBOPENSC_CFLAGS"
1664     LDFLAGS="$LDFLAGS $LIBOPENSC_LIBS"
1665     AC_DEFINE(SMARTCARD)
1666     AC_DEFINE(USE_OPENSC)
1667     SCARD_MSG="yes, using OpenSC" 
1668   fi
1669 fi
1670
1671 # Check whether user wants Kerberos 5 support
1672 KRB5_MSG="no" 
1673 AC_ARG_WITH(kerberos5,
1674         [  --with-kerberos5=PATH   Enable Kerberos 5 support],
1675         [
1676                 if test "x$withval" != "xno" ; then
1677                         if test "x$withval" = "xyes" ; then
1678                                 KRB5ROOT="/usr/local"
1679                         else
1680                                 KRB5ROOT=${withval}
1681                         fi
1682                         CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include"
1683                         LDFLAGS="$LDFLAGS -L${KRB5ROOT}/lib"
1684                         AC_DEFINE(KRB5)
1685                         KRB5_MSG="yes"
1686                         AC_MSG_CHECKING(whether we are using Heimdal)
1687                         AC_TRY_COMPILE([ #include <krb5.h> ],
1688                                        [ char *tmp = heimdal_version; ],
1689                                        [ AC_MSG_RESULT(yes)
1690                                          AC_DEFINE(HEIMDAL)
1691                                          K5LIBS="-lkrb5 -ldes -lcom_err -lasn1 -lroken"
1692                                        ],
1693                                        [ AC_MSG_RESULT(no)
1694                                          K5LIBS="-lkrb5 -lk5crypto -lcom_err"
1695                                        ]
1696                         )
1697                         if test ! -z "$need_dash_r" ; then
1698                                 LDFLAGS="$LDFLAGS -R${KRB5ROOT}/lib"
1699                         fi
1700                         if test ! -z "$blibpath" ; then
1701                                 blibpath="$blibpath:${KRB5ROOT}/lib"
1702                         fi
1703                         AC_CHECK_LIB(resolv, dn_expand, , )
1704
1705                         KRB5=yes
1706                 fi
1707         ]
1708 )
1709 # Check whether user wants Kerberos 4 support
1710 KRB4_MSG="no" 
1711 AC_ARG_WITH(kerberos4,
1712         [  --with-kerberos4=PATH   Enable Kerberos 4 support],
1713         [
1714                 if test "x$withval" != "xno" ; then
1715                         if test "x$withval" != "xyes" ; then
1716                                 CPPFLAGS="$CPPFLAGS -I${withval}/include"
1717                                 LDFLAGS="$LDFLAGS -L${withval}/lib"
1718                                 if test ! -z "$need_dash_r" ; then
1719                                         LDFLAGS="$LDFLAGS -R${withval}/lib"
1720                                 fi
1721                                 if test ! -z "$blibpath" ; then
1722                                         blibpath="$blibpath:${withval}/lib"
1723                                 fi
1724                         else
1725                                 if test -d /usr/include/kerberosIV ; then
1726                                         CPPFLAGS="$CPPFLAGS -I/usr/include/kerberosIV"
1727                                 fi
1728                         fi
1729
1730                         AC_CHECK_HEADERS(krb.h)
1731                         if test "$ac_cv_header_krb_h" != yes; then
1732                                 AC_MSG_WARN([Cannot find krb.h, build may fail])
1733                         fi
1734                         AC_CHECK_LIB(krb, main)
1735                         if test "$ac_cv_lib_krb_main" != yes; then
1736                                 AC_CHECK_LIB(krb4, main)
1737                                 if test "$ac_cv_lib_krb4_main" != yes; then
1738                                         AC_MSG_WARN([Cannot find libkrb nor libkrb4, build may fail])
1739                                 else
1740                                         KLIBS="-lkrb4"
1741                                 fi
1742                         else
1743                                 KLIBS="-lkrb"
1744                         fi
1745                         AC_CHECK_LIB(des, des_cbc_encrypt)
1746                         if test "$ac_cv_lib_des_des_cbc_encrypt" != yes; then
1747                                 AC_CHECK_LIB(des425, des_cbc_encrypt)
1748                                 if test "$ac_cv_lib_des425_des_cbc_encrypt" != yes; then
1749                                         AC_MSG_WARN([Cannot find libdes nor libdes425, build may fail])
1750                                 else
1751                                         KLIBS="-ldes425"
1752                                 fi
1753                         else
1754                                 KLIBS="-ldes"
1755                         fi
1756                         AC_CHECK_LIB(resolv, dn_expand, , )
1757                         KRB4=yes
1758                         KRB4_MSG="yes" 
1759                         AC_DEFINE(KRB4)
1760                 fi
1761         ]
1762 )
1763
1764 # Check whether user wants AFS support
1765 AFS_MSG="no" 
1766 AC_ARG_WITH(afs,
1767         [  --with-afs=PATH         Enable AFS support],
1768         [
1769                 if test "x$withval" != "xno" ; then
1770
1771                         if test "x$withval" != "xyes" ; then
1772                                 CPPFLAGS="$CPPFLAGS -I${withval}/include"
1773                                 LDFLAGS="$LDFLAGS -L${withval}/lib"
1774                         fi
1775
1776                         if test -z "$KRB4" ; then
1777                                 AC_MSG_WARN([AFS requires Kerberos IV support, build may fail])
1778                         fi
1779
1780                         LIBS="-lkafs $LIBS"
1781                         if test ! -z "$AFS_LIBS" ; then
1782                                 LIBS="$LIBS $AFS_LIBS"
1783                         fi
1784                         AC_DEFINE(AFS)
1785                         AFS_MSG="yes" 
1786                 fi
1787         ]
1788 )
1789 LIBS="$LIBS $KLIBS $K5LIBS"
1790
1791 # Looking for programs, paths and files
1792 AC_ARG_WITH(rsh,
1793         [  --with-rsh=PATH         Specify path to remote shell program ],
1794         [
1795                 if test "x$withval" != "$no" ; then
1796                         rsh_path=$withval
1797                 fi
1798         ],
1799         [
1800                 AC_PATH_PROG(rsh_path, rsh)
1801         ]
1802 )
1803
1804 PRIVSEP_PATH=/var/empty
1805 AC_ARG_WITH(privsep-path,
1806         [  --with-privsep-path=xxx Path for privilege separation chroot ],
1807         [
1808                 if test "x$withval" != "$no" ; then
1809                         PRIVSEP_PATH=$withval
1810                 fi
1811         ]
1812 )
1813 AC_SUBST(PRIVSEP_PATH)
1814
1815 AC_ARG_WITH(xauth,
1816         [  --with-xauth=PATH       Specify path to xauth program ],
1817         [
1818                 if test "x$withval" != "xno" ; then
1819                         xauth_path=$withval
1820                 fi
1821         ],
1822         [
1823                 AC_PATH_PROG(xauth_path, xauth,,$PATH:/usr/X/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/openwin/bin)
1824                 if (test ! -z "$xauth_path" && test -x "/usr/openwin/bin/xauth") ; then
1825                         xauth_path="/usr/openwin/bin/xauth"
1826                 fi
1827         ]
1828 )
1829
1830 if test -z "$xauth_path" ; then
1831         XAUTH_PATH="undefined"
1832         AC_SUBST(XAUTH_PATH)
1833 else
1834         AC_DEFINE_UNQUOTED(XAUTH_PATH, "$xauth_path")
1835         XAUTH_PATH=$xauth_path
1836         AC_SUBST(XAUTH_PATH)
1837 fi
1838 if test ! -z "$rsh_path" ; then
1839         AC_DEFINE_UNQUOTED(RSH_PATH, "$rsh_path")
1840 fi
1841
1842 # Check for mail directory (last resort if we cannot get it from headers)
1843 if test ! -z "$MAIL" ; then
1844         maildir=`dirname $MAIL`
1845         AC_DEFINE_UNQUOTED(MAIL_DIRECTORY, "$maildir")
1846 fi
1847
1848 if test -z "$no_dev_ptmx" ; then
1849         if test "x$disable_ptmx_check" != "xyes" ; then
1850                 AC_CHECK_FILE("/dev/ptmx", 
1851                         [
1852                                 AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX)
1853                                 have_dev_ptmx=1
1854                         ]
1855                 )
1856         fi
1857 fi
1858 AC_CHECK_FILE("/dev/ptc", 
1859         [
1860                 AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC)
1861                 have_dev_ptc=1
1862         ]
1863 )
1864
1865 # Options from here on. Some of these are preset by platform above
1866 AC_ARG_WITH(mantype,
1867         [  --with-mantype=man|cat|doc  Set man page type],
1868         [
1869                 case "$withval" in
1870                 man|cat|doc)
1871                         MANTYPE=$withval
1872                         ;;
1873                 *)
1874                         AC_MSG_ERROR(invalid man type: $withval)
1875                         ;;
1876                 esac
1877         ]
1878 )
1879 if test -z "$MANTYPE"; then
1880         AC_PATH_PROGS(NROFF, nroff awf, /bin/false, /usr/bin:/usr/ucb)
1881         if ${NROFF} -mdoc ${srcdir}/ssh.1 >/dev/null 2>&1; then
1882                 MANTYPE=doc
1883         elif ${NROFF} -man ${srcdir}/ssh.1 >/dev/null 2>&1; then
1884                 MANTYPE=man
1885         else
1886                 MANTYPE=cat
1887         fi
1888 fi
1889 AC_SUBST(MANTYPE)
1890 if test "$MANTYPE" = "doc"; then
1891         mansubdir=man;
1892 else
1893         mansubdir=$MANTYPE;
1894 fi
1895 AC_SUBST(mansubdir)
1896
1897 # Check whether to enable MD5 passwords
1898 MD5_MSG="no" 
1899 AC_ARG_WITH(md5-passwords,
1900         [  --with-md5-passwords    Enable use of MD5 passwords],
1901         [
1902                 if test "x$withval" != "xno" ; then
1903                         AC_DEFINE(HAVE_MD5_PASSWORDS)
1904                         MD5_MSG="yes" 
1905                 fi
1906         ]
1907 )
1908
1909 # Whether to disable shadow password support
1910 AC_ARG_WITH(shadow,
1911         [  --without-shadow        Disable shadow password support],
1912         [
1913                 if test "x$withval" = "xno" ; then      
1914                         AC_DEFINE(DISABLE_SHADOW)
1915                         disable_shadow=yes
1916                 fi
1917         ]
1918 )
1919
1920 if test -z "$disable_shadow" ; then
1921         AC_MSG_CHECKING([if the systems has expire shadow information])
1922         AC_TRY_COMPILE(
1923         [
1924 #include <sys/types.h>
1925 #include <shadow.h>
1926         struct spwd sp;
1927         ],[ sp.sp_expire = sp.sp_lstchg = sp.sp_inact = 0; ],
1928         [ sp_expire_available=yes ], []
1929         )
1930
1931         if test "x$sp_expire_available" = "xyes" ; then
1932                 AC_MSG_RESULT(yes)
1933                 AC_DEFINE(HAS_SHADOW_EXPIRE)
1934         else
1935                 AC_MSG_RESULT(no)
1936         fi
1937 fi
1938
1939 # Use ip address instead of hostname in $DISPLAY
1940 if test ! -z "$IPADDR_IN_DISPLAY" ; then
1941         DISPLAY_HACK_MSG="yes"
1942         AC_DEFINE(IPADDR_IN_DISPLAY)
1943 else
1944         DISPLAY_HACK_MSG="no" 
1945         AC_ARG_WITH(ipaddr-display,
1946                 [  --with-ipaddr-display   Use ip address instead of hostname in \$DISPLAY],
1947                 [
1948                         if test "x$withval" != "xno" ; then     
1949                                 AC_DEFINE(IPADDR_IN_DISPLAY)
1950                                 DISPLAY_HACK_MSG="yes" 
1951                         fi
1952                 ]
1953         )
1954 fi
1955
1956 dnl BSD systems use /etc/login.conf so --with-default-path= has no effect
1957 if test $ac_cv_func_login_getcapbool = "yes" -a \
1958         $ac_cv_header_login_cap_h = "yes" ; then
1959         USES_LOGIN_CONF=yes
1960 fi
1961 # Whether to mess with the default path
1962 SERVER_PATH_MSG="(default)" 
1963 AC_ARG_WITH(default-path,
1964         [  --with-default-path=    Specify default \$PATH environment for server],
1965         [
1966                 if test "$USES_LOGIN_CONF" = "yes" ; then
1967                         AC_MSG_WARN([
1968 --with-default-path=PATH has no effect on this system.
1969 Edit /etc/login.conf instead.])
1970                 elif test "x$withval" != "xno" ; then   
1971                         user_path="$withval"
1972                         SERVER_PATH_MSG="$withval" 
1973                 fi
1974         ],
1975         [ if test "$USES_LOGIN_CONF" = "yes" ; then
1976         AC_MSG_WARN([Make sure the path to scp is in /etc/login.conf])
1977         else
1978         AC_TRY_RUN(
1979                 [
1980 /* find out what STDPATH is */
1981 #include <stdio.h>
1982 #ifdef HAVE_PATHS_H
1983 # include <paths.h>
1984 #endif
1985 #ifndef _PATH_STDPATH
1986 # define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin"
1987 #endif
1988 #include <sys/types.h>
1989 #include <sys/stat.h>
1990 #include <fcntl.h>
1991 #define DATA "conftest.stdpath"
1992
1993 main()
1994 {
1995         FILE *fd;
1996         int rc;
1997         
1998         fd = fopen(DATA,"w");
1999         if(fd == NULL)
2000                 exit(1);
2001         
2002         if ((rc = fprintf(fd,"%s", _PATH_STDPATH)) < 0)
2003                 exit(1);
2004
2005         exit(0);
2006 }
2007                 ], [ user_path=`cat conftest.stdpath` ],
2008                 [ user_path="/usr/bin:/bin:/usr/sbin:/sbin" ],
2009                 [ user_path="/usr/bin:/bin:/usr/sbin:/sbin" ]
2010         )
2011 # make sure $bindir is in USER_PATH so scp will work
2012                 t_bindir=`eval echo ${bindir}`
2013                 case $t_bindir in
2014                         NONE/*) t_bindir=`echo $t_bindir | sed "s~NONE~$prefix~"` ;;
2015                 esac
2016                 case $t_bindir in
2017                         NONE/*) t_bindir=`echo $t_bindir | sed "s~NONE~$ac_default_prefix~"` ;;
2018                 esac
2019                 echo $user_path | grep ":$t_bindir"  > /dev/null 2>&1
2020                 if test $? -ne 0  ; then
2021                         echo $user_path | grep "^$t_bindir"  > /dev/null 2>&1
2022                         if test $? -ne 0  ; then
2023                                 user_path=$user_path:$t_bindir
2024                                 AC_MSG_RESULT(Adding $t_bindir to USER_PATH so scp will work)
2025                         fi
2026                 fi
2027         fi ]
2028 )
2029 if test "$USES_LOGIN_CONF" != "yes" ; then
2030         AC_DEFINE_UNQUOTED(USER_PATH, "$user_path")
2031         AC_SUBST(user_path)
2032 fi
2033
2034 # Set superuser path separately to user path
2035 AC_ARG_WITH(superuser-path,
2036         [  --with-superuser-path=  Specify different path for super-user],
2037         [
2038                 if test "x$withval" != "xno" ; then
2039                         AC_DEFINE_UNQUOTED(SUPERUSER_PATH, "$withval")
2040                         superuser_path=$withval
2041                 fi
2042         ]
2043 )
2044
2045
2046 # Whether to force IPv4 by default (needed on broken glibc Linux)
2047 IPV4_HACK_MSG="no" 
2048 AC_ARG_WITH(ipv4-default,
2049         [  --with-ipv4-default     Use IPv4 by connections unless '-6' specified],
2050         [
2051                 if test "x$withval" != "xno" ; then     
2052                         AC_DEFINE(IPV4_DEFAULT)
2053                         IPV4_HACK_MSG="yes" 
2054                 fi
2055         ]
2056 )
2057
2058 AC_MSG_CHECKING([if we need to convert IPv4 in IPv6-mapped addresses])
2059 IPV4_IN6_HACK_MSG="no" 
2060 AC_ARG_WITH(4in6,
2061         [  --with-4in6             Check for and convert IPv4 in IPv6 mapped addresses],
2062         [
2063                 if test "x$withval" != "xno" ; then
2064                         AC_MSG_RESULT(yes)
2065                         AC_DEFINE(IPV4_IN_IPV6)
2066                         IPV4_IN6_HACK_MSG="yes" 
2067                 else
2068                         AC_MSG_RESULT(no)
2069                 fi
2070         ],[
2071                 if test "x$inet6_default_4in6" = "xyes"; then
2072                         AC_MSG_RESULT([yes (default)])
2073                         AC_DEFINE(IPV4_IN_IPV6)
2074                         IPV4_IN6_HACK_MSG="yes" 
2075                 else
2076                         AC_MSG_RESULT([no (default)])
2077                 fi
2078         ]
2079 )
2080
2081 # Whether to enable BSD auth support
2082 BSD_AUTH_MSG=no
2083 AC_ARG_WITH(bsd-auth,
2084         [  --with-bsd-auth         Enable BSD auth support],
2085         [
2086                 if test "x$withval" != "xno" ; then     
2087                         AC_DEFINE(BSD_AUTH)
2088                         BSD_AUTH_MSG=yes
2089                 fi
2090         ]
2091 )
2092
2093 # Where to place sshd.pid
2094 piddir=/var/run
2095 # make sure the directory exists
2096 if test ! -d $piddir ; then     
2097         piddir=`eval echo ${sysconfdir}`
2098         case $piddir in
2099                 NONE/*) piddir=`echo $piddir | sed "s~NONE~$ac_default_prefix~"` ;;
2100         esac
2101 fi
2102
2103 AC_ARG_WITH(pid-dir,
2104         [  --with-pid-dir=PATH     Specify location of ssh.pid file],
2105         [
2106                 if test "x$withval" != "xno" ; then     
2107                         piddir=$withval
2108                         if test ! -d $piddir ; then     
2109                         AC_MSG_WARN([** no $piddir directory on this system **])
2110                         fi
2111                 fi
2112         ]
2113 )
2114
2115 AC_DEFINE_UNQUOTED(_PATH_SSH_PIDDIR, "$piddir")
2116 AC_SUBST(piddir)
2117
2118 dnl allow user to disable some login recording features
2119 AC_ARG_ENABLE(lastlog,
2120         [  --disable-lastlog       disable use of lastlog even if detected [no]],
2121         [ AC_DEFINE(DISABLE_LASTLOG) ]
2122 )
2123 AC_ARG_ENABLE(utmp,
2124         [  --disable-utmp          disable use of utmp even if detected [no]],
2125         [ AC_DEFINE(DISABLE_UTMP) ]
2126 )
2127 AC_ARG_ENABLE(utmpx,
2128         [  --disable-utmpx         disable use of utmpx even if detected [no]],
2129         [ AC_DEFINE(DISABLE_UTMPX) ]
2130 )
2131 AC_ARG_ENABLE(wtmp,
2132         [  --disable-wtmp          disable use of wtmp even if detected [no]],
2133         [ AC_DEFINE(DISABLE_WTMP) ]
2134 )
2135 AC_ARG_ENABLE(wtmpx,
2136         [  --disable-wtmpx         disable use of wtmpx even if detected [no]],
2137         [ AC_DEFINE(DISABLE_WTMPX) ]
2138 )
2139 AC_ARG_ENABLE(libutil,
2140         [  --disable-libutil       disable use of libutil (login() etc.) [no]],
2141         [ AC_DEFINE(DISABLE_LOGIN) ]
2142 )
2143 AC_ARG_ENABLE(pututline,
2144         [  --disable-pututline     disable use of pututline() etc. ([uw]tmp) [no]],
2145         [ AC_DEFINE(DISABLE_PUTUTLINE) ]
2146 )
2147 AC_ARG_ENABLE(pututxline,
2148         [  --disable-pututxline    disable use of pututxline() etc. ([uw]tmpx) [no]],
2149         [ AC_DEFINE(DISABLE_PUTUTXLINE) ]
2150 )
2151 AC_ARG_WITH(lastlog,
2152   [  --with-lastlog=FILE|DIR specify lastlog location [common locations]],
2153         [
2154                 if test "x$withval" = "xno" ; then      
2155                         AC_DEFINE(DISABLE_LASTLOG)
2156                 else
2157                         conf_lastlog_location=$withval
2158                 fi
2159         ]
2160 )
2161
2162 dnl lastlog, [uw]tmpx? detection
2163 dnl  NOTE: set the paths in the platform section to avoid the
2164 dnl   need for command-line parameters
2165 dnl lastlog and [uw]tmp are subject to a file search if all else fails
2166
2167 dnl lastlog detection
2168 dnl  NOTE: the code itself will detect if lastlog is a directory
2169 AC_MSG_CHECKING([if your system defines LASTLOG_FILE])
2170 AC_TRY_COMPILE([
2171 #include <sys/types.h>
2172 #include <utmp.h>
2173 #ifdef HAVE_LASTLOG_H
2174 #  include <lastlog.h>
2175 #endif
2176 #ifdef HAVE_PATHS_H
2177 #  include <paths.h>
2178 #endif
2179 #ifdef HAVE_LOGIN_H
2180 # include <login.h>
2181 #endif
2182         ],
2183         [ char *lastlog = LASTLOG_FILE; ],
2184         [ AC_MSG_RESULT(yes) ],
2185         [
2186                 AC_MSG_RESULT(no)
2187                 AC_MSG_CHECKING([if your system defines _PATH_LASTLOG])
2188                 AC_TRY_COMPILE([
2189 #include <sys/types.h>
2190 #include <utmp.h>
2191 #ifdef HAVE_LASTLOG_H
2192 #  include <lastlog.h>
2193 #endif
2194 #ifdef HAVE_PATHS_H
2195 #  include <paths.h>
2196 #endif
2197                 ],
2198                 [ char *lastlog = _PATH_LASTLOG; ],
2199                 [ AC_MSG_RESULT(yes) ],
2200                 [
2201                         AC_MSG_RESULT(no)
2202                         system_lastlog_path=no
2203                 ])
2204         ]
2205 )
2206
2207 if test -z "$conf_lastlog_location"; then
2208         if test x"$system_lastlog_path" = x"no" ; then
2209                 for f in /var/log/lastlog /usr/adm/lastlog /var/adm/lastlog /etc/security/lastlog ; do
2210                                 if (test -d "$f" || test -f "$f") ; then
2211                                         conf_lastlog_location=$f
2212                                 fi
2213                 done
2214                 if test -z "$conf_lastlog_location"; then
2215                         AC_MSG_WARN([** Cannot find lastlog **])
2216                         dnl Don't define DISABLE_LASTLOG - that means we don't try wtmp/wtmpx
2217                 fi
2218         fi
2219 fi
2220
2221 if test -n "$conf_lastlog_location"; then
2222         AC_DEFINE_UNQUOTED(CONF_LASTLOG_FILE, "$conf_lastlog_location")
2223 fi      
2224
2225 dnl utmp detection
2226 AC_MSG_CHECKING([if your system defines UTMP_FILE])
2227 AC_TRY_COMPILE([
2228 #include <sys/types.h>
2229 #include <utmp.h>
2230 #ifdef HAVE_PATHS_H
2231 #  include <paths.h>
2232 #endif
2233         ],
2234         [ char *utmp = UTMP_FILE; ],
2235         [ AC_MSG_RESULT(yes) ],
2236         [ AC_MSG_RESULT(no)
2237           system_utmp_path=no ]
2238 )
2239 if test -z "$conf_utmp_location"; then
2240         if test x"$system_utmp_path" = x"no" ; then
2241                 for f in /etc/utmp /usr/adm/utmp /var/run/utmp; do
2242                         if test -f $f ; then
2243                                 conf_utmp_location=$f
2244                         fi
2245                 done
2246                 if test -z "$conf_utmp_location"; then
2247                         AC_DEFINE(DISABLE_UTMP)
2248                 fi
2249         fi
2250 fi
2251 if test -n "$conf_utmp_location"; then
2252         AC_DEFINE_UNQUOTED(CONF_UTMP_FILE, "$conf_utmp_location")
2253 fi      
2254
2255 dnl wtmp detection
2256 AC_MSG_CHECKING([if your system defines WTMP_FILE])
2257 AC_TRY_COMPILE([
2258 #include <sys/types.h>
2259 #include <utmp.h>
2260 #ifdef HAVE_PATHS_H
2261 #  include <paths.h>
2262 #endif
2263         ],
2264         [ char *wtmp = WTMP_FILE; ],
2265         [ AC_MSG_RESULT(yes) ],
2266         [ AC_MSG_RESULT(no)
2267           system_wtmp_path=no ]
2268 )
2269 if test -z "$conf_wtmp_location"; then
2270         if test x"$system_wtmp_path" = x"no" ; then
2271                 for f in /usr/adm/wtmp /var/log/wtmp; do
2272                         if test -f $f ; then
2273                                 conf_wtmp_location=$f
2274                         fi
2275                 done
2276                 if test -z "$conf_wtmp_location"; then
2277                         AC_DEFINE(DISABLE_WTMP)
2278                 fi
2279         fi
2280 fi
2281 if test -n "$conf_wtmp_location"; then
2282         AC_DEFINE_UNQUOTED(CONF_WTMP_FILE, "$conf_wtmp_location")
2283 fi      
2284
2285
2286 dnl utmpx detection - I don't know any system so perverse as to require
2287 dnl  utmpx, but not define UTMPX_FILE (ditto wtmpx.) No doubt it's out
2288 dnl  there, though.
2289 AC_MSG_CHECKING([if your system defines UTMPX_FILE])
2290 AC_TRY_COMPILE([
2291 #include <sys/types.h>
2292 #include <utmp.h>
2293 #ifdef HAVE_UTMPX_H
2294 #include <utmpx.h>
2295 #endif
2296 #ifdef HAVE_PATHS_H
2297 #  include <paths.h>
2298 #endif
2299         ],
2300         [ char *utmpx = UTMPX_FILE; ],
2301         [ AC_MSG_RESULT(yes) ],
2302         [ AC_MSG_RESULT(no)
2303           system_utmpx_path=no ]
2304 )
2305 if test -z "$conf_utmpx_location"; then
2306         if test x"$system_utmpx_path" = x"no" ; then
2307                 AC_DEFINE(DISABLE_UTMPX)
2308         fi
2309 else
2310         AC_DEFINE_UNQUOTED(CONF_UTMPX_FILE, "$conf_utmpx_location")
2311 fi      
2312
2313 dnl wtmpx detection
2314 AC_MSG_CHECKING([if your system defines WTMPX_FILE])
2315 AC_TRY_COMPILE([
2316 #include <sys/types.h>
2317 #include <utmp.h>
2318 #ifdef HAVE_UTMPX_H
2319 #include <utmpx.h>
2320 #endif
2321 #ifdef HAVE_PATHS_H
2322 #  include <paths.h>
2323 #endif
2324         ],
2325         [ char *wtmpx = WTMPX_FILE; ],
2326         [ AC_MSG_RESULT(yes) ],
2327         [ AC_MSG_RESULT(no)
2328           system_wtmpx_path=no ]
2329 )
2330 if test -z "$conf_wtmpx_location"; then
2331         if test x"$system_wtmpx_path" = x"no" ; then
2332                 AC_DEFINE(DISABLE_WTMPX)
2333         fi
2334 else
2335         AC_DEFINE_UNQUOTED(CONF_WTMPX_FILE, "$conf_wtmpx_location")
2336 fi      
2337
2338
2339 if test ! -z "$blibpath" ; then
2340         LDFLAGS="$LDFLAGS -blibpath:$blibpath"
2341         AC_MSG_WARN([Please check and edit -blibpath in LDFLAGS in Makefile])
2342 fi
2343
2344 dnl remove pam and dl because they are in $LIBPAM
2345 if test "$PAM_MSG" = yes ; then
2346         LIBS=`echo $LIBS | sed 's/-lpam //'`
2347 fi
2348 if test "$ac_cv_lib_pam_pam_set_item" = yes ; then
2349         LIBS=`echo $LIBS | sed 's/-ldl //'`
2350 fi
2351
2352 AC_EXEEXT
2353 AC_CONFIG_FILES([Makefile openbsd-compat/Makefile scard/Makefile ssh_prng_cmds])
2354 AC_OUTPUT
2355
2356 # Print summary of options
2357
2358 # Someone please show me a better way :)
2359 A=`eval echo ${prefix}` ; A=`eval echo ${A}`
2360 B=`eval echo ${bindir}` ; B=`eval echo ${B}`
2361 C=`eval echo ${sbindir}` ; C=`eval echo ${C}`
2362 D=`eval echo ${sysconfdir}` ; D=`eval echo ${D}`
2363 E=`eval echo ${libexecdir}/ssh-askpass` ; E=`eval echo ${E}`
2364 F=`eval echo ${mandir}/${mansubdir}X` ; F=`eval echo ${F}`
2365 G=`eval echo ${piddir}` ; G=`eval echo ${G}`
2366 H=`eval echo ${PRIVSEP_PATH}` ; H=`eval echo ${H}`
2367 I=`eval echo ${user_path}` ; I=`eval echo ${I}`
2368 J=`eval echo ${superuser_path}` ; J=`eval echo ${J}`
2369
2370 echo ""
2371 echo "OpenSSH has been configured with the following options:"
2372 echo "                     User binaries: $B"
2373 echo "                   System binaries: $C"
2374 echo "               Configuration files: $D"
2375 echo "                   Askpass program: $E"
2376 echo "                      Manual pages: $F"
2377 echo "                          PID file: $G"
2378 echo "  Privilege separation chroot path: $H"
2379 if test "$USES_LOGIN_CONF" = "yes" ; then
2380 echo "   At runtime, sshd will use the path defined in /etc/login.conf"
2381 else
2382 echo "            sshd default user PATH: $I"
2383 fi
2384 if test ! -z "$superuser_path" ; then
2385 echo "          sshd superuser user PATH: $J"
2386 fi
2387 echo "                    Manpage format: $MANTYPE"
2388 echo "                       PAM support: ${PAM_MSG}"
2389 echo "                KerberosIV support: $KRB4_MSG"
2390 echo "                 KerberosV support: $KRB5_MSG"
2391 echo "                 Smartcard support: $SCARD_MSG"
2392 echo "                       AFS support: $AFS_MSG"
2393 echo "                     S/KEY support: $SKEY_MSG"
2394 echo "              TCP Wrappers support: $TCPW_MSG"
2395 echo "              MD5 password support: $MD5_MSG"
2396 echo "       IP address in \$DISPLAY hack: $DISPLAY_HACK_MSG"
2397 echo "          Use IPv4 by default hack: $IPV4_HACK_MSG"
2398 echo "           Translate v4 in v6 hack: $IPV4_IN6_HACK_MSG"
2399 echo "                  BSD Auth support: $BSD_AUTH_MSG"
2400 echo "              Random number source: $RAND_MSG"
2401 if test ! -z "$USE_RAND_HELPER" ; then
2402 echo "     ssh-rand-helper collects from: $RAND_HELPER_MSG"
2403 fi
2404
2405 echo ""
2406
2407 echo "              Host: ${host}"
2408 echo "          Compiler: ${CC}"
2409 echo "    Compiler flags: ${CFLAGS}"
2410 echo "Preprocessor flags: ${CPPFLAGS}"
2411 echo "      Linker flags: ${LDFLAGS}"
2412 echo "         Libraries: ${LIBWRAP} ${LIBPAM} ${LIBS}"
2413
2414 echo ""
2415
2416 if test "x$PAM_MSG" = "xyes" ; then
2417         echo "PAM is enabled. You may need to install a PAM control file "
2418         echo "for sshd, otherwise password authentication may fail. "
2419         echo "Example PAM control files can be found in the contrib/ " 
2420         echo "subdirectory"
2421         echo ""
2422 fi
2423
2424 if test ! -z "$NO_SFTP"; then
2425         echo "sftp-server will be disabled.  Your compiler does not "
2426         echo "support 64bit integers."
2427         echo ""
2428 fi
2429
2430 if test ! -z "$RAND_HELPER_CMDHASH" ; then
2431         echo "WARNING: you are using the builtin random number collection "
2432         echo "service. Please read WARNING.RNG and request that your OS "
2433         echo "vendor includes kernel-based random number collection in "
2434         echo "future versions of your OS."
2435         echo ""
2436 fi
2437
This page took 0.595323 seconds and 5 git commands to generate.