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