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