]> andersk Git - openssh.git/blame - configure.ac
- markus@cvs.openbsd.org 2004/01/30 09:48:57
[openssh.git] / configure.ac
CommitLineData
eb5d7ff6 1# $Id$
0b202697 2
98a7c37b 3AC_INIT
4AC_CONFIG_SRCDIR([ssh.c])
5881cd60 5
6AC_CONFIG_HEADER(config.h)
b14b2ae7 7AC_PROG_CC
a7effaac 8AC_CANONICAL_HOST
cf0c5df5 9AC_C_BIGENDIAN
5881cd60 10
a0391976 11# Checks for programs.
4bbf95fa 12AC_PROG_AWK
4cca272e 13AC_PROG_CPP
5881cd60 14AC_PROG_RANLIB
cf8dd513 15AC_PROG_INSTALL
bee0a37e 16AC_PATH_PROG(AR, ar)
13dd877b 17AC_PATH_PROGS(PERL, perl5 perl)
c3690df3 18AC_PATH_PROG(SED, sed)
a0f84251 19AC_SUBST(PERL)
ad85db64 20AC_PATH_PROG(ENT, ent)
21AC_SUBST(ENT)
6958bd37 22AC_PATH_PROG(TEST_MINUS_S_SH, bash)
23AC_PATH_PROG(TEST_MINUS_S_SH, ksh)
24AC_PATH_PROG(TEST_MINUS_S_SH, sh)
6193497b 25AC_PATH_PROG(SH, sh)
f498ed15 26
948fd8b9 27# System features
28AC_SYS_LARGEFILE
29
c193d002 30if test -z "$AR" ; then
31 AC_MSG_ERROR([*** 'ar' missing, please install or fix your \$PATH ***])
32fi
33
2e73a022 34# Use LOGIN_PROGRAM from environment if possible
35if test ! -z "$LOGIN_PROGRAM" ; then
36 AC_DEFINE_UNQUOTED(LOGIN_PROGRAM_FALLBACK, "$LOGIN_PROGRAM")
37else
38 # Search for login
39 AC_PATH_PROG(LOGIN_PROGRAM_FALLBACK, login)
40 if test ! -z "$LOGIN_PROGRAM_FALLBACK" ; then
41 AC_DEFINE_UNQUOTED(LOGIN_PROGRAM_FALLBACK, "$LOGIN_PROGRAM_FALLBACK")
42 fi
43fi
44
37656beb 45AC_PATH_PROG(PATH_PASSWD_PROG, passwd)
46if test ! -z "$PATH_PASSWD_PROG" ; then
47 AC_DEFINE_UNQUOTED(_PATH_PASSWD_PROG, "$PATH_PASSWD_PROG")
48fi
49
d423d822 50if test -z "$LD" ; then
51 LD=$CC
52fi
53AC_SUBST(LD)
54
d423d822 55AC_C_INLINE
aff51935 56if test "$GCC" = "yes" || test "$GCC" = "egcs"; then
5ed2bb5b 57 CFLAGS="$CFLAGS -Wall -Wpointer-arith -Wno-uninitialized"
d423d822 58fi
59
e6354014 60AC_ARG_WITH(rpath,
61 [ --without-rpath Disable auto-added -R linker paths],
62 [
63 if test "x$withval" = "xno" ; then
64 need_dash_r=""
65 fi
66 if test "x$withval" = "xyes" ; then
67 need_dash_r=1
68 fi
69 ]
70)
71
a0391976 72# Check for some target-specific stuff
a7effaac 73case "$host" in
9d6b1b96 74*-*-aix*)
aff51935 75 AC_MSG_CHECKING([how to specify blibpath for linker ($LD)])
68ece370 76 if (test -z "$blibpath"); then
0a15d73b 77 blibpath="/usr/lib:/lib"
68ece370 78 fi
79 saved_LDFLAGS="$LDFLAGS"
80 for tryflags in -blibpath: -Wl,-blibpath: -Wl,-rpath, ;do
81 if (test -z "$blibflags"); then
82 LDFLAGS="$saved_LDFLAGS $tryflags$blibpath"
83 AC_TRY_LINK([], [], [blibflags=$tryflags])
84 fi
85 done
86 if (test -z "$blibflags"); then
87 AC_MSG_RESULT(not found)
88 AC_MSG_ERROR([*** must be able to specify blibpath on AIX - check config.log])
89 else
90 AC_MSG_RESULT($blibflags)
bd499f9e 91 fi
68ece370 92 LDFLAGS="$saved_LDFLAGS"
e351e493 93 dnl Check for authenticate. Might be in libs.a on older AIXes
94 AC_CHECK_FUNC(authenticate, [AC_DEFINE(WITH_AIXAUTHENTICATE)],
0764e748 95 [AC_CHECK_LIB(s,authenticate,
e351e493 96 [ AC_DEFINE(WITH_AIXAUTHENTICATE)
0764e748 97 LIBS="$LIBS -ls"
98 ])
99 ])
e351e493 100 dnl Check if loginfailed is declared and takes 4 arguments (AIX >= 5.2)
101 AC_CHECK_DECL(loginfailed,
102 [AC_MSG_CHECKING(if loginfailed takes 4 arguments)
103 AC_TRY_COMPILE(
f58c0e01 104 [#include <usersec.h>],
e351e493 105 [(void)loginfailed("user","host","tty",0);],
106 [AC_MSG_RESULT(yes)
107 AC_DEFINE(AIX_LOGINFAILED_4ARG)],
f58c0e01 108 [AC_MSG_RESULT(no)]
e351e493 109 )],
110 [],
111 [#include <usersec.h>]
112 )
2aa3a16c 113 AC_CHECK_FUNCS(setauthdb)
4c8ef3fb 114 AC_DEFINE(BROKEN_GETADDRINFO)
1352689f 115 AC_DEFINE(BROKEN_REALPATH)
3b8dff69 116 AC_DEFINE(SETEUID_BREAKS_SETUID)
117 AC_DEFINE(BROKEN_SETREUID)
118 AC_DEFINE(BROKEN_SETREGID)
a3cef3ca 119 dnl AIX handles lastlog as part of its login message
120 AC_DEFINE(DISABLE_LASTLOG)
58177c0a 121 AC_DEFINE(LOGIN_NEEDS_UTMPX)
3a2b2b44 122 AC_DEFINE(SPT_TYPE,SPT_REUSEARGV)
9d6b1b96 123 ;;
3c62e7eb 124*-*-cygwin*)
a52997bd 125 check_for_libcrypt_later=1
ffb8d130 126 LIBS="$LIBS /usr/lib/textmode.o"
3c62e7eb 127 AC_DEFINE(HAVE_CYGWIN)
7043a38d 128 AC_DEFINE(USE_PIPES)
3c62e7eb 129 AC_DEFINE(DISABLE_SHADOW)
3c62e7eb 130 AC_DEFINE(IP_TOS_IS_BROKEN)
3d114925 131 AC_DEFINE(NO_X11_UNIX_SOCKETS)
e6f15ed1 132 AC_DEFINE(NO_IPPORT_RESERVED_CONCEPT)
94d8258b 133 AC_DEFINE(DISABLE_FD_PASSING)
246446cd 134 AC_DEFINE(SETGROUPS_NOOP)
3c62e7eb 135 ;;
d6fdb079 136*-*-dgux*)
137 AC_DEFINE(IP_TOS_IS_BROKEN)
0c6a72a5 138 AC_DEFINE(SETEUID_BREAKS_SETUID)
139 AC_DEFINE(BROKEN_SETREUID)
140 AC_DEFINE(BROKEN_SETREGID)
d6fdb079 141 ;;
39c98ef7 142*-*-darwin*)
33e2e066 143 AC_MSG_CHECKING(if we have working getaddrinfo)
144 AC_TRY_RUN([#include <mach-o/dyld.h>
145main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
146 exit(0);
147 else
148 exit(1);
149}], [AC_MSG_RESULT(working)],
150 [AC_MSG_RESULT(buggy)
151 AC_DEFINE(BROKEN_GETADDRINFO)],
b27e573d 152 [AC_MSG_RESULT(assume it is working)])
635e0c42 153 AC_DEFINE(SETEUID_BREAKS_SETUID)
154 AC_DEFINE(BROKEN_SETREUID)
155 AC_DEFINE(BROKEN_SETREGID)
ff620033 156 AC_DEFINE_UNQUOTED(BIND_8_COMPAT, 1)
39c98ef7 157 ;;
6e879cb4 158*-*-hpux10.26)
159 if test -z "$GCC"; then
160 CFLAGS="$CFLAGS -Ae"
161 fi
162 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
163 IPADDR_IN_DISPLAY=yes
164 AC_DEFINE(HAVE_SECUREWARE)
165 AC_DEFINE(USE_PIPES)
166 AC_DEFINE(LOGIN_NO_ENDOPT)
167 AC_DEFINE(LOGIN_NEEDS_UTMPX)
6e879cb4 168 AC_DEFINE(DISABLE_UTMP)
3e6e3da0 169 AC_DEFINE(LOCKED_PASSWD_STRING, "*")
3a2b2b44 170 AC_DEFINE(SPT_TYPE,SPT_PSTAT)
f75ca46d 171 LIBS="$LIBS -lsec -lsecpw"
172 AC_CHECK_LIB(xnet, t_error, ,AC_MSG_ERROR([*** -lxnet needed on HP-UX - check config.log ***]))
6e879cb4 173 disable_ptmx_check=yes
174 ;;
a7effaac 175*-*-hpux10*)
176 if test -z "$GCC"; then
fc1e8bf4 177 CFLAGS="$CFLAGS -Ae"
a7effaac 178 fi
28564873 179 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
44839801 180 IPADDR_IN_DISPLAY=yes
137d7b6c 181 AC_DEFINE(USE_PIPES)
a2572aa7 182 AC_DEFINE(LOGIN_NO_ENDOPT)
183 AC_DEFINE(LOGIN_NEEDS_UTMPX)
764d4113 184 AC_DEFINE(DISABLE_UTMP)
3e6e3da0 185 AC_DEFINE(LOCKED_PASSWD_STRING, "*")
3a2b2b44 186 AC_DEFINE(SPT_TYPE,SPT_PSTAT)
f75ca46d 187 LIBS="$LIBS -lsec"
188 AC_CHECK_LIB(xnet, t_error, ,AC_MSG_ERROR([*** -lxnet needed on HP-UX - check config.log ***]))
a7effaac 189 ;;
2b763e31 190*-*-hpux11*)
b8fea62d 191 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
44839801 192 IPADDR_IN_DISPLAY=yes
adeebd37 193 AC_DEFINE(PAM_SUN_CODEBASE)
2b10f47a 194 AC_DEFINE(USE_PIPES)
a2572aa7 195 AC_DEFINE(LOGIN_NO_ENDOPT)
196 AC_DEFINE(LOGIN_NEEDS_UTMPX)
764d4113 197 AC_DEFINE(DISABLE_UTMP)
3e6e3da0 198 AC_DEFINE(LOCKED_PASSWD_STRING, "*")
3a2b2b44 199 AC_DEFINE(SPT_TYPE,SPT_PSTAT)
38b69c0b 200 case "$host" in
201 *-*-hpux11.11*)
202 AC_DEFINE(BROKEN_GETADDRINFO);;
203 esac
f75ca46d 204 LIBS="$LIBS -lsec"
205 AC_CHECK_LIB(xnet, t_error, ,AC_MSG_ERROR([*** -lxnet needed on HP-UX - check config.log ***]))
2b763e31 206 ;;
d94aa2ae 207*-*-irix5*)
6ac7829a 208 PATH="$PATH:/usr/etc"
416ed5a7 209 AC_DEFINE(BROKEN_INET_NTOA)
cb433561 210 AC_DEFINE(SETEUID_BREAKS_SETUID)
211 AC_DEFINE(BROKEN_SETREUID)
212 AC_DEFINE(BROKEN_SETREGID)
0e8f4eba 213 AC_DEFINE(WITH_ABBREV_NO_TTY)
3e6e3da0 214 AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
b9795b89 215 ;;
216*-*-irix6*)
6ac7829a 217 PATH="$PATH:/usr/etc"
3206bb3b 218 AC_DEFINE(WITH_IRIX_ARRAY)
219 AC_DEFINE(WITH_IRIX_PROJECT)
220 AC_DEFINE(WITH_IRIX_AUDIT)
b5171f93 221 AC_CHECK_FUNC(jlimit_startjob, [AC_DEFINE(WITH_IRIX_JOBS)])
416ed5a7 222 AC_DEFINE(BROKEN_INET_NTOA)
412c0eaa 223 AC_DEFINE(SETEUID_BREAKS_SETUID)
224 AC_DEFINE(BROKEN_SETREUID)
225 AC_DEFINE(BROKEN_SETREGID)
0e8f4eba 226 AC_DEFINE(WITH_ABBREV_NO_TTY)
3e6e3da0 227 AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
d94aa2ae 228 ;;
5cdfe03f 229*-*-linux*)
230 no_dev_ptmx=1
717057b6 231 check_for_libcrypt_later=1
eacb954e 232 check_for_openpty_ctty_bug=1
80faa19f 233 AC_DEFINE(DONT_TRY_OTHER_AF)
a8545c6c 234 AC_DEFINE(PAM_TTY_KLUDGE)
3e6e3da0 235 AC_DEFINE(LOCKED_PASSWD_PREFIX, "!!")
3a2b2b44 236 AC_DEFINE(SPT_TYPE,SPT_REUSEARGV)
80faa19f 237 inet6_default_4in6=yes
bf7c1e6c 238 case `uname -r` in
ad84c479 239 1.*|2.0.*)
bf7c1e6c 240 AC_DEFINE(BROKEN_CMSG_TYPE)
241 ;;
bf7c1e6c 242 esac
5cdfe03f 243 ;;
66d6c27e 244mips-sony-bsd|mips-sony-newsos4)
245 AC_DEFINE(HAVE_NEWS4)
246 SONY=1
66d6c27e 247 ;;
d468fc76 248*-*-netbsd*)
33e2e066 249 check_for_libcrypt_before=1
e6354014 250 if test "x$withval" != "xno" ; then
251 need_dash_r=1
252 fi
d468fc76 253 ;;
86b416a7 254*-*-freebsd*)
255 check_for_libcrypt_later=1
256 ;;
8707b7eb 257*-*-bsdi*)
258 AC_DEFINE(SETEUID_BREAKS_SETUID)
259 AC_DEFINE(BROKEN_SETREUID)
260 AC_DEFINE(BROKEN_SETREGID)
261 ;;
729bfe59 262*-next-*)
729bfe59 263 conf_lastlog_location="/usr/adm/lastlog"
698d107e 264 conf_utmp_location=/etc/utmp
265 conf_wtmp_location=/usr/adm/wtmp
266 MAIL=/usr/spool/mail
729bfe59 267 AC_DEFINE(HAVE_NEXT)
443172c4 268 AC_DEFINE(BROKEN_REALPATH)
00937921 269 AC_DEFINE(USE_PIPES)
86b416a7 270 AC_DEFINE(BROKEN_SAVED_UIDS)
729bfe59 271 ;;
9d6b1b96 272*-*-solaris*)
adeebd37 273 AC_DEFINE(PAM_SUN_CODEBASE)
7e2d5fa4 274 AC_DEFINE(LOGIN_NEEDS_UTMPX)
275 AC_DEFINE(LOGIN_NEEDS_TERM)
7f0a4ff1 276 AC_DEFINE(PAM_TTY_KLUDGE)
3e6e3da0 277 AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
ad84c479 278 # Pushing STREAMS modules will cause sshd to acquire a controlling tty.
279 AC_DEFINE(SSHD_ACQUIRES_CTTY)
95b99395 280 external_path_file=/etc/default/login
1d7b9b20 281 # hardwire lastlog location (can't detect it on some versions)
282 conf_lastlog_location="/var/adm/lastlog"
32c80420 283 AC_MSG_CHECKING(for obsolete utmp and wtmp in solaris2.x)
284 sol2ver=`echo "$host"| sed -e 's/.*[[0-9]]\.//'`
285 if test "$sol2ver" -ge 8; then
286 AC_MSG_RESULT(yes)
287 AC_DEFINE(DISABLE_UTMP)
288 AC_DEFINE(DISABLE_WTMP)
289 else
290 AC_MSG_RESULT(no)
291 fi
9d6b1b96 292 ;;
a423beaf 293*-*-sunos4*)
0c2fb82f 294 CPPFLAGS="$CPPFLAGS -DSUNOS4"
a423beaf 295 AC_CHECK_FUNCS(getpwanam)
adeebd37 296 AC_DEFINE(PAM_SUN_CODEBASE)
32eec038 297 conf_utmp_location=/etc/utmp
298 conf_wtmp_location=/var/adm/wtmp
299 conf_lastlog_location=/var/adm/lastlog
137d7b6c 300 AC_DEFINE(USE_PIPES)
a423beaf 301 ;;
6f68f28a 302*-ncr-sysv*)
98a7c37b 303 LIBS="$LIBS -lc89"
29525240 304 AC_DEFINE(USE_PIPES)
eabb99c6 305 AC_DEFINE(SSHD_ACQUIRES_CTTY)
6fb3618d 306 AC_DEFINE(SETEUID_BREAKS_SETUID)
307 AC_DEFINE(BROKEN_SETREUID)
308 AC_DEFINE(BROKEN_SETREGID)
6f68f28a 309 ;;
132dd316 310*-sni-sysv*)
c8c15bcb 311 # /usr/ucblib MUST NOT be searched on ReliantUNIX
e2798e96 312 AC_CHECK_LIB(dl, dlsym, ,)
9548d6c8 313 IPADDR_IN_DISPLAY=yes
314 AC_DEFINE(USE_PIPES)
132dd316 315 AC_DEFINE(IP_TOS_IS_BROKEN)
605369bb 316 AC_DEFINE(SETEUID_BREAKS_SETUID)
317 AC_DEFINE(BROKEN_SETREUID)
318 AC_DEFINE(BROKEN_SETREGID)
eabb99c6 319 AC_DEFINE(SSHD_ACQUIRES_CTTY)
95b99395 320 external_path_file=/etc/default/login
c8c15bcb 321 # /usr/ucblib/libucb.a no longer needed on ReliantUNIX
322 # Attention: always take care to bind libsocket and libnsl before libc,
323 # otherwise you will find lots of "SIOCGPGRP errno 22" on syslog
132dd316 324 ;;
77bb0bca 325*-*-sysv4.2*)
ed6553e2 326 AC_DEFINE(USE_PIPES)
7ed101c0 327 AC_DEFINE(SETEUID_BREAKS_SETUID)
328 AC_DEFINE(BROKEN_SETREUID)
329 AC_DEFINE(BROKEN_SETREGID)
77bb0bca 330 ;;
331*-*-sysv5*)
ed6553e2 332 AC_DEFINE(USE_PIPES)
7ed101c0 333 AC_DEFINE(SETEUID_BREAKS_SETUID)
334 AC_DEFINE(BROKEN_SETREUID)
335 AC_DEFINE(BROKEN_SETREGID)
77bb0bca 336 ;;
9d6b1b96 337*-*-sysv*)
9d6b1b96 338 ;;
77bb0bca 339*-*-sco3.2v4*)
0a15d73b 340 CPPFLAGS="$CPPFLAGS -Dftruncate=chsize"
98a7c37b 341 LIBS="$LIBS -los -lprot -lx -ltinfo -lm"
77bb0bca 342 RANLIB=true
ed6553e2 343 no_dev_ptmx=1
77bb0bca 344 AC_DEFINE(BROKEN_SYS_TERMIO_H)
ed6553e2 345 AC_DEFINE(USE_PIPES)
6e879cb4 346 AC_DEFINE(HAVE_SECUREWARE)
d287c664 347 AC_DEFINE(DISABLE_SHADOW)
86b416a7 348 AC_DEFINE(BROKEN_SAVED_UIDS)
bcebad47 349 AC_DEFINE(WITH_ABBREV_NO_TTY)
aca75d94 350 AC_CHECK_FUNCS(getluid setluid)
533875af 351 MANTYPE=man
98a7c37b 352 do_sco3_extra_lib_check=yes
77bb0bca 353 ;;
354*-*-sco3.2v5*)
21710e39 355 if test -z "$GCC"; then
356 CFLAGS="$CFLAGS -belf"
357 fi
ed6553e2 358 LIBS="$LIBS -lprot -lx -ltinfo -lm"
509b1f88 359 no_dev_ptmx=1
ed6553e2 360 AC_DEFINE(USE_PIPES)
6e879cb4 361 AC_DEFINE(HAVE_SECUREWARE)
d287c664 362 AC_DEFINE(DISABLE_SHADOW)
94d8258b 363 AC_DEFINE(DISABLE_FD_PASSING)
7ed101c0 364 AC_DEFINE(SETEUID_BREAKS_SETUID)
365 AC_DEFINE(BROKEN_SETREUID)
366 AC_DEFINE(BROKEN_SETREGID)
bcebad47 367 AC_DEFINE(WITH_ABBREV_NO_TTY)
aca75d94 368 AC_CHECK_FUNCS(getluid setluid)
533875af 369 MANTYPE=man
509b1f88 370 ;;
ccbb983c 371*-*-unicosmk*)
c1ad5966 372 AC_DEFINE(NO_SSH_LASTLOG)
373 AC_DEFINE(SETEUID_BREAKS_SETUID)
374 AC_DEFINE(BROKEN_SETREUID)
375 AC_DEFINE(BROKEN_SETREGID)
ccbb983c 376 AC_DEFINE(USE_PIPES)
377 AC_DEFINE(DISABLE_FD_PASSING)
378 LDFLAGS="$LDFLAGS"
379 LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm"
380 MANTYPE=cat
d262b7f2 381 ;;
7b9a8c6e 382*-*-unicosmp*)
c1ad5966 383 AC_DEFINE(SETEUID_BREAKS_SETUID)
384 AC_DEFINE(BROKEN_SETREUID)
385 AC_DEFINE(BROKEN_SETREGID)
7b9a8c6e 386 AC_DEFINE(WITH_ABBREV_NO_TTY)
387 AC_DEFINE(USE_PIPES)
388 AC_DEFINE(DISABLE_FD_PASSING)
389 LDFLAGS="$LDFLAGS"
c1ad5966 390 LIBS="$LIBS -lgen -lacid -ldb"
7b9a8c6e 391 MANTYPE=cat
392 ;;
ca5c7d6a 393*-*-unicos*)
c1ad5966 394 AC_DEFINE(SETEUID_BREAKS_SETUID)
395 AC_DEFINE(BROKEN_SETREUID)
396 AC_DEFINE(BROKEN_SETREGID)
ca5c7d6a 397 AC_DEFINE(USE_PIPES)
94d8258b 398 AC_DEFINE(DISABLE_FD_PASSING)
ef51930f 399 AC_DEFINE(NO_SSH_LASTLOG)
ccbb983c 400 LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal"
401 LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm"
402 MANTYPE=cat
a704dd54 403 ;;
4d33e531 404*-dec-osf*)
99c8ddac 405 AC_MSG_CHECKING(for Digital Unix SIA)
406 no_osfsia=""
407 AC_ARG_WITH(osfsia,
408 [ --with-osfsia Enable Digital Unix SIA],
409 [
410 if test "x$withval" = "xno" ; then
411 AC_MSG_RESULT(disabled)
412 no_osfsia=1
413 fi
414 ],
415 )
416 if test -z "$no_osfsia" ; then
4d33e531 417 if test -f /etc/sia/matrix.conf; then
418 AC_MSG_RESULT(yes)
419 AC_DEFINE(HAVE_OSF_SIA)
420 AC_DEFINE(DISABLE_LOGIN)
58d0df4e 421 AC_DEFINE(DISABLE_FD_PASSING)
4d33e531 422 LIBS="$LIBS -lsecurity -ldb -lm -laud"
423 else
424 AC_MSG_RESULT(no)
dbf8efb3 425 AC_DEFINE(LOCKED_PASSWD_SUBSTR, "Nologin")
4d33e531 426 fi
427 fi
a6e67b60 428 AC_DEFINE(BROKEN_GETADDRINFO)
f4f2ff4f 429 AC_DEFINE(SETEUID_BREAKS_SETUID)
08da2d08 430 AC_DEFINE(BROKEN_SETREUID)
431 AC_DEFINE(BROKEN_SETREGID)
4d33e531 432 ;;
41cb4569 433
434*-*-nto-qnx)
435 AC_DEFINE(USE_PIPES)
436 AC_DEFINE(NO_X11_UNIX_SOCKETS)
437 AC_DEFINE(MISSING_NFDBITS)
438 AC_DEFINE(MISSING_HOWMANY)
439 AC_DEFINE(MISSING_FD_MASK)
440 ;;
a7effaac 441esac
442
8e7b16f8 443# Allow user to specify flags
444AC_ARG_WITH(cflags,
445 [ --with-cflags Specify additional flags to pass to compiler],
446 [
447 if test "x$withval" != "xno" ; then
448 CFLAGS="$CFLAGS $withval"
449 fi
450 ]
451)
0c2fb82f 452AC_ARG_WITH(cppflags,
453 [ --with-cppflags Specify additional flags to pass to preprocessor] ,
454 [
455 if test "x$withval" != "xno"; then
456 CPPFLAGS="$CPPFLAGS $withval"
457 fi
458 ]
459)
8e7b16f8 460AC_ARG_WITH(ldflags,
97b378bf 461 [ --with-ldflags Specify additional flags to pass to linker],
8e7b16f8 462 [
463 if test "x$withval" != "xno" ; then
464 LDFLAGS="$LDFLAGS $withval"
465 fi
466 ]
467)
468AC_ARG_WITH(libs,
469 [ --with-libs Specify additional libraries to link with],
470 [
471 if test "x$withval" != "xno" ; then
472 LIBS="$LIBS $withval"
473 fi
474 ]
475)
476
c5829391 477AC_MSG_CHECKING(compiler and flags for sanity)
478AC_TRY_RUN([
479#include <stdio.h>
480int main(){exit(0);}
481 ],
482 [ AC_MSG_RESULT(yes) ],
483 [
484 AC_MSG_RESULT(no)
485 AC_MSG_ERROR([*** compiler cannot create working executables, check config.log ***])
486 ]
487)
488
ddceb1c8 489# Checks for header files.
688eed4a 490AC_CHECK_HEADERS(bstring.h crypt.h endian.h features.h floatingpoint.h \
af940dcb 491 getopt.h glob.h ia.h lastlog.h limits.h login.h \
ddceb1c8 492 login_cap.h maillock.h netdb.h netgroup.h \
2511d104 493 netinet/in_systm.h pam/pam_appl.h paths.h pty.h readpassphrase.h \
5bbbc661 494 rpc/types.h security/pam_appl.h shadow.h stddef.h stdint.h \
f58c0e01 495 strings.h sys/strtio.h sys/audit.h sys/bitypes.h sys/bsdtty.h \
9e833a9b 496 sys/cdefs.h sys/mman.h sys/pstat.h sys/ptms.h sys/select.h sys/stat.h \
ad137007 497 sys/stropts.h sys/sysmacros.h sys/time.h sys/timers.h \
ef51930f 498 sys/un.h time.h tmpdir.h ttyent.h usersec.h \
0a23d79f 499 util.h utime.h utmp.h utmpx.h vis.h)
ddceb1c8 500
a0391976 501# Checks for libraries.
98a7c37b 502AC_CHECK_FUNC(yp_match, , AC_CHECK_LIB(nsl, yp_match))
503AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt))
2c523de9 504
f61d6b17 505dnl SCO OS3 needs this for libwrap
98a7c37b 506if test "x$with_tcp_wrappers" != "xno" ; then
507 if test "x$do_sco3_extra_lib_check" = "xyes" ; then
508 AC_CHECK_LIB(rpc, innetgr, LIBS="-lrpc -lyp -lrpc $LIBS" , , -lyp -lrpc)
509 fi
510fi
511
446227d6 512dnl IRIX and Solaris 2.5.1 have dirname() in libgen
513AC_CHECK_FUNCS(dirname, [AC_CHECK_HEADERS(libgen.h)] ,[
514 AC_CHECK_LIB(gen, dirname,[
515 AC_CACHE_CHECK([for broken dirname],
516 ac_cv_have_broken_dirname, [
517 save_LIBS="$LIBS"
518 LIBS="$LIBS -lgen"
519 AC_TRY_RUN(
520 [
521#include <libgen.h>
522#include <string.h>
523
524int main(int argc, char **argv) {
525 char *s, buf[32];
526
527 strncpy(buf,"/etc", 32);
528 s = dirname(buf);
529 if (!s || strncmp(s, "/", 32) != 0) {
530 exit(1);
531 } else {
532 exit(0);
533 }
534}
535 ],
536 [ ac_cv_have_broken_dirname="no" ],
537 [ ac_cv_have_broken_dirname="yes" ]
538 )
539 LIBS="$save_LIBS"
540 ])
541 if test "x$ac_cv_have_broken_dirname" = "xno" ; then
542 LIBS="$LIBS -lgen"
543 AC_DEFINE(HAVE_DIRNAME)
544 AC_CHECK_HEADERS(libgen.h)
545 fi
546 ])
547])
548
549AC_CHECK_FUNC(getspnam, ,
550 AC_CHECK_LIB(gen, getspnam, LIBS="$LIBS -lgen"))
551AC_SEARCH_LIBS(basename, gen, AC_DEFINE(HAVE_BASENAME))
552
98a7c37b 553dnl zlib is required
554AC_ARG_WITH(zlib,
555 [ --with-zlib=PATH Use zlib in PATH],
556 [
846f83ab 557 if test "x$withval" = "xno" ; then
f1b0ecc3 558 AC_MSG_ERROR([*** zlib is required ***])
559 fi
98a7c37b 560 if test -d "$withval/lib"; then
561 if test -n "${need_dash_r}"; then
5a162955 562 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
98a7c37b 563 else
5a162955 564 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
98a7c37b 565 fi
566 else
567 if test -n "${need_dash_r}"; then
5a162955 568 LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
98a7c37b 569 else
5a162955 570 LDFLAGS="-L${withval} ${LDFLAGS}"
98a7c37b 571 fi
572 fi
573 if test -d "$withval/include"; then
5a162955 574 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
98a7c37b 575 else
5a162955 576 CPPFLAGS="-I${withval} ${CPPFLAGS}"
98a7c37b 577 fi
578 ]
579)
580
0a15d73b 581AC_CHECK_LIB(z, deflate, ,
582 [
583 saved_CPPFLAGS="$CPPFLAGS"
584 saved_LDFLAGS="$LDFLAGS"
585 save_LIBS="$LIBS"
586 dnl Check default zlib install dir
587 if test -n "${need_dash_r}"; then
588 LDFLAGS="-L/usr/local/lib -R/usr/local/lib ${saved_LDFLAGS}"
589 else
590 LDFLAGS="-L/usr/local/lib ${saved_LDFLAGS}"
591 fi
592 CPPFLAGS="-I/usr/local/include ${saved_CPPFLAGS}"
593 LIBS="$LIBS -lz"
594 AC_TRY_LINK_FUNC(deflate, AC_DEFINE(HAVE_LIBZ),
595 [
596 AC_MSG_ERROR([*** zlib missing - please install first or check config.log ***])
597 ]
598 )
599 ]
600)
4ad65809 601AC_CHECK_HEADER([zlib.h], ,AC_MSG_ERROR([*** zlib.h missing - please install first or check config.log ***]))
8068d564 602
603AC_ARG_WITH(zlib-version-check,
604 [ --without-zlib-version-check Disable zlib version check],
605 [ if test "x$withval" = "xno" ; then
606 zlib_check_nonfatal=1
607 fi
608 ]
609)
610
4ad65809 611AC_MSG_CHECKING(for zlib 1.1.4 or greater)
612AC_TRY_RUN([
613#include <zlib.h>
614int main()
615{
616 int a, b, c, v;
617 if (sscanf(ZLIB_VERSION, "%d.%d.%d", &a, &b, &c) != 3)
618 exit(1);
619 v = a*1000000 + b*1000 + c;
620 if (v >= 1001004)
621 exit(0);
622 exit(2);
623}
624 ],
625 AC_MSG_RESULT(yes),
626 [ AC_MSG_RESULT(no)
8068d564 627 if test -z "$zlib_check_nonfatal" ; then
628 AC_MSG_ERROR([*** zlib too old - check config.log ***
629Your reported zlib version has known security problems. It's possible your
630vendor has fixed these problems without changing the version number. If you
631are sure this is the case, you can disable the check by running
632"./configure --without-zlib-version-check".
633If you are in doubt, upgrade zlib to version 1.1.4 or greater.])
634 else
635 AC_MSG_WARN([zlib version may have security problems])
636 fi
637 ]
4ad65809 638)
48e7916f 639
2c523de9 640dnl UnixWare 2.x
aff51935 641AC_CHECK_FUNC(strcasecmp,
2c523de9 642 [], [ AC_CHECK_LIB(resolv, strcasecmp, LIBS="$LIBS -lresolv") ]
643)
aff51935 644AC_CHECK_FUNC(utimes,
cda1ebcb 645 [], [ AC_CHECK_LIB(c89, utimes, [AC_DEFINE(HAVE_UTIMES)
646 LIBS="$LIBS -lc89"]) ]
2c523de9 647)
4cca272e 648
7c6d759d 649dnl Checks for libutil functions
650AC_CHECK_HEADERS(libutil.h)
651AC_SEARCH_LIBS(login, util bsd, [AC_DEFINE(HAVE_LOGIN)])
652AC_CHECK_FUNCS(logout updwtmp logwtmp)
653
a738c3b0 654AC_FUNC_STRFTIME
655
84ceda19 656# Check for ALTDIRFUNC glob() extension
657AC_MSG_CHECKING(for GLOB_ALTDIRFUNC support)
658AC_EGREP_CPP(FOUNDIT,
659 [
660 #include <glob.h>
661 #ifdef GLOB_ALTDIRFUNC
662 FOUNDIT
663 #endif
aff51935 664 ],
84ceda19 665 [
666 AC_DEFINE(GLOB_HAS_ALTDIRFUNC)
667 AC_MSG_RESULT(yes)
668 ],
669 [
670 AC_MSG_RESULT(no)
671 ]
672)
4cca272e 673
40849fdb 674# Check for g.gl_matchc glob() extension
675AC_MSG_CHECKING(for gl_matchc field in glob_t)
676AC_EGREP_CPP(FOUNDIT,
aff51935 677 [
678 #include <glob.h>
40849fdb 679 int main(void){glob_t g; g.gl_matchc = 1;}
aff51935 680 ],
681 [
682 AC_DEFINE(GLOB_HAS_GL_MATCHC)
683 AC_MSG_RESULT(yes)
684 ],
685 [
686 AC_MSG_RESULT(no)
687 ]
40849fdb 688)
689
edbe6722 690AC_MSG_CHECKING([whether struct dirent allocates space for d_name])
691AC_TRY_RUN(
692 [
693#include <sys/types.h>
694#include <dirent.h>
aec4cb4f 695int main(void){struct dirent d;exit(sizeof(d.d_name)<=sizeof(char));}
edbe6722 696 ],
aff51935 697 [AC_MSG_RESULT(yes)],
edbe6722 698 [
699 AC_MSG_RESULT(no)
700 AC_DEFINE(BROKEN_ONE_BYTE_DIRENT_D_NAME)
701 ]
702)
703
278588d8 704# Check whether user wants S/Key support
aff51935 705SKEY_MSG="no"
278588d8 706AC_ARG_WITH(skey,
98a7c37b 707 [ --with-skey[[=PATH]] Enable S/Key support
aff51935 708 (optionally in PATH)],
278588d8 709 [
710 if test "x$withval" != "xno" ; then
711
712 if test "x$withval" != "xyes" ; then
713 CPPFLAGS="$CPPFLAGS -I${withval}/include"
714 LDFLAGS="$LDFLAGS -L${withval}/lib"
715 fi
716
717 AC_DEFINE(SKEY)
718 LIBS="-lskey $LIBS"
aff51935 719 SKEY_MSG="yes"
278588d8 720
ddceb1c8 721 AC_MSG_CHECKING([for s/key support])
722 AC_TRY_RUN(
723 [
724#include <stdio.h>
725#include <skey.h>
aec4cb4f 726int main() { char *ff = skey_keyinfo(""); ff=""; exit(0); }
ddceb1c8 727 ],
728 [AC_MSG_RESULT(yes)],
278588d8 729 [
ddceb1c8 730 AC_MSG_RESULT(no)
278588d8 731 AC_MSG_ERROR([** Incomplete or missing s/key libraries.])
732 ])
733 fi
734 ]
735)
736
737# Check whether user wants TCP wrappers support
98a7c37b 738TCPW_MSG="no"
278588d8 739AC_ARG_WITH(tcp-wrappers,
98a7c37b 740 [ --with-tcp-wrappers[[=PATH]] Enable tcpwrappers support
aff51935 741 (optionally in PATH)],
278588d8 742 [
743 if test "x$withval" != "xno" ; then
744 saved_LIBS="$LIBS"
98a7c37b 745 saved_LDFLAGS="$LDFLAGS"
746 saved_CPPFLAGS="$CPPFLAGS"
747 if test -n "${withval}" -a "${withval}" != "yes"; then
748 if test -d "${withval}/lib"; then
749 if test -n "${need_dash_r}"; then
5a162955 750 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
98a7c37b 751 else
5a162955 752 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
98a7c37b 753 fi
754 else
755 if test -n "${need_dash_r}"; then
5a162955 756 LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
98a7c37b 757 else
5a162955 758 LDFLAGS="-L${withval} ${LDFLAGS}"
98a7c37b 759 fi
760 fi
761 if test -d "${withval}/include"; then
5a162955 762 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
98a7c37b 763 else
5a162955 764 CPPFLAGS="-I${withval} ${CPPFLAGS}"
98a7c37b 765 fi
98a7c37b 766 fi
ddceb1c8 767 LIBWRAP="-lwrap"
768 LIBS="$LIBWRAP $LIBS"
278588d8 769 AC_MSG_CHECKING(for libwrap)
770 AC_TRY_LINK(
771 [
772#include <tcpd.h>
773 int deny_severity = 0, allow_severity = 0;
774 ],
775 [hosts_access(0);],
776 [
777 AC_MSG_RESULT(yes)
778 AC_DEFINE(LIBWRAP)
ddceb1c8 779 AC_SUBST(LIBWRAP)
98a7c37b 780 TCPW_MSG="yes"
278588d8 781 ],
782 [
783 AC_MSG_ERROR([*** libwrap missing])
784 ]
785 )
ddceb1c8 786 LIBS="$saved_LIBS"
278588d8 787 fi
788 ]
789)
790
19160674 791dnl Checks for library functions. Please keep in alphabetical order
792AC_CHECK_FUNCS(\
48646332 793 arc4random __b64_ntop b64_ntop __b64_pton b64_pton \
688eed4a 794 bcopy bindresvport_sa clock fchmod fchown freeaddrinfo futimes \
1a086f97 795 getaddrinfo getcwd getgrouplist getnameinfo getopt \
309709db 796 getpeereid _getpty getrlimit getttyent glob inet_aton \
19160674 797 inet_ntoa inet_ntop innetgr login_getcapbool md5_crypt memmove \
79d4fc55 798 mkdtemp mmap ngetaddrinfo nsleep ogetaddrinfo openlog_r openpty \
799 pstat readpassphrase realpath recvmsg rresvport_af sendmsg \
800 setdtablesize setegid setenv seteuid setgroups setlogin setpcred \
3f176010 801 setproctitle setregid setreuid setrlimit \
688eed4a 802 setsid setvbuf sigaction sigvec snprintf socketpair strerror \
7111a85c 803 strlcat strlcpy strmode strnvis strtoul sysconf tcgetpgrp \
5af25b1d 804 truncate utimes vhangup vsnprintf waitpid \
19160674 805)
98a7c37b 806
1a086f97 807# IRIX has a const char return value for gai_strerror()
808AC_CHECK_FUNCS(gai_strerror,[
809 AC_DEFINE(HAVE_GAI_STRERROR)
810 AC_TRY_COMPILE([
811#include <sys/types.h>
812#include <sys/socket.h>
813#include <netdb.h>
814
815const char *gai_strerror(int);],[
816char *str;
817
818str = gai_strerror(0);],[
819 AC_DEFINE(HAVE_CONST_GAI_STRERROR_PROTO, 1,
820 [Define if gai_strerror() returns const char *])])])
821
92b1decf 822AC_SEARCH_LIBS(nanosleep, rt posix4, AC_DEFINE(HAVE_NANOSLEEP))
823
309709db 824dnl Make sure prototypes are defined for these before using them.
08412d26 825AC_CHECK_DECL(strsep, [AC_CHECK_FUNCS(strsep)])
309709db 826AC_CHECK_DECL(getrusage, [AC_CHECK_FUNCS(getrusage)])
08412d26 827
3490699c 828dnl tcsendbreak might be a macro
829AC_CHECK_DECL(tcsendbreak,
830 [AC_DEFINE(HAVE_TCSENDBREAK)],
aff51935 831 [AC_CHECK_FUNCS(tcsendbreak)],
3490699c 832 [#include <termios.h>]
833)
834
3f176010 835AC_CHECK_FUNCS(setresuid, [
836 dnl Some platorms have setresuid that isn't implemented, test for this
837 AC_MSG_CHECKING(if setresuid seems to work)
838 AC_TRY_RUN([
9a3fe0e2 839#include <stdlib.h>
840#include <errno.h>
841int main(){errno=0; setresuid(0,0,0); if (errno==ENOSYS) exit(1); else exit(0);}
3f176010 842 ],
843 [AC_MSG_RESULT(yes)],
24a9171d 844 [AC_DEFINE(BROKEN_SETRESUID)
3f176010 845 AC_MSG_RESULT(not implemented)]
846 )
847])
9a3fe0e2 848
3f176010 849AC_CHECK_FUNCS(setresgid, [
850 dnl Some platorms have setresgid that isn't implemented, test for this
851 AC_MSG_CHECKING(if setresgid seems to work)
852 AC_TRY_RUN([
9a3fe0e2 853#include <stdlib.h>
854#include <errno.h>
855int main(){errno=0; setresgid(0,0,0); if (errno==ENOSYS) exit(1); else exit(0);}
3f176010 856 ],
857 [AC_MSG_RESULT(yes)],
858 [AC_DEFINE(BROKEN_SETRESGID)
859 AC_MSG_RESULT(not implemented)]
860 )
861])
9a3fe0e2 862
2e73a022 863dnl Checks for time functions
1d7b9b20 864AC_CHECK_FUNCS(gettimeofday time)
2e73a022 865dnl Checks for utmp functions
b03bd394 866AC_CHECK_FUNCS(endutent getutent getutid getutline pututline setutent)
1d7b9b20 867AC_CHECK_FUNCS(utmpname)
2e73a022 868dnl Checks for utmpx functions
b03bd394 869AC_CHECK_FUNCS(endutxent getutxent getutxid getutxline pututxline )
1d7b9b20 870AC_CHECK_FUNCS(setutxent utmpxname)
76cd7316 871
aff51935 872AC_CHECK_FUNC(daemon,
beb43d31 873 [AC_DEFINE(HAVE_DAEMON)],
874 [AC_CHECK_LIB(bsd, daemon, [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_DAEMON)])]
875)
876
aff51935 877AC_CHECK_FUNC(getpagesize,
aa6bd60a 878 [AC_DEFINE(HAVE_GETPAGESIZE)],
879 [AC_CHECK_LIB(ucb, getpagesize, [LIBS="$LIBS -lucb"; AC_DEFINE(HAVE_GETPAGESIZE)])]
880)
881
2647ae26 882# Check for broken snprintf
883if test "x$ac_cv_func_snprintf" = "xyes" ; then
884 AC_MSG_CHECKING([whether snprintf correctly terminates long strings])
885 AC_TRY_RUN(
886 [
887#include <stdio.h>
aec4cb4f 888int main(void){char b[5];snprintf(b,5,"123456789");exit(b[4]!='\0');}
2647ae26 889 ],
aff51935 890 [AC_MSG_RESULT(yes)],
2647ae26 891 [
892 AC_MSG_RESULT(no)
893 AC_DEFINE(BROKEN_SNPRINTF)
894 AC_MSG_WARN([****** Your snprintf() function is broken, complain to your vendor])
895 ]
896 )
897fi
898
70e7d0b0 899dnl see whether mkstemp() requires XXXXXX
900if test "x$ac_cv_func_mkdtemp" = "xyes" ; then
901AC_MSG_CHECKING([for (overly) strict mkstemp])
902AC_TRY_RUN(
903 [
904#include <stdlib.h>
905main() { char template[]="conftest.mkstemp-test";
906if (mkstemp(template) == -1)
907 exit(1);
908unlink(template); exit(0);
909}
910 ],
911 [
912 AC_MSG_RESULT(no)
913 ],
aff51935 914 [
70e7d0b0 915 AC_MSG_RESULT(yes)
916 AC_DEFINE(HAVE_STRICT_MKSTEMP)
917 ],
918 [
919 AC_MSG_RESULT(yes)
920 AC_DEFINE(HAVE_STRICT_MKSTEMP)
aff51935 921 ]
70e7d0b0 922)
923fi
924
eacb954e 925dnl make sure that openpty does not reacquire controlling terminal
926if test ! -z "$check_for_openpty_ctty_bug"; then
927 AC_MSG_CHECKING(if openpty correctly handles controlling tty)
928 AC_TRY_RUN(
929 [
930#include <stdio.h>
931#include <sys/fcntl.h>
932#include <sys/types.h>
933#include <sys/wait.h>
934
935int
936main()
937{
938 pid_t pid;
939 int fd, ptyfd, ttyfd, status;
940
941 pid = fork();
942 if (pid < 0) { /* failed */
943 exit(1);
944 } else if (pid > 0) { /* parent */
945 waitpid(pid, &status, 0);
aff51935 946 if (WIFEXITED(status))
eacb954e 947 exit(WEXITSTATUS(status));
948 else
949 exit(2);
950 } else { /* child */
951 close(0); close(1); close(2);
952 setsid();
953 openpty(&ptyfd, &ttyfd, NULL, NULL, NULL);
954 fd = open("/dev/tty", O_RDWR | O_NOCTTY);
955 if (fd >= 0)
956 exit(3); /* Acquired ctty: broken */
957 else
958 exit(0); /* Did not acquire ctty: OK */
959 }
960}
961 ],
962 [
963 AC_MSG_RESULT(yes)
964 ],
965 [
966 AC_MSG_RESULT(no)
967 AC_DEFINE(SSHD_ACQUIRES_CTTY)
968 ]
969 )
970fi
971
7f8f5e00 972AC_FUNC_GETPGRP
973
717057b6 974# Check for PAM libs
cbd7492e 975PAM_MSG="no"
a0391976 976AC_ARG_WITH(pam,
717057b6 977 [ --with-pam Enable PAM support ],
a0391976 978 [
717057b6 979 if test "x$withval" != "xno" ; then
2511d104 980 if test "x$ac_cv_header_security_pam_appl_h" != "xyes" && \
981 test "x$ac_cv_header_pam_pam_appl_h" != "xyes" ; then
717057b6 982 AC_MSG_ERROR([PAM headers not found])
983 fi
a0391976 984
717057b6 985 AC_CHECK_LIB(dl, dlopen, , )
986 AC_CHECK_LIB(pam, pam_set_item, , AC_MSG_ERROR([*** libpam missing]))
987 AC_CHECK_FUNCS(pam_getenvlist)
749560dd 988 AC_CHECK_FUNCS(pam_putenv)
2b763e31 989
717057b6 990 PAM_MSG="yes"
4cb5ffa0 991
717057b6 992 AC_DEFINE(USE_PAM)
98f2d9d5 993 if test $ac_cv_lib_dl_dlopen = yes; then
994 LIBPAM="-lpam -ldl"
995 else
996 LIBPAM="-lpam"
997 fi
998 AC_SUBST(LIBPAM)
717057b6 999 fi
1000 ]
1001)
cbd7492e 1002
717057b6 1003# Check for older PAM
1004if test "x$PAM_MSG" = "xyes" ; then
a0391976 1005 # Check PAM strerror arguments (old PAM)
1006 AC_MSG_CHECKING([whether pam_strerror takes only one argument])
1007 AC_TRY_COMPILE(
1008 [
18ba2aab 1009#include <stdlib.h>
2511d104 1010#if defined(HAVE_SECURITY_PAM_APPL_H)
18ba2aab 1011#include <security/pam_appl.h>
2511d104 1012#elif defined (HAVE_PAM_PAM_APPL_H)
1013#include <pam/pam_appl.h>
1014#endif
aff51935 1015 ],
1016 [(void)pam_strerror((pam_handle_t *)NULL, -1);],
a0391976 1017 [AC_MSG_RESULT(no)],
1018 [
1019 AC_DEFINE(HAVE_OLD_PAM)
1020 AC_MSG_RESULT(yes)
cbd7492e 1021 PAM_MSG="yes (old library)"
a0391976 1022 ]
717057b6 1023 )
a0391976 1024fi
1025
33e2e066 1026# Some systems want crypt() from libcrypt, *not* the version in OpenSSL,
1027# because the system crypt() is more featureful.
1028if test "x$check_for_libcrypt_before" = "x1"; then
1029 AC_CHECK_LIB(crypt, crypt)
1030fi
1031
5b991353 1032# Search for OpenSSL
1033saved_CPPFLAGS="$CPPFLAGS"
1034saved_LDFLAGS="$LDFLAGS"
a0391976 1035AC_ARG_WITH(ssl-dir,
1036 [ --with-ssl-dir=PATH Specify path to OpenSSL installation ],
1037 [
e9e4a1c7 1038 if test "x$withval" != "xno" ; then
5b991353 1039 if test -d "$withval/lib"; then
1040 if test -n "${need_dash_r}"; then
1041 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
1042 else
1043 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
d6f13fbb 1044 fi
1045 else
5b991353 1046 if test -n "${need_dash_r}"; then
1047 LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
1048 else
1049 LDFLAGS="-L${withval} ${LDFLAGS}"
d6f13fbb 1050 fi
1051 fi
5b991353 1052 if test -d "$withval/include"; then
1053 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
d6f13fbb 1054 else
5b991353 1055 CPPFLAGS="-I${withval} ${CPPFLAGS}"
58d100bf 1056 fi
a0391976 1057 fi
5b991353 1058 ]
1059)
1060LIBS="$LIBS -lcrypto"
1061AC_TRY_LINK_FUNC(RAND_add, AC_DEFINE(HAVE_OPENSSL),
d45e3d76 1062 [
5b991353 1063 dnl Check default openssl install dir
1064 if test -n "${need_dash_r}"; then
1065 LDFLAGS="-L/usr/local/ssl/lib -R/usr/local/ssl/lib ${saved_LDFLAGS}"
d45e3d76 1066 else
5b991353 1067 LDFLAGS="-L/usr/local/ssl/lib ${saved_LDFLAGS}"
d45e3d76 1068 fi
5b991353 1069 CPPFLAGS="-I/usr/local/ssl/include ${saved_CPPFLAGS}"
1070 AC_TRY_LINK_FUNC(RAND_add, AC_DEFINE(HAVE_OPENSSL),
1071 [
1072 AC_MSG_ERROR([*** Can't find recent OpenSSL libcrypto (see config.log for details) ***])
1073 ]
1074 )
1075 ]
1076)
1077
cd018561 1078# Determine OpenSSL header version
1079AC_MSG_CHECKING([OpenSSL header version])
1080AC_TRY_RUN(
1081 [
1082#include <stdio.h>
1083#include <string.h>
1084#include <openssl/opensslv.h>
1085#define DATA "conftest.sslincver"
1086int main(void) {
aff51935 1087 FILE *fd;
1088 int rc;
cd018561 1089
aff51935 1090 fd = fopen(DATA,"w");
1091 if(fd == NULL)
1092 exit(1);
cd018561 1093
1094 if ((rc = fprintf(fd ,"%x (%s)\n", OPENSSL_VERSION_NUMBER, OPENSSL_VERSION_TEXT)) <0)
1095 exit(1);
1096
1097 exit(0);
1098}
1099 ],
1100 [
1101 ssl_header_ver=`cat conftest.sslincver`
1102 AC_MSG_RESULT($ssl_header_ver)
1103 ],
1104 [
1105 AC_MSG_RESULT(not found)
1106 AC_MSG_ERROR(OpenSSL version header not found.)
1107 ]
1108)
1109
1110# Determine OpenSSL library version
1111AC_MSG_CHECKING([OpenSSL library version])
1112AC_TRY_RUN(
1113 [
1114#include <stdio.h>
1115#include <string.h>
1116#include <openssl/opensslv.h>
1117#include <openssl/crypto.h>
1118#define DATA "conftest.ssllibver"
1119int main(void) {
aff51935 1120 FILE *fd;
1121 int rc;
cd018561 1122
aff51935 1123 fd = fopen(DATA,"w");
1124 if(fd == NULL)
1125 exit(1);
cd018561 1126
1127 if ((rc = fprintf(fd ,"%x (%s)\n", SSLeay(), SSLeay_version(SSLEAY_VERSION))) <0)
1128 exit(1);
1129
1130 exit(0);
1131}
1132 ],
1133 [
1134 ssl_library_ver=`cat conftest.ssllibver`
1135 AC_MSG_RESULT($ssl_library_ver)
1136 ],
1137 [
1138 AC_MSG_RESULT(not found)
1139 AC_MSG_ERROR(OpenSSL library not found.)
1140 ]
1141)
58d100bf 1142
9780116c 1143# Sanity check OpenSSL headers
1144AC_MSG_CHECKING([whether OpenSSL's headers match the library])
1145AC_TRY_RUN(
1146 [
1147#include <string.h>
1148#include <openssl/opensslv.h>
aec4cb4f 1149int main(void) { exit(SSLeay() == OPENSSL_VERSION_NUMBER ? 0 : 1); }
9780116c 1150 ],
1151 [
1152 AC_MSG_RESULT(yes)
1153 ],
1154 [
1155 AC_MSG_RESULT(no)
e15ba28b 1156 AC_MSG_ERROR([Your OpenSSL headers do not match your library.
1157Check config.log for details.
1158Also see contrib/findssl.sh for help identifying header/library mismatches.])
9780116c 1159 ]
1160)
1161
aff51935 1162# Some Linux systems (Slackware) need crypt() from libcrypt, *not* the
717057b6 1163# version in OpenSSL. Skip this for PAM
05114c74 1164if test "x$check_for_libcrypt_later" = "x1"; then
20cad736 1165 AC_CHECK_LIB(crypt, crypt, LIBS="$LIBS -lcrypt")
717057b6 1166fi
1167
f1b0ecc3 1168
1169### Configure cryptographic random number support
1170
1171# Check wheter OpenSSL seeds itself
1172AC_MSG_CHECKING([whether OpenSSL's PRNG is internally seeded])
1173AC_TRY_RUN(
1174 [
1175#include <string.h>
1176#include <openssl/rand.h>
aec4cb4f 1177int main(void) { exit(RAND_status() == 1 ? 0 : 1); }
f1b0ecc3 1178 ],
1179 [
1180 OPENSSL_SEEDS_ITSELF=yes
1181 AC_MSG_RESULT(yes)
1182 ],
1183 [
1184 AC_MSG_RESULT(no)
1185 # Default to use of the rand helper if OpenSSL doesn't
1186 # seed itself
1187 USE_RAND_HELPER=yes
1188 ]
1189)
1190
1191
1192# Do we want to force the use of the rand helper?
1193AC_ARG_WITH(rand-helper,
1194 [ --with-rand-helper Use subprocess to gather strong randomness ],
1195 [
1196 if test "x$withval" = "xno" ; then
aff51935 1197 # Force use of OpenSSL's internal RNG, even if
f1b0ecc3 1198 # the previous test showed it to be unseeded.
1199 if test -z "$OPENSSL_SEEDS_ITSELF" ; then
1200 AC_MSG_WARN([*** Forcing use of OpenSSL's non-self-seeding PRNG])
1201 OPENSSL_SEEDS_ITSELF=yes
1202 USE_RAND_HELPER=""
1203 fi
1204 else
1205 USE_RAND_HELPER=yes
1206 fi
1207 ],
1208)
1209
1210# Which randomness source do we use?
1211if test ! -z "$OPENSSL_SEEDS_ITSELF" -a -z "$USE_RAND_HELPER" ; then
1212 # OpenSSL only
1213 AC_DEFINE(OPENSSL_PRNG_ONLY)
1214 RAND_MSG="OpenSSL internal ONLY"
1215 INSTALL_SSH_RAND_HELPER=""
70e2f2f3 1216elif test ! -z "$USE_RAND_HELPER" ; then
1217 # install rand helper
f1b0ecc3 1218 RAND_MSG="ssh-rand-helper"
1219 INSTALL_SSH_RAND_HELPER="yes"
1220fi
1221AC_SUBST(INSTALL_SSH_RAND_HELPER)
1222
1223### Configuration of ssh-rand-helper
1224
1225# PRNGD TCP socket
1226AC_ARG_WITH(prngd-port,
1227 [ --with-prngd-port=PORT read entropy from PRNGD/EGD TCP localhost:PORT],
1228 [
eb5d7ff6 1229 case "$withval" in
1230 no)
1231 withval=""
1232 ;;
1233 [[0-9]]*)
1234 ;;
1235 *)
1236 AC_MSG_ERROR(You must specify a numeric port number for --with-prngd-port)
1237 ;;
1238 esac
1239 if test ! -z "$withval" ; then
f1b0ecc3 1240 PRNGD_PORT="$withval"
1241 AC_DEFINE_UNQUOTED(PRNGD_PORT, $PRNGD_PORT)
1242 fi
1243 ]
1244)
1245
1246# PRNGD Unix domain socket
1247AC_ARG_WITH(prngd-socket,
1248 [ --with-prngd-socket=FILE read entropy from PRNGD/EGD socket FILE (default=/var/run/egd-pool)],
1249 [
eb5d7ff6 1250 case "$withval" in
1251 yes)
f1b0ecc3 1252 withval="/var/run/egd-pool"
eb5d7ff6 1253 ;;
1254 no)
1255 withval=""
1256 ;;
1257 /*)
1258 ;;
1259 *)
1260 AC_MSG_ERROR(You must specify an absolute path to the entropy socket)
1261 ;;
1262 esac
1263
1264 if test ! -z "$withval" ; then
f1b0ecc3 1265 if test ! -z "$PRNGD_PORT" ; then
1266 AC_MSG_ERROR(You may not specify both a PRNGD/EGD port and socket)
1267 fi
906e811b 1268 if test ! -r "$withval" ; then
f1b0ecc3 1269 AC_MSG_WARN(Entropy socket is not readable)
1270 fi
1271 PRNGD_SOCKET="$withval"
1272 AC_DEFINE_UNQUOTED(PRNGD_SOCKET, "$PRNGD_SOCKET")
1273 fi
ddceb1c8 1274 ],
1275 [
1276 # Check for existing socket only if we don't have a random device already
1277 if test "$USE_RAND_HELPER" = yes ; then
1278 AC_MSG_CHECKING(for PRNGD/EGD socket)
1279 # Insert other locations here
1280 for sock in /var/run/egd-pool /dev/egd-pool /etc/entropy; do
1281 if test -r $sock && $TEST_MINUS_S_SH -c "test -S $sock -o -p $sock" ; then
1282 PRNGD_SOCKET="$sock"
1283 AC_DEFINE_UNQUOTED(PRNGD_SOCKET, "$PRNGD_SOCKET")
1284 break;
1285 fi
1286 done
1287 if test ! -z "$PRNGD_SOCKET" ; then
1288 AC_MSG_RESULT($PRNGD_SOCKET)
1289 else
1290 AC_MSG_RESULT(not found)
1291 fi
1292 fi
f1b0ecc3 1293 ]
1294)
1295
1296# Change default command timeout for hashing entropy source
1297entropy_timeout=200
1298AC_ARG_WITH(entropy-timeout,
1299 [ --with-entropy-timeout Specify entropy gathering command timeout (msec)],
1300 [
1301 if test "x$withval" != "xno" ; then
1302 entropy_timeout=$withval
1303 fi
1304 ]
1305)
f1b0ecc3 1306AC_DEFINE_UNQUOTED(ENTROPY_TIMEOUT_MSEC, $entropy_timeout)
1307
fd3cbf67 1308SSH_PRIVSEP_USER=sshd
9a0fbcb3 1309AC_ARG_WITH(privsep-user,
5222e7ef 1310 [ --with-privsep-user=user Specify non-privileged user for privilege separation],
9a0fbcb3 1311 [
1312 if test -n "$withval"; then
fd3cbf67 1313 SSH_PRIVSEP_USER=$withval
9a0fbcb3 1314 fi
1315 ]
1316)
fd3cbf67 1317AC_DEFINE_UNQUOTED(SSH_PRIVSEP_USER, "$SSH_PRIVSEP_USER")
1318AC_SUBST(SSH_PRIVSEP_USER)
9a0fbcb3 1319
81dadca3 1320# We do this little dance with the search path to insure
1321# that programs that we select for use by installed programs
1322# (which may be run by the super-user) come from trusted
1323# locations before they come from the user's private area.
1324# This should help avoid accidentally configuring some
1325# random version of a program in someone's personal bin.
1326
1327OPATH=$PATH
1328PATH=/bin:/usr/bin
f95c8ce8 1329test -h /bin 2> /dev/null && PATH=/usr/bin
81dadca3 1330test -d /sbin && PATH=$PATH:/sbin
1331test -d /usr/sbin && PATH=$PATH:/usr/sbin
1332PATH=$PATH:/etc:$OPATH
1333
aff51935 1334# These programs are used by the command hashing source to gather entropy
f1b0ecc3 1335OSSH_PATH_ENTROPY_PROG(PROG_LS, ls)
1336OSSH_PATH_ENTROPY_PROG(PROG_NETSTAT, netstat)
1337OSSH_PATH_ENTROPY_PROG(PROG_ARP, arp)
1338OSSH_PATH_ENTROPY_PROG(PROG_IFCONFIG, ifconfig)
1339OSSH_PATH_ENTROPY_PROG(PROG_JSTAT, jstat)
1340OSSH_PATH_ENTROPY_PROG(PROG_PS, ps)
1341OSSH_PATH_ENTROPY_PROG(PROG_SAR, sar)
1342OSSH_PATH_ENTROPY_PROG(PROG_W, w)
1343OSSH_PATH_ENTROPY_PROG(PROG_WHO, who)
1344OSSH_PATH_ENTROPY_PROG(PROG_LAST, last)
1345OSSH_PATH_ENTROPY_PROG(PROG_LASTLOG, lastlog)
1346OSSH_PATH_ENTROPY_PROG(PROG_DF, df)
1347OSSH_PATH_ENTROPY_PROG(PROG_VMSTAT, vmstat)
1348OSSH_PATH_ENTROPY_PROG(PROG_UPTIME, uptime)
1349OSSH_PATH_ENTROPY_PROG(PROG_IPCS, ipcs)
1350OSSH_PATH_ENTROPY_PROG(PROG_TAIL, tail)
81dadca3 1351# restore PATH
1352PATH=$OPATH
f1b0ecc3 1353
1354# Where does ssh-rand-helper get its randomness from?
1355INSTALL_SSH_PRNG_CMDS=""
1356if test ! -z "$INSTALL_SSH_RAND_HELPER" ; then
1357 if test ! -z "$PRNGD_PORT" ; then
1358 RAND_HELPER_MSG="TCP localhost:$PRNGD_PORT"
1359 elif test ! -z "$PRNGD_SOCKET" ; then
1360 RAND_HELPER_MSG="Unix domain socket \"$PRNGD_SOCKET\""
1361 else
1362 RAND_HELPER_MSG="Command hashing (timeout $entropy_timeout)"
1363 RAND_HELPER_CMDHASH=yes
1364 INSTALL_SSH_PRNG_CMDS="yes"
1365 fi
1366fi
1367AC_SUBST(INSTALL_SSH_PRNG_CMDS)
1368
1369
66d6c27e 1370# Cheap hack to ensure NEWS-OS libraries are arranged right.
1371if test ! -z "$SONY" ; then
1372 LIBS="$LIBS -liberty";
1373fi
1374
a0391976 1375# Checks for data types
976f7e19 1376AC_CHECK_SIZEOF(char, 1)
2b942fe0 1377AC_CHECK_SIZEOF(short int, 2)
1378AC_CHECK_SIZEOF(int, 4)
1379AC_CHECK_SIZEOF(long int, 4)
1380AC_CHECK_SIZEOF(long long int, 8)
1381
52f1ccb2 1382# Sanity check long long for some platforms (AIX)
1383if test "x$ac_cv_sizeof_long_long_int" = "x4" ; then
1384 ac_cv_sizeof_long_long_int=0
1385fi
1386
a0391976 1387# More checks for data types
14a9a859 1388AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int, [
1389 AC_TRY_COMPILE(
aff51935 1390 [ #include <sys/types.h> ],
1391 [ u_int a; a = 1;],
14a9a859 1392 [ ac_cv_have_u_int="yes" ],
1393 [ ac_cv_have_u_int="no" ]
1394 )
1395])
1396if test "x$ac_cv_have_u_int" = "xyes" ; then
1397 AC_DEFINE(HAVE_U_INT)
1398 have_u_int=1
1399fi
1400
58d100bf 1401AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t, [
1402 AC_TRY_COMPILE(
aff51935 1403 [ #include <sys/types.h> ],
1404 [ int8_t a; int16_t b; int32_t c; a = b = c = 1;],
58d100bf 1405 [ ac_cv_have_intxx_t="yes" ],
1406 [ ac_cv_have_intxx_t="no" ]
1407 )
1408])
1409if test "x$ac_cv_have_intxx_t" = "xyes" ; then
1410 AC_DEFINE(HAVE_INTXX_T)
1411 have_intxx_t=1
1412fi
41cb4569 1413
1414if (test -z "$have_intxx_t" && \
aff51935 1415 test "x$ac_cv_header_stdint_h" = "xyes")
41cb4569 1416then
1417 AC_MSG_CHECKING([for intXX_t types in stdint.h])
1418 AC_TRY_COMPILE(
aff51935 1419 [ #include <stdint.h> ],
1420 [ int8_t a; int16_t b; int32_t c; a = b = c = 1;],
41cb4569 1421 [
1422 AC_DEFINE(HAVE_INTXX_T)
1423 AC_MSG_RESULT(yes)
1424 ],
1425 [ AC_MSG_RESULT(no) ]
1426 )
1427fi
1428
bd590612 1429AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t, [
1430 AC_TRY_COMPILE(
1cbbe6c8 1431 [
1432#include <sys/types.h>
1433#ifdef HAVE_STDINT_H
1434# include <stdint.h>
1435#endif
1436#include <sys/socket.h>
1437#ifdef HAVE_SYS_BITYPES_H
1438# include <sys/bitypes.h>
1439#endif
aff51935 1440 ],
1441 [ int64_t a; a = 1;],
bd590612 1442 [ ac_cv_have_int64_t="yes" ],
1443 [ ac_cv_have_int64_t="no" ]
1444 )
1445])
1446if test "x$ac_cv_have_int64_t" = "xyes" ; then
1447 AC_DEFINE(HAVE_INT64_T)
ddceb1c8 1448fi
1449
58d100bf 1450AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t, [
1451 AC_TRY_COMPILE(
aff51935 1452 [ #include <sys/types.h> ],
1453 [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;],
58d100bf 1454 [ ac_cv_have_u_intxx_t="yes" ],
1455 [ ac_cv_have_u_intxx_t="no" ]
1456 )
1457])
1458if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
1459 AC_DEFINE(HAVE_U_INTXX_T)
1460 have_u_intxx_t=1
1461fi
2b942fe0 1462
41cb4569 1463if test -z "$have_u_intxx_t" ; then
1464 AC_MSG_CHECKING([for u_intXX_t types in sys/socket.h])
1465 AC_TRY_COMPILE(
aff51935 1466 [ #include <sys/socket.h> ],
1467 [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;],
41cb4569 1468 [
1469 AC_DEFINE(HAVE_U_INTXX_T)
1470 AC_MSG_RESULT(yes)
1471 ],
1472 [ AC_MSG_RESULT(no) ]
1473 )
1474fi
1475
bd590612 1476AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t, [
1477 AC_TRY_COMPILE(
aff51935 1478 [ #include <sys/types.h> ],
1479 [ u_int64_t a; a = 1;],
bd590612 1480 [ ac_cv_have_u_int64_t="yes" ],
1481 [ ac_cv_have_u_int64_t="no" ]
1482 )
1483])
1484if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
1485 AC_DEFINE(HAVE_U_INT64_T)
1486 have_u_int64_t=1
1487fi
1488
ddceb1c8 1489if test -z "$have_u_int64_t" ; then
1490 AC_MSG_CHECKING([for u_int64_t type in sys/bitypes.h])
1491 AC_TRY_COMPILE(
aff51935 1492 [ #include <sys/bitypes.h> ],
ddceb1c8 1493 [ u_int64_t a; a = 1],
1494 [
1495 AC_DEFINE(HAVE_U_INT64_T)
1496 AC_MSG_RESULT(yes)
1497 ],
1498 [ AC_MSG_RESULT(no) ]
1499 )
1500fi
1501
41cb4569 1502if test -z "$have_u_intxx_t" ; then
1503 AC_CACHE_CHECK([for uintXX_t types], ac_cv_have_uintxx_t, [
1504 AC_TRY_COMPILE(
1505 [
1506#include <sys/types.h>
aff51935 1507 ],
1508 [ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1; ],
41cb4569 1509 [ ac_cv_have_uintxx_t="yes" ],
1510 [ ac_cv_have_uintxx_t="no" ]
1511 )
1512 ])
1513 if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
1514 AC_DEFINE(HAVE_UINTXX_T)
1515 fi
1516fi
1517
1518if test -z "$have_uintxx_t" ; then
1519 AC_MSG_CHECKING([for uintXX_t types in stdint.h])
1520 AC_TRY_COMPILE(
aff51935 1521 [ #include <stdint.h> ],
1522 [ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1;],
41cb4569 1523 [
1524 AC_DEFINE(HAVE_UINTXX_T)
1525 AC_MSG_RESULT(yes)
1526 ],
1527 [ AC_MSG_RESULT(no) ]
1528 )
1529fi
1530
e5fe9a1f 1531if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
aff51935 1532 test "x$ac_cv_header_sys_bitypes_h" = "xyes")
5cdfe03f 1533then
1534 AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
1535 AC_TRY_COMPILE(
58d100bf 1536 [
1537#include <sys/bitypes.h>
aff51935 1538 ],
5cdfe03f 1539 [
837c30b8 1540 int8_t a; int16_t b; int32_t c;
1541 u_int8_t e; u_int16_t f; u_int32_t g;
1542 a = b = c = e = f = g = 1;
aff51935 1543 ],
5cdfe03f 1544 [
1545 AC_DEFINE(HAVE_U_INTXX_T)
1546 AC_DEFINE(HAVE_INTXX_T)
1547 AC_MSG_RESULT(yes)
1548 ],
1549 [AC_MSG_RESULT(no)]
aff51935 1550 )
5cdfe03f 1551fi
1552
0362750e 1553
1554AC_CACHE_CHECK([for u_char], ac_cv_have_u_char, [
1555 AC_TRY_COMPILE(
1556 [
1557#include <sys/types.h>
1558 ],
1559 [ u_char foo; foo = 125; ],
1560 [ ac_cv_have_u_char="yes" ],
1561 [ ac_cv_have_u_char="no" ]
1562 )
1563])
1564if test "x$ac_cv_have_u_char" = "xyes" ; then
1565 AC_DEFINE(HAVE_U_CHAR)
1566fi
1567
98a7c37b 1568TYPE_SOCKLEN_T
2b942fe0 1569
2d16d9a3 1570AC_CHECK_TYPES(sig_atomic_t,,,[#include <signal.h>])
ddceb1c8 1571
58d100bf 1572AC_CACHE_CHECK([for size_t], ac_cv_have_size_t, [
1573 AC_TRY_COMPILE(
1574 [
18ba2aab 1575#include <sys/types.h>
58d100bf 1576 ],
1577 [ size_t foo; foo = 1235; ],
1578 [ ac_cv_have_size_t="yes" ],
1579 [ ac_cv_have_size_t="no" ]
1580 )
1581])
1582if test "x$ac_cv_have_size_t" = "xyes" ; then
1583 AC_DEFINE(HAVE_SIZE_T)
1584fi
ea1970a3 1585
c04f75f1 1586AC_CACHE_CHECK([for ssize_t], ac_cv_have_ssize_t, [
1587 AC_TRY_COMPILE(
1588 [
1589#include <sys/types.h>
1590 ],
1591 [ ssize_t foo; foo = 1235; ],
1592 [ ac_cv_have_ssize_t="yes" ],
1593 [ ac_cv_have_ssize_t="no" ]
1594 )
1595])
1596if test "x$ac_cv_have_ssize_t" = "xyes" ; then
1597 AC_DEFINE(HAVE_SSIZE_T)
1598fi
1599
f1c4659d 1600AC_CACHE_CHECK([for clock_t], ac_cv_have_clock_t, [
1601 AC_TRY_COMPILE(
1602 [
1603#include <time.h>
1604 ],
1605 [ clock_t foo; foo = 1235; ],
1606 [ ac_cv_have_clock_t="yes" ],
1607 [ ac_cv_have_clock_t="no" ]
1608 )
1609])
1610if test "x$ac_cv_have_clock_t" = "xyes" ; then
1611 AC_DEFINE(HAVE_CLOCK_T)
1612fi
1613
1c04b088 1614AC_CACHE_CHECK([for sa_family_t], ac_cv_have_sa_family_t, [
1615 AC_TRY_COMPILE(
1616 [
1617#include <sys/types.h>
1618#include <sys/socket.h>
1619 ],
1620 [ sa_family_t foo; foo = 1235; ],
1621 [ ac_cv_have_sa_family_t="yes" ],
77bb0bca 1622 [ AC_TRY_COMPILE(
1623 [
1624#include <sys/types.h>
1625#include <sys/socket.h>
1626#include <netinet/in.h>
1627 ],
1628 [ sa_family_t foo; foo = 1235; ],
1629 [ ac_cv_have_sa_family_t="yes" ],
1630
1c04b088 1631 [ ac_cv_have_sa_family_t="no" ]
77bb0bca 1632 )]
1c04b088 1633 )
1634])
1635if test "x$ac_cv_have_sa_family_t" = "xyes" ; then
1636 AC_DEFINE(HAVE_SA_FAMILY_T)
1637fi
1638
729bfe59 1639AC_CACHE_CHECK([for pid_t], ac_cv_have_pid_t, [
1640 AC_TRY_COMPILE(
1641 [
1642#include <sys/types.h>
1643 ],
1644 [ pid_t foo; foo = 1235; ],
1645 [ ac_cv_have_pid_t="yes" ],
1646 [ ac_cv_have_pid_t="no" ]
1647 )
1648])
1649if test "x$ac_cv_have_pid_t" = "xyes" ; then
1650 AC_DEFINE(HAVE_PID_T)
1651fi
1652
1653AC_CACHE_CHECK([for mode_t], ac_cv_have_mode_t, [
1654 AC_TRY_COMPILE(
1655 [
1656#include <sys/types.h>
1657 ],
1658 [ mode_t foo; foo = 1235; ],
1659 [ ac_cv_have_mode_t="yes" ],
1660 [ ac_cv_have_mode_t="no" ]
1661 )
1662])
1663if test "x$ac_cv_have_mode_t" = "xyes" ; then
1664 AC_DEFINE(HAVE_MODE_T)
1665fi
1666
e3a93db0 1667
58d100bf 1668AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_have_struct_sockaddr_storage, [
1669 AC_TRY_COMPILE(
1670 [
18ba2aab 1671#include <sys/types.h>
1672#include <sys/socket.h>
58d100bf 1673 ],
1674 [ struct sockaddr_storage s; ],
1675 [ ac_cv_have_struct_sockaddr_storage="yes" ],
1676 [ ac_cv_have_struct_sockaddr_storage="no" ]
1677 )
1678])
1679if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then
1680 AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE)
1681fi
48e671d5 1682
58d100bf 1683AC_CACHE_CHECK([for struct sockaddr_in6], ac_cv_have_struct_sockaddr_in6, [
1684 AC_TRY_COMPILE(
1685 [
cbd7492e 1686#include <sys/types.h>
58d100bf 1687#include <netinet/in.h>
1688 ],
1689 [ struct sockaddr_in6 s; s.sin6_family = 0; ],
1690 [ ac_cv_have_struct_sockaddr_in6="yes" ],
1691 [ ac_cv_have_struct_sockaddr_in6="no" ]
1692 )
1693])
1694if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then
1695 AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6)
1696fi
48e671d5 1697
58d100bf 1698AC_CACHE_CHECK([for struct in6_addr], ac_cv_have_struct_in6_addr, [
1699 AC_TRY_COMPILE(
1700 [
cbd7492e 1701#include <sys/types.h>
58d100bf 1702#include <netinet/in.h>
1703 ],
1704 [ struct in6_addr s; s.s6_addr[0] = 0; ],
1705 [ ac_cv_have_struct_in6_addr="yes" ],
1706 [ ac_cv_have_struct_in6_addr="no" ]
1707 )
1708])
1709if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then
1710 AC_DEFINE(HAVE_STRUCT_IN6_ADDR)
1711fi
48e671d5 1712
58d100bf 1713AC_CACHE_CHECK([for struct addrinfo], ac_cv_have_struct_addrinfo, [
1714 AC_TRY_COMPILE(
1715 [
18ba2aab 1716#include <sys/types.h>
1717#include <sys/socket.h>
1718#include <netdb.h>
58d100bf 1719 ],
1720 [ struct addrinfo s; s.ai_flags = AI_PASSIVE; ],
1721 [ ac_cv_have_struct_addrinfo="yes" ],
1722 [ ac_cv_have_struct_addrinfo="no" ]
1723 )
1724])
1725if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then
1726 AC_DEFINE(HAVE_STRUCT_ADDRINFO)
1727fi
1728
89c7e31c 1729AC_CACHE_CHECK([for struct timeval], ac_cv_have_struct_timeval, [
1730 AC_TRY_COMPILE(
aff51935 1731 [ #include <sys/time.h> ],
1732 [ struct timeval tv; tv.tv_sec = 1;],
89c7e31c 1733 [ ac_cv_have_struct_timeval="yes" ],
1734 [ ac_cv_have_struct_timeval="no" ]
1735 )
1736])
1737if test "x$ac_cv_have_struct_timeval" = "xyes" ; then
1738 AC_DEFINE(HAVE_STRUCT_TIMEVAL)
1739 have_struct_timeval=1
1740fi
1741
5271b55c 1742AC_CHECK_TYPES(struct timespec)
1743
85abc74b 1744# We need int64_t or else certian parts of the compile will fail.
2c523de9 1745if test "x$ac_cv_have_int64_t" = "xno" -a \
1746 "x$ac_cv_sizeof_long_int" != "x8" -a \
1747 "x$ac_cv_sizeof_long_long_int" = "x0" ; then
85abc74b 1748 echo "OpenSSH requires int64_t support. Contact your vendor or install"
1749 echo "an alternative compiler (I.E., GCC) before continuing."
1750 echo ""
1751 exit 1;
733cf7f4 1752else
1753dnl test snprintf (broken on SCO w/gcc)
1754 AC_TRY_RUN(
1755 [
1756#include <stdio.h>
1757#include <string.h>
1758#ifdef HAVE_SNPRINTF
1759main()
1760{
1761 char buf[50];
1762 char expected_out[50];
1763 int mazsize = 50 ;
1764#if (SIZEOF_LONG_INT == 8)
1765 long int num = 0x7fffffffffffffff;
1766#else
763a1a18 1767 long long num = 0x7fffffffffffffffll;
733cf7f4 1768#endif
1769 strcpy(expected_out, "9223372036854775807");
1770 snprintf(buf, mazsize, "%lld", num);
1771 if(strcmp(buf, expected_out) != 0)
aff51935 1772 exit(1);
733cf7f4 1773 exit(0);
1774}
1775#else
1776main() { exit(0); }
1777#endif
1778 ], [ true ], [ AC_DEFINE(BROKEN_SNPRINTF) ]
1779 )
2c523de9 1780fi
1781
77bb0bca 1782dnl Checks for structure members
58d100bf 1783OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmp.h, HAVE_HOST_IN_UTMP)
1784OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmpx.h, HAVE_HOST_IN_UTMPX)
1785OSSH_CHECK_HEADER_FOR_FIELD(syslen, utmpx.h, HAVE_SYSLEN_IN_UTMPX)
1786OSSH_CHECK_HEADER_FOR_FIELD(ut_pid, utmp.h, HAVE_PID_IN_UTMP)
1787OSSH_CHECK_HEADER_FOR_FIELD(ut_type, utmp.h, HAVE_TYPE_IN_UTMP)
25422c70 1788OSSH_CHECK_HEADER_FOR_FIELD(ut_type, utmpx.h, HAVE_TYPE_IN_UTMPX)
58d100bf 1789OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmp.h, HAVE_TV_IN_UTMP)
1790OSSH_CHECK_HEADER_FOR_FIELD(ut_id, utmp.h, HAVE_ID_IN_UTMP)
daaff4d5 1791OSSH_CHECK_HEADER_FOR_FIELD(ut_id, utmpx.h, HAVE_ID_IN_UTMPX)
58d100bf 1792OSSH_CHECK_HEADER_FOR_FIELD(ut_addr, utmp.h, HAVE_ADDR_IN_UTMP)
1793OSSH_CHECK_HEADER_FOR_FIELD(ut_addr, utmpx.h, HAVE_ADDR_IN_UTMPX)
1794OSSH_CHECK_HEADER_FOR_FIELD(ut_addr_v6, utmp.h, HAVE_ADDR_V6_IN_UTMP)
1795OSSH_CHECK_HEADER_FOR_FIELD(ut_addr_v6, utmpx.h, HAVE_ADDR_V6_IN_UTMPX)
1d7b9b20 1796OSSH_CHECK_HEADER_FOR_FIELD(ut_exit, utmp.h, HAVE_EXIT_IN_UTMP)
1797OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmp.h, HAVE_TIME_IN_UTMP)
1798OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmpx.h, HAVE_TIME_IN_UTMPX)
1799OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmpx.h, HAVE_TV_IN_UTMPX)
98a7c37b 1800
1801AC_CHECK_MEMBERS([struct stat.st_blksize])
1d7b9b20 1802
58d100bf 1803AC_CACHE_CHECK([for ss_family field in struct sockaddr_storage],
1804 ac_cv_have_ss_family_in_struct_ss, [
1805 AC_TRY_COMPILE(
1806 [
18ba2aab 1807#include <sys/types.h>
1808#include <sys/socket.h>
58d100bf 1809 ],
1810 [ struct sockaddr_storage s; s.ss_family = 1; ],
1811 [ ac_cv_have_ss_family_in_struct_ss="yes" ],
1812 [ ac_cv_have_ss_family_in_struct_ss="no" ],
1813 )
1814])
1815if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
1816 AC_DEFINE(HAVE_SS_FAMILY_IN_SS)
1817fi
1818
58d100bf 1819AC_CACHE_CHECK([for __ss_family field in struct sockaddr_storage],
1820 ac_cv_have___ss_family_in_struct_ss, [
1821 AC_TRY_COMPILE(
1822 [
18ba2aab 1823#include <sys/types.h>
1824#include <sys/socket.h>
58d100bf 1825 ],
1826 [ struct sockaddr_storage s; s.__ss_family = 1; ],
1827 [ ac_cv_have___ss_family_in_struct_ss="yes" ],
1828 [ ac_cv_have___ss_family_in_struct_ss="no" ]
1829 )
1830])
1831if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then
1832 AC_DEFINE(HAVE___SS_FAMILY_IN_SS)
1833fi
1834
2e73a022 1835AC_CACHE_CHECK([for pw_class field in struct passwd],
1836 ac_cv_have_pw_class_in_struct_passwd, [
1837 AC_TRY_COMPILE(
1838 [
2e73a022 1839#include <pwd.h>
1840 ],
97994d32 1841 [ struct passwd p; p.pw_class = 0; ],
2e73a022 1842 [ ac_cv_have_pw_class_in_struct_passwd="yes" ],
1843 [ ac_cv_have_pw_class_in_struct_passwd="no" ]
1844 )
1845])
1846if test "x$ac_cv_have_pw_class_in_struct_passwd" = "xyes" ; then
1847 AC_DEFINE(HAVE_PW_CLASS_IN_PASSWD)
1848fi
1849
7751d4eb 1850AC_CACHE_CHECK([for pw_expire field in struct passwd],
1851 ac_cv_have_pw_expire_in_struct_passwd, [
1852 AC_TRY_COMPILE(
1853 [
1854#include <pwd.h>
1855 ],
1856 [ struct passwd p; p.pw_expire = 0; ],
1857 [ ac_cv_have_pw_expire_in_struct_passwd="yes" ],
1858 [ ac_cv_have_pw_expire_in_struct_passwd="no" ]
1859 )
1860])
1861if test "x$ac_cv_have_pw_expire_in_struct_passwd" = "xyes" ; then
1862 AC_DEFINE(HAVE_PW_EXPIRE_IN_PASSWD)
1863fi
1864
1865AC_CACHE_CHECK([for pw_change field in struct passwd],
1866 ac_cv_have_pw_change_in_struct_passwd, [
1867 AC_TRY_COMPILE(
1868 [
1869#include <pwd.h>
1870 ],
1871 [ struct passwd p; p.pw_change = 0; ],
1872 [ ac_cv_have_pw_change_in_struct_passwd="yes" ],
1873 [ ac_cv_have_pw_change_in_struct_passwd="no" ]
1874 )
1875])
1876if test "x$ac_cv_have_pw_change_in_struct_passwd" = "xyes" ; then
1877 AC_DEFINE(HAVE_PW_CHANGE_IN_PASSWD)
1878fi
58d100bf 1879
637f9177 1880dnl make sure we're using the real structure members and not defines
6f34652e 1881AC_CACHE_CHECK([for msg_accrights field in struct msghdr],
1882 ac_cv_have_accrights_in_msghdr, [
637f9177 1883 AC_TRY_RUN(
6f34652e 1884 [
f95c8ce8 1885#include <sys/types.h>
6f34652e 1886#include <sys/socket.h>
1887#include <sys/uio.h>
637f9177 1888int main() {
1889#ifdef msg_accrights
1890exit(1);
1891#endif
1892struct msghdr m;
1893m.msg_accrights = 0;
1894exit(0);
1895}
6f34652e 1896 ],
6f34652e 1897 [ ac_cv_have_accrights_in_msghdr="yes" ],
1898 [ ac_cv_have_accrights_in_msghdr="no" ]
1899 )
1900])
1901if test "x$ac_cv_have_accrights_in_msghdr" = "xyes" ; then
1902 AC_DEFINE(HAVE_ACCRIGHTS_IN_MSGHDR)
1903fi
1904
7176df4f 1905AC_CACHE_CHECK([for msg_control field in struct msghdr],
1906 ac_cv_have_control_in_msghdr, [
637f9177 1907 AC_TRY_RUN(
7176df4f 1908 [
f95c8ce8 1909#include <sys/types.h>
7176df4f 1910#include <sys/socket.h>
1911#include <sys/uio.h>
637f9177 1912int main() {
1913#ifdef msg_control
1914exit(1);
1915#endif
1916struct msghdr m;
1917m.msg_control = 0;
1918exit(0);
1919}
7176df4f 1920 ],
7176df4f 1921 [ ac_cv_have_control_in_msghdr="yes" ],
1922 [ ac_cv_have_control_in_msghdr="no" ]
1923 )
1924])
1925if test "x$ac_cv_have_control_in_msghdr" = "xyes" ; then
1926 AC_DEFINE(HAVE_CONTROL_IN_MSGHDR)
1927fi
1928
58d100bf 1929AC_CACHE_CHECK([if libc defines __progname], ac_cv_libc_defines___progname, [
aff51935 1930 AC_TRY_LINK([],
1931 [ extern char *__progname; printf("%s", __progname); ],
58d100bf 1932 [ ac_cv_libc_defines___progname="yes" ],
1933 [ ac_cv_libc_defines___progname="no" ]
1934 )
1935])
1936if test "x$ac_cv_libc_defines___progname" = "xyes" ; then
1937 AC_DEFINE(HAVE___PROGNAME)
1938fi
8946db53 1939
c921ee00 1940AC_CACHE_CHECK([whether $CC implements __FUNCTION__], ac_cv_cc_implements___FUNCTION__, [
1941 AC_TRY_LINK([
1942#include <stdio.h>
aff51935 1943],
1944 [ printf("%s", __FUNCTION__); ],
c921ee00 1945 [ ac_cv_cc_implements___FUNCTION__="yes" ],
1946 [ ac_cv_cc_implements___FUNCTION__="no" ]
1947 )
1948])
1949if test "x$ac_cv_cc_implements___FUNCTION__" = "xyes" ; then
1950 AC_DEFINE(HAVE___FUNCTION__)
1951fi
1952
1953AC_CACHE_CHECK([whether $CC implements __func__], ac_cv_cc_implements___func__, [
1954 AC_TRY_LINK([
1955#include <stdio.h>
aff51935 1956],
1957 [ printf("%s", __func__); ],
c921ee00 1958 [ ac_cv_cc_implements___func__="yes" ],
1959 [ ac_cv_cc_implements___func__="no" ]
1960 )
1961])
1962if test "x$ac_cv_cc_implements___func__" = "xyes" ; then
1963 AC_DEFINE(HAVE___func__)
1964fi
1965
1812a662 1966AC_CACHE_CHECK([whether getopt has optreset support],
1967 ac_cv_have_getopt_optreset, [
1968 AC_TRY_LINK(
1969 [
1970#include <getopt.h>
1971 ],
1972 [ extern int optreset; optreset = 0; ],
1973 [ ac_cv_have_getopt_optreset="yes" ],
1974 [ ac_cv_have_getopt_optreset="no" ]
1975 )
1976])
1977if test "x$ac_cv_have_getopt_optreset" = "xyes" ; then
1978 AC_DEFINE(HAVE_GETOPT_OPTRESET)
1979fi
a0391976 1980
819b676f 1981AC_CACHE_CHECK([if libc defines sys_errlist], ac_cv_libc_defines_sys_errlist, [
aff51935 1982 AC_TRY_LINK([],
1983 [ extern const char *const sys_errlist[]; printf("%s", sys_errlist[0]);],
819b676f 1984 [ ac_cv_libc_defines_sys_errlist="yes" ],
1985 [ ac_cv_libc_defines_sys_errlist="no" ]
1986 )
1987])
1988if test "x$ac_cv_libc_defines_sys_errlist" = "xyes" ; then
1989 AC_DEFINE(HAVE_SYS_ERRLIST)
1990fi
1991
1992
416ed5a7 1993AC_CACHE_CHECK([if libc defines sys_nerr], ac_cv_libc_defines_sys_nerr, [
aff51935 1994 AC_TRY_LINK([],
1995 [ extern int sys_nerr; printf("%i", sys_nerr);],
416ed5a7 1996 [ ac_cv_libc_defines_sys_nerr="yes" ],
1997 [ ac_cv_libc_defines_sys_nerr="no" ]
1998 )
1999])
2000if test "x$ac_cv_libc_defines_sys_nerr" = "xyes" ; then
2001 AC_DEFINE(HAVE_SYS_NERR)
2002fi
2003
aff51935 2004SCARD_MSG="no"
295c8801 2005# Check whether user wants sectok support
2006AC_ARG_WITH(sectok,
2007 [ --with-sectok Enable smartcard support using libsectok],
d0b19c95 2008 [
2009 if test "x$withval" != "xno" ; then
2010 if test "x$withval" != "xyes" ; then
2011 CPPFLAGS="$CPPFLAGS -I${withval}"
2012 LDFLAGS="$LDFLAGS -L${withval}"
2013 if test ! -z "$need_dash_r" ; then
2014 LDFLAGS="$LDFLAGS -R${withval}"
2015 fi
2016 if test ! -z "$blibpath" ; then
2017 blibpath="$blibpath:${withval}"
2018 fi
2019 fi
2020 AC_CHECK_HEADERS(sectok.h)
2021 if test "$ac_cv_header_sectok_h" != yes; then
2022 AC_MSG_ERROR(Can't find sectok.h)
2023 fi
2024 AC_CHECK_LIB(sectok, sectok_open)
2025 if test "$ac_cv_lib_sectok_sectok_open" != yes; then
2026 AC_MSG_ERROR(Can't find libsectok)
2027 fi
2028 AC_DEFINE(SMARTCARD)
295c8801 2029 AC_DEFINE(USE_SECTOK)
aff51935 2030 SCARD_MSG="yes, using sectok"
295c8801 2031 fi
2032 ]
2033)
2034
2035# Check whether user wants OpenSC support
2036AC_ARG_WITH(opensc,
49ef62db 2037 AC_HELP_STRING([--with-opensc=PFX],
2038 [Enable smartcard support using OpenSC]),
2039 opensc_config_prefix="$withval", opensc_config_prefix="")
2040if test x$opensc_config_prefix != x ; then
2041 OPENSC_CONFIG=$opensc_config_prefix/bin/opensc-config
2042 AC_PATH_PROG(OPENSC_CONFIG, opensc-config, no)
2043 if test "$OPENSC_CONFIG" != "no"; then
2044 LIBOPENSC_CFLAGS=`$OPENSC_CONFIG --cflags`
2045 LIBOPENSC_LIBS=`$OPENSC_CONFIG --libs`
2046 CPPFLAGS="$CPPFLAGS $LIBOPENSC_CFLAGS"
2047 LDFLAGS="$LDFLAGS $LIBOPENSC_LIBS"
2048 AC_DEFINE(SMARTCARD)
2049 AC_DEFINE(USE_OPENSC)
aff51935 2050 SCARD_MSG="yes, using OpenSC"
49ef62db 2051 fi
2052fi
d0b19c95 2053
c31dc31c 2054# Check libraries needed by DNS fingerprint support
aff51935 2055AC_SEARCH_LIBS(getrrsetbyname, resolv,
c31dc31c 2056 [AC_DEFINE(HAVE_GETRRSETBYNAME)],
3e05e934 2057 [
c31dc31c 2058 # Needed by our getrrsetbyname()
2059 AC_SEARCH_LIBS(res_query, resolv)
2060 AC_SEARCH_LIBS(dn_expand, resolv)
2061 AC_CHECK_FUNCS(_getshort _getlong)
2062 AC_CHECK_MEMBER(HEADER.ad,
2063 [AC_DEFINE(HAVE_HEADER_AD)],,
2064 [#include <arpa/nameser.h>])
2065 ])
3e05e934 2066
12928e80 2067# Check whether user wants Kerberos 5 support
aff51935 2068KRB5_MSG="no"
12928e80 2069AC_ARG_WITH(kerberos5,
aff51935 2070 [ --with-kerberos5=PATH Enable Kerberos 5 support],
5585c441 2071 [ if test "x$withval" != "xno" ; then
2072 if test "x$withval" = "xyes" ; then
2073 KRB5ROOT="/usr/local"
2074 else
2075 KRB5ROOT=${withval}
2076 fi
2077
2078 AC_DEFINE(KRB5)
2079 KRB5_MSG="yes"
2080
2081 AC_MSG_CHECKING(for krb5-config)
2082 if test -x $KRB5ROOT/bin/krb5-config ; then
2083 KRB5CONF=$KRB5ROOT/bin/krb5-config
2084 AC_MSG_RESULT($KRB5CONF)
2085
2086 AC_MSG_CHECKING(for gssapi support)
2087 if $KRB5CONF | grep gssapi >/dev/null ; then
2088 AC_MSG_RESULT(yes)
2089 K5CFLAGS="`$KRB5CONF --cflags gssapi`"
2090 dnl m4 quadragraphs: "sed 's/-l[^- ]*//g'"
2091 K5LDFLAGS="`$KRB5CONF --libs gssapi | sed 's/-l@<:@^- @:>@*//g'`"
2092 K5LIBS="`$KRB5CONF --libs gssapi | sed 's/-L@<:@^- @:>@*//g'`"
aff51935 2093 else
5585c441 2094 AC_MSG_RESULT(no)
2095 K5CFLAGS="`$KRB5CONF --cflags`"
2096 K5LDFLAGS="`$KRB5CONF --libs | sed 's/-l@<:@^- @:>@*//g'`"
2097 K5LIBS="`$KRB5CONF --libs | sed 's/-L@<:@^- @:>@*//g'`"
aff51935 2098 fi
5585c441 2099 CPPFLAGS="$CPPFLAGS $K5CFLAGS"
2100 LDFLAGS="$LDFLAGS $K5LDFLAGS"
2101 AC_MSG_CHECKING(whether we are using Heimdal)
2102 AC_TRY_COMPILE([ #include <krb5.h> ],
2103 [ char *tmp = heimdal_version; ],
2104 [ AC_MSG_RESULT(yes)
2105 AC_DEFINE(HEIMDAL) ],
2106 AC_MSG_RESULT(no)
2107 )
2108 else
2109 AC_MSG_RESULT(no)
12928e80 2110 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include"
aff51935 2111 LDFLAGS="$LDFLAGS -L${KRB5ROOT}/lib"
aff51935 2112 AC_MSG_CHECKING(whether we are using Heimdal)
2113 AC_TRY_COMPILE([ #include <krb5.h> ],
2114 [ char *tmp = heimdal_version; ],
2115 [ AC_MSG_RESULT(yes)
2116 AC_DEFINE(HEIMDAL)
2117 K5LIBS="-lkrb5 -ldes -lcom_err -lasn1 -lroken"
2118 ],
2119 [ AC_MSG_RESULT(no)
2120 K5LIBS="-lkrb5 -lk5crypto -lcom_err"
2121 ]
2122 )
4e00038c 2123 AC_SEARCH_LIBS(dn_expand, resolv)
12928e80 2124
749560dd 2125 AC_CHECK_LIB(gssapi,gss_init_sec_context,
2126 [ AC_DEFINE(GSSAPI)
2127 K5LIBS="-lgssapi $K5LIBS" ],
2128 [ AC_CHECK_LIB(gssapi_krb5,gss_init_sec_context,
2129 [ AC_DEFINE(GSSAPI)
aff51935 2130 K5LIBS="-lgssapi_krb5 $K5LIBS" ],
749560dd 2131 AC_MSG_WARN([Cannot find any suitable gss-api library - build may fail]),
2132 $K5LIBS)
2133 ],
2134 $K5LIBS)
2135
2136 AC_CHECK_HEADER(gssapi.h, ,
2137 [ unset ac_cv_header_gssapi_h
aff51935 2138 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi"
749560dd 2139 AC_CHECK_HEADERS(gssapi.h, ,
2140 AC_MSG_WARN([Cannot find any suitable gss-api header - build may fail])
aff51935 2141 )
749560dd 2142 ]
2143 )
2144
2145 oldCPP="$CPPFLAGS"
2146 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi"
2147 AC_CHECK_HEADER(gssapi_krb5.h, ,
2148 [ CPPFLAGS="$oldCPP" ])
2149
aff51935 2150 fi
5585c441 2151 if test ! -z "$need_dash_r" ; then
2152 LDFLAGS="$LDFLAGS -R${KRB5ROOT}/lib"
2153 fi
2154 if test ! -z "$blibpath" ; then
2155 blibpath="$blibpath:${KRB5ROOT}/lib"
2156 fi
2157 fi ]
2158 AC_SEARCH_LIBS(k_hasafs, kafs,
bcfcc5f9 2159 [ AC_DEFINE(USE_AFS)
5585c441 2160 K5LIBS="-lkafs $K5LIBS"
2161 ]
2162 )
12928e80 2163)
1c590258 2164LIBS="$LIBS $K5LIBS"
b5b68128 2165
a0391976 2166# Looking for programs, paths and files
a0391976 2167
ecac8ee5 2168PRIVSEP_PATH=/var/empty
2169AC_ARG_WITH(privsep-path,
cda1ebcb 2170 [ --with-privsep-path=xxx Path for privilege separation chroot (default=/var/empty)],
ecac8ee5 2171 [
2172 if test "x$withval" != "$no" ; then
2173 PRIVSEP_PATH=$withval
2174 fi
2175 ]
2176)
2177AC_SUBST(PRIVSEP_PATH)
2178
a0391976 2179AC_ARG_WITH(xauth,
2180 [ --with-xauth=PATH Specify path to xauth program ],
2181 [
00937921 2182 if test "x$withval" != "xno" ; then
cbd7492e 2183 xauth_path=$withval
a0391976 2184 fi
2185 ],
2186 [
2bf42e4a 2187 TestPath="$PATH"
2188 TestPath="${TestPath}${PATH_SEPARATOR}/usr/X/bin"
2189 TestPath="${TestPath}${PATH_SEPARATOR}/usr/bin/X11"
2190 TestPath="${TestPath}${PATH_SEPARATOR}/usr/X11R6/bin"
2191 TestPath="${TestPath}${PATH_SEPARATOR}/usr/openwin/bin"
2192 AC_PATH_PROG(xauth_path, xauth, , $TestPath)
e5fe9a1f 2193 if (test ! -z "$xauth_path" && test -x "/usr/openwin/bin/xauth") ; then
a0391976 2194 xauth_path="/usr/openwin/bin/xauth"
2195 fi
2196 ]
2197)
2198
65a4b4af 2199STRIP_OPT=-s
2200AC_ARG_ENABLE(strip,
2201 [ --disable-strip Disable calling strip(1) on install],
2202 [
2203 if test "x$enableval" = "xno" ; then
2204 STRIP_OPT=
2205 fi
2206 ]
2207)
2208AC_SUBST(STRIP_OPT)
2209
b3ec54b4 2210if test -z "$xauth_path" ; then
2211 XAUTH_PATH="undefined"
2212 AC_SUBST(XAUTH_PATH)
2213else
a0391976 2214 AC_DEFINE_UNQUOTED(XAUTH_PATH, "$xauth_path")
b3ec54b4 2215 XAUTH_PATH=$xauth_path
2216 AC_SUBST(XAUTH_PATH)
a0391976 2217fi
a0391976 2218
2219# Check for mail directory (last resort if we cannot get it from headers)
2220if test ! -z "$MAIL" ; then
2221 maildir=`dirname $MAIL`
2222 AC_DEFINE_UNQUOTED(MAIL_DIRECTORY, "$maildir")
2223fi
2224
a0391976 2225if test -z "$no_dev_ptmx" ; then
6e879cb4 2226 if test "x$disable_ptmx_check" != "xyes" ; then
aff51935 2227 AC_CHECK_FILE("/dev/ptmx",
6e879cb4 2228 [
2229 AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX)
2230 have_dev_ptmx=1
2231 ]
2232 )
2233 fi
3276571c 2234fi
aff51935 2235AC_CHECK_FILE("/dev/ptc",
3276571c 2236 [
2237 AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC)
2238 have_dev_ptc=1
2239 ]
2240)
2241
a0391976 2242# Options from here on. Some of these are preset by platform above
fdf6b7aa 2243AC_ARG_WITH(mantype,
5d97cfbf 2244 [ --with-mantype=man|cat|doc Set man page type],
c54a6257 2245 [
5d97cfbf 2246 case "$withval" in
2247 man|cat|doc)
2248 MANTYPE=$withval
2249 ;;
2250 *)
2251 AC_MSG_ERROR(invalid man type: $withval)
2252 ;;
2253 esac
c54a6257 2254 ]
2255)
e0c4d3ac 2256if test -z "$MANTYPE"; then
2bf42e4a 2257 TestPath="/usr/bin${PATH_SEPARATOR}/usr/ucb"
2258 AC_PATH_PROGS(NROFF, nroff awf, /bin/false, $TestPath)
e0c4d3ac 2259 if ${NROFF} -mdoc ${srcdir}/ssh.1 >/dev/null 2>&1; then
2260 MANTYPE=doc
2261 elif ${NROFF} -man ${srcdir}/ssh.1 >/dev/null 2>&1; then
2262 MANTYPE=man
2263 else
2264 MANTYPE=cat
2265 fi
2266fi
c54a6257 2267AC_SUBST(MANTYPE)
e0c4d3ac 2268if test "$MANTYPE" = "doc"; then
2269 mansubdir=man;
2270else
2271 mansubdir=$MANTYPE;
2272fi
2273AC_SUBST(mansubdir)
0bc5b6fb 2274
a0391976 2275# Check whether to enable MD5 passwords
aff51935 2276MD5_MSG="no"
2ddcfdf3 2277AC_ARG_WITH(md5-passwords,
caf3bc51 2278 [ --with-md5-passwords Enable use of MD5 passwords],
0bc5b6fb 2279 [
bcf36c78 2280 if test "x$withval" != "xno" ; then
0bc5b6fb 2281 AC_DEFINE(HAVE_MD5_PASSWORDS)
aff51935 2282 MD5_MSG="yes"
0bc5b6fb 2283 fi
2284 ]
caf3bc51 2285)
2286
a0391976 2287# Whether to disable shadow password support
a7effaac 2288AC_ARG_WITH(shadow,
2289 [ --without-shadow Disable shadow password support],
2290 [
2291 if test "x$withval" = "xno" ; then
2292 AC_DEFINE(DISABLE_SHADOW)
4cb5ffa0 2293 disable_shadow=yes
a7effaac 2294 fi
2295 ]
2296)
2297
4cb5ffa0 2298if test -z "$disable_shadow" ; then
2299 AC_MSG_CHECKING([if the systems has expire shadow information])
2300 AC_TRY_COMPILE(
2301 [
2302#include <sys/types.h>
2303#include <shadow.h>
2304 struct spwd sp;
2305 ],[ sp.sp_expire = sp.sp_lstchg = sp.sp_inact = 0; ],
2306 [ sp_expire_available=yes ], []
2307 )
2308
2309 if test "x$sp_expire_available" = "xyes" ; then
2310 AC_MSG_RESULT(yes)
2311 AC_DEFINE(HAS_SHADOW_EXPIRE)
2312 else
2313 AC_MSG_RESULT(no)
2314 fi
2315fi
2316
a0391976 2317# Use ip address instead of hostname in $DISPLAY
44839801 2318if test ! -z "$IPADDR_IN_DISPLAY" ; then
2319 DISPLAY_HACK_MSG="yes"
2320 AC_DEFINE(IPADDR_IN_DISPLAY)
2321else
aff51935 2322 DISPLAY_HACK_MSG="no"
44839801 2323 AC_ARG_WITH(ipaddr-display,
2324 [ --with-ipaddr-display Use ip address instead of hostname in \$DISPLAY],
2325 [
2326 if test "x$withval" != "xno" ; then
2327 AC_DEFINE(IPADDR_IN_DISPLAY)
aff51935 2328 DISPLAY_HACK_MSG="yes"
44839801 2329 fi
2330 ]
2331 )
2332fi
a7effaac 2333
95b99395 2334# check for /etc/default/login and use it if present.
daa41e62 2335AC_ARG_ENABLE(etc-default-login,
2336 [ --disable-etc-default-login Disable using PATH from /etc/default/login [no]],,
2337[
95b99395 2338AC_CHECK_FILE("/etc/default/login", [ external_path_file=/etc/default/login ])
2339
2340if test "x$external_path_file" = "x/etc/default/login"; then
2341 AC_DEFINE(HAVE_ETC_DEFAULT_LOGIN)
2342fi
daa41e62 2343])
95b99395 2344
8d184c09 2345dnl BSD systems use /etc/login.conf so --with-default-path= has no effect
2346if test $ac_cv_func_login_getcapbool = "yes" -a \
2347 $ac_cv_header_login_cap_h = "yes" ; then
95b99395 2348 external_path_file=/etc/login.conf
8d184c09 2349fi
95b99395 2350
a0391976 2351# Whether to mess with the default path
aff51935 2352SERVER_PATH_MSG="(default)"
c43d69a9 2353AC_ARG_WITH(default-path,
75817f90 2354 [ --with-default-path= Specify default \$PATH environment for server],
cb807f40 2355 [
95b99395 2356 if test "x$external_path_file" = "x/etc/login.conf" ; then
8d184c09 2357 AC_MSG_WARN([
2358--with-default-path=PATH has no effect on this system.
2359Edit /etc/login.conf instead.])
2360 elif test "x$withval" != "xno" ; then
89bbd457 2361 if test ! -z "$external_path_file" ; then
95b99395 2362 AC_MSG_WARN([
2363--with-default-path=PATH will only be used if PATH is not defined in
2364$external_path_file .])
2365 fi
b2d818e6 2366 user_path="$withval"
aff51935 2367 SERVER_PATH_MSG="$withval"
cb807f40 2368 fi
b2d818e6 2369 ],
95b99395 2370 [ if test "x$external_path_file" = "x/etc/login.conf" ; then
2371 AC_MSG_WARN([Make sure the path to scp is in /etc/login.conf])
8d184c09 2372 else
89bbd457 2373 if test ! -z "$external_path_file" ; then
95b99395 2374 AC_MSG_WARN([
2375If PATH is defined in $external_path_file, ensure the path to scp is included,
2376otherwise scp will not work.])
2377 fi
2378 AC_TRY_RUN(
2379 [
b2d818e6 2380/* find out what STDPATH is */
2381#include <stdio.h>
b2d818e6 2382#ifdef HAVE_PATHS_H
2383# include <paths.h>
2384#endif
2385#ifndef _PATH_STDPATH
d9a4e55b 2386# ifdef _PATH_USERPATH /* Irix */
2387# define _PATH_STDPATH _PATH_USERPATH
2388# else
2389# define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin"
2390# endif
b2d818e6 2391#endif
2392#include <sys/types.h>
2393#include <sys/stat.h>
2394#include <fcntl.h>
2395#define DATA "conftest.stdpath"
2396
2397main()
2398{
2399 FILE *fd;
2400 int rc;
2401
2402 fd = fopen(DATA,"w");
2403 if(fd == NULL)
2404 exit(1);
2405
2406 if ((rc = fprintf(fd,"%s", _PATH_STDPATH)) < 0)
2407 exit(1);
2408
2409 exit(0);
2410}
2411 ], [ user_path=`cat conftest.stdpath` ],
2412 [ user_path="/usr/bin:/bin:/usr/sbin:/sbin" ],
2413 [ user_path="/usr/bin:/bin:/usr/sbin:/sbin" ]
2414 )
2415# make sure $bindir is in USER_PATH so scp will work
2416 t_bindir=`eval echo ${bindir}`
2417 case $t_bindir in
2418 NONE/*) t_bindir=`echo $t_bindir | sed "s~NONE~$prefix~"` ;;
2419 esac
2420 case $t_bindir in
2421 NONE/*) t_bindir=`echo $t_bindir | sed "s~NONE~$ac_default_prefix~"` ;;
2422 esac
2423 echo $user_path | grep ":$t_bindir" > /dev/null 2>&1
2424 if test $? -ne 0 ; then
2425 echo $user_path | grep "^$t_bindir" > /dev/null 2>&1
2426 if test $? -ne 0 ; then
2427 user_path=$user_path:$t_bindir
2428 AC_MSG_RESULT(Adding $t_bindir to USER_PATH so scp will work)
2429 fi
2430 fi
8d184c09 2431 fi ]
cb807f40 2432)
95b99395 2433if test "x$external_path_file" != "x/etc/login.conf" ; then
8d184c09 2434 AC_DEFINE_UNQUOTED(USER_PATH, "$user_path")
2435 AC_SUBST(user_path)
2436fi
cb807f40 2437
06617857 2438# Set superuser path separately to user path
06617857 2439AC_ARG_WITH(superuser-path,
2440 [ --with-superuser-path= Specify different path for super-user],
2441 [
2442 if test "x$withval" != "xno" ; then
2443 AC_DEFINE_UNQUOTED(SUPERUSER_PATH, "$withval")
2444 superuser_path=$withval
2445 fi
2446 ]
2447)
2448
2449
58d100bf 2450AC_MSG_CHECKING([if we need to convert IPv4 in IPv6-mapped addresses])
aff51935 2451IPV4_IN6_HACK_MSG="no"
80faa19f 2452AC_ARG_WITH(4in6,
2453 [ --with-4in6 Check for and convert IPv4 in IPv6 mapped addresses],
2454 [
2455 if test "x$withval" != "xno" ; then
2456 AC_MSG_RESULT(yes)
2457 AC_DEFINE(IPV4_IN_IPV6)
aff51935 2458 IPV4_IN6_HACK_MSG="yes"
80faa19f 2459 else
2460 AC_MSG_RESULT(no)
2461 fi
2462 ],[
2463 if test "x$inet6_default_4in6" = "xyes"; then
2464 AC_MSG_RESULT([yes (default)])
2465 AC_DEFINE(IPV4_IN_IPV6)
aff51935 2466 IPV4_IN6_HACK_MSG="yes"
80faa19f 2467 else
2468 AC_MSG_RESULT([no (default)])
2469 fi
2470 ]
2471)
2472
af774732 2473# Whether to enable BSD auth support
f1b0ecc3 2474BSD_AUTH_MSG=no
af774732 2475AC_ARG_WITH(bsd-auth,
2476 [ --with-bsd-auth Enable BSD auth support],
2477 [
2478 if test "x$withval" != "xno" ; then
2479 AC_DEFINE(BSD_AUTH)
f1b0ecc3 2480 BSD_AUTH_MSG=yes
af774732 2481 fi
2482 ]
2483)
2484
a0391976 2485# Where to place sshd.pid
19d9ac2a 2486piddir=/var/run
81dadca3 2487# make sure the directory exists
2488if test ! -d $piddir ; then
2489 piddir=`eval echo ${sysconfdir}`
2490 case $piddir in
aff51935 2491 NONE/*) piddir=`echo $piddir | sed "s~NONE~$ac_default_prefix~"` ;;
81dadca3 2492 esac
2493fi
2494
47e45e44 2495AC_ARG_WITH(pid-dir,
2496 [ --with-pid-dir=PATH Specify location of ssh.pid file],
2497 [
2498 if test "x$withval" != "xno" ; then
19d9ac2a 2499 piddir=$withval
81dadca3 2500 if test ! -d $piddir ; then
2501 AC_MSG_WARN([** no $piddir directory on this system **])
2502 fi
47e45e44 2503 fi
2504 ]
2505)
b7a87eea 2506
42f11eb2 2507AC_DEFINE_UNQUOTED(_PATH_SSH_PIDDIR, "$piddir")
19d9ac2a 2508AC_SUBST(piddir)
47e45e44 2509
1d7b9b20 2510dnl allow user to disable some login recording features
2511AC_ARG_ENABLE(lastlog,
bfd550a2 2512 [ --disable-lastlog disable use of lastlog even if detected [no]],
ddb154b3 2513 [
2514 if test "x$enableval" = "xno" ; then
2515 AC_DEFINE(DISABLE_LASTLOG)
2516 fi
2517 ]
1d7b9b20 2518)
2519AC_ARG_ENABLE(utmp,
bfd550a2 2520 [ --disable-utmp disable use of utmp even if detected [no]],
ddb154b3 2521 [
2522 if test "x$enableval" = "xno" ; then
2523 AC_DEFINE(DISABLE_UTMP)
2524 fi
2525 ]
1d7b9b20 2526)
2527AC_ARG_ENABLE(utmpx,
bfd550a2 2528 [ --disable-utmpx disable use of utmpx even if detected [no]],
ddb154b3 2529 [
2530 if test "x$enableval" = "xno" ; then
2531 AC_DEFINE(DISABLE_UTMPX)
2532 fi
2533 ]
1d7b9b20 2534)
2535AC_ARG_ENABLE(wtmp,
bfd550a2 2536 [ --disable-wtmp disable use of wtmp even if detected [no]],
ddb154b3 2537 [
2538 if test "x$enableval" = "xno" ; then
2539 AC_DEFINE(DISABLE_WTMP)
2540 fi
2541 ]
1d7b9b20 2542)
2543AC_ARG_ENABLE(wtmpx,
bfd550a2 2544 [ --disable-wtmpx disable use of wtmpx even if detected [no]],
ddb154b3 2545 [
2546 if test "x$enableval" = "xno" ; then
2547 AC_DEFINE(DISABLE_WTMPX)
2548 fi
2549 ]
1d7b9b20 2550)
2551AC_ARG_ENABLE(libutil,
bfd550a2 2552 [ --disable-libutil disable use of libutil (login() etc.) [no]],
ddb154b3 2553 [
2554 if test "x$enableval" = "xno" ; then
2555 AC_DEFINE(DISABLE_LOGIN)
2556 fi
2557 ]
1d7b9b20 2558)
2559AC_ARG_ENABLE(pututline,
bfd550a2 2560 [ --disable-pututline disable use of pututline() etc. ([uw]tmp) [no]],
ddb154b3 2561 [
2562 if test "x$enableval" = "xno" ; then
aff51935 2563 AC_DEFINE(DISABLE_PUTUTLINE)
ddb154b3 2564 fi
2565 ]
1d7b9b20 2566)
2567AC_ARG_ENABLE(pututxline,
bfd550a2 2568 [ --disable-pututxline disable use of pututxline() etc. ([uw]tmpx) [no]],
ddb154b3 2569 [
2570 if test "x$enableval" = "xno" ; then
2571 AC_DEFINE(DISABLE_PUTUTXLINE)
2572 fi
2573 ]
1d7b9b20 2574)
2575AC_ARG_WITH(lastlog,
bfd550a2 2576 [ --with-lastlog=FILE|DIR specify lastlog location [common locations]],
8c89dd2b 2577 [
2578 if test "x$withval" = "xno" ; then
2579 AC_DEFINE(DISABLE_LASTLOG)
2580 else
2581 conf_lastlog_location=$withval
2582 fi
2583 ]
2584)
1d7b9b20 2585
2586dnl lastlog, [uw]tmpx? detection
2587dnl NOTE: set the paths in the platform section to avoid the
2588dnl need for command-line parameters
2589dnl lastlog and [uw]tmp are subject to a file search if all else fails
2590
2591dnl lastlog detection
2592dnl NOTE: the code itself will detect if lastlog is a directory
2593AC_MSG_CHECKING([if your system defines LASTLOG_FILE])
2594AC_TRY_COMPILE([
2595#include <sys/types.h>
2596#include <utmp.h>
2597#ifdef HAVE_LASTLOG_H
2598# include <lastlog.h>
2599#endif
d7c0f3d5 2600#ifdef HAVE_PATHS_H
1d7b9b20 2601# include <paths.h>
41cb4569 2602#endif
2603#ifdef HAVE_LOGIN_H
2604# include <login.h>
1d7b9b20 2605#endif
2606 ],
2607 [ char *lastlog = LASTLOG_FILE; ],
2608 [ AC_MSG_RESULT(yes) ],
d7c0f3d5 2609 [
2610 AC_MSG_RESULT(no)
2611 AC_MSG_CHECKING([if your system defines _PATH_LASTLOG])
2612 AC_TRY_COMPILE([
2613#include <sys/types.h>
2614#include <utmp.h>
2615#ifdef HAVE_LASTLOG_H
2616# include <lastlog.h>
2617#endif
2618#ifdef HAVE_PATHS_H
2619# include <paths.h>
2620#endif
2621 ],
2622 [ char *lastlog = _PATH_LASTLOG; ],
2623 [ AC_MSG_RESULT(yes) ],
2624 [
f282b668 2625 AC_MSG_RESULT(no)
d7c0f3d5 2626 system_lastlog_path=no
2627 ])
2628 ]
1d7b9b20 2629)
d7c0f3d5 2630
1d7b9b20 2631if test -z "$conf_lastlog_location"; then
2632 if test x"$system_lastlog_path" = x"no" ; then
2633 for f in /var/log/lastlog /usr/adm/lastlog /var/adm/lastlog /etc/security/lastlog ; do
e5fe9a1f 2634 if (test -d "$f" || test -f "$f") ; then
1d7b9b20 2635 conf_lastlog_location=$f
2636 fi
2637 done
2638 if test -z "$conf_lastlog_location"; then
f8119cef 2639 AC_MSG_WARN([** Cannot find lastlog **])
2640 dnl Don't define DISABLE_LASTLOG - that means we don't try wtmp/wtmpx
1d7b9b20 2641 fi
2642 fi
2643fi
2644
2645if test -n "$conf_lastlog_location"; then
2646 AC_DEFINE_UNQUOTED(CONF_LASTLOG_FILE, "$conf_lastlog_location")
2647fi
2648
2649dnl utmp detection
2650AC_MSG_CHECKING([if your system defines UTMP_FILE])
2651AC_TRY_COMPILE([
2652#include <sys/types.h>
2653#include <utmp.h>
d7c0f3d5 2654#ifdef HAVE_PATHS_H
1d7b9b20 2655# include <paths.h>
2656#endif
2657 ],
2658 [ char *utmp = UTMP_FILE; ],
2659 [ AC_MSG_RESULT(yes) ],
2660 [ AC_MSG_RESULT(no)
2661 system_utmp_path=no ]
2662)
2663if test -z "$conf_utmp_location"; then
2664 if test x"$system_utmp_path" = x"no" ; then
2665 for f in /etc/utmp /usr/adm/utmp /var/run/utmp; do
2666 if test -f $f ; then
2667 conf_utmp_location=$f
2668 fi
2669 done
2670 if test -z "$conf_utmp_location"; then
2671 AC_DEFINE(DISABLE_UTMP)
2672 fi
2673 fi
2674fi
2675if test -n "$conf_utmp_location"; then
2676 AC_DEFINE_UNQUOTED(CONF_UTMP_FILE, "$conf_utmp_location")
2677fi
2678
2679dnl wtmp detection
2680AC_MSG_CHECKING([if your system defines WTMP_FILE])
2681AC_TRY_COMPILE([
2682#include <sys/types.h>
2683#include <utmp.h>
d7c0f3d5 2684#ifdef HAVE_PATHS_H
1d7b9b20 2685# include <paths.h>
2686#endif
2687 ],
2688 [ char *wtmp = WTMP_FILE; ],
2689 [ AC_MSG_RESULT(yes) ],
2690 [ AC_MSG_RESULT(no)
2691 system_wtmp_path=no ]
2692)
2693if test -z "$conf_wtmp_location"; then
2694 if test x"$system_wtmp_path" = x"no" ; then
2695 for f in /usr/adm/wtmp /var/log/wtmp; do
2696 if test -f $f ; then
2697 conf_wtmp_location=$f
2698 fi
2699 done
2700 if test -z "$conf_wtmp_location"; then
2701 AC_DEFINE(DISABLE_WTMP)
2702 fi
2703 fi
2704fi
2705if test -n "$conf_wtmp_location"; then
2706 AC_DEFINE_UNQUOTED(CONF_WTMP_FILE, "$conf_wtmp_location")
2707fi
2708
2709
2710dnl utmpx detection - I don't know any system so perverse as to require
2711dnl utmpx, but not define UTMPX_FILE (ditto wtmpx.) No doubt it's out
2712dnl there, though.
2713AC_MSG_CHECKING([if your system defines UTMPX_FILE])
2714AC_TRY_COMPILE([
2715#include <sys/types.h>
2716#include <utmp.h>
2717#ifdef HAVE_UTMPX_H
2718#include <utmpx.h>
2719#endif
d7c0f3d5 2720#ifdef HAVE_PATHS_H
1d7b9b20 2721# include <paths.h>
2722#endif
2723 ],
2724 [ char *utmpx = UTMPX_FILE; ],
2725 [ AC_MSG_RESULT(yes) ],
2726 [ AC_MSG_RESULT(no)
2727 system_utmpx_path=no ]
2728)
2729if test -z "$conf_utmpx_location"; then
2730 if test x"$system_utmpx_path" = x"no" ; then
2731 AC_DEFINE(DISABLE_UTMPX)
2732 fi
2733else
2734 AC_DEFINE_UNQUOTED(CONF_UTMPX_FILE, "$conf_utmpx_location")
2735fi
2736
2737dnl wtmpx detection
2738AC_MSG_CHECKING([if your system defines WTMPX_FILE])
2739AC_TRY_COMPILE([
2740#include <sys/types.h>
2741#include <utmp.h>
2742#ifdef HAVE_UTMPX_H
2743#include <utmpx.h>
2744#endif
d7c0f3d5 2745#ifdef HAVE_PATHS_H
1d7b9b20 2746# include <paths.h>
2747#endif
2748 ],
2749 [ char *wtmpx = WTMPX_FILE; ],
2750 [ AC_MSG_RESULT(yes) ],
2751 [ AC_MSG_RESULT(no)
2752 system_wtmpx_path=no ]
2753)
2754if test -z "$conf_wtmpx_location"; then
2755 if test x"$system_wtmpx_path" = x"no" ; then
2756 AC_DEFINE(DISABLE_WTMPX)
2757 fi
2758else
2759 AC_DEFINE_UNQUOTED(CONF_WTMPX_FILE, "$conf_wtmpx_location")
2760fi
2761
b7a87eea 2762
bd499f9e 2763if test ! -z "$blibpath" ; then
68ece370 2764 LDFLAGS="$LDFLAGS $blibflags$blibpath"
2765 AC_MSG_WARN([Please check and edit blibpath in LDFLAGS in Makefile])
bd499f9e 2766fi
2767
ddceb1c8 2768dnl remove pam and dl because they are in $LIBPAM
2769if test "$PAM_MSG" = yes ; then
98f2d9d5 2770 LIBS=`echo $LIBS | sed 's/-lpam //'`
2771fi
2772if test "$ac_cv_lib_pam_pam_set_item" = yes ; then
2773 LIBS=`echo $LIBS | sed 's/-ldl //'`
ddceb1c8 2774fi
2775
3c62e7eb 2776AC_EXEEXT
98a7c37b 2777AC_CONFIG_FILES([Makefile openbsd-compat/Makefile scard/Makefile ssh_prng_cmds])
2778AC_OUTPUT
d3083fbd 2779
cbd7492e 2780# Print summary of options
2781
cbd7492e 2782# Someone please show me a better way :)
2783A=`eval echo ${prefix}` ; A=`eval echo ${A}`
2784B=`eval echo ${bindir}` ; B=`eval echo ${B}`
2785C=`eval echo ${sbindir}` ; C=`eval echo ${C}`
2786D=`eval echo ${sysconfdir}` ; D=`eval echo ${D}`
f5665f6f 2787E=`eval echo ${libexecdir}/ssh-askpass` ; E=`eval echo ${E}`
e0c4d3ac 2788F=`eval echo ${mandir}/${mansubdir}X` ; F=`eval echo ${F}`
cbd7492e 2789G=`eval echo ${piddir}` ; G=`eval echo ${G}`
ecac8ee5 2790H=`eval echo ${PRIVSEP_PATH}` ; H=`eval echo ${H}`
2791I=`eval echo ${user_path}` ; I=`eval echo ${I}`
2792J=`eval echo ${superuser_path}` ; J=`eval echo ${J}`
cbd7492e 2793
2794echo ""
26de7942 2795echo "OpenSSH has been configured with the following options:"
ecac8ee5 2796echo " User binaries: $B"
2797echo " System binaries: $C"
2798echo " Configuration files: $D"
2799echo " Askpass program: $E"
2800echo " Manual pages: $F"
2801echo " PID file: $G"
2802echo " Privilege separation chroot path: $H"
95b99395 2803if test "x$external_path_file" = "x/etc/login.conf" ; then
2804echo " At runtime, sshd will use the path defined in $external_path_file"
2805echo " Make sure the path to scp is present, otherwise scp will not work"
8d184c09 2806else
ecac8ee5 2807echo " sshd default user PATH: $I"
89bbd457 2808 if test ! -z "$external_path_file"; then
95b99395 2809echo " (If PATH is set in $external_path_file it will be used instead. If"
2810echo " used, ensure the path to scp is present, otherwise scp will not work.)"
2811 fi
8d184c09 2812fi
06617857 2813if test ! -z "$superuser_path" ; then
ecac8ee5 2814echo " sshd superuser user PATH: $J"
2815fi
2816echo " Manpage format: $MANTYPE"
3e05e934 2817echo " PAM support: $PAM_MSG"
ecac8ee5 2818echo " KerberosV support: $KRB5_MSG"
2819echo " Smartcard support: $SCARD_MSG"
ecac8ee5 2820echo " S/KEY support: $SKEY_MSG"
2821echo " TCP Wrappers support: $TCPW_MSG"
2822echo " MD5 password support: $MD5_MSG"
3deb1408 2823echo " IP address in \$DISPLAY hack: $DISPLAY_HACK_MSG"
ecac8ee5 2824echo " Translate v4 in v6 hack: $IPV4_IN6_HACK_MSG"
2825echo " BSD Auth support: $BSD_AUTH_MSG"
2826echo " Random number source: $RAND_MSG"
f1b0ecc3 2827if test ! -z "$USE_RAND_HELPER" ; then
ecac8ee5 2828echo " ssh-rand-helper collects from: $RAND_HELPER_MSG"
af774732 2829fi
2830
cbd7492e 2831echo ""
2832
0c2fb82f 2833echo " Host: ${host}"
2834echo " Compiler: ${CC}"
2835echo " Compiler flags: ${CFLAGS}"
2836echo "Preprocessor flags: ${CPPFLAGS}"
2837echo " Linker flags: ${LDFLAGS}"
ddceb1c8 2838echo " Libraries: ${LIBWRAP} ${LIBPAM} ${LIBS}"
cbd7492e 2839
2840echo ""
2841
adeebd37 2842if test "x$PAM_MSG" = "xyes" ; then
f1b0ecc3 2843 echo "PAM is enabled. You may need to install a PAM control file "
2844 echo "for sshd, otherwise password authentication may fail. "
aff51935 2845 echo "Example PAM control files can be found in the contrib/ "
f1b0ecc3 2846 echo "subdirectory"
adeebd37 2847 echo ""
2848fi
2849
f1b0ecc3 2850if test ! -z "$RAND_HELPER_CMDHASH" ; then
2851 echo "WARNING: you are using the builtin random number collection "
2852 echo "service. Please read WARNING.RNG and request that your OS "
2853 echo "vendor includes kernel-based random number collection in "
2854 echo "future versions of your OS."
2c523de9 2855 echo ""
2856fi
af774732 2857
This page took 1.070215 seconds and 5 git commands to generate.