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