blob: f84054321bedeb8a8f6330c4f405b07ebdc55940 [file] [log] [blame]
Darren Tucker0f26b132008-02-28 23:16:04 +11001# $Id: configure.ac,v 1.392 2008/02/28 12:16:04 dtucker Exp $
Damien Miller4fefe242004-03-11 14:20:10 +11002#
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.
Damien Millere9cf3572001-02-09 12:55:35 +110016
Darren Tucker6a45f3d2005-06-03 19:33:10 +100017AC_INIT(OpenSSH, Portable, openssh-unix-dev@mindrot.org)
Darren Tucker0f26b132008-02-28 23:16:04 +110018AC_REVISION($Revision: 1.392 $)
Tim Rice13aae5e2001-10-21 17:53:58 -070019AC_CONFIG_SRCDIR([ssh.c])
Damien Miller7f6ea021999-10-28 13:25:17 +100020
21AC_CONFIG_HEADER(config.h)
Damien Miller856799b2000-03-15 21:18:10 +110022AC_PROG_CC
Damien Miller76112de1999-12-21 11:18:08 +110023AC_CANONICAL_HOST
Damien Miller4df5c762001-02-28 08:14:22 +110024AC_C_BIGENDIAN
Damien Miller7f6ea021999-10-28 13:25:17 +100025
Damien Millera22ba012000-03-02 23:09:20 +110026# Checks for programs.
Darren Tucker167bd9c2003-09-07 12:34:54 +100027AC_PROG_AWK
Damien Millerab18c411999-11-11 10:40:23 +110028AC_PROG_CPP
Damien Miller7f6ea021999-10-28 13:25:17 +100029AC_PROG_RANLIB
Damien Millerd8087f61999-11-25 12:31:26 +110030AC_PROG_INSTALL
Tim Ricefd80ddc2006-02-02 19:11:56 -080031AC_PROG_EGREP
Ben Lindstrom582d3982001-02-06 22:54:30 +000032AC_PATH_PROG(AR, ar)
Tim Rice5af9db92004-06-19 19:31:06 -070033AC_PATH_PROG(CAT, cat)
34AC_PATH_PROG(KILL, kill)
Tim Riceb8fbb8e2001-04-21 14:31:52 -070035AC_PATH_PROGS(PERL, perl5 perl)
Tim Riced0d7a8b2003-01-08 17:22:59 -080036AC_PATH_PROG(SED, sed)
Damien Millere79334a1999-12-29 10:03:37 +110037AC_SUBST(PERL)
Damien Miller8d1fd572000-05-17 21:34:07 +100038AC_PATH_PROG(ENT, ent)
39AC_SUBST(ENT)
Damien Miller4864e8f2001-02-08 10:07:08 +110040AC_PATH_PROG(TEST_MINUS_S_SH, bash)
41AC_PATH_PROG(TEST_MINUS_S_SH, ksh)
42AC_PATH_PROG(TEST_MINUS_S_SH, sh)
Tim Rice0502a472002-05-08 16:04:14 -070043AC_PATH_PROG(SH, sh)
Tim Ricef7ba8f62004-06-20 10:37:32 -070044AC_SUBST(TEST_SHELL,sh)
Damien Miller2e1b0821999-12-25 10:11:29 +110045
Tim Rice6f1f7582004-05-30 21:38:51 -070046dnl for buildpkg.sh
47AC_PATH_PROG(PATH_GROUPADD_PROG, groupadd, groupadd,
48 [/usr/sbin${PATH_SEPARATOR}/etc])
49AC_PATH_PROG(PATH_USERADD_PROG, useradd, useradd,
50 [/usr/sbin${PATH_SEPARATOR}/etc])
51AC_CHECK_PROG(MAKE_PACKAGE_SUPPORTED, pkgmk, yes, no)
Darren Tuckerfbea7642006-01-30 00:22:39 +110052if test -x /sbin/sh; then
53 AC_SUBST(STARTUP_SCRIPT_SHELL,/sbin/sh)
54else
55 AC_SUBST(STARTUP_SCRIPT_SHELL,/bin/sh)
56fi
Tim Rice6f1f7582004-05-30 21:38:51 -070057
Damien Millere8bb4502001-09-25 16:39:35 +100058# System features
59AC_SYS_LARGEFILE
60
Damien Miller3f62aba2000-11-29 11:56:35 +110061if test -z "$AR" ; then
62 AC_MSG_ERROR([*** 'ar' missing, please install or fix your \$PATH ***])
63fi
64
Damien Millerad833b32000-08-23 10:46:23 +100065# Use LOGIN_PROGRAM from environment if possible
66if test ! -z "$LOGIN_PROGRAM" ; then
Tim Rice7df8d392005-09-19 09:33:39 -070067 AC_DEFINE_UNQUOTED(LOGIN_PROGRAM_FALLBACK, "$LOGIN_PROGRAM",
68 [If your header files don't define LOGIN_PROGRAM,
69 then use this (detected) from environment and PATH])
Damien Millerad833b32000-08-23 10:46:23 +100070else
71 # Search for login
72 AC_PATH_PROG(LOGIN_PROGRAM_FALLBACK, login)
73 if test ! -z "$LOGIN_PROGRAM_FALLBACK" ; then
74 AC_DEFINE_UNQUOTED(LOGIN_PROGRAM_FALLBACK, "$LOGIN_PROGRAM_FALLBACK")
75 fi
76fi
77
Darren Tucker23bc8d02004-02-06 16:24:31 +110078AC_PATH_PROG(PATH_PASSWD_PROG, passwd)
79if test ! -z "$PATH_PASSWD_PROG" ; then
Tim Rice7df8d392005-09-19 09:33:39 -070080 AC_DEFINE_UNQUOTED(_PATH_PASSWD_PROG, "$PATH_PASSWD_PROG",
81 [Full path of your "passwd" program])
Darren Tucker23bc8d02004-02-06 16:24:31 +110082fi
83
Damien Miller166bd442000-03-16 10:48:25 +110084if test -z "$LD" ; then
85 LD=$CC
86fi
87AC_SUBST(LD)
Tim Riceeae17cc2005-03-17 16:52:20 -080088
Damien Miller166bd442000-03-16 10:48:25 +110089AC_C_INLINE
Darren Tucker67b37032005-06-03 17:58:31 +100090
91AC_CHECK_DECL(LLONG_MAX, have_llong_max=1, , [#include <limits.h>])
92
Damien Millera8e06ce2003-11-21 23:48:55 +110093if test "$GCC" = "yes" || test "$GCC" = "egcs"; then
Darren Tuckerdd352b62005-08-02 17:21:29 +100094 CFLAGS="$CFLAGS -Wall -Wpointer-arith -Wuninitialized"
Darren Tucker3f9545e2005-11-12 15:20:52 +110095 GCC_VER=`$CC -v 2>&1 | $AWK '/gcc version /{print $3}'`
Tim Rice3db1e3f2005-08-23 17:11:26 -070096 case $GCC_VER in
Darren Tucker391de5c2007-04-29 14:49:21 +100097 1.*) no_attrib_nonnull=1 ;;
98 2.8* | 2.9*)
99 CFLAGS="$CFLAGS -Wsign-compare"
100 no_attrib_nonnull=1
101 ;;
102 2.*) no_attrib_nonnull=1 ;;
Darren Tuckerb0288092005-11-10 14:46:48 +1100103 3.*) CFLAGS="$CFLAGS -Wsign-compare" ;;
Darren Tuckerf0324352005-11-10 21:30:36 +1100104 4.*) CFLAGS="$CFLAGS -Wsign-compare -Wno-pointer-sign" ;;
105 *) ;;
Tim Rice3db1e3f2005-08-23 17:11:26 -0700106 esac
Damien Millerde3cb0a2005-05-26 20:48:25 +1000107
Darren Tuckerd4827ab2008-01-02 18:08:45 +1100108 AC_MSG_CHECKING(if $CC understands -fstack-protector-all)
Darren Tucker319b3d92007-12-02 21:02:22 +1100109 saved_CFLAGS="$CFLAGS"
Darren Tuckere1c4c542008-02-28 15:01:13 +1100110 saved_LDFLAGS="$LDFLAGS"
Darren Tucker319b3d92007-12-02 21:02:22 +1100111 CFLAGS="$CFLAGS -fstack-protector-all"
Darren Tuckere1c4c542008-02-28 15:01:13 +1100112 LDFLAGS="$LDFLAGS -fstack-protector-all"
113 AC_TRY_LINK([], [ int main(void){return 0;} ],
Darren Tucker319b3d92007-12-02 21:02:22 +1100114 [ AC_MSG_RESULT(yes) ],
115 [ AC_MSG_RESULT(no)
Darren Tuckere1c4c542008-02-28 15:01:13 +1100116 CFLAGS="$saved_CFLAGS"
117 LDFLAGS="$saved_LDFLAGS"
118 ]
Darren Tucker319b3d92007-12-02 21:02:22 +1100119 )
120
Darren Tucker67b37032005-06-03 17:58:31 +1000121 if test -z "$have_llong_max"; then
122 # retry LLONG_MAX with -std=gnu99, needed on some Linuxes
123 unset ac_cv_have_decl_LLONG_MAX
124 saved_CFLAGS="$CFLAGS"
125 CFLAGS="$CFLAGS -std=gnu99"
126 AC_CHECK_DECL(LLONG_MAX,
127 [have_llong_max=1],
128 [CFLAGS="$saved_CFLAGS"],
129 [#include <limits.h>]
130 )
131 fi
Damien Miller166bd442000-03-16 10:48:25 +1100132fi
133
Darren Tucker391de5c2007-04-29 14:49:21 +1000134if test "x$no_attrib_nonnull" != "x1" ; then
135 AC_DEFINE(HAVE_ATTRIBUTE__NONNULL__, 1, [Have attribute nonnull])
136fi
137
Tim Rice88368a32003-12-08 12:35:59 -0800138AC_ARG_WITH(rpath,
139 [ --without-rpath Disable auto-added -R linker paths],
140 [
Tim Riceeae17cc2005-03-17 16:52:20 -0800141 if test "x$withval" = "xno" ; then
Tim Rice88368a32003-12-08 12:35:59 -0800142 need_dash_r=""
143 fi
144 if test "x$withval" = "xyes" ; then
145 need_dash_r=1
146 fi
147 ]
148)
149
Tim Rice1cfab232006-10-03 09:34:35 -0700150# Allow user to specify flags
151AC_ARG_WITH(cflags,
152 [ --with-cflags Specify additional flags to pass to compiler],
153 [
154 if test -n "$withval" && test "x$withval" != "xno" && \
155 test "x${withval}" != "xyes"; then
156 CFLAGS="$CFLAGS $withval"
157 fi
158 ]
159)
160AC_ARG_WITH(cppflags,
161 [ --with-cppflags Specify additional flags to pass to preprocessor] ,
162 [
163 if test -n "$withval" && test "x$withval" != "xno" && \
164 test "x${withval}" != "xyes"; then
165 CPPFLAGS="$CPPFLAGS $withval"
166 fi
167 ]
168)
169AC_ARG_WITH(ldflags,
170 [ --with-ldflags Specify additional flags to pass to linker],
171 [
172 if test -n "$withval" && test "x$withval" != "xno" && \
173 test "x${withval}" != "xyes"; then
174 LDFLAGS="$LDFLAGS $withval"
175 fi
176 ]
177)
178AC_ARG_WITH(libs,
179 [ --with-libs Specify additional libraries to link with],
180 [
181 if test -n "$withval" && test "x$withval" != "xno" && \
182 test "x${withval}" != "xyes"; then
183 LIBS="$LIBS $withval"
184 fi
185 ]
186)
187AC_ARG_WITH(Werror,
188 [ --with-Werror Build main code with -Werror],
189 [
190 if test -n "$withval" && test "x$withval" != "xno"; then
191 werror_flags="-Werror"
192 if test "x${withval}" != "xyes"; then
193 werror_flags="$withval"
194 fi
195 fi
196 ]
197)
198
199AC_CHECK_HEADERS( \
200 bstring.h \
201 crypt.h \
202 crypto/sha2.h \
203 dirent.h \
204 endian.h \
205 features.h \
206 fcntl.h \
207 floatingpoint.h \
208 getopt.h \
209 glob.h \
210 ia.h \
211 iaf.h \
212 limits.h \
213 login.h \
214 maillock.h \
215 ndir.h \
216 net/if_tun.h \
217 netdb.h \
218 netgroup.h \
219 pam/pam_appl.h \
220 paths.h \
Darren Tuckerfebf0f52007-06-25 22:15:12 +1000221 poll.h \
Tim Rice1cfab232006-10-03 09:34:35 -0700222 pty.h \
223 readpassphrase.h \
224 rpc/types.h \
225 security/pam_appl.h \
226 sha2.h \
227 shadow.h \
228 stddef.h \
229 stdint.h \
230 string.h \
231 strings.h \
232 sys/audit.h \
233 sys/bitypes.h \
234 sys/bsdtty.h \
235 sys/cdefs.h \
236 sys/dir.h \
237 sys/mman.h \
238 sys/ndir.h \
Darren Tucker7c92a652007-09-27 07:00:09 +1000239 sys/poll.h \
Tim Rice1cfab232006-10-03 09:34:35 -0700240 sys/prctl.h \
241 sys/pstat.h \
242 sys/select.h \
243 sys/stat.h \
244 sys/stream.h \
245 sys/stropts.h \
246 sys/strtio.h \
247 sys/sysmacros.h \
248 sys/time.h \
249 sys/timers.h \
250 sys/un.h \
251 time.h \
252 tmpdir.h \
253 ttyent.h \
Tim Riceaa8954f2007-05-09 15:57:43 -0700254 ucred.h \
Tim Rice1cfab232006-10-03 09:34:35 -0700255 unistd.h \
256 usersec.h \
257 util.h \
258 utime.h \
259 utmp.h \
260 utmpx.h \
261 vis.h \
262)
263
264# lastlog.h requires sys/time.h to be included first on Solaris
265AC_CHECK_HEADERS(lastlog.h, [], [], [
266#ifdef HAVE_SYS_TIME_H
267# include <sys/time.h>
268#endif
269])
270
271# sys/ptms.h requires sys/stream.h to be included first on Solaris
272AC_CHECK_HEADERS(sys/ptms.h, [], [], [
273#ifdef HAVE_SYS_STREAM_H
274# include <sys/stream.h>
275#endif
276])
277
278# login_cap.h requires sys/types.h on NetBSD
279AC_CHECK_HEADERS(login_cap.h, [], [], [
280#include <sys/types.h>
281])
282
Damien Miller1b06dc32006-08-31 03:24:41 +1000283# Messages for features tested for in target-specific section
284SIA_MSG="no"
285SPC_MSG="no"
286
Damien Millera22ba012000-03-02 23:09:20 +1100287# Check for some target-specific stuff
Damien Miller76112de1999-12-21 11:18:08 +1100288case "$host" in
Damien Miller75b1d102000-01-07 14:01:41 +1100289*-*-aix*)
Darren Tucker9216c372006-09-18 23:17:40 +1000290 # Some versions of VAC won't allow macro redefinitions at
291 # -qlanglevel=ansi, and autoconf 2.60 sometimes insists on using that
292 # particularly with older versions of vac or xlc.
293 # It also throws errors about null macro argments, but these are
294 # not fatal.
295 AC_MSG_CHECKING(if compiler allows macro redefinitions)
296 AC_COMPILE_IFELSE(
297 [AC_LANG_SOURCE([[
298#define testmacro foo
299#define testmacro bar
300int main(void) { exit(0); }
301 ]])],
302 [ AC_MSG_RESULT(yes) ],
303 [ AC_MSG_RESULT(no)
304 CC="`echo $CC | sed 's/-qlanglvl\=ansi//g'`"
305 LD="`echo $LD | sed 's/-qlanglvl\=ansi//g'`"
306 CFLAGS="`echo $CFLAGS | sed 's/-qlanglvl\=ansi//g'`"
307 CPPFLAGS="`echo $CPPFLAGS | sed 's/-qlanglvl\=ansi//g'`"
308 ]
309 )
310
Damien Millera8e06ce2003-11-21 23:48:55 +1100311 AC_MSG_CHECKING([how to specify blibpath for linker ($LD)])
Damien Millereab4bae2003-04-29 23:22:40 +1000312 if (test -z "$blibpath"); then
Tim Ricefcb62202004-01-23 18:35:16 -0800313 blibpath="/usr/lib:/lib"
Damien Miller29ea30d2000-03-17 10:54:15 +1100314 fi
Damien Millereab4bae2003-04-29 23:22:40 +1000315 saved_LDFLAGS="$LDFLAGS"
Darren Tuckerbdc12122006-07-06 11:56:25 +1000316 if test "$GCC" = "yes"; then
317 flags="-Wl,-blibpath: -Wl,-rpath, -blibpath:"
318 else
319 flags="-blibpath: -Wl,-blibpath: -Wl,-rpath,"
320 fi
321 for tryflags in $flags ;do
Damien Millereab4bae2003-04-29 23:22:40 +1000322 if (test -z "$blibflags"); then
323 LDFLAGS="$saved_LDFLAGS $tryflags$blibpath"
324 AC_TRY_LINK([], [], [blibflags=$tryflags])
325 fi
326 done
327 if (test -z "$blibflags"); then
328 AC_MSG_RESULT(not found)
329 AC_MSG_ERROR([*** must be able to specify blibpath on AIX - check config.log])
330 else
331 AC_MSG_RESULT($blibflags)
332 fi
333 LDFLAGS="$saved_LDFLAGS"
Darren Tucker5c6a91a2003-07-14 16:21:44 +1000334 dnl Check for authenticate. Might be in libs.a on older AIXes
Tim Rice7df8d392005-09-19 09:33:39 -0700335 AC_CHECK_FUNC(authenticate, [AC_DEFINE(WITH_AIXAUTHENTICATE, 1,
336 [Define if you want to enable AIX4's authenticate function])],
Tim Ricee958ed32002-07-05 07:12:33 -0700337 [AC_CHECK_LIB(s,authenticate,
Darren Tucker5c6a91a2003-07-14 16:21:44 +1000338 [ AC_DEFINE(WITH_AIXAUTHENTICATE)
Tim Ricee958ed32002-07-05 07:12:33 -0700339 LIBS="$LIBS -ls"
340 ])
341 ])
Darren Tucker3c774c52005-02-16 22:49:31 +1100342 dnl Check for various auth function declarations in headers.
Darren Tucker04cfbe02005-02-20 23:27:11 +1100343 AC_CHECK_DECLS([authenticate, loginrestrictions, loginsuccess,
Darren Tuckere66519d2005-03-21 22:46:34 +1100344 passwdexpired, setauthdb], , , [#include <usersec.h>])
Darren Tucker5c6a91a2003-07-14 16:21:44 +1000345 dnl Check if loginfailed is declared and takes 4 arguments (AIX >= 5.2)
Darren Tucker3c774c52005-02-16 22:49:31 +1100346 AC_CHECK_DECLS(loginfailed,
Darren Tucker5c6a91a2003-07-14 16:21:44 +1000347 [AC_MSG_CHECKING(if loginfailed takes 4 arguments)
348 AC_TRY_COMPILE(
Darren Tuckera0c0b632003-07-08 20:52:12 +1000349 [#include <usersec.h>],
Darren Tucker5c6a91a2003-07-14 16:21:44 +1000350 [(void)loginfailed("user","host","tty",0);],
351 [AC_MSG_RESULT(yes)
Tim Rice7df8d392005-09-19 09:33:39 -0700352 AC_DEFINE(AIX_LOGINFAILED_4ARG, 1,
353 [Define if your AIX loginfailed() function
354 takes 4 arguments (AIX >= 5.2)])],
Darren Tuckera0c0b632003-07-08 20:52:12 +1000355 [AC_MSG_RESULT(no)]
Darren Tucker5c6a91a2003-07-14 16:21:44 +1000356 )],
357 [],
358 [#include <usersec.h>]
359 )
Darren Tucker0f26b132008-02-28 23:16:04 +1100360 AC_CHECK_FUNCS(getgrset setauthdb)
Darren Tucker3083bc22006-08-17 19:35:49 +1000361 AC_CHECK_DECL(F_CLOSEM,
Darren Tuckerd018b2e2006-08-18 18:51:20 +1000362 AC_DEFINE(HAVE_FCNTL_CLOSEM, 1, [Use F_CLOSEM fcntl for closefrom]),
Darren Tucker3083bc22006-08-17 19:35:49 +1000363 [],
364 [ #include <limits.h>
365 #include <fcntl.h> ]
366 )
Darren Tucker691d5232005-02-15 21:45:57 +1100367 check_for_aix_broken_getaddrinfo=1
Tim Rice7df8d392005-09-19 09:33:39 -0700368 AC_DEFINE(BROKEN_REALPATH, 1, [Define if you have a broken realpath.])
369 AC_DEFINE(SETEUID_BREAKS_SETUID, 1,
370 [Define if your platform breaks doing a seteuid before a setuid])
371 AC_DEFINE(BROKEN_SETREUID, 1, [Define if your setreuid() is broken])
372 AC_DEFINE(BROKEN_SETREGID, 1, [Define if your setregid() is broken])
andre60f3c982000-06-03 16:18:19 +0000373 dnl AIX handles lastlog as part of its login message
Tim Rice7df8d392005-09-19 09:33:39 -0700374 AC_DEFINE(DISABLE_LASTLOG, 1, [Define if you don't want to use lastlog])
375 AC_DEFINE(LOGIN_NEEDS_UTMPX, 1,
376 [Some systems need a utmpx entry for /bin/login to work])
377 AC_DEFINE(SPT_TYPE,SPT_REUSEARGV,
378 [Define to a Set Process Title type if your system is
379 supported by bsd-setproctitle.c])
Darren Tucker91d25a02005-11-26 22:24:09 +1100380 AC_DEFINE(SSHPAM_CHAUTHTOK_NEEDS_RUID, 1,
381 [AIX 5.2 and 5.3 (and presumably newer) require this])
Darren Tucker9afe1152006-06-23 21:24:12 +1000382 AC_DEFINE(PTY_ZEROREAD, 1, [read(1) can return 0 for a non-closed fd])
Damien Miller75b1d102000-01-07 14:01:41 +1100383 ;;
Damien Millerbac2d8a2000-09-05 16:13:06 +1100384*-*-cygwin*)
Damien Millerc8936ac2003-02-11 10:04:03 +1100385 check_for_libcrypt_later=1
Darren Tucker573e3872007-03-02 17:50:03 +1100386 LIBS="$LIBS /usr/lib/textreadmode.o"
Tim Rice7df8d392005-09-19 09:33:39 -0700387 AC_DEFINE(HAVE_CYGWIN, 1, [Define if you are on Cygwin])
388 AC_DEFINE(USE_PIPES, 1, [Use PIPES instead of a socketpair()])
389 AC_DEFINE(DISABLE_SHADOW, 1,
390 [Define if you want to disable shadow passwords])
391 AC_DEFINE(IP_TOS_IS_BROKEN, 1,
392 [Define if your system choked on IP TOS setting])
393 AC_DEFINE(NO_X11_UNIX_SOCKETS, 1,
394 [Define if X11 doesn't support AF_UNIX sockets on that system])
395 AC_DEFINE(NO_IPPORT_RESERVED_CONCEPT, 1,
396 [Define if the concept of ports only accessible to
397 superusers isn't known])
398 AC_DEFINE(DISABLE_FD_PASSING, 1,
399 [Define if your platform needs to skip post auth
400 file descriptor passing])
Damien Millerbac2d8a2000-09-05 16:13:06 +1100401 ;;
Ben Lindstrom58055132001-02-15 18:34:29 +0000402*-*-dgux*)
403 AC_DEFINE(IP_TOS_IS_BROKEN)
Darren Tucker454da0b2003-12-18 12:52:19 +1100404 AC_DEFINE(SETEUID_BREAKS_SETUID)
405 AC_DEFINE(BROKEN_SETREUID)
406 AC_DEFINE(BROKEN_SETREGID)
Ben Lindstrom58055132001-02-15 18:34:29 +0000407 ;;
Ben Lindstromfed7bb42001-07-15 18:30:42 +0000408*-*-darwin*)
Damien Millerfc93d4b2002-09-04 23:26:29 +1000409 AC_MSG_CHECKING(if we have working getaddrinfo)
410 AC_TRY_RUN([#include <mach-o/dyld.h>
411main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
412 exit(0);
413 else
414 exit(1);
415}], [AC_MSG_RESULT(working)],
416 [AC_MSG_RESULT(buggy)
Tim Rice7df8d392005-09-19 09:33:39 -0700417 AC_DEFINE(BROKEN_GETADDRINFO, 1, [getaddrinfo is broken (if present)])],
Tim Rice480ef8d2003-09-21 21:38:11 -0700418 [AC_MSG_RESULT(assume it is working)])
Darren Tucker20379a32003-09-22 11:07:40 +1000419 AC_DEFINE(SETEUID_BREAKS_SETUID)
420 AC_DEFINE(BROKEN_SETREUID)
421 AC_DEFINE(BROKEN_SETREGID)
Darren Tucker528d6fa2007-12-31 21:29:26 +1100422 AC_DEFINE(BROKEN_GLOB, 1, [OS X glob does not do what we expect])
Tim Rice7df8d392005-09-19 09:33:39 -0700423 AC_DEFINE_UNQUOTED(BIND_8_COMPAT, 1,
424 [Define if your resolver libs need this for getrrsetbyname])
Darren Tucker3eb48342006-06-23 21:05:12 +1000425 AC_DEFINE(SSH_TUN_FREEBSD, 1, [Open tunnel devices the FreeBSD way])
426 AC_DEFINE(SSH_TUN_COMPAT_AF, 1,
427 [Use tunnel device compatibility to OpenBSD])
428 AC_DEFINE(SSH_TUN_PREPEND_AF, 1,
429 [Prepend the address family to IP tunnel traffic])
Darren Tuckeracada072008-02-25 21:05:04 +1100430 m4_pattern_allow(AU_IPv)
431 AC_CHECK_DECL(AU_IPv4, [],
432 AC_DEFINE(AU_IPv4, 0, [System only supports IPv4 audit records])
433 [#include <bsm/audit.h>]
434 )
Ben Lindstromfed7bb42001-07-15 18:30:42 +0000435 ;;
Darren Tucker57b29202006-09-10 20:25:51 +1000436*-*-dragonfly*)
437 SSHDLIBS="$SSHDLIBS -lcrypt"
438 ;;
Darren Tuckerfd333282005-05-28 18:31:42 +1000439*-*-hpux*)
440 # first we define all of the options common to all HP-UX releases
Kevin Steves315f8b72001-06-28 00:24:41 +0000441 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
Damien Miller9a947342000-08-30 10:03:33 +1100442 IPADDR_IN_DISPLAY=yes
Damien Millerb0785672000-08-23 09:10:39 +1000443 AC_DEFINE(USE_PIPES)
Tim Rice7df8d392005-09-19 09:33:39 -0700444 AC_DEFINE(LOGIN_NO_ENDOPT, 1,
445 [Define if your login program cannot handle end of options ("--")])
Kevin Steves5feaaef2002-04-23 20:45:55 +0000446 AC_DEFINE(LOGIN_NEEDS_UTMPX)
Tim Rice7df8d392005-09-19 09:33:39 -0700447 AC_DEFINE(LOCKED_PASSWD_STRING, "*",
448 [String used in /etc/passwd to denote locked account])
Damien Miller35276252003-06-03 10:14:28 +1000449 AC_DEFINE(SPT_TYPE,SPT_PSTAT)
Darren Tucker1e6616b2005-10-08 12:07:01 +1000450 MAIL="/var/mail/username"
Tim Ricef028f1e2002-07-19 12:41:10 -0700451 LIBS="$LIBS -lsec"
Darren Tuckerfd333282005-05-28 18:31:42 +1000452 AC_CHECK_LIB(xnet, t_error, ,
453 AC_MSG_ERROR([*** -lxnet needed on HP-UX - check config.log ***]))
454
455 # next, we define all of the options specific to major releases
456 case "$host" in
457 *-*-hpux10*)
458 if test -z "$GCC"; then
459 CFLAGS="$CFLAGS -Ae"
460 fi
461 ;;
462 *-*-hpux11*)
Tim Rice7df8d392005-09-19 09:33:39 -0700463 AC_DEFINE(PAM_SUN_CODEBASE, 1,
464 [Define if you are using Solaris-derived PAM which
465 passes pam_messages to the conversation function
466 with an extra level of indirection])
467 AC_DEFINE(DISABLE_UTMP, 1,
468 [Define if you don't want to use utmp])
Darren Tuckerfd333282005-05-28 18:31:42 +1000469 AC_DEFINE(USE_BTMP, 1, [Use btmp to log bad logins])
470 check_for_hpux_broken_getaddrinfo=1
471 check_for_conflicting_getspnam=1
472 ;;
473 esac
474
475 # lastly, we define options specific to minor releases
476 case "$host" in
477 *-*-hpux10.26)
Tim Rice7df8d392005-09-19 09:33:39 -0700478 AC_DEFINE(HAVE_SECUREWARE, 1,
479 [Define if you have SecureWare-based
480 protected password database])
Darren Tuckerfd333282005-05-28 18:31:42 +1000481 disable_ptmx_check=yes
482 LIBS="$LIBS -lsecpw"
483 ;;
484 esac
Damien Miller1bead332000-04-30 00:47:29 +1000485 ;;
Damien Millerbeb4ba51999-12-28 15:09:35 +1100486*-*-irix5*)
Damien Miller190d5a82000-09-30 09:43:19 +1100487 PATH="$PATH:/usr/etc"
Tim Rice7df8d392005-09-19 09:33:39 -0700488 AC_DEFINE(BROKEN_INET_NTOA, 1,
489 [Define if you system's inet_ntoa is busted
490 (e.g. Irix gcc issue)])
Darren Tuckerbeaf6792003-09-24 20:03:48 +1000491 AC_DEFINE(SETEUID_BREAKS_SETUID)
492 AC_DEFINE(BROKEN_SETREUID)
493 AC_DEFINE(BROKEN_SETREGID)
Tim Rice7df8d392005-09-19 09:33:39 -0700494 AC_DEFINE(WITH_ABBREV_NO_TTY, 1,
495 [Define if you shouldn't strip 'tty' from your
496 ttyname in [uw]tmp])
Darren Tuckere41bba52003-08-25 11:51:19 +1000497 AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
Damien Miller1808f382000-01-06 12:03:12 +1100498 ;;
499*-*-irix6*)
Damien Miller190d5a82000-09-30 09:43:19 +1100500 PATH="$PATH:/usr/etc"
Tim Rice7df8d392005-09-19 09:33:39 -0700501 AC_DEFINE(WITH_IRIX_ARRAY, 1,
502 [Define if you have/want arrays
503 (cluster-wide session managment, not C arrays)])
504 AC_DEFINE(WITH_IRIX_PROJECT, 1,
505 [Define if you want IRIX project management])
506 AC_DEFINE(WITH_IRIX_AUDIT, 1,
507 [Define if you want IRIX audit trails])
508 AC_CHECK_FUNC(jlimit_startjob, [AC_DEFINE(WITH_IRIX_JOBS, 1,
509 [Define if you want IRIX kernel jobs])])
Damien Miller11fa2cc2000-08-16 10:35:58 +1000510 AC_DEFINE(BROKEN_INET_NTOA)
Darren Tuckerbe79af12003-09-22 11:58:21 +1000511 AC_DEFINE(SETEUID_BREAKS_SETUID)
512 AC_DEFINE(BROKEN_SETREUID)
513 AC_DEFINE(BROKEN_SETREGID)
Tim Rice7df8d392005-09-19 09:33:39 -0700514 AC_DEFINE(BROKEN_UPDWTMPX, 1, [updwtmpx is broken (if present)])
Damien Millerf1b9d112002-04-23 23:09:19 +1000515 AC_DEFINE(WITH_ABBREV_NO_TTY)
Darren Tuckere41bba52003-08-25 11:51:19 +1000516 AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
Damien Millerbeb4ba51999-12-28 15:09:35 +1100517 ;;
Damien Millerb29ea912000-01-15 14:12:03 +1100518*-*-linux*)
519 no_dev_ptmx=1
Damien Millera64b57a2001-01-17 10:44:13 +1100520 check_for_libcrypt_later=1
Darren Tucker70a3d552003-08-21 17:58:29 +1000521 check_for_openpty_ctty_bug=1
Tim Rice7df8d392005-09-19 09:33:39 -0700522 AC_DEFINE(DONT_TRY_OTHER_AF, 1, [Workaround more Linux IPv6 quirks])
523 AC_DEFINE(PAM_TTY_KLUDGE, 1,
524 [Work around problematic Linux PAM modules handling of PAM_TTY])
525 AC_DEFINE(LOCKED_PASSWD_PREFIX, "!",
526 [String used in /etc/passwd to denote locked account])
Damien Miller35276252003-06-03 10:14:28 +1000527 AC_DEFINE(SPT_TYPE,SPT_REUSEARGV)
Tim Rice7df8d392005-09-19 09:33:39 -0700528 AC_DEFINE(LINK_OPNOTSUPP_ERRNO, EPERM,
529 [Define to whatever link() returns for "not supported"
530 if it doesn't return EOPNOTSUPP.])
Darren Tucker2fba9932005-02-02 23:30:24 +1100531 AC_DEFINE(_PATH_BTMP, "/var/log/btmp", [log for bad login attempts])
Tim Rice7df8d392005-09-19 09:33:39 -0700532 AC_DEFINE(USE_BTMP)
Damien Miller7bcb0892000-03-11 20:45:40 +1100533 inet6_default_4in6=yes
Darren Tucker3c016542003-05-02 20:48:21 +1000534 case `uname -r` in
Darren Tuckerc437cda2003-05-10 17:05:46 +1000535 1.*|2.0.*)
Tim Rice7df8d392005-09-19 09:33:39 -0700536 AC_DEFINE(BROKEN_CMSG_TYPE, 1,
537 [Define if cmsg_type is not passed correctly])
Darren Tucker3c016542003-05-02 20:48:21 +1000538 ;;
Darren Tucker3c016542003-05-02 20:48:21 +1000539 esac
Damien Miller89e03ba2005-12-31 16:42:03 +1100540 # tun(4) forwarding compat code
Damien Millerc4bcc912005-12-31 17:05:58 +1100541 AC_CHECK_HEADERS(linux/if_tun.h)
Damien Millerbd4e4102006-01-01 21:03:30 +1100542 if test "x$ac_cv_header_linux_if_tun_h" = "xyes" ; then
Damien Miller89e03ba2005-12-31 16:42:03 +1100543 AC_DEFINE(SSH_TUN_LINUX, 1,
544 [Open tunnel devices the Linux tun/tap way])
545 AC_DEFINE(SSH_TUN_COMPAT_AF, 1,
546 [Use tunnel device compatibility to OpenBSD])
547 AC_DEFINE(SSH_TUN_PREPEND_AF, 1,
548 [Prepend the address family to IP tunnel traffic])
549 fi
Damien Millerb29ea912000-01-15 14:12:03 +1100550 ;;
Ben Lindstromb5628642000-10-18 00:02:25 +0000551mips-sony-bsd|mips-sony-newsos4)
Darren Tucker988b3fd2006-02-08 22:11:27 +1100552 AC_DEFINE(NEED_SETPGRP, 1, [Need setpgrp to acquire controlling tty])
Ben Lindstromb5628642000-10-18 00:02:25 +0000553 SONY=1
Ben Lindstromb5628642000-10-18 00:02:25 +0000554 ;;
Damien Milleree1c0b32000-01-21 00:18:15 +1100555*-*-netbsd*)
Damien Millerfc93d4b2002-09-04 23:26:29 +1000556 check_for_libcrypt_before=1
Tim Riceeae17cc2005-03-17 16:52:20 -0800557 if test "x$withval" != "xno" ; then
Tim Rice88368a32003-12-08 12:35:59 -0800558 need_dash_r=1
559 fi
Damien Miller2dcddbf2006-01-01 19:47:05 +1100560 AC_DEFINE(SSH_TUN_FREEBSD, 1, [Open tunnel devices the FreeBSD way])
561 AC_CHECK_HEADER([net/if_tap.h], ,
562 AC_DEFINE(SSH_TUN_NO_L2, 1, [No layer 2 tunnel support]))
563 AC_DEFINE(SSH_TUN_PREPEND_AF, 1,
564 [Prepend the address family to IP tunnel traffic])
Damien Milleree1c0b32000-01-21 00:18:15 +1100565 ;;
Damien Millerfbd884a2001-02-27 08:39:07 +1100566*-*-freebsd*)
567 check_for_libcrypt_later=1
Darren Tuckerac7e6302005-10-06 01:39:58 +1000568 AC_DEFINE(LOCKED_PASSWD_PREFIX, "*LOCKED*", [Account locked with pw(1)])
Damien Miller2dcddbf2006-01-01 19:47:05 +1100569 AC_DEFINE(SSH_TUN_FREEBSD, 1, [Open tunnel devices the FreeBSD way])
570 AC_CHECK_HEADER([net/if_tap.h], ,
571 AC_DEFINE(SSH_TUN_NO_L2, 1, [No layer 2 tunnel support]))
Damien Millerfbd884a2001-02-27 08:39:07 +1100572 ;;
Darren Tuckered9eb022003-09-22 11:18:47 +1000573*-*-bsdi*)
574 AC_DEFINE(SETEUID_BREAKS_SETUID)
575 AC_DEFINE(BROKEN_SETREUID)
576 AC_DEFINE(BROKEN_SETREGID)
577 ;;
Damien Miller0f91b4e2000-06-18 15:43:25 +1000578*-next-*)
Damien Miller0f91b4e2000-06-18 15:43:25 +1000579 conf_lastlog_location="/usr/adm/lastlog"
Damien Millere5192fa2000-08-29 14:30:37 +1100580 conf_utmp_location=/etc/utmp
581 conf_wtmp_location=/usr/adm/wtmp
582 MAIL=/usr/spool/mail
Tim Rice7df8d392005-09-19 09:33:39 -0700583 AC_DEFINE(HAVE_NEXT, 1, [Define if you are on NeXT])
Ben Lindstromb4df15d2000-10-15 00:17:36 +0000584 AC_DEFINE(BROKEN_REALPATH)
Ben Lindstrom76020ba2000-10-25 16:55:00 +0000585 AC_DEFINE(USE_PIPES)
Tim Rice7df8d392005-09-19 09:33:39 -0700586 AC_DEFINE(BROKEN_SAVED_UIDS, 1, [Needed for NeXT])
Damien Miller0f91b4e2000-06-18 15:43:25 +1000587 ;;
Darren Tucker4a422572005-07-14 17:22:11 +1000588*-*-openbsd*)
589 AC_DEFINE(HAVE_ATTRIBUTE__SENTINEL__, 1, [OpenBSD's gcc has sentinel])
Darren Tucker9ac1a652005-10-09 11:40:03 +1000590 AC_DEFINE(HAVE_ATTRIBUTE__BOUNDED__, 1, [OpenBSD's gcc has bounded])
Damien Miller2dcddbf2006-01-01 19:47:05 +1100591 AC_DEFINE(SSH_TUN_OPENBSD, 1, [Open tunnel devices the OpenBSD way])
Damien Millerbb598142006-08-19 08:38:23 +1000592 AC_DEFINE(SYSLOG_R_SAFE_IN_SIGHAND, 1,
593 [syslog_r function is safe to use in in a signal handler])
Darren Tucker4a422572005-07-14 17:22:11 +1000594 ;;
Damien Miller75b1d102000-01-07 14:01:41 +1100595*-*-solaris*)
Tim Riceeae17cc2005-03-17 16:52:20 -0800596 if test "x$withval" != "xno" ; then
Tim Ricead4a1882004-02-29 15:53:37 -0800597 need_dash_r=1
598 fi
Damien Miller82cf0ce2000-12-20 13:34:48 +1100599 AC_DEFINE(PAM_SUN_CODEBASE)
Ben Lindstrom97c677d2001-05-08 20:33:05 +0000600 AC_DEFINE(LOGIN_NEEDS_UTMPX)
Tim Rice7df8d392005-09-19 09:33:39 -0700601 AC_DEFINE(LOGIN_NEEDS_TERM, 1,
602 [Some versions of /bin/login need the TERM supplied
603 on the commandline])
Ben Lindstrom95276712001-10-23 17:14:00 +0000604 AC_DEFINE(PAM_TTY_KLUDGE)
Tim Rice7df8d392005-09-19 09:33:39 -0700605 AC_DEFINE(SSHPAM_CHAUTHTOK_NEEDS_RUID, 1,
606 [Define if pam_chauthtok wants real uid set
607 to the unpriv'ed user])
Darren Tuckere41bba52003-08-25 11:51:19 +1000608 AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
Darren Tuckerc437cda2003-05-10 17:05:46 +1000609 # Pushing STREAMS modules will cause sshd to acquire a controlling tty.
Tim Rice7df8d392005-09-19 09:33:39 -0700610 AC_DEFINE(SSHD_ACQUIRES_CTTY, 1,
611 [Define if sshd somehow reacquires a controlling TTY
612 after setsid()])
Darren Tucker0249f932006-06-24 12:10:07 +1000613 AC_DEFINE(PASSWD_NEEDS_USERNAME, 1, [must supply username to passwd
614 in case the name is longer than 8 chars])
Darren Tuckere1a790d2003-09-16 11:52:19 +1000615 external_path_file=/etc/default/login
andre2ff7b5d2000-06-03 14:57:40 +0000616 # hardwire lastlog location (can't detect it on some versions)
617 conf_lastlog_location="/var/adm/lastlog"
Damien Millera1cb6442000-06-09 11:58:35 +1000618 AC_MSG_CHECKING(for obsolete utmp and wtmp in solaris2.x)
619 sol2ver=`echo "$host"| sed -e 's/.*[[0-9]]\.//'`
620 if test "$sol2ver" -ge 8; then
621 AC_MSG_RESULT(yes)
622 AC_DEFINE(DISABLE_UTMP)
Tim Rice7df8d392005-09-19 09:33:39 -0700623 AC_DEFINE(DISABLE_WTMP, 1,
624 [Define if you don't want to use wtmp])
Damien Millera1cb6442000-06-09 11:58:35 +1000625 else
626 AC_MSG_RESULT(no)
627 fi
Damien Miller1b06dc32006-08-31 03:24:41 +1000628 AC_ARG_WITH(solaris-contracts,
629 [ --with-solaris-contracts Enable Solaris process contracts (experimental)],
630 [
631 AC_CHECK_LIB(contract, ct_tmpl_activate,
632 [ AC_DEFINE(USE_SOLARIS_PROCESS_CONTRACTS, 1,
633 [Define if you have Solaris process contracts])
634 SSHDLIBS="$SSHDLIBS -lcontract"
635 AC_SUBST(SSHDLIBS)
636 SPC_MSG="yes" ], )
637 ],
638 )
Damien Miller75b1d102000-01-07 14:01:41 +1100639 ;;
Damien Millerdfc83f42000-05-20 15:02:59 +1000640*-*-sunos4*)
Ben Lindstrom28bfc0d2000-12-18 19:58:57 +0000641 CPPFLAGS="$CPPFLAGS -DSUNOS4"
Damien Millerdfc83f42000-05-20 15:02:59 +1000642 AC_CHECK_FUNCS(getpwanam)
Damien Miller82cf0ce2000-12-20 13:34:48 +1100643 AC_DEFINE(PAM_SUN_CODEBASE)
Damien Miller36ccb5c2000-08-09 16:34:27 +1000644 conf_utmp_location=/etc/utmp
645 conf_wtmp_location=/var/adm/wtmp
646 conf_lastlog_location=/var/adm/lastlog
Damien Millerb0785672000-08-23 09:10:39 +1000647 AC_DEFINE(USE_PIPES)
Damien Millerdfc83f42000-05-20 15:02:59 +1000648 ;;
Ben Lindstrom603bdfd2001-02-12 07:29:45 +0000649*-ncr-sysv*)
Tim Rice13aae5e2001-10-21 17:53:58 -0700650 LIBS="$LIBS -lc89"
Kevin Steves0bd4b342002-01-05 23:24:27 +0000651 AC_DEFINE(USE_PIPES)
Darren Tucker2972d6c2003-05-30 17:43:42 +1000652 AC_DEFINE(SSHD_ACQUIRES_CTTY)
Darren Tucker00130112003-09-22 11:40:24 +1000653 AC_DEFINE(SETEUID_BREAKS_SETUID)
654 AC_DEFINE(BROKEN_SETREUID)
655 AC_DEFINE(BROKEN_SETREGID)
Ben Lindstrom603bdfd2001-02-12 07:29:45 +0000656 ;;
Damien Miller2ae714f2000-07-11 09:29:50 +1000657*-sni-sysv*)
Tim Riceffdf4aa2001-10-27 10:45:36 -0700658 # /usr/ucblib MUST NOT be searched on ReliantUNIX
Darren Tucker89df7a32003-10-07 20:35:57 +1000659 AC_CHECK_LIB(dl, dlsym, ,)
Darren Tucker79d09fa2005-11-24 22:34:54 +1100660 # -lresolv needs to be at the end of LIBS or DNS lookups break
661 AC_CHECK_LIB(resolv, res_query, [ LIBS="$LIBS -lresolv" ])
Damien Millerfd9885e2001-01-10 08:16:53 +1100662 IPADDR_IN_DISPLAY=yes
663 AC_DEFINE(USE_PIPES)
Damien Miller2ae714f2000-07-11 09:29:50 +1000664 AC_DEFINE(IP_TOS_IS_BROKEN)
Darren Tucker3b2a06c2003-10-07 18:37:11 +1000665 AC_DEFINE(SETEUID_BREAKS_SETUID)
666 AC_DEFINE(BROKEN_SETREUID)
667 AC_DEFINE(BROKEN_SETREGID)
Darren Tucker2972d6c2003-05-30 17:43:42 +1000668 AC_DEFINE(SSHD_ACQUIRES_CTTY)
Darren Tuckere1a790d2003-09-16 11:52:19 +1000669 external_path_file=/etc/default/login
Tim Riceffdf4aa2001-10-27 10:45:36 -0700670 # /usr/ucblib/libucb.a no longer needed on ReliantUNIX
671 # Attention: always take care to bind libsocket and libnsl before libc,
672 # otherwise you will find lots of "SIOCGPGRP errno 22" on syslog
Damien Miller2ae714f2000-07-11 09:29:50 +1000673 ;;
Tim Rice0f83d292004-12-08 18:29:58 -0800674# UnixWare 1.x, UnixWare 2.x, and others based on code from Univel.
Damien Miller78315eb2000-09-29 23:01:36 +1100675*-*-sysv4.2*)
Damien Miller5dfe9762001-02-16 12:05:39 +1100676 AC_DEFINE(USE_PIPES)
Tim Riced546a842003-09-11 22:24:36 -0700677 AC_DEFINE(SETEUID_BREAKS_SETUID)
678 AC_DEFINE(BROKEN_SETREUID)
679 AC_DEFINE(BROKEN_SETREGID)
Tim Rice2f97b8b2005-04-11 19:00:18 -0700680 AC_DEFINE(PASSWD_NEEDS_USERNAME, 1, [must supply username to passwd])
Tim Rice46259d82005-11-28 18:40:34 -0800681 AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
Damien Miller78315eb2000-09-29 23:01:36 +1100682 ;;
Tim Rice0f83d292004-12-08 18:29:58 -0800683# UnixWare 7.x, OpenUNIX 8
Damien Miller78315eb2000-09-29 23:01:36 +1100684*-*-sysv5*)
Tim Riceeb456542005-08-30 07:12:02 -0700685 check_for_libcrypt_later=1
686 AC_DEFINE(UNIXWARE_LONG_PASSWORDS, 1, [Support passwords > 8 chars])
Damien Miller5dfe9762001-02-16 12:05:39 +1100687 AC_DEFINE(USE_PIPES)
Tim Riced546a842003-09-11 22:24:36 -0700688 AC_DEFINE(SETEUID_BREAKS_SETUID)
689 AC_DEFINE(BROKEN_SETREUID)
690 AC_DEFINE(BROKEN_SETREGID)
Tim Rice7df8d392005-09-19 09:33:39 -0700691 AC_DEFINE(PASSWD_NEEDS_USERNAME)
Tim Rice4dbacff2005-06-01 20:09:28 -0700692 case "$host" in
693 *-*-sysv5SCO_SV*) # SCO OpenServer 6.x
694 TEST_SHELL=/u95/bin/sh
Tim Rice7df8d392005-09-19 09:33:39 -0700695 AC_DEFINE(BROKEN_LIBIAF, 1,
696 [ia_uinfo routines not supported by OS yet])
Tim Riceb8f00192006-09-06 18:11:29 -0700697 AC_DEFINE(BROKEN_UPDWTMPX)
Tim Rice4dbacff2005-06-01 20:09:28 -0700698 ;;
Tim Rice46259d82005-11-28 18:40:34 -0800699 *) AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
700 ;;
Tim Rice4dbacff2005-06-01 20:09:28 -0700701 esac
Damien Miller78315eb2000-09-29 23:01:36 +1100702 ;;
Damien Miller75b1d102000-01-07 14:01:41 +1100703*-*-sysv*)
Damien Miller75b1d102000-01-07 14:01:41 +1100704 ;;
Tim Rice0f83d292004-12-08 18:29:58 -0800705# SCO UNIX and OEM versions of SCO UNIX
Damien Miller78315eb2000-09-29 23:01:36 +1100706*-*-sco3.2v4*)
Tim Ricec390c8d2005-03-07 01:21:37 -0800707 AC_MSG_ERROR("This Platform is no longer supported.")
Damien Miller78315eb2000-09-29 23:01:36 +1100708 ;;
Tim Rice0f83d292004-12-08 18:29:58 -0800709# SCO OpenServer 5.x
Damien Miller78315eb2000-09-29 23:01:36 +1100710*-*-sco3.2v5*)
Tim Rice89fe3f32003-01-19 20:20:24 -0800711 if test -z "$GCC"; then
712 CFLAGS="$CFLAGS -belf"
713 fi
Damien Miller5dfe9762001-02-16 12:05:39 +1100714 LIBS="$LIBS -lprot -lx -ltinfo -lm"
Damien Millera66626b2000-06-13 18:57:53 +1000715 no_dev_ptmx=1
Damien Miller5dfe9762001-02-16 12:05:39 +1100716 AC_DEFINE(USE_PIPES)
Kevin Steves0ea1d9d2002-04-25 18:17:04 +0000717 AC_DEFINE(HAVE_SECUREWARE)
Ben Lindstrom980754c2000-11-12 00:04:24 +0000718 AC_DEFINE(DISABLE_SHADOW)
Tim Rice9dd30812002-07-07 13:43:36 -0700719 AC_DEFINE(DISABLE_FD_PASSING)
Tim Riced546a842003-09-11 22:24:36 -0700720 AC_DEFINE(SETEUID_BREAKS_SETUID)
721 AC_DEFINE(BROKEN_SETREUID)
722 AC_DEFINE(BROKEN_SETREGID)
Tim Riceae477e92003-09-12 18:15:15 -0700723 AC_DEFINE(WITH_ABBREV_NO_TTY)
Tim Rice816bd0d2004-07-19 10:19:26 -0700724 AC_DEFINE(BROKEN_UPDWTMPX)
Tim Rice7df8d392005-09-19 09:33:39 -0700725 AC_DEFINE(PASSWD_NEEDS_USERNAME)
Damien Miller217f5672001-02-16 12:12:41 +1100726 AC_CHECK_FUNCS(getluid setluid)
Tim Rice07183b82001-04-25 21:40:28 -0700727 MANTYPE=man
Tim Ricef7ba8f62004-06-20 10:37:32 -0700728 TEST_SHELL=ksh
Damien Millera66626b2000-06-13 18:57:53 +1000729 ;;
Ben Lindstrom232ccf72002-07-22 23:34:25 +0000730*-*-unicosmk*)
Tim Rice7df8d392005-09-19 09:33:39 -0700731 AC_DEFINE(NO_SSH_LASTLOG, 1,
732 [Define if you don't want to use lastlog in session.c])
Darren Tucker2df33432004-01-30 14:34:21 +1100733 AC_DEFINE(SETEUID_BREAKS_SETUID)
734 AC_DEFINE(BROKEN_SETREUID)
735 AC_DEFINE(BROKEN_SETREGID)
Ben Lindstrom232ccf72002-07-22 23:34:25 +0000736 AC_DEFINE(USE_PIPES)
737 AC_DEFINE(DISABLE_FD_PASSING)
738 LDFLAGS="$LDFLAGS"
739 LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm"
740 MANTYPE=cat
Ben Lindstrom762104e2002-07-23 00:00:05 +0000741 ;;
Darren Tucker9f7ffc52003-09-10 11:39:05 +1000742*-*-unicosmp*)
Darren Tucker2df33432004-01-30 14:34:21 +1100743 AC_DEFINE(SETEUID_BREAKS_SETUID)
744 AC_DEFINE(BROKEN_SETREUID)
745 AC_DEFINE(BROKEN_SETREGID)
Darren Tucker9f7ffc52003-09-10 11:39:05 +1000746 AC_DEFINE(WITH_ABBREV_NO_TTY)
747 AC_DEFINE(USE_PIPES)
748 AC_DEFINE(DISABLE_FD_PASSING)
749 LDFLAGS="$LDFLAGS"
Darren Tucker2df33432004-01-30 14:34:21 +1100750 LIBS="$LIBS -lgen -lacid -ldb"
Darren Tucker9f7ffc52003-09-10 11:39:05 +1000751 MANTYPE=cat
752 ;;
Ben Lindstromd9e08242001-07-22 19:32:00 +0000753*-*-unicos*)
Darren Tucker2df33432004-01-30 14:34:21 +1100754 AC_DEFINE(SETEUID_BREAKS_SETUID)
755 AC_DEFINE(BROKEN_SETREUID)
756 AC_DEFINE(BROKEN_SETREGID)
Ben Lindstromd9e08242001-07-22 19:32:00 +0000757 AC_DEFINE(USE_PIPES)
Tim Rice9dd30812002-07-07 13:43:36 -0700758 AC_DEFINE(DISABLE_FD_PASSING)
Tim Rice81ed5182002-09-25 17:38:46 -0700759 AC_DEFINE(NO_SSH_LASTLOG)
Ben Lindstrom232ccf72002-07-22 23:34:25 +0000760 LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal"
761 LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm"
762 MANTYPE=cat
Tim Ricee991e3c2001-08-07 15:29:07 -0700763 ;;
Damien Millerb8c656e2000-06-28 15:22:41 +1000764*-dec-osf*)
Ben Lindstrom72af2ef2001-05-08 20:42:28 +0000765 AC_MSG_CHECKING(for Digital Unix SIA)
766 no_osfsia=""
767 AC_ARG_WITH(osfsia,
768 [ --with-osfsia Enable Digital Unix SIA],
769 [
770 if test "x$withval" = "xno" ; then
771 AC_MSG_RESULT(disabled)
772 no_osfsia=1
773 fi
774 ],
775 )
776 if test -z "$no_osfsia" ; then
Damien Millerb8c656e2000-06-28 15:22:41 +1000777 if test -f /etc/sia/matrix.conf; then
778 AC_MSG_RESULT(yes)
Tim Rice7df8d392005-09-19 09:33:39 -0700779 AC_DEFINE(HAVE_OSF_SIA, 1,
780 [Define if you have Digital Unix Security
781 Integration Architecture])
782 AC_DEFINE(DISABLE_LOGIN, 1,
783 [Define if you don't want to use your
784 system's login() call])
Ben Lindstromc8c548d2003-03-21 01:18:09 +0000785 AC_DEFINE(DISABLE_FD_PASSING)
Damien Millerb8c656e2000-06-28 15:22:41 +1000786 LIBS="$LIBS -lsecurity -ldb -lm -laud"
Damien Miller1b06dc32006-08-31 03:24:41 +1000787 SIA_MSG="yes"
Damien Millerb8c656e2000-06-28 15:22:41 +1000788 else
789 AC_MSG_RESULT(no)
Tim Rice7df8d392005-09-19 09:33:39 -0700790 AC_DEFINE(LOCKED_PASSWD_SUBSTR, "Nologin",
791 [String used in /etc/passwd to denote locked account])
Damien Millerb8c656e2000-06-28 15:22:41 +1000792 fi
793 fi
Darren Tucker3c8e1e12003-08-25 13:27:40 +1000794 AC_DEFINE(BROKEN_GETADDRINFO)
Tim Rice7a74c6b2003-09-21 21:00:59 -0700795 AC_DEFINE(SETEUID_BREAKS_SETUID)
Darren Tuckered92b212003-09-22 11:26:16 +1000796 AC_DEFINE(BROKEN_SETREUID)
797 AC_DEFINE(BROKEN_SETREGID)
Damien Millerb8c656e2000-06-28 15:22:41 +1000798 ;;
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +0000799
Tim Rice70335a62006-02-04 17:42:58 -0800800*-*-nto-qnx*)
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +0000801 AC_DEFINE(USE_PIPES)
802 AC_DEFINE(NO_X11_UNIX_SOCKETS)
Tim Rice7df8d392005-09-19 09:33:39 -0700803 AC_DEFINE(MISSING_NFDBITS, 1, [Define on *nto-qnx systems])
804 AC_DEFINE(MISSING_HOWMANY, 1, [Define on *nto-qnx systems])
805 AC_DEFINE(MISSING_FD_MASK, 1, [Define on *nto-qnx systems])
Tim Rice70335a62006-02-04 17:42:58 -0800806 AC_DEFINE(DISABLE_LASTLOG)
Darren Tucker54b75fe2006-02-26 12:31:48 +1100807 AC_DEFINE(SSHD_ACQUIRES_CTTY)
Darren Tuckerbc1bd9d2007-09-27 07:03:20 +1000808 AC_DEFINE(BROKEN_SHADOW_EXPIRE, 1, [QNX shadow support is broken])
Tim Rice2f993462006-02-11 18:37:48 -0800809 enable_etc_default_login=no # has incompatible /etc/default/login
Darren Tucker8acb3b62007-08-10 14:36:12 +1000810 case "$host" in
811 *-*-nto-qnx6*)
812 AC_DEFINE(DISABLE_FD_PASSING)
813 ;;
814 esac
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +0000815 ;;
Darren Tucker2be1cbb2005-05-27 21:13:40 +1000816
817*-*-ultrix*)
Tim Rice7df8d392005-09-19 09:33:39 -0700818 AC_DEFINE(BROKEN_GETGROUPS, 1, [getgroups(0,NULL) will return -1])
819 AC_DEFINE(BROKEN_MMAP, 1, [Ultrix mmap can't map files])
Darren Tucker988b3fd2006-02-08 22:11:27 +1100820 AC_DEFINE(NEED_SETPGRP)
Tim Ricefcc7ff12005-06-02 20:28:29 -0700821 AC_DEFINE(HAVE_SYS_SYSLOG_H, 1, [Force use of sys/syslog.h on Ultrix])
822 ;;
Darren Tucker93e7e8f2005-08-23 08:06:55 +1000823
824*-*-lynxos)
825 CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"
Tim Rice7df8d392005-09-19 09:33:39 -0700826 AC_DEFINE(MISSING_HOWMANY)
Darren Tucker93e7e8f2005-08-23 08:06:55 +1000827 AC_DEFINE(BROKEN_SETVBUF, 1, [LynxOS has broken setvbuf() implementation])
828 ;;
Damien Miller76112de1999-12-21 11:18:08 +1100829esac
830
Darren Tucker6eb93042003-06-29 21:30:41 +1000831AC_MSG_CHECKING(compiler and flags for sanity)
Darren Tucker623d92f2004-09-12 22:36:15 +1000832AC_RUN_IFELSE(
833 [AC_LANG_SOURCE([
Darren Tucker6eb93042003-06-29 21:30:41 +1000834#include <stdio.h>
835int main(){exit(0);}
Darren Tucker623d92f2004-09-12 22:36:15 +1000836 ])],
Darren Tucker6eb93042003-06-29 21:30:41 +1000837 [ AC_MSG_RESULT(yes) ],
838 [
839 AC_MSG_RESULT(no)
840 AC_MSG_ERROR([*** compiler cannot create working executables, check config.log ***])
Darren Tuckera0c2b392004-09-11 23:26:37 +1000841 ],
842 [ AC_MSG_WARN([cross compiling: not checking compiler sanity]) ]
Darren Tucker6eb93042003-06-29 21:30:41 +1000843)
844
Darren Tucker0c9653f2005-05-28 15:58:14 +1000845dnl Checks for header files.
Damien Millera22ba012000-03-02 23:09:20 +1100846# Checks for libraries.
Tim Rice13aae5e2001-10-21 17:53:58 -0700847AC_CHECK_FUNC(yp_match, , AC_CHECK_LIB(nsl, yp_match))
848AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt))
Ben Lindstrom3ad650a2001-01-03 06:02:51 +0000849
Tim Rice1e1ef642003-09-11 22:19:31 -0700850dnl IRIX and Solaris 2.5.1 have dirname() in libgen
851AC_CHECK_FUNCS(dirname, [AC_CHECK_HEADERS(libgen.h)] ,[
852 AC_CHECK_LIB(gen, dirname,[
853 AC_CACHE_CHECK([for broken dirname],
854 ac_cv_have_broken_dirname, [
855 save_LIBS="$LIBS"
856 LIBS="$LIBS -lgen"
Darren Tucker314d89e2005-10-17 23:29:23 +1000857 AC_RUN_IFELSE(
858 [AC_LANG_SOURCE([[
Tim Rice1e1ef642003-09-11 22:19:31 -0700859#include <libgen.h>
860#include <string.h>
861
862int main(int argc, char **argv) {
863 char *s, buf[32];
864
865 strncpy(buf,"/etc", 32);
866 s = dirname(buf);
867 if (!s || strncmp(s, "/", 32) != 0) {
868 exit(1);
869 } else {
870 exit(0);
871 }
872}
Darren Tucker314d89e2005-10-17 23:29:23 +1000873 ]])],
Tim Rice1e1ef642003-09-11 22:19:31 -0700874 [ ac_cv_have_broken_dirname="no" ],
Darren Tucker314d89e2005-10-17 23:29:23 +1000875 [ ac_cv_have_broken_dirname="yes" ],
876 [ ac_cv_have_broken_dirname="no" ],
Tim Rice1e1ef642003-09-11 22:19:31 -0700877 )
878 LIBS="$save_LIBS"
879 ])
880 if test "x$ac_cv_have_broken_dirname" = "xno" ; then
881 LIBS="$LIBS -lgen"
882 AC_DEFINE(HAVE_DIRNAME)
883 AC_CHECK_HEADERS(libgen.h)
884 fi
885 ])
886])
887
888AC_CHECK_FUNC(getspnam, ,
889 AC_CHECK_LIB(gen, getspnam, LIBS="$LIBS -lgen"))
Tim Rice7df8d392005-09-19 09:33:39 -0700890AC_SEARCH_LIBS(basename, gen, AC_DEFINE(HAVE_BASENAME, 1,
891 [Define if you have the basename function.]))
Tim Rice1e1ef642003-09-11 22:19:31 -0700892
Tim Rice13aae5e2001-10-21 17:53:58 -0700893dnl zlib is required
894AC_ARG_WITH(zlib,
895 [ --with-zlib=PATH Use zlib in PATH],
Darren Tucker86a5f8d2005-03-21 09:55:17 +1100896 [ if test "x$withval" = "xno" ; then
897 AC_MSG_ERROR([*** zlib is required ***])
898 elif test "x$withval" != "xyes"; then
Tim Rice13aae5e2001-10-21 17:53:58 -0700899 if test -d "$withval/lib"; then
900 if test -n "${need_dash_r}"; then
Tim Rice02cebcd2001-10-25 10:01:30 -0700901 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -0700902 else
Tim Rice02cebcd2001-10-25 10:01:30 -0700903 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -0700904 fi
905 else
906 if test -n "${need_dash_r}"; then
Tim Rice02cebcd2001-10-25 10:01:30 -0700907 LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -0700908 else
Tim Rice02cebcd2001-10-25 10:01:30 -0700909 LDFLAGS="-L${withval} ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -0700910 fi
911 fi
912 if test -d "$withval/include"; then
Tim Rice02cebcd2001-10-25 10:01:30 -0700913 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -0700914 else
Tim Rice02cebcd2001-10-25 10:01:30 -0700915 CPPFLAGS="-I${withval} ${CPPFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -0700916 fi
Darren Tucker86a5f8d2005-03-21 09:55:17 +1100917 fi ]
Tim Rice13aae5e2001-10-21 17:53:58 -0700918)
919
Tim Ricefcb62202004-01-23 18:35:16 -0800920AC_CHECK_LIB(z, deflate, ,
921 [
922 saved_CPPFLAGS="$CPPFLAGS"
923 saved_LDFLAGS="$LDFLAGS"
924 save_LIBS="$LIBS"
925 dnl Check default zlib install dir
926 if test -n "${need_dash_r}"; then
927 LDFLAGS="-L/usr/local/lib -R/usr/local/lib ${saved_LDFLAGS}"
928 else
929 LDFLAGS="-L/usr/local/lib ${saved_LDFLAGS}"
930 fi
931 CPPFLAGS="-I/usr/local/include ${saved_CPPFLAGS}"
932 LIBS="$LIBS -lz"
933 AC_TRY_LINK_FUNC(deflate, AC_DEFINE(HAVE_LIBZ),
934 [
935 AC_MSG_ERROR([*** zlib missing - please install first or check config.log ***])
936 ]
937 )
938 ]
939)
Darren Tucker2dcd2392004-01-23 17:13:33 +1100940AC_CHECK_HEADER([zlib.h], ,AC_MSG_ERROR([*** zlib.h missing - please install first or check config.log ***]))
Darren Tuckerdcc736b2004-01-30 14:20:59 +1100941
942AC_ARG_WITH(zlib-version-check,
943 [ --without-zlib-version-check Disable zlib version check],
944 [ if test "x$withval" = "xno" ; then
945 zlib_check_nonfatal=1
946 fi
947 ]
948)
949
Darren Tucker2f0b5c42005-04-24 17:52:22 +1000950AC_MSG_CHECKING(for possibly buggy zlib)
Darren Tucker623d92f2004-09-12 22:36:15 +1000951AC_RUN_IFELSE([AC_LANG_SOURCE([[
Darren Tucker2f0b5c42005-04-24 17:52:22 +1000952#include <stdio.h>
Darren Tucker2dcd2392004-01-23 17:13:33 +1100953#include <zlib.h>
954int main()
955{
Darren Tucker2f0b5c42005-04-24 17:52:22 +1000956 int a=0, b=0, c=0, d=0, n, v;
957 n = sscanf(ZLIB_VERSION, "%d.%d.%d.%d", &a, &b, &c, &d);
958 if (n != 3 && n != 4)
Darren Tucker2dcd2392004-01-23 17:13:33 +1100959 exit(1);
Darren Tucker2f0b5c42005-04-24 17:52:22 +1000960 v = a*1000000 + b*10000 + c*100 + d;
961 fprintf(stderr, "found zlib version %s (%d)\n", ZLIB_VERSION, v);
962
963 /* 1.1.4 is OK */
964 if (a == 1 && b == 1 && c >= 4)
Darren Tucker2dcd2392004-01-23 17:13:33 +1100965 exit(0);
Darren Tucker2f0b5c42005-04-24 17:52:22 +1000966
Darren Tucker41097ed2005-07-25 15:24:21 +1000967 /* 1.2.3 and up are OK */
968 if (v >= 1020300)
Darren Tucker2f0b5c42005-04-24 17:52:22 +1000969 exit(0);
970
Darren Tucker2dcd2392004-01-23 17:13:33 +1100971 exit(2);
972}
Darren Tucker623d92f2004-09-12 22:36:15 +1000973 ]])],
Darren Tucker2f0b5c42005-04-24 17:52:22 +1000974 AC_MSG_RESULT(no),
975 [ AC_MSG_RESULT(yes)
Darren Tuckerdcc736b2004-01-30 14:20:59 +1100976 if test -z "$zlib_check_nonfatal" ; then
977 AC_MSG_ERROR([*** zlib too old - check config.log ***
978Your reported zlib version has known security problems. It's possible your
979vendor has fixed these problems without changing the version number. If you
980are sure this is the case, you can disable the check by running
981"./configure --without-zlib-version-check".
Darren Tuckerac1910f2005-07-26 12:00:42 +1000982If you are in doubt, upgrade zlib to version 1.2.3 or greater.
Darren Tucker2f0b5c42005-04-24 17:52:22 +1000983See http://www.gzip.org/zlib/ for details.])
Darren Tuckerdcc736b2004-01-30 14:20:59 +1100984 else
985 AC_MSG_WARN([zlib version may have security problems])
986 fi
Darren Tuckera0c2b392004-09-11 23:26:37 +1000987 ],
988 [ AC_MSG_WARN([cross compiling: not checking zlib version]) ]
Darren Tucker2dcd2392004-01-23 17:13:33 +1100989)
Damien Miller6f9c3372000-10-25 10:06:04 +1100990
Ben Lindstrom3ad650a2001-01-03 06:02:51 +0000991dnl UnixWare 2.x
Damien Millera8e06ce2003-11-21 23:48:55 +1100992AC_CHECK_FUNC(strcasecmp,
Ben Lindstrom3ad650a2001-01-03 06:02:51 +0000993 [], [ AC_CHECK_LIB(resolv, strcasecmp, LIBS="$LIBS -lresolv") ]
994)
Darren Tucker5bfe1682005-11-12 18:42:36 +1100995AC_CHECK_FUNCS(utimes,
Tim Ricecbb90662002-07-08 19:17:10 -0700996 [], [ AC_CHECK_LIB(c89, utimes, [AC_DEFINE(HAVE_UTIMES)
997 LIBS="$LIBS -lc89"]) ]
Ben Lindstrom3ad650a2001-01-03 06:02:51 +0000998)
Damien Millerab18c411999-11-11 10:40:23 +1100999
Tim Ricee589a292001-11-03 11:09:32 -08001000dnl Checks for libutil functions
1001AC_CHECK_HEADERS(libutil.h)
Tim Rice7df8d392005-09-19 09:33:39 -07001002AC_SEARCH_LIBS(login, util bsd, [AC_DEFINE(HAVE_LOGIN, 1,
1003 [Define if your libraries define login()])])
Tim Ricee589a292001-11-03 11:09:32 -08001004AC_CHECK_FUNCS(logout updwtmp logwtmp)
1005
Ben Lindstrom8697e082001-02-24 21:41:10 +00001006AC_FUNC_STRFTIME
1007
Damien Miller3c027682001-03-14 11:39:45 +11001008# Check for ALTDIRFUNC glob() extension
1009AC_MSG_CHECKING(for GLOB_ALTDIRFUNC support)
1010AC_EGREP_CPP(FOUNDIT,
1011 [
1012 #include <glob.h>
1013 #ifdef GLOB_ALTDIRFUNC
1014 FOUNDIT
1015 #endif
Damien Millera8e06ce2003-11-21 23:48:55 +11001016 ],
Damien Miller3c027682001-03-14 11:39:45 +11001017 [
Tim Rice7df8d392005-09-19 09:33:39 -07001018 AC_DEFINE(GLOB_HAS_ALTDIRFUNC, 1,
1019 [Define if your system glob() function has
1020 the GLOB_ALTDIRFUNC extension])
Damien Miller3c027682001-03-14 11:39:45 +11001021 AC_MSG_RESULT(yes)
1022 ],
1023 [
1024 AC_MSG_RESULT(no)
1025 ]
1026)
Damien Millerab18c411999-11-11 10:40:23 +11001027
Ben Lindstrom45b14db2001-03-17 01:15:38 +00001028# Check for g.gl_matchc glob() extension
1029AC_MSG_CHECKING(for gl_matchc field in glob_t)
Darren Tucker486d95e2006-03-15 21:31:39 +11001030AC_TRY_COMPILE(
Damien Milleraf87af12006-03-15 13:02:28 +11001031 [ #include <glob.h> ],
1032 [glob_t g; g.gl_matchc = 1;],
Damien Millera8e06ce2003-11-21 23:48:55 +11001033 [
Tim Rice7df8d392005-09-19 09:33:39 -07001034 AC_DEFINE(GLOB_HAS_GL_MATCHC, 1,
1035 [Define if your system glob() function has
1036 gl_matchc options in glob_t])
Damien Millera8e06ce2003-11-21 23:48:55 +11001037 AC_MSG_RESULT(yes)
1038 ],
1039 [
1040 AC_MSG_RESULT(no)
1041 ]
Ben Lindstrom45b14db2001-03-17 01:15:38 +00001042)
1043
Darren Tucker096faec2006-09-01 20:29:10 +10001044AC_CHECK_DECLS(GLOB_NOMATCH, , , [#include <glob.h>])
1045
Damien Miller18bb4732001-03-28 14:35:30 +10001046AC_MSG_CHECKING([whether struct dirent allocates space for d_name])
Darren Tuckera0c2b392004-09-11 23:26:37 +10001047AC_RUN_IFELSE(
Darren Tucker623d92f2004-09-12 22:36:15 +10001048 [AC_LANG_SOURCE([[
Damien Miller18bb4732001-03-28 14:35:30 +10001049#include <sys/types.h>
1050#include <dirent.h>
Tim Rice2c961ce2002-09-23 16:54:10 -07001051int main(void){struct dirent d;exit(sizeof(d.d_name)<=sizeof(char));}
Darren Tucker623d92f2004-09-12 22:36:15 +10001052 ]])],
Damien Millera8e06ce2003-11-21 23:48:55 +11001053 [AC_MSG_RESULT(yes)],
Damien Miller18bb4732001-03-28 14:35:30 +10001054 [
1055 AC_MSG_RESULT(no)
Tim Rice7df8d392005-09-19 09:33:39 -07001056 AC_DEFINE(BROKEN_ONE_BYTE_DIRENT_D_NAME, 1,
Darren Tucker79d09fa2005-11-24 22:34:54 +11001057 [Define if your struct dirent expects you to
Tim Rice7df8d392005-09-19 09:33:39 -07001058 allocate extra space for d_name])
Darren Tuckera0c2b392004-09-11 23:26:37 +10001059 ],
Tim Riceeae17cc2005-03-17 16:52:20 -08001060 [
Darren Tuckera0c2b392004-09-11 23:26:37 +10001061 AC_MSG_WARN([cross compiling: assuming BROKEN_ONE_BYTE_DIRENT_D_NAME])
1062 AC_DEFINE(BROKEN_ONE_BYTE_DIRENT_D_NAME)
Damien Miller18bb4732001-03-28 14:35:30 +10001063 ]
1064)
1065
Damien Miller36f49652004-08-15 18:40:59 +10001066AC_MSG_CHECKING([for /proc/pid/fd directory])
1067if test -d "/proc/$$/fd" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07001068 AC_DEFINE(HAVE_PROC_PID, 1, [Define if you have /proc/$pid/fd])
Damien Miller36f49652004-08-15 18:40:59 +10001069 AC_MSG_RESULT(yes)
1070else
1071 AC_MSG_RESULT(no)
1072fi
1073
Damien Millerc547bf12001-02-16 10:18:12 +11001074# Check whether user wants S/Key support
Damien Millera8e06ce2003-11-21 23:48:55 +11001075SKEY_MSG="no"
Damien Millerc547bf12001-02-16 10:18:12 +11001076AC_ARG_WITH(skey,
Darren Tucker1b6f2292005-02-11 16:11:49 +11001077 [ --with-skey[[=PATH]] Enable S/Key support (optionally in PATH)],
Damien Millerc547bf12001-02-16 10:18:12 +11001078 [
1079 if test "x$withval" != "xno" ; then
1080
1081 if test "x$withval" != "xyes" ; then
1082 CPPFLAGS="$CPPFLAGS -I${withval}/include"
1083 LDFLAGS="$LDFLAGS -L${withval}/lib"
1084 fi
1085
Tim Rice7df8d392005-09-19 09:33:39 -07001086 AC_DEFINE(SKEY, 1, [Define if you want S/Key support])
Damien Millerc547bf12001-02-16 10:18:12 +11001087 LIBS="-lskey $LIBS"
Damien Millera8e06ce2003-11-21 23:48:55 +11001088 SKEY_MSG="yes"
Tim Riceeae17cc2005-03-17 16:52:20 -08001089
Tim Rice4cec93f2002-02-26 08:40:48 -08001090 AC_MSG_CHECKING([for s/key support])
Darren Tucker314d89e2005-10-17 23:29:23 +10001091 AC_LINK_IFELSE(
1092 [AC_LANG_SOURCE([[
Tim Rice4cec93f2002-02-26 08:40:48 -08001093#include <stdio.h>
1094#include <skey.h>
Tim Rice2c961ce2002-09-23 16:54:10 -07001095int main() { char *ff = skey_keyinfo(""); ff=""; exit(0); }
Darren Tucker314d89e2005-10-17 23:29:23 +10001096 ]])],
Tim Rice4cec93f2002-02-26 08:40:48 -08001097 [AC_MSG_RESULT(yes)],
1098 [
1099 AC_MSG_RESULT(no)
Damien Millerc547bf12001-02-16 10:18:12 +11001100 AC_MSG_ERROR([** Incomplete or missing s/key libraries.])
1101 ])
Darren Tucker3b908f62004-04-14 15:26:39 +10001102 AC_MSG_CHECKING(if skeychallenge takes 4 arguments)
1103 AC_TRY_COMPILE(
1104 [#include <stdio.h>
1105 #include <skey.h>],
1106 [(void)skeychallenge(NULL,"name","",0);],
1107 [AC_MSG_RESULT(yes)
Tim Rice7df8d392005-09-19 09:33:39 -07001108 AC_DEFINE(SKEYCHALLENGE_4ARG, 1,
1109 [Define if your skeychallenge()
1110 function takes 4 arguments (NetBSD)])],
Darren Tucker3b908f62004-04-14 15:26:39 +10001111 [AC_MSG_RESULT(no)]
1112 )
Damien Millerc547bf12001-02-16 10:18:12 +11001113 fi
1114 ]
1115)
1116
1117# Check whether user wants TCP wrappers support
Tim Rice13aae5e2001-10-21 17:53:58 -07001118TCPW_MSG="no"
Damien Millerc547bf12001-02-16 10:18:12 +11001119AC_ARG_WITH(tcp-wrappers,
Darren Tucker1b6f2292005-02-11 16:11:49 +11001120 [ --with-tcp-wrappers[[=PATH]] Enable tcpwrappers support (optionally in PATH)],
Damien Millerc547bf12001-02-16 10:18:12 +11001121 [
1122 if test "x$withval" != "xno" ; then
1123 saved_LIBS="$LIBS"
Tim Rice13aae5e2001-10-21 17:53:58 -07001124 saved_LDFLAGS="$LDFLAGS"
1125 saved_CPPFLAGS="$CPPFLAGS"
Tim Rice8bb561b2005-03-17 16:23:19 -08001126 if test -n "${withval}" && \
Tim Rice35cc69d2005-03-17 16:44:25 -08001127 test "x${withval}" != "xyes"; then
Tim Rice13aae5e2001-10-21 17:53:58 -07001128 if test -d "${withval}/lib"; then
1129 if test -n "${need_dash_r}"; then
Tim Rice02cebcd2001-10-25 10:01:30 -07001130 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001131 else
Tim Rice02cebcd2001-10-25 10:01:30 -07001132 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001133 fi
1134 else
1135 if test -n "${need_dash_r}"; then
Tim Rice02cebcd2001-10-25 10:01:30 -07001136 LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001137 else
Tim Rice02cebcd2001-10-25 10:01:30 -07001138 LDFLAGS="-L${withval} ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001139 fi
1140 fi
1141 if test -d "${withval}/include"; then
Tim Rice02cebcd2001-10-25 10:01:30 -07001142 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001143 else
Tim Rice02cebcd2001-10-25 10:01:30 -07001144 CPPFLAGS="-I${withval} ${CPPFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001145 fi
Tim Rice13aae5e2001-10-21 17:53:58 -07001146 fi
Darren Tucker20e9f972007-03-25 18:26:01 +10001147 LIBS="-lwrap $LIBS"
Damien Millerc547bf12001-02-16 10:18:12 +11001148 AC_MSG_CHECKING(for libwrap)
1149 AC_TRY_LINK(
1150 [
Damien Miller0ac45002004-04-14 20:14:26 +10001151#include <sys/types.h>
1152#include <sys/socket.h>
1153#include <netinet/in.h>
Damien Millerc547bf12001-02-16 10:18:12 +11001154#include <tcpd.h>
1155 int deny_severity = 0, allow_severity = 0;
1156 ],
1157 [hosts_access(0);],
1158 [
1159 AC_MSG_RESULT(yes)
Tim Rice7df8d392005-09-19 09:33:39 -07001160 AC_DEFINE(LIBWRAP, 1,
1161 [Define if you want
1162 TCP Wrappers support])
Darren Tucker20e9f972007-03-25 18:26:01 +10001163 SSHDLIBS="$SSHDLIBS -lwrap"
Tim Rice13aae5e2001-10-21 17:53:58 -07001164 TCPW_MSG="yes"
Damien Millerc547bf12001-02-16 10:18:12 +11001165 ],
1166 [
1167 AC_MSG_ERROR([*** libwrap missing])
1168 ]
1169 )
Tim Rice4cec93f2002-02-26 08:40:48 -08001170 LIBS="$saved_LIBS"
Damien Millerc547bf12001-02-16 10:18:12 +11001171 fi
1172 ]
1173)
1174
Darren Tucker16bcc1c2004-11-07 20:14:34 +11001175# Check whether user wants libedit support
1176LIBEDIT_MSG="no"
1177AC_ARG_WITH(libedit,
Darren Tucker1b6f2292005-02-11 16:11:49 +11001178 [ --with-libedit[[=PATH]] Enable libedit support for sftp],
Darren Tucker16bcc1c2004-11-07 20:14:34 +11001179 [ if test "x$withval" != "xno" ; then
Darren Tucker1df61452005-03-21 09:58:07 +11001180 if test "x$withval" != "xyes"; then
Darren Tuckerc373a562005-09-22 20:15:08 +10001181 CPPFLAGS="$CPPFLAGS -I${withval}/include"
1182 if test -n "${need_dash_r}"; then
1183 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
1184 else
1185 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
1186 fi
Darren Tucker1df61452005-03-21 09:58:07 +11001187 fi
Darren Tucker16bcc1c2004-11-07 20:14:34 +11001188 AC_CHECK_LIB(edit, el_init,
Tim Rice7df8d392005-09-19 09:33:39 -07001189 [ AC_DEFINE(USE_LIBEDIT, 1, [Use libedit for sftp])
Darren Tucker16bcc1c2004-11-07 20:14:34 +11001190 LIBEDIT="-ledit -lcurses"
1191 LIBEDIT_MSG="yes"
1192 AC_SUBST(LIBEDIT)
1193 ],
Darren Tucker1df61452005-03-21 09:58:07 +11001194 [ AC_MSG_ERROR(libedit not found) ],
1195 [ -lcurses ]
Darren Tucker16bcc1c2004-11-07 20:14:34 +11001196 )
Darren Tuckerc7572b22005-08-10 20:34:15 +10001197 AC_MSG_CHECKING(if libedit version is compatible)
Tim Ricec1819c82005-08-15 17:48:40 -07001198 AC_COMPILE_IFELSE(
1199 [AC_LANG_SOURCE([[
1200#include <histedit.h>
Darren Tuckerc7572b22005-08-10 20:34:15 +10001201int main(void)
1202{
1203 int i = H_SETSIZE;
1204 el_init("", NULL, NULL, NULL);
1205 exit(0);
1206}
Tim Ricec1819c82005-08-15 17:48:40 -07001207 ]])],
Darren Tuckerc7572b22005-08-10 20:34:15 +10001208 [ AC_MSG_RESULT(yes) ],
1209 [ AC_MSG_RESULT(no)
1210 AC_MSG_ERROR(libedit version is not compatible) ]
1211 )
Darren Tucker16bcc1c2004-11-07 20:14:34 +11001212 fi ]
1213)
1214
Darren Tuckerd9f88912005-02-20 21:01:48 +11001215AUDIT_MODULE=none
1216AC_ARG_WITH(audit,
1217 [ --with-audit=module Enable EXPERIMENTAL audit support (modules=debug,bsm)],
1218 [
1219 AC_MSG_CHECKING(for supported audit module)
1220 case "$withval" in
1221 bsm)
1222 AC_MSG_RESULT(bsm)
1223 AUDIT_MODULE=bsm
1224 dnl Checks for headers, libs and functions
1225 AC_CHECK_HEADERS(bsm/audit.h, [],
Darren Tucker6d0d6fb2006-09-09 01:05:21 +10001226 [AC_MSG_ERROR(BSM enabled and bsm/audit.h not found)],
1227 [
1228#ifdef HAVE_TIME_H
1229# include <time.h>
1230#endif
1231 ]
1232)
Darren Tuckerd9f88912005-02-20 21:01:48 +11001233 AC_CHECK_LIB(bsm, getaudit, [],
1234 [AC_MSG_ERROR(BSM enabled and required library not found)])
1235 AC_CHECK_FUNCS(getaudit, [],
1236 [AC_MSG_ERROR(BSM enabled and required function not found)])
1237 # These are optional
Darren Tuckeracada072008-02-25 21:05:04 +11001238 AC_CHECK_FUNCS(getaudit_addr aug_get_machine)
Tim Rice7df8d392005-09-19 09:33:39 -07001239 AC_DEFINE(USE_BSM_AUDIT, 1, [Use BSM audit module])
Darren Tuckerd9f88912005-02-20 21:01:48 +11001240 ;;
1241 debug)
1242 AUDIT_MODULE=debug
1243 AC_MSG_RESULT(debug)
Tim Rice7df8d392005-09-19 09:33:39 -07001244 AC_DEFINE(SSH_AUDIT_EVENTS, 1, Use audit debugging module)
Darren Tuckerd9f88912005-02-20 21:01:48 +11001245 ;;
Tim Rice8bc6b902005-08-09 10:09:53 -07001246 no)
Tim Ricec1819c82005-08-15 17:48:40 -07001247 AC_MSG_RESULT(no)
Tim Rice8bc6b902005-08-09 10:09:53 -07001248 ;;
Darren Tuckerd9f88912005-02-20 21:01:48 +11001249 *)
1250 AC_MSG_ERROR([Unknown audit module $withval])
1251 ;;
1252 esac ]
1253)
1254
Damien Millerfe1f1432003-02-24 15:45:42 +11001255dnl Checks for library functions. Please keep in alphabetical order
Darren Tucker0c9653f2005-05-28 15:58:14 +10001256AC_CHECK_FUNCS( \
1257 arc4random \
Damien Miller57f39152005-11-24 19:58:19 +11001258 asprintf \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001259 b64_ntop \
1260 __b64_ntop \
1261 b64_pton \
1262 __b64_pton \
1263 bcopy \
1264 bindresvport_sa \
1265 clock \
1266 closefrom \
1267 dirfd \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001268 fchmod \
1269 fchown \
1270 freeaddrinfo \
1271 futimes \
1272 getaddrinfo \
1273 getcwd \
1274 getgrouplist \
1275 getnameinfo \
1276 getopt \
1277 getpeereid \
Darren Tucker164aa302007-03-21 21:39:57 +11001278 getpeerucred \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001279 _getpty \
1280 getrlimit \
1281 getttyent \
1282 glob \
1283 inet_aton \
1284 inet_ntoa \
1285 inet_ntop \
1286 innetgr \
1287 login_getcapbool \
1288 md5_crypt \
1289 memmove \
1290 mkdtemp \
1291 mmap \
1292 ngetaddrinfo \
1293 nsleep \
1294 ogetaddrinfo \
1295 openlog_r \
1296 openpty \
Darren Tuckerfebf0f52007-06-25 22:15:12 +10001297 poll \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001298 prctl \
1299 pstat \
1300 readpassphrase \
1301 realpath \
1302 recvmsg \
1303 rresvport_af \
1304 sendmsg \
1305 setdtablesize \
1306 setegid \
1307 setenv \
1308 seteuid \
1309 setgroups \
1310 setlogin \
1311 setpcred \
1312 setproctitle \
1313 setregid \
1314 setreuid \
1315 setrlimit \
1316 setsid \
1317 setvbuf \
1318 sigaction \
1319 sigvec \
1320 snprintf \
1321 socketpair \
1322 strdup \
1323 strerror \
1324 strlcat \
1325 strlcpy \
1326 strmode \
1327 strnvis \
1328 strtonum \
Darren Tucker81eb5d52005-06-01 21:39:33 +10001329 strtoll \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001330 strtoul \
Damien Miller34a17692007-06-11 14:15:42 +10001331 swap32 \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001332 sysconf \
1333 tcgetpgrp \
1334 truncate \
1335 unsetenv \
1336 updwtmpx \
Damien Miller57f39152005-11-24 19:58:19 +11001337 vasprintf \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001338 vhangup \
1339 vsnprintf \
1340 waitpid \
Damien Millerfe1f1432003-02-24 15:45:42 +11001341)
Tim Rice13aae5e2001-10-21 17:53:58 -07001342
Darren Tuckerd5e082f2003-09-22 12:08:23 +10001343# IRIX has a const char return value for gai_strerror()
1344AC_CHECK_FUNCS(gai_strerror,[
1345 AC_DEFINE(HAVE_GAI_STRERROR)
1346 AC_TRY_COMPILE([
1347#include <sys/types.h>
1348#include <sys/socket.h>
1349#include <netdb.h>
1350
1351const char *gai_strerror(int);],[
1352char *str;
1353
1354str = gai_strerror(0);],[
1355 AC_DEFINE(HAVE_CONST_GAI_STRERROR_PROTO, 1,
1356 [Define if gai_strerror() returns const char *])])])
1357
Tim Rice7df8d392005-09-19 09:33:39 -07001358AC_SEARCH_LIBS(nanosleep, rt posix4, AC_DEFINE(HAVE_NANOSLEEP, 1,
1359 [Some systems put nanosleep outside of libc]))
Damien Millercd6853c2003-01-28 11:33:42 +11001360
Darren Tuckerf1159b52003-07-07 19:44:01 +10001361dnl Make sure prototypes are defined for these before using them.
Darren Tuckerf1159b52003-07-07 19:44:01 +10001362AC_CHECK_DECL(getrusage, [AC_CHECK_FUNCS(getrusage)])
Darren Tucker390b6d52005-05-28 16:54:36 +10001363AC_CHECK_DECL(strsep,
1364 [AC_CHECK_FUNCS(strsep)],
1365 [],
1366 [
1367#ifdef HAVE_STRING_H
1368# include <string.h>
1369#endif
1370 ])
Ben Lindstrom3e006472002-10-16 00:24:03 +00001371
Darren Tuckerb2427c82003-09-10 15:22:44 +10001372dnl tcsendbreak might be a macro
1373AC_CHECK_DECL(tcsendbreak,
1374 [AC_DEFINE(HAVE_TCSENDBREAK)],
Damien Millera8e06ce2003-11-21 23:48:55 +11001375 [AC_CHECK_FUNCS(tcsendbreak)],
Darren Tuckerb2427c82003-09-10 15:22:44 +10001376 [#include <termios.h>]
1377)
1378
Darren Tucker5bb14002004-04-23 18:53:10 +10001379AC_CHECK_DECLS(h_errno, , ,[#include <netdb.h>])
1380
Darren Tucker128a0892006-07-12 19:02:56 +10001381AC_CHECK_DECLS(SHUT_RD, , ,
1382 [
1383#include <sys/types.h>
1384#include <sys/socket.h>
1385 ])
Darren Tucker248469b2006-07-12 14:14:31 +10001386
1387AC_CHECK_DECLS(O_NONBLOCK, , ,
1388 [
1389#include <sys/types.h>
1390#ifdef HAVE_SYS_STAT_H
1391# include <sys/stat.h>
1392#endif
1393#ifdef HAVE_FCNTL_H
1394# include <fcntl.h>
1395#endif
1396 ])
1397
Darren Tuckered0b5922006-09-03 22:44:49 +10001398AC_CHECK_DECLS(writev, , , [
1399#include <sys/types.h>
1400#include <sys/uio.h>
1401#include <unistd.h>
1402 ])
1403
Darren Tucker6d862a52007-04-29 14:39:02 +10001404AC_CHECK_DECLS(MAXSYMLINKS, , , [
1405#include <sys/param.h>
1406 ])
1407
Darren Tuckerdca0edf2007-04-29 15:06:44 +10001408AC_CHECK_DECLS(offsetof, , , [
1409#include <stddef.h>
1410 ])
1411
Darren Tucker2a6b0292003-12-31 14:59:17 +11001412AC_CHECK_FUNCS(setresuid, [
1413 dnl Some platorms have setresuid that isn't implemented, test for this
1414 AC_MSG_CHECKING(if setresuid seems to work)
Darren Tucker623d92f2004-09-12 22:36:15 +10001415 AC_RUN_IFELSE(
1416 [AC_LANG_SOURCE([[
Darren Tuckere937be32003-12-17 18:53:26 +11001417#include <stdlib.h>
1418#include <errno.h>
1419int main(){errno=0; setresuid(0,0,0); if (errno==ENOSYS) exit(1); else exit(0);}
Darren Tucker623d92f2004-09-12 22:36:15 +10001420 ]])],
Darren Tucker2a6b0292003-12-31 14:59:17 +11001421 [AC_MSG_RESULT(yes)],
Tim Rice7df8d392005-09-19 09:33:39 -07001422 [AC_DEFINE(BROKEN_SETRESUID, 1,
1423 [Define if your setresuid() is broken])
Darren Tuckera0c2b392004-09-11 23:26:37 +10001424 AC_MSG_RESULT(not implemented)],
1425 [AC_MSG_WARN([cross compiling: not checking setresuid])]
Darren Tucker2a6b0292003-12-31 14:59:17 +11001426 )
1427])
Darren Tuckere937be32003-12-17 18:53:26 +11001428
Darren Tucker2a6b0292003-12-31 14:59:17 +11001429AC_CHECK_FUNCS(setresgid, [
1430 dnl Some platorms have setresgid that isn't implemented, test for this
1431 AC_MSG_CHECKING(if setresgid seems to work)
Darren Tucker623d92f2004-09-12 22:36:15 +10001432 AC_RUN_IFELSE(
1433 [AC_LANG_SOURCE([[
Darren Tuckere937be32003-12-17 18:53:26 +11001434#include <stdlib.h>
1435#include <errno.h>
1436int main(){errno=0; setresgid(0,0,0); if (errno==ENOSYS) exit(1); else exit(0);}
Darren Tucker623d92f2004-09-12 22:36:15 +10001437 ]])],
Darren Tucker2a6b0292003-12-31 14:59:17 +11001438 [AC_MSG_RESULT(yes)],
Tim Rice7df8d392005-09-19 09:33:39 -07001439 [AC_DEFINE(BROKEN_SETRESGID, 1,
1440 [Define if your setresgid() is broken])
Darren Tuckera0c2b392004-09-11 23:26:37 +10001441 AC_MSG_RESULT(not implemented)],
1442 [AC_MSG_WARN([cross compiling: not checking setresuid])]
Darren Tucker2a6b0292003-12-31 14:59:17 +11001443 )
1444])
Darren Tuckere937be32003-12-17 18:53:26 +11001445
Damien Millerad833b32000-08-23 10:46:23 +10001446dnl Checks for time functions
andre2ff7b5d2000-06-03 14:57:40 +00001447AC_CHECK_FUNCS(gettimeofday time)
Damien Millerad833b32000-08-23 10:46:23 +10001448dnl Checks for utmp functions
Ben Lindstrom2c467a22000-12-27 04:57:41 +00001449AC_CHECK_FUNCS(endutent getutent getutid getutline pututline setutent)
andre2ff7b5d2000-06-03 14:57:40 +00001450AC_CHECK_FUNCS(utmpname)
Damien Millerad833b32000-08-23 10:46:23 +10001451dnl Checks for utmpx functions
Ben Lindstrom2c467a22000-12-27 04:57:41 +00001452AC_CHECK_FUNCS(endutxent getutxent getutxid getutxline pututxline )
andre2ff7b5d2000-06-03 14:57:40 +00001453AC_CHECK_FUNCS(setutxent utmpxname)
Damien Millercedfecc1999-11-15 14:36:53 +11001454
Damien Millera8e06ce2003-11-21 23:48:55 +11001455AC_CHECK_FUNC(daemon,
Tim Rice7df8d392005-09-19 09:33:39 -07001456 [AC_DEFINE(HAVE_DAEMON, 1, [Define if your libraries define daemon()])],
1457 [AC_CHECK_LIB(bsd, daemon,
1458 [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_DAEMON)])]
Damien Miller04f80141999-11-19 15:32:34 +11001459)
1460
Damien Millera8e06ce2003-11-21 23:48:55 +11001461AC_CHECK_FUNC(getpagesize,
Tim Rice7df8d392005-09-19 09:33:39 -07001462 [AC_DEFINE(HAVE_GETPAGESIZE, 1,
1463 [Define if your libraries define getpagesize()])],
1464 [AC_CHECK_LIB(ucb, getpagesize,
1465 [LIBS="$LIBS -lucb"; AC_DEFINE(HAVE_GETPAGESIZE)])]
Damien Miller9fb07e42000-03-05 16:22:59 +11001466)
1467
Damien Millercb170cb2000-07-01 16:52:55 +10001468# Check for broken snprintf
1469if test "x$ac_cv_func_snprintf" = "xyes" ; then
1470 AC_MSG_CHECKING([whether snprintf correctly terminates long strings])
Darren Tuckera0c2b392004-09-11 23:26:37 +10001471 AC_RUN_IFELSE(
Darren Tucker623d92f2004-09-12 22:36:15 +10001472 [AC_LANG_SOURCE([[
Damien Millercb170cb2000-07-01 16:52:55 +10001473#include <stdio.h>
Tim Rice2c961ce2002-09-23 16:54:10 -07001474int main(void){char b[5];snprintf(b,5,"123456789");exit(b[4]!='\0');}
Darren Tucker623d92f2004-09-12 22:36:15 +10001475 ]])],
Damien Millera8e06ce2003-11-21 23:48:55 +11001476 [AC_MSG_RESULT(yes)],
Damien Millercb170cb2000-07-01 16:52:55 +10001477 [
1478 AC_MSG_RESULT(no)
Tim Rice7df8d392005-09-19 09:33:39 -07001479 AC_DEFINE(BROKEN_SNPRINTF, 1,
1480 [Define if your snprintf is busted])
Damien Millercb170cb2000-07-01 16:52:55 +10001481 AC_MSG_WARN([****** Your snprintf() function is broken, complain to your vendor])
Darren Tuckera0c2b392004-09-11 23:26:37 +10001482 ],
1483 [ AC_MSG_WARN([cross compiling: Assuming working snprintf()]) ]
Damien Millercb170cb2000-07-01 16:52:55 +10001484 )
1485fi
1486
Damien Miller57f39152005-11-24 19:58:19 +11001487# If we don't have a working asprintf, then we strongly depend on vsnprintf
1488# returning the right thing on overflow: the number of characters it tried to
1489# create (as per SUSv3)
1490if test "x$ac_cv_func_asprintf" != "xyes" && \
1491 test "x$ac_cv_func_vsnprintf" = "xyes" ; then
1492 AC_MSG_CHECKING([whether vsnprintf returns correct values on overflow])
1493 AC_RUN_IFELSE(
1494 [AC_LANG_SOURCE([[
1495#include <sys/types.h>
1496#include <stdio.h>
1497#include <stdarg.h>
1498
1499int x_snprintf(char *str,size_t count,const char *fmt,...)
1500{
1501 size_t ret; va_list ap;
1502 va_start(ap, fmt); ret = vsnprintf(str, count, fmt, ap); va_end(ap);
1503 return ret;
1504}
1505int main(void)
1506{
1507 char x[1];
1508 exit(x_snprintf(x, 1, "%s %d", "hello", 12345) == 11 ? 0 : 1);
1509} ]])],
1510 [AC_MSG_RESULT(yes)],
1511 [
1512 AC_MSG_RESULT(no)
1513 AC_DEFINE(BROKEN_SNPRINTF, 1,
1514 [Define if your snprintf is busted])
1515 AC_MSG_WARN([****** Your vsnprintf() function is broken, complain to your vendor])
1516 ],
1517 [ AC_MSG_WARN([cross compiling: Assuming working vsnprintf()]) ]
1518 )
1519fi
1520
Darren Tuckerd40c66c2005-12-17 22:32:03 +11001521# On systems where [v]snprintf is broken, but is declared in stdio,
1522# check that the fmt argument is const char * or just char *.
1523# This is only useful for when BROKEN_SNPRINTF
1524AC_MSG_CHECKING([whether snprintf can declare const char *fmt])
1525AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
1526 int snprintf(char *a, size_t b, const char *c, ...) { return 0; }
1527 int main(void) { snprintf(0, 0, 0); }
1528 ]])],
1529 [AC_MSG_RESULT(yes)
1530 AC_DEFINE(SNPRINTF_CONST, [const],
1531 [Define as const if snprintf() can declare const char *fmt])],
1532 [AC_MSG_RESULT(no)
1533 AC_DEFINE(SNPRINTF_CONST, [/* not const */])])
1534
Damien Millerb4097182004-05-23 14:09:40 +10001535# Check for missing getpeereid (or equiv) support
1536NO_PEERCHECK=""
Darren Tucker164aa302007-03-21 21:39:57 +11001537if test "x$ac_cv_func_getpeereid" != "xyes" -a "x$ac_cv_func_getpeerucred" != "xyes"; then
Damien Millerb4097182004-05-23 14:09:40 +10001538 AC_MSG_CHECKING([whether system supports SO_PEERCRED getsockopt])
1539 AC_TRY_COMPILE(
1540 [#include <sys/types.h>
1541 #include <sys/socket.h>],
1542 [int i = SO_PEERCRED;],
Darren Tucker9d2562c2005-04-05 19:22:45 +10001543 [ AC_MSG_RESULT(yes)
Tim Rice7df8d392005-09-19 09:33:39 -07001544 AC_DEFINE(HAVE_SO_PEERCRED, 1, [Have PEERCRED socket option])
Darren Tucker9d2562c2005-04-05 19:22:45 +10001545 ],
Damien Millerb4097182004-05-23 14:09:40 +10001546 [AC_MSG_RESULT(no)
1547 NO_PEERCHECK=1]
1548 )
1549fi
1550
Damien Millere8328192003-01-07 15:18:32 +11001551dnl see whether mkstemp() requires XXXXXX
1552if test "x$ac_cv_func_mkdtemp" = "xyes" ; then
1553AC_MSG_CHECKING([for (overly) strict mkstemp])
Darren Tucker314d89e2005-10-17 23:29:23 +10001554AC_RUN_IFELSE(
1555 [AC_LANG_SOURCE([[
Damien Millere8328192003-01-07 15:18:32 +11001556#include <stdlib.h>
1557main() { char template[]="conftest.mkstemp-test";
1558if (mkstemp(template) == -1)
1559 exit(1);
1560unlink(template); exit(0);
1561}
Darren Tucker314d89e2005-10-17 23:29:23 +10001562 ]])],
Damien Millere8328192003-01-07 15:18:32 +11001563 [
1564 AC_MSG_RESULT(no)
1565 ],
Damien Millera8e06ce2003-11-21 23:48:55 +11001566 [
Damien Millere8328192003-01-07 15:18:32 +11001567 AC_MSG_RESULT(yes)
Tim Rice7df8d392005-09-19 09:33:39 -07001568 AC_DEFINE(HAVE_STRICT_MKSTEMP, 1, [Silly mkstemp()])
Damien Millere8328192003-01-07 15:18:32 +11001569 ],
1570 [
1571 AC_MSG_RESULT(yes)
1572 AC_DEFINE(HAVE_STRICT_MKSTEMP)
Damien Millera8e06ce2003-11-21 23:48:55 +11001573 ]
Damien Millere8328192003-01-07 15:18:32 +11001574)
1575fi
1576
Darren Tucker70a3d552003-08-21 17:58:29 +10001577dnl make sure that openpty does not reacquire controlling terminal
1578if test ! -z "$check_for_openpty_ctty_bug"; then
1579 AC_MSG_CHECKING(if openpty correctly handles controlling tty)
Darren Tucker314d89e2005-10-17 23:29:23 +10001580 AC_RUN_IFELSE(
1581 [AC_LANG_SOURCE([[
Darren Tucker70a3d552003-08-21 17:58:29 +10001582#include <stdio.h>
1583#include <sys/fcntl.h>
1584#include <sys/types.h>
1585#include <sys/wait.h>
1586
1587int
1588main()
1589{
1590 pid_t pid;
1591 int fd, ptyfd, ttyfd, status;
1592
1593 pid = fork();
1594 if (pid < 0) { /* failed */
1595 exit(1);
1596 } else if (pid > 0) { /* parent */
1597 waitpid(pid, &status, 0);
Damien Millera8e06ce2003-11-21 23:48:55 +11001598 if (WIFEXITED(status))
Darren Tucker70a3d552003-08-21 17:58:29 +10001599 exit(WEXITSTATUS(status));
1600 else
1601 exit(2);
1602 } else { /* child */
1603 close(0); close(1); close(2);
1604 setsid();
1605 openpty(&ptyfd, &ttyfd, NULL, NULL, NULL);
1606 fd = open("/dev/tty", O_RDWR | O_NOCTTY);
1607 if (fd >= 0)
1608 exit(3); /* Acquired ctty: broken */
1609 else
1610 exit(0); /* Did not acquire ctty: OK */
1611 }
1612}
Darren Tucker314d89e2005-10-17 23:29:23 +10001613 ]])],
Darren Tucker70a3d552003-08-21 17:58:29 +10001614 [
1615 AC_MSG_RESULT(yes)
1616 ],
1617 [
1618 AC_MSG_RESULT(no)
1619 AC_DEFINE(SSHD_ACQUIRES_CTTY)
Darren Tucker314d89e2005-10-17 23:29:23 +10001620 ],
1621 [
1622 AC_MSG_RESULT(cross-compiling, assuming yes)
Darren Tucker70a3d552003-08-21 17:58:29 +10001623 ]
1624 )
1625fi
1626
Tim Rice8bb561b2005-03-17 16:23:19 -08001627if test "x$ac_cv_func_getaddrinfo" = "xyes" && \
1628 test "x$check_for_hpux_broken_getaddrinfo" = "x1"; then
Darren Tucker4398cf52004-04-06 21:39:02 +10001629 AC_MSG_CHECKING(if getaddrinfo seems to work)
Darren Tucker314d89e2005-10-17 23:29:23 +10001630 AC_RUN_IFELSE(
1631 [AC_LANG_SOURCE([[
Darren Tucker4398cf52004-04-06 21:39:02 +10001632#include <stdio.h>
1633#include <sys/socket.h>
1634#include <netdb.h>
1635#include <errno.h>
1636#include <netinet/in.h>
1637
1638#define TEST_PORT "2222"
1639
1640int
1641main(void)
1642{
1643 int err, sock;
1644 struct addrinfo *gai_ai, *ai, hints;
1645 char ntop[NI_MAXHOST], strport[NI_MAXSERV], *name = NULL;
1646
1647 memset(&hints, 0, sizeof(hints));
1648 hints.ai_family = PF_UNSPEC;
1649 hints.ai_socktype = SOCK_STREAM;
1650 hints.ai_flags = AI_PASSIVE;
1651
1652 err = getaddrinfo(name, TEST_PORT, &hints, &gai_ai);
1653 if (err != 0) {
1654 fprintf(stderr, "getaddrinfo failed (%s)", gai_strerror(err));
1655 exit(1);
1656 }
1657
1658 for (ai = gai_ai; ai != NULL; ai = ai->ai_next) {
1659 if (ai->ai_family != AF_INET6)
1660 continue;
1661
1662 err = getnameinfo(ai->ai_addr, ai->ai_addrlen, ntop,
1663 sizeof(ntop), strport, sizeof(strport),
1664 NI_NUMERICHOST|NI_NUMERICSERV);
1665
1666 if (err != 0) {
1667 if (err == EAI_SYSTEM)
1668 perror("getnameinfo EAI_SYSTEM");
1669 else
1670 fprintf(stderr, "getnameinfo failed: %s\n",
1671 gai_strerror(err));
1672 exit(2);
1673 }
1674
1675 sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
1676 if (sock < 0)
1677 perror("socket");
1678 if (bind(sock, ai->ai_addr, ai->ai_addrlen) < 0) {
1679 if (errno == EBADF)
1680 exit(3);
1681 }
1682 }
1683 exit(0);
1684}
Darren Tucker314d89e2005-10-17 23:29:23 +10001685 ]])],
Darren Tucker4398cf52004-04-06 21:39:02 +10001686 [
1687 AC_MSG_RESULT(yes)
1688 ],
1689 [
1690 AC_MSG_RESULT(no)
1691 AC_DEFINE(BROKEN_GETADDRINFO)
Darren Tucker314d89e2005-10-17 23:29:23 +10001692 ],
1693 [
1694 AC_MSG_RESULT(cross-compiling, assuming yes)
Darren Tucker4398cf52004-04-06 21:39:02 +10001695 ]
1696 )
1697fi
1698
Tim Rice8bb561b2005-03-17 16:23:19 -08001699if test "x$ac_cv_func_getaddrinfo" = "xyes" && \
1700 test "x$check_for_aix_broken_getaddrinfo" = "x1"; then
Darren Tucker691d5232005-02-15 21:45:57 +11001701 AC_MSG_CHECKING(if getaddrinfo seems to work)
Darren Tucker314d89e2005-10-17 23:29:23 +10001702 AC_RUN_IFELSE(
1703 [AC_LANG_SOURCE([[
Darren Tucker691d5232005-02-15 21:45:57 +11001704#include <stdio.h>
1705#include <sys/socket.h>
1706#include <netdb.h>
1707#include <errno.h>
1708#include <netinet/in.h>
1709
1710#define TEST_PORT "2222"
1711
1712int
1713main(void)
1714{
1715 int err, sock;
1716 struct addrinfo *gai_ai, *ai, hints;
1717 char ntop[NI_MAXHOST], strport[NI_MAXSERV], *name = NULL;
1718
1719 memset(&hints, 0, sizeof(hints));
1720 hints.ai_family = PF_UNSPEC;
1721 hints.ai_socktype = SOCK_STREAM;
1722 hints.ai_flags = AI_PASSIVE;
1723
1724 err = getaddrinfo(name, TEST_PORT, &hints, &gai_ai);
1725 if (err != 0) {
1726 fprintf(stderr, "getaddrinfo failed (%s)", gai_strerror(err));
1727 exit(1);
1728 }
1729
1730 for (ai = gai_ai; ai != NULL; ai = ai->ai_next) {
1731 if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6)
1732 continue;
1733
1734 err = getnameinfo(ai->ai_addr, ai->ai_addrlen, ntop,
1735 sizeof(ntop), strport, sizeof(strport),
1736 NI_NUMERICHOST|NI_NUMERICSERV);
1737
1738 if (ai->ai_family == AF_INET && err != 0) {
1739 perror("getnameinfo");
1740 exit(2);
1741 }
1742 }
1743 exit(0);
1744}
Darren Tucker314d89e2005-10-17 23:29:23 +10001745 ]])],
Darren Tucker691d5232005-02-15 21:45:57 +11001746 [
1747 AC_MSG_RESULT(yes)
Tim Rice7df8d392005-09-19 09:33:39 -07001748 AC_DEFINE(AIX_GETNAMEINFO_HACK, 1,
1749 [Define if you have a getaddrinfo that fails
1750 for the all-zeros IPv6 address])
Darren Tucker691d5232005-02-15 21:45:57 +11001751 ],
1752 [
1753 AC_MSG_RESULT(no)
1754 AC_DEFINE(BROKEN_GETADDRINFO)
Darren Tucker314d89e2005-10-17 23:29:23 +10001755 ],
Darren Tucker8b272ab2006-06-27 11:20:28 +10001756 [
Darren Tucker314d89e2005-10-17 23:29:23 +10001757 AC_MSG_RESULT(cross-compiling, assuming no)
Darren Tucker691d5232005-02-15 21:45:57 +11001758 ]
1759 )
1760fi
1761
Darren Tuckera56f1912004-11-02 20:30:54 +11001762if test "x$check_for_conflicting_getspnam" = "x1"; then
1763 AC_MSG_CHECKING(for conflicting getspnam in shadow.h)
1764 AC_COMPILE_IFELSE(
1765 [
1766#include <shadow.h>
1767int main(void) {exit(0);}
1768 ],
1769 [
1770 AC_MSG_RESULT(no)
1771 ],
1772 [
1773 AC_MSG_RESULT(yes)
1774 AC_DEFINE(GETSPNAM_CONFLICTING_DEFS, 1,
1775 [Conflicting defs for getspnam])
1776 ]
1777 )
1778fi
1779
Damien Miller606f8802000-09-16 15:39:56 +11001780AC_FUNC_GETPGRP
1781
Tim Riceaef73712002-05-11 13:17:42 -07001782# Search for OpenSSL
1783saved_CPPFLAGS="$CPPFLAGS"
1784saved_LDFLAGS="$LDFLAGS"
Damien Millera22ba012000-03-02 23:09:20 +11001785AC_ARG_WITH(ssl-dir,
1786 [ --with-ssl-dir=PATH Specify path to OpenSSL installation ],
1787 [
Ben Lindstrom23e13712000-10-29 22:49:19 +00001788 if test "x$withval" != "xno" ; then
Darren Tuckerc7e38d52005-02-09 22:12:30 +11001789 case "$withval" in
1790 # Relative paths
1791 ./*|../*) withval="`pwd`/$withval"
1792 esac
Tim Riceaef73712002-05-11 13:17:42 -07001793 if test -d "$withval/lib"; then
1794 if test -n "${need_dash_r}"; then
1795 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
1796 else
1797 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
1798 fi
1799 else
1800 if test -n "${need_dash_r}"; then
1801 LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
1802 else
1803 LDFLAGS="-L${withval} ${LDFLAGS}"
1804 fi
1805 fi
1806 if test -d "$withval/include"; then
1807 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
1808 else
1809 CPPFLAGS="-I${withval} ${CPPFLAGS}"
1810 fi
Damien Millera22ba012000-03-02 23:09:20 +11001811 fi
1812 ]
1813)
Tim Rice3d5352e2004-02-12 09:27:21 -08001814LIBS="-lcrypto $LIBS"
Tim Rice7df8d392005-09-19 09:33:39 -07001815AC_TRY_LINK_FUNC(RAND_add, AC_DEFINE(HAVE_OPENSSL, 1,
1816 [Define if your ssl headers are included
1817 with #include <openssl/header.h>]),
Damien Miller3b512e12000-05-17 23:29:18 +10001818 [
Tim Riceaef73712002-05-11 13:17:42 -07001819 dnl Check default openssl install dir
1820 if test -n "${need_dash_r}"; then
1821 LDFLAGS="-L/usr/local/ssl/lib -R/usr/local/ssl/lib ${saved_LDFLAGS}"
Damien Miller3b512e12000-05-17 23:29:18 +10001822 else
Tim Riceaef73712002-05-11 13:17:42 -07001823 LDFLAGS="-L/usr/local/ssl/lib ${saved_LDFLAGS}"
Damien Miller3b512e12000-05-17 23:29:18 +10001824 fi
Tim Riceaef73712002-05-11 13:17:42 -07001825 CPPFLAGS="-I/usr/local/ssl/include ${saved_CPPFLAGS}"
1826 AC_TRY_LINK_FUNC(RAND_add, AC_DEFINE(HAVE_OPENSSL),
1827 [
1828 AC_MSG_ERROR([*** Can't find recent OpenSSL libcrypto (see config.log for details) ***])
1829 ]
1830 )
1831 ]
1832)
1833
Tim Riced730b782002-08-13 18:52:10 -07001834# Determine OpenSSL header version
1835AC_MSG_CHECKING([OpenSSL header version])
Darren Tuckera0c2b392004-09-11 23:26:37 +10001836AC_RUN_IFELSE(
Darren Tucker623d92f2004-09-12 22:36:15 +10001837 [AC_LANG_SOURCE([[
Tim Riced730b782002-08-13 18:52:10 -07001838#include <stdio.h>
1839#include <string.h>
1840#include <openssl/opensslv.h>
1841#define DATA "conftest.sslincver"
1842int main(void) {
Damien Millera8e06ce2003-11-21 23:48:55 +11001843 FILE *fd;
1844 int rc;
Tim Riced730b782002-08-13 18:52:10 -07001845
Damien Millera8e06ce2003-11-21 23:48:55 +11001846 fd = fopen(DATA,"w");
1847 if(fd == NULL)
1848 exit(1);
Tim Riced730b782002-08-13 18:52:10 -07001849
1850 if ((rc = fprintf(fd ,"%x (%s)\n", OPENSSL_VERSION_NUMBER, OPENSSL_VERSION_TEXT)) <0)
1851 exit(1);
1852
1853 exit(0);
1854}
Darren Tucker623d92f2004-09-12 22:36:15 +10001855 ]])],
Tim Riced730b782002-08-13 18:52:10 -07001856 [
1857 ssl_header_ver=`cat conftest.sslincver`
1858 AC_MSG_RESULT($ssl_header_ver)
1859 ],
1860 [
1861 AC_MSG_RESULT(not found)
1862 AC_MSG_ERROR(OpenSSL version header not found.)
Darren Tuckera0c2b392004-09-11 23:26:37 +10001863 ],
1864 [
1865 AC_MSG_WARN([cross compiling: not checking])
Tim Riced730b782002-08-13 18:52:10 -07001866 ]
1867)
1868
1869# Determine OpenSSL library version
1870AC_MSG_CHECKING([OpenSSL library version])
Darren Tuckera0c2b392004-09-11 23:26:37 +10001871AC_RUN_IFELSE(
Darren Tucker623d92f2004-09-12 22:36:15 +10001872 [AC_LANG_SOURCE([[
Tim Riced730b782002-08-13 18:52:10 -07001873#include <stdio.h>
1874#include <string.h>
1875#include <openssl/opensslv.h>
1876#include <openssl/crypto.h>
1877#define DATA "conftest.ssllibver"
1878int main(void) {
Damien Millera8e06ce2003-11-21 23:48:55 +11001879 FILE *fd;
1880 int rc;
Tim Riced730b782002-08-13 18:52:10 -07001881
Damien Millera8e06ce2003-11-21 23:48:55 +11001882 fd = fopen(DATA,"w");
1883 if(fd == NULL)
1884 exit(1);
Tim Riced730b782002-08-13 18:52:10 -07001885
1886 if ((rc = fprintf(fd ,"%x (%s)\n", SSLeay(), SSLeay_version(SSLEAY_VERSION))) <0)
1887 exit(1);
1888
1889 exit(0);
1890}
Darren Tucker623d92f2004-09-12 22:36:15 +10001891 ]])],
Tim Riced730b782002-08-13 18:52:10 -07001892 [
1893 ssl_library_ver=`cat conftest.ssllibver`
1894 AC_MSG_RESULT($ssl_library_ver)
1895 ],
1896 [
1897 AC_MSG_RESULT(not found)
1898 AC_MSG_ERROR(OpenSSL library not found.)
Darren Tuckera0c2b392004-09-11 23:26:37 +10001899 ],
1900 [
1901 AC_MSG_WARN([cross compiling: not checking])
Tim Riced730b782002-08-13 18:52:10 -07001902 ]
1903)
Damien Millera22ba012000-03-02 23:09:20 +11001904
Damien Miller9975e482007-03-05 11:51:27 +11001905AC_ARG_WITH(openssl-header-check,
1906 [ --without-openssl-header-check Disable OpenSSL version consistency check],
1907 [ if test "x$withval" = "xno" ; then
1908 openssl_check_nonfatal=1
1909 fi
1910 ]
1911)
1912
Damien Millerec932372002-01-22 22:16:03 +11001913# Sanity check OpenSSL headers
1914AC_MSG_CHECKING([whether OpenSSL's headers match the library])
Darren Tuckera0c2b392004-09-11 23:26:37 +10001915AC_RUN_IFELSE(
Darren Tucker623d92f2004-09-12 22:36:15 +10001916 [AC_LANG_SOURCE([[
Damien Millerec932372002-01-22 22:16:03 +11001917#include <string.h>
1918#include <openssl/opensslv.h>
Tim Rice2c961ce2002-09-23 16:54:10 -07001919int main(void) { exit(SSLeay() == OPENSSL_VERSION_NUMBER ? 0 : 1); }
Darren Tucker623d92f2004-09-12 22:36:15 +10001920 ]])],
Damien Millerec932372002-01-22 22:16:03 +11001921 [
1922 AC_MSG_RESULT(yes)
1923 ],
1924 [
1925 AC_MSG_RESULT(no)
Damien Miller9975e482007-03-05 11:51:27 +11001926 if test "x$openssl_check_nonfatal" = "x"; then
1927 AC_MSG_ERROR([Your OpenSSL headers do not match your
1928library. Check config.log for details.
1929If you are sure your installation is consistent, you can disable the check
1930by running "./configure --without-openssl-header-check".
1931Also see contrib/findssl.sh for help identifying header/library mismatches.
1932])
1933 else
1934 AC_MSG_WARN([Your OpenSSL headers do not match your
1935library. Check config.log for details.
Darren Tuckera0472e02003-06-24 20:22:09 +10001936Also see contrib/findssl.sh for help identifying header/library mismatches.])
Damien Miller9975e482007-03-05 11:51:27 +11001937 fi
Darren Tuckera0c2b392004-09-11 23:26:37 +10001938 ],
1939 [
1940 AC_MSG_WARN([cross compiling: not checking])
Damien Millerec932372002-01-22 22:16:03 +11001941 ]
1942)
1943
Darren Tucker639bbe82006-08-20 20:17:53 +10001944AC_MSG_CHECKING([if programs using OpenSSL functions will link])
1945AC_LINK_IFELSE(
1946 [AC_LANG_SOURCE([[
1947#include <openssl/evp.h>
1948int main(void) { SSLeay_add_all_algorithms(); }
1949 ]])],
1950 [
1951 AC_MSG_RESULT(yes)
1952 ],
1953 [
1954 AC_MSG_RESULT(no)
1955 saved_LIBS="$LIBS"
1956 LIBS="$LIBS -ldl"
1957 AC_MSG_CHECKING([if programs using OpenSSL need -ldl])
1958 AC_LINK_IFELSE(
1959 [AC_LANG_SOURCE([[
1960#include <openssl/evp.h>
1961int main(void) { SSLeay_add_all_algorithms(); }
1962 ]])],
1963 [
1964 AC_MSG_RESULT(yes)
1965 ],
1966 [
1967 AC_MSG_RESULT(no)
1968 LIBS="$saved_LIBS"
1969 ]
1970 )
1971 ]
1972)
1973
Darren Tuckerfabdb6c2006-02-20 20:17:35 +11001974AC_ARG_WITH(ssl-engine,
1975 [ --with-ssl-engine Enable OpenSSL (hardware) ENGINE support ],
1976 [ if test "x$withval" != "xno" ; then
1977 AC_MSG_CHECKING(for OpenSSL ENGINE support)
1978 AC_TRY_COMPILE(
1979 [ #include <openssl/engine.h>],
1980 [
Darren Tucker5e8381e2006-09-29 20:16:51 +10001981ENGINE_load_builtin_engines();ENGINE_register_all_complete();
Darren Tuckerfabdb6c2006-02-20 20:17:35 +11001982 ],
1983 [ AC_MSG_RESULT(yes)
1984 AC_DEFINE(USE_OPENSSL_ENGINE, 1,
1985 [Enable OpenSSL engine support])
1986 ],
1987 [ AC_MSG_ERROR(OpenSSL ENGINE support not found)]
1988 )
1989 fi ]
1990)
1991
Darren Tucker129d0bb2005-12-19 17:40:40 +11001992# Check for OpenSSL without EVP_aes_{192,256}_cbc
1993AC_MSG_CHECKING([whether OpenSSL has crippled AES support])
Darren Tuckerf1f4bdd2006-08-04 19:44:23 +10001994AC_LINK_IFELSE(
Darren Tucker129d0bb2005-12-19 17:40:40 +11001995 [AC_LANG_SOURCE([[
1996#include <string.h>
1997#include <openssl/evp.h>
Darren Tuckercc7c2122006-02-02 18:44:19 +11001998int main(void) { exit(EVP_aes_192_cbc() == NULL || EVP_aes_256_cbc() == NULL);}
Darren Tucker129d0bb2005-12-19 17:40:40 +11001999 ]])],
2000 [
2001 AC_MSG_RESULT(no)
2002 ],
2003 [
2004 AC_MSG_RESULT(yes)
2005 AC_DEFINE(OPENSSL_LOBOTOMISED_AES, 1,
2006 [libcrypto is missing AES 192 and 256 bit functions])
2007 ]
2008)
2009
Tim Rice3d5352e2004-02-12 09:27:21 -08002010# Some systems want crypt() from libcrypt, *not* the version in OpenSSL,
2011# because the system crypt() is more featureful.
2012if test "x$check_for_libcrypt_before" = "x1"; then
2013 AC_CHECK_LIB(crypt, crypt)
2014fi
2015
Damien Millera8e06ce2003-11-21 23:48:55 +11002016# Some Linux systems (Slackware) need crypt() from libcrypt, *not* the
Tim Rice43fa5572004-02-11 14:46:40 -08002017# version in OpenSSL.
Damien Miller4f9f42a2003-05-10 19:28:02 +10002018if test "x$check_for_libcrypt_later" = "x1"; then
Damien Miller95aa2d62001-03-01 09:16:11 +11002019 AC_CHECK_LIB(crypt, crypt, LIBS="$LIBS -lcrypt")
Damien Millera64b57a2001-01-17 10:44:13 +11002020fi
2021
Damien Milleraf87af12006-03-15 13:02:28 +11002022# Search for SHA256 support in libc and/or OpenSSL
2023AC_CHECK_FUNCS(SHA256_Update EVP_sha256)
2024
Tim Rice99203ec2007-03-26 09:35:28 -07002025saved_LIBS="$LIBS"
2026AC_CHECK_LIB(iaf, ia_openinfo, [
2027 LIBS="$LIBS -liaf"
Tim Rice0eeaf122007-09-10 16:24:17 -07002028 AC_CHECK_FUNCS(set_id, [SSHDLIBS="$SSHDLIBS -liaf"
2029 AC_DEFINE(HAVE_LIBIAF, 1,
2030 [Define if system has libiaf that supports set_id])
2031 ])
Tim Rice99203ec2007-03-26 09:35:28 -07002032])
2033LIBS="$saved_LIBS"
Damien Miller6c21c512002-01-22 21:57:53 +11002034
2035### Configure cryptographic random number support
2036
2037# Check wheter OpenSSL seeds itself
2038AC_MSG_CHECKING([whether OpenSSL's PRNG is internally seeded])
Darren Tuckera0c2b392004-09-11 23:26:37 +10002039AC_RUN_IFELSE(
Darren Tucker623d92f2004-09-12 22:36:15 +10002040 [AC_LANG_SOURCE([[
Damien Miller6c21c512002-01-22 21:57:53 +11002041#include <string.h>
2042#include <openssl/rand.h>
Tim Rice2c961ce2002-09-23 16:54:10 -07002043int main(void) { exit(RAND_status() == 1 ? 0 : 1); }
Darren Tucker623d92f2004-09-12 22:36:15 +10002044 ]])],
Damien Miller6c21c512002-01-22 21:57:53 +11002045 [
2046 OPENSSL_SEEDS_ITSELF=yes
2047 AC_MSG_RESULT(yes)
2048 ],
2049 [
2050 AC_MSG_RESULT(no)
2051 # Default to use of the rand helper if OpenSSL doesn't
2052 # seed itself
2053 USE_RAND_HELPER=yes
Darren Tuckera0c2b392004-09-11 23:26:37 +10002054 ],
2055 [
2056 AC_MSG_WARN([cross compiling: assuming yes])
2057 # This is safe, since all recent OpenSSL versions will
Tim Riceeae17cc2005-03-17 16:52:20 -08002058 # complain at runtime if not seeded correctly.
Darren Tuckera0c2b392004-09-11 23:26:37 +10002059 OPENSSL_SEEDS_ITSELF=yes
Damien Miller6c21c512002-01-22 21:57:53 +11002060 ]
2061)
2062
Darren Tucker3e6bde42006-08-20 20:03:50 +10002063# Check for PAM libs
2064PAM_MSG="no"
2065AC_ARG_WITH(pam,
2066 [ --with-pam Enable PAM support ],
2067 [
2068 if test "x$withval" != "xno" ; then
2069 if test "x$ac_cv_header_security_pam_appl_h" != "xyes" && \
2070 test "x$ac_cv_header_pam_pam_appl_h" != "xyes" ; then
2071 AC_MSG_ERROR([PAM headers not found])
2072 fi
2073
2074 saved_LIBS="$LIBS"
2075 AC_CHECK_LIB(dl, dlopen, , )
2076 AC_CHECK_LIB(pam, pam_set_item, , AC_MSG_ERROR([*** libpam missing]))
2077 AC_CHECK_FUNCS(pam_getenvlist)
2078 AC_CHECK_FUNCS(pam_putenv)
2079 LIBS="$saved_LIBS"
2080
2081 PAM_MSG="yes"
2082
Darren Tucker20e9f972007-03-25 18:26:01 +10002083 SSHDLIBS="$SSHDLIBS -lpam"
Darren Tucker3e6bde42006-08-20 20:03:50 +10002084 AC_DEFINE(USE_PAM, 1,
2085 [Define if you want to enable PAM support])
Darren Tucker639bbe82006-08-20 20:17:53 +10002086
Darren Tucker3e6bde42006-08-20 20:03:50 +10002087 if test $ac_cv_lib_dl_dlopen = yes; then
Darren Tucker639bbe82006-08-20 20:17:53 +10002088 case "$LIBS" in
2089 *-ldl*)
2090 # libdl already in LIBS
2091 ;;
2092 *)
Darren Tucker20e9f972007-03-25 18:26:01 +10002093 SSHDLIBS="$SSHDLIBS -ldl"
Darren Tucker639bbe82006-08-20 20:17:53 +10002094 ;;
2095 esac
Darren Tucker3e6bde42006-08-20 20:03:50 +10002096 fi
Darren Tucker3e6bde42006-08-20 20:03:50 +10002097 fi
2098 ]
2099)
2100
2101# Check for older PAM
2102if test "x$PAM_MSG" = "xyes" ; then
2103 # Check PAM strerror arguments (old PAM)
2104 AC_MSG_CHECKING([whether pam_strerror takes only one argument])
2105 AC_TRY_COMPILE(
2106 [
2107#include <stdlib.h>
2108#if defined(HAVE_SECURITY_PAM_APPL_H)
2109#include <security/pam_appl.h>
2110#elif defined (HAVE_PAM_PAM_APPL_H)
2111#include <pam/pam_appl.h>
2112#endif
2113 ],
2114 [(void)pam_strerror((pam_handle_t *)NULL, -1);],
2115 [AC_MSG_RESULT(no)],
2116 [
2117 AC_DEFINE(HAVE_OLD_PAM, 1,
2118 [Define if you have an old version of PAM
2119 which takes only one argument to pam_strerror])
2120 AC_MSG_RESULT(yes)
2121 PAM_MSG="yes (old library)"
2122 ]
2123 )
2124fi
Damien Miller6c21c512002-01-22 21:57:53 +11002125
2126# Do we want to force the use of the rand helper?
2127AC_ARG_WITH(rand-helper,
2128 [ --with-rand-helper Use subprocess to gather strong randomness ],
2129 [
2130 if test "x$withval" = "xno" ; then
Damien Millera8e06ce2003-11-21 23:48:55 +11002131 # Force use of OpenSSL's internal RNG, even if
Damien Miller6c21c512002-01-22 21:57:53 +11002132 # the previous test showed it to be unseeded.
2133 if test -z "$OPENSSL_SEEDS_ITSELF" ; then
2134 AC_MSG_WARN([*** Forcing use of OpenSSL's non-self-seeding PRNG])
2135 OPENSSL_SEEDS_ITSELF=yes
2136 USE_RAND_HELPER=""
2137 fi
2138 else
2139 USE_RAND_HELPER=yes
2140 fi
2141 ],
Tim Riceeae17cc2005-03-17 16:52:20 -08002142)
Damien Miller6c21c512002-01-22 21:57:53 +11002143
2144# Which randomness source do we use?
Tim Rice8bb561b2005-03-17 16:23:19 -08002145if test ! -z "$OPENSSL_SEEDS_ITSELF" && test -z "$USE_RAND_HELPER" ; then
Damien Miller6c21c512002-01-22 21:57:53 +11002146 # OpenSSL only
Tim Rice7df8d392005-09-19 09:33:39 -07002147 AC_DEFINE(OPENSSL_PRNG_ONLY, 1,
2148 [Define if you want OpenSSL's internally seeded PRNG only])
Damien Miller6c21c512002-01-22 21:57:53 +11002149 RAND_MSG="OpenSSL internal ONLY"
2150 INSTALL_SSH_RAND_HELPER=""
Tim Rice1e2c6002002-01-30 22:14:03 -08002151elif test ! -z "$USE_RAND_HELPER" ; then
2152 # install rand helper
Damien Miller6c21c512002-01-22 21:57:53 +11002153 RAND_MSG="ssh-rand-helper"
2154 INSTALL_SSH_RAND_HELPER="yes"
2155fi
2156AC_SUBST(INSTALL_SSH_RAND_HELPER)
2157
2158### Configuration of ssh-rand-helper
2159
2160# PRNGD TCP socket
2161AC_ARG_WITH(prngd-port,
2162 [ --with-prngd-port=PORT read entropy from PRNGD/EGD TCP localhost:PORT],
2163 [
Damien Millere996d722002-01-23 11:20:59 +11002164 case "$withval" in
2165 no)
2166 withval=""
2167 ;;
2168 [[0-9]]*)
2169 ;;
2170 *)
2171 AC_MSG_ERROR(You must specify a numeric port number for --with-prngd-port)
2172 ;;
2173 esac
2174 if test ! -z "$withval" ; then
Damien Miller6c21c512002-01-22 21:57:53 +11002175 PRNGD_PORT="$withval"
Tim Rice7df8d392005-09-19 09:33:39 -07002176 AC_DEFINE_UNQUOTED(PRNGD_PORT, $PRNGD_PORT,
2177 [Port number of PRNGD/EGD random number socket])
Damien Miller6c21c512002-01-22 21:57:53 +11002178 fi
2179 ]
2180)
2181
2182# PRNGD Unix domain socket
2183AC_ARG_WITH(prngd-socket,
2184 [ --with-prngd-socket=FILE read entropy from PRNGD/EGD socket FILE (default=/var/run/egd-pool)],
2185 [
Damien Millere996d722002-01-23 11:20:59 +11002186 case "$withval" in
2187 yes)
Damien Miller6c21c512002-01-22 21:57:53 +11002188 withval="/var/run/egd-pool"
Damien Millere996d722002-01-23 11:20:59 +11002189 ;;
2190 no)
2191 withval=""
2192 ;;
2193 /*)
2194 ;;
2195 *)
2196 AC_MSG_ERROR(You must specify an absolute path to the entropy socket)
2197 ;;
2198 esac
2199
2200 if test ! -z "$withval" ; then
Damien Miller6c21c512002-01-22 21:57:53 +11002201 if test ! -z "$PRNGD_PORT" ; then
2202 AC_MSG_ERROR(You may not specify both a PRNGD/EGD port and socket)
2203 fi
Damien Miller6385ba02002-01-23 08:12:36 +11002204 if test ! -r "$withval" ; then
Damien Miller6c21c512002-01-22 21:57:53 +11002205 AC_MSG_WARN(Entropy socket is not readable)
2206 fi
2207 PRNGD_SOCKET="$withval"
Tim Rice7df8d392005-09-19 09:33:39 -07002208 AC_DEFINE_UNQUOTED(PRNGD_SOCKET, "$PRNGD_SOCKET",
2209 [Location of PRNGD/EGD random number socket])
Damien Miller6c21c512002-01-22 21:57:53 +11002210 fi
Tim Rice4cec93f2002-02-26 08:40:48 -08002211 ],
2212 [
2213 # Check for existing socket only if we don't have a random device already
2214 if test "$USE_RAND_HELPER" = yes ; then
2215 AC_MSG_CHECKING(for PRNGD/EGD socket)
2216 # Insert other locations here
2217 for sock in /var/run/egd-pool /dev/egd-pool /etc/entropy; do
2218 if test -r $sock && $TEST_MINUS_S_SH -c "test -S $sock -o -p $sock" ; then
2219 PRNGD_SOCKET="$sock"
2220 AC_DEFINE_UNQUOTED(PRNGD_SOCKET, "$PRNGD_SOCKET")
2221 break;
2222 fi
2223 done
2224 if test ! -z "$PRNGD_SOCKET" ; then
2225 AC_MSG_RESULT($PRNGD_SOCKET)
2226 else
2227 AC_MSG_RESULT(not found)
2228 fi
2229 fi
Damien Miller6c21c512002-01-22 21:57:53 +11002230 ]
2231)
2232
2233# Change default command timeout for hashing entropy source
2234entropy_timeout=200
2235AC_ARG_WITH(entropy-timeout,
2236 [ --with-entropy-timeout Specify entropy gathering command timeout (msec)],
2237 [
Tim Rice35cc69d2005-03-17 16:44:25 -08002238 if test -n "$withval" && test "x$withval" != "xno" && \
2239 test "x${withval}" != "xyes"; then
Damien Miller6c21c512002-01-22 21:57:53 +11002240 entropy_timeout=$withval
2241 fi
Tim Riceeae17cc2005-03-17 16:52:20 -08002242 ]
Damien Miller6c21c512002-01-22 21:57:53 +11002243)
Tim Rice7df8d392005-09-19 09:33:39 -07002244AC_DEFINE_UNQUOTED(ENTROPY_TIMEOUT_MSEC, $entropy_timeout,
2245 [Builtin PRNG command timeout])
Damien Miller6c21c512002-01-22 21:57:53 +11002246
Damien Millerd3f6ad22002-06-25 10:24:47 +10002247SSH_PRIVSEP_USER=sshd
Kevin Steves7ff91122002-04-07 19:22:54 +00002248AC_ARG_WITH(privsep-user,
Kevin Stevesc81e1292002-05-13 03:51:40 +00002249 [ --with-privsep-user=user Specify non-privileged user for privilege separation],
Kevin Steves7ff91122002-04-07 19:22:54 +00002250 [
Tim Rice35cc69d2005-03-17 16:44:25 -08002251 if test -n "$withval" && test "x$withval" != "xno" && \
2252 test "x${withval}" != "xyes"; then
Damien Millerd3f6ad22002-06-25 10:24:47 +10002253 SSH_PRIVSEP_USER=$withval
Kevin Steves7ff91122002-04-07 19:22:54 +00002254 fi
Tim Riceeae17cc2005-03-17 16:52:20 -08002255 ]
Kevin Steves7ff91122002-04-07 19:22:54 +00002256)
Tim Rice7df8d392005-09-19 09:33:39 -07002257AC_DEFINE_UNQUOTED(SSH_PRIVSEP_USER, "$SSH_PRIVSEP_USER",
2258 [non-privileged user for privilege separation])
Damien Millerd3f6ad22002-06-25 10:24:47 +10002259AC_SUBST(SSH_PRIVSEP_USER)
Kevin Steves7ff91122002-04-07 19:22:54 +00002260
Tim Rice88f2ab52002-03-17 12:17:34 -08002261# We do this little dance with the search path to insure
2262# that programs that we select for use by installed programs
2263# (which may be run by the super-user) come from trusted
2264# locations before they come from the user's private area.
2265# This should help avoid accidentally configuring some
2266# random version of a program in someone's personal bin.
2267
2268OPATH=$PATH
2269PATH=/bin:/usr/bin
Tim Riceae49fe62002-04-12 10:26:21 -07002270test -h /bin 2> /dev/null && PATH=/usr/bin
Tim Rice88f2ab52002-03-17 12:17:34 -08002271test -d /sbin && PATH=$PATH:/sbin
2272test -d /usr/sbin && PATH=$PATH:/usr/sbin
2273PATH=$PATH:/etc:$OPATH
2274
Damien Millera8e06ce2003-11-21 23:48:55 +11002275# These programs are used by the command hashing source to gather entropy
Damien Miller6c21c512002-01-22 21:57:53 +11002276OSSH_PATH_ENTROPY_PROG(PROG_LS, ls)
2277OSSH_PATH_ENTROPY_PROG(PROG_NETSTAT, netstat)
2278OSSH_PATH_ENTROPY_PROG(PROG_ARP, arp)
2279OSSH_PATH_ENTROPY_PROG(PROG_IFCONFIG, ifconfig)
2280OSSH_PATH_ENTROPY_PROG(PROG_JSTAT, jstat)
2281OSSH_PATH_ENTROPY_PROG(PROG_PS, ps)
2282OSSH_PATH_ENTROPY_PROG(PROG_SAR, sar)
2283OSSH_PATH_ENTROPY_PROG(PROG_W, w)
2284OSSH_PATH_ENTROPY_PROG(PROG_WHO, who)
2285OSSH_PATH_ENTROPY_PROG(PROG_LAST, last)
2286OSSH_PATH_ENTROPY_PROG(PROG_LASTLOG, lastlog)
2287OSSH_PATH_ENTROPY_PROG(PROG_DF, df)
2288OSSH_PATH_ENTROPY_PROG(PROG_VMSTAT, vmstat)
2289OSSH_PATH_ENTROPY_PROG(PROG_UPTIME, uptime)
2290OSSH_PATH_ENTROPY_PROG(PROG_IPCS, ipcs)
2291OSSH_PATH_ENTROPY_PROG(PROG_TAIL, tail)
Tim Rice88f2ab52002-03-17 12:17:34 -08002292# restore PATH
2293PATH=$OPATH
Damien Miller6c21c512002-01-22 21:57:53 +11002294
2295# Where does ssh-rand-helper get its randomness from?
2296INSTALL_SSH_PRNG_CMDS=""
2297if test ! -z "$INSTALL_SSH_RAND_HELPER" ; then
2298 if test ! -z "$PRNGD_PORT" ; then
2299 RAND_HELPER_MSG="TCP localhost:$PRNGD_PORT"
2300 elif test ! -z "$PRNGD_SOCKET" ; then
2301 RAND_HELPER_MSG="Unix domain socket \"$PRNGD_SOCKET\""
2302 else
2303 RAND_HELPER_MSG="Command hashing (timeout $entropy_timeout)"
2304 RAND_HELPER_CMDHASH=yes
2305 INSTALL_SSH_PRNG_CMDS="yes"
2306 fi
2307fi
2308AC_SUBST(INSTALL_SSH_PRNG_CMDS)
2309
2310
Ben Lindstromb5628642000-10-18 00:02:25 +00002311# Cheap hack to ensure NEWS-OS libraries are arranged right.
2312if test ! -z "$SONY" ; then
2313 LIBS="$LIBS -liberty";
2314fi
2315
Damien Miller57f39152005-11-24 19:58:19 +11002316# Check for long long datatypes
2317AC_CHECK_TYPES([long long, unsigned long long, long double])
2318
2319# Check datatype sizes
Damien Millere0f45742000-01-18 09:12:06 +11002320AC_CHECK_SIZEOF(char, 1)
Damien Millerc6398ef1999-11-20 12:18:40 +11002321AC_CHECK_SIZEOF(short int, 2)
2322AC_CHECK_SIZEOF(int, 4)
2323AC_CHECK_SIZEOF(long int, 4)
2324AC_CHECK_SIZEOF(long long int, 8)
2325
Damien Millerfa2bb692002-04-23 23:22:25 +10002326# Sanity check long long for some platforms (AIX)
2327if test "x$ac_cv_sizeof_long_long_int" = "x4" ; then
2328 ac_cv_sizeof_long_long_int=0
2329fi
2330
Darren Tucker537f1ed2005-10-25 18:38:33 +10002331# compute LLONG_MIN and LLONG_MAX if we don't know them.
2332if test -z "$have_llong_max"; then
2333 AC_MSG_CHECKING([for max value of long long])
2334 AC_RUN_IFELSE(
2335 [AC_LANG_SOURCE([[
2336#include <stdio.h>
2337/* Why is this so damn hard? */
2338#ifdef __GNUC__
2339# undef __GNUC__
2340#endif
2341#define __USE_ISOC99
2342#include <limits.h>
2343#define DATA "conftest.llminmax"
Darren Tuckerd1450db2006-03-13 19:06:51 +11002344#define my_abs(a) ((a) < 0 ? ((a) * -1) : (a))
2345
2346/*
2347 * printf in libc on some platforms (eg old Tru64) does not understand %lld so
2348 * we do this the hard way.
2349 */
2350static int
2351fprint_ll(FILE *f, long long n)
2352{
2353 unsigned int i;
2354 int l[sizeof(long long) * 8];
2355
2356 if (n < 0)
2357 if (fprintf(f, "-") < 0)
2358 return -1;
2359 for (i = 0; n != 0; i++) {
2360 l[i] = my_abs(n % 10);
2361 n /= 10;
2362 }
2363 do {
2364 if (fprintf(f, "%d", l[--i]) < 0)
2365 return -1;
2366 } while (i != 0);
2367 if (fprintf(f, " ") < 0)
2368 return -1;
2369 return 0;
2370}
2371
Darren Tucker537f1ed2005-10-25 18:38:33 +10002372int main(void) {
2373 FILE *f;
2374 long long i, llmin, llmax = 0;
2375
2376 if((f = fopen(DATA,"w")) == NULL)
2377 exit(1);
2378
2379#if defined(LLONG_MIN) && defined(LLONG_MAX)
2380 fprintf(stderr, "Using system header for LLONG_MIN and LLONG_MAX\n");
2381 llmin = LLONG_MIN;
2382 llmax = LLONG_MAX;
2383#else
2384 fprintf(stderr, "Calculating LLONG_MIN and LLONG_MAX\n");
2385 /* This will work on one's complement and two's complement */
2386 for (i = 1; i > llmax; i <<= 1, i++)
2387 llmax = i;
2388 llmin = llmax + 1LL; /* wrap */
2389#endif
2390
2391 /* Sanity check */
2392 if (llmin + 1 < llmin || llmin - 1 < llmin || llmax + 1 > llmax
Darren Tuckerd1450db2006-03-13 19:06:51 +11002393 || llmax - 1 > llmax || llmin == llmax || llmin == 0
2394 || llmax == 0 || llmax < LONG_MAX || llmin > LONG_MIN) {
Darren Tucker537f1ed2005-10-25 18:38:33 +10002395 fprintf(f, "unknown unknown\n");
2396 exit(2);
2397 }
2398
Darren Tuckerd1450db2006-03-13 19:06:51 +11002399 if (fprint_ll(f, llmin) < 0)
Darren Tucker537f1ed2005-10-25 18:38:33 +10002400 exit(3);
Darren Tuckerd1450db2006-03-13 19:06:51 +11002401 if (fprint_ll(f, llmax) < 0)
2402 exit(4);
2403 if (fclose(f) < 0)
2404 exit(5);
Darren Tucker537f1ed2005-10-25 18:38:33 +10002405 exit(0);
2406}
2407 ]])],
2408 [
2409 llong_min=`$AWK '{print $1}' conftest.llminmax`
2410 llong_max=`$AWK '{print $2}' conftest.llminmax`
2411
Darren Tucker537f1ed2005-10-25 18:38:33 +10002412 AC_MSG_RESULT($llong_max)
2413 AC_DEFINE_UNQUOTED(LLONG_MAX, [${llong_max}LL],
2414 [max value of long long calculated by configure])
2415 AC_MSG_CHECKING([for min value of long long])
2416 AC_MSG_RESULT($llong_min)
2417 AC_DEFINE_UNQUOTED(LLONG_MIN, [${llong_min}LL],
2418 [min value of long long calculated by configure])
2419 ],
2420 [
2421 AC_MSG_RESULT(not found)
2422 ],
2423 [
2424 AC_MSG_WARN([cross compiling: not checking])
2425 ]
2426 )
2427fi
2428
2429
Damien Millera22ba012000-03-02 23:09:20 +11002430# More checks for data types
Damien Millercaf6dd62000-08-29 11:33:50 +11002431AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int, [
2432 AC_TRY_COMPILE(
Damien Millera8e06ce2003-11-21 23:48:55 +11002433 [ #include <sys/types.h> ],
2434 [ u_int a; a = 1;],
Damien Millercaf6dd62000-08-29 11:33:50 +11002435 [ ac_cv_have_u_int="yes" ],
2436 [ ac_cv_have_u_int="no" ]
2437 )
2438])
2439if test "x$ac_cv_have_u_int" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002440 AC_DEFINE(HAVE_U_INT, 1, [define if you have u_int data type])
Damien Millercaf6dd62000-08-29 11:33:50 +11002441 have_u_int=1
2442fi
2443
Damien Miller61e50f12000-05-08 20:49:37 +10002444AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t, [
2445 AC_TRY_COMPILE(
Damien Millera8e06ce2003-11-21 23:48:55 +11002446 [ #include <sys/types.h> ],
2447 [ int8_t a; int16_t b; int32_t c; a = b = c = 1;],
Damien Miller61e50f12000-05-08 20:49:37 +10002448 [ ac_cv_have_intxx_t="yes" ],
2449 [ ac_cv_have_intxx_t="no" ]
2450 )
2451])
2452if test "x$ac_cv_have_intxx_t" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002453 AC_DEFINE(HAVE_INTXX_T, 1, [define if you have intxx_t data type])
Damien Miller61e50f12000-05-08 20:49:37 +10002454 have_intxx_t=1
2455fi
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00002456
2457if (test -z "$have_intxx_t" && \
Damien Millera8e06ce2003-11-21 23:48:55 +11002458 test "x$ac_cv_header_stdint_h" = "xyes")
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00002459then
2460 AC_MSG_CHECKING([for intXX_t types in stdint.h])
2461 AC_TRY_COMPILE(
Damien Millera8e06ce2003-11-21 23:48:55 +11002462 [ #include <stdint.h> ],
2463 [ int8_t a; int16_t b; int32_t c; a = b = c = 1;],
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00002464 [
2465 AC_DEFINE(HAVE_INTXX_T)
2466 AC_MSG_RESULT(yes)
2467 ],
2468 [ AC_MSG_RESULT(no) ]
2469 )
2470fi
2471
Damien Miller578783e2000-09-23 14:12:24 +11002472AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t, [
2473 AC_TRY_COMPILE(
Tim Rice907881e2002-07-18 11:44:50 -07002474 [
2475#include <sys/types.h>
2476#ifdef HAVE_STDINT_H
2477# include <stdint.h>
2478#endif
2479#include <sys/socket.h>
2480#ifdef HAVE_SYS_BITYPES_H
2481# include <sys/bitypes.h>
2482#endif
Damien Millera8e06ce2003-11-21 23:48:55 +11002483 ],
2484 [ int64_t a; a = 1;],
Damien Miller578783e2000-09-23 14:12:24 +11002485 [ ac_cv_have_int64_t="yes" ],
2486 [ ac_cv_have_int64_t="no" ]
2487 )
2488])
2489if test "x$ac_cv_have_int64_t" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002490 AC_DEFINE(HAVE_INT64_T, 1, [define if you have int64_t data type])
Tim Rice4cec93f2002-02-26 08:40:48 -08002491fi
2492
Damien Miller61e50f12000-05-08 20:49:37 +10002493AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t, [
2494 AC_TRY_COMPILE(
Damien Millera8e06ce2003-11-21 23:48:55 +11002495 [ #include <sys/types.h> ],
2496 [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;],
Damien Miller61e50f12000-05-08 20:49:37 +10002497 [ ac_cv_have_u_intxx_t="yes" ],
2498 [ ac_cv_have_u_intxx_t="no" ]
2499 )
2500])
2501if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002502 AC_DEFINE(HAVE_U_INTXX_T, 1, [define if you have u_intxx_t data type])
Damien Miller61e50f12000-05-08 20:49:37 +10002503 have_u_intxx_t=1
2504fi
Damien Millerc6398ef1999-11-20 12:18:40 +11002505
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00002506if test -z "$have_u_intxx_t" ; then
2507 AC_MSG_CHECKING([for u_intXX_t types in sys/socket.h])
2508 AC_TRY_COMPILE(
Damien Millera8e06ce2003-11-21 23:48:55 +11002509 [ #include <sys/socket.h> ],
2510 [ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;],
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00002511 [
2512 AC_DEFINE(HAVE_U_INTXX_T)
2513 AC_MSG_RESULT(yes)
2514 ],
2515 [ AC_MSG_RESULT(no) ]
2516 )
2517fi
2518
Damien Miller578783e2000-09-23 14:12:24 +11002519AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t, [
2520 AC_TRY_COMPILE(
Damien Millera8e06ce2003-11-21 23:48:55 +11002521 [ #include <sys/types.h> ],
2522 [ u_int64_t a; a = 1;],
Damien Miller578783e2000-09-23 14:12:24 +11002523 [ ac_cv_have_u_int64_t="yes" ],
2524 [ ac_cv_have_u_int64_t="no" ]
2525 )
2526])
2527if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002528 AC_DEFINE(HAVE_U_INT64_T, 1, [define if you have u_int64_t data type])
Damien Miller578783e2000-09-23 14:12:24 +11002529 have_u_int64_t=1
2530fi
2531
Tim Rice4cec93f2002-02-26 08:40:48 -08002532if test -z "$have_u_int64_t" ; then
2533 AC_MSG_CHECKING([for u_int64_t type in sys/bitypes.h])
2534 AC_TRY_COMPILE(
Damien Millera8e06ce2003-11-21 23:48:55 +11002535 [ #include <sys/bitypes.h> ],
Tim Rice4cec93f2002-02-26 08:40:48 -08002536 [ u_int64_t a; a = 1],
2537 [
2538 AC_DEFINE(HAVE_U_INT64_T)
2539 AC_MSG_RESULT(yes)
2540 ],
2541 [ AC_MSG_RESULT(no) ]
2542 )
2543fi
2544
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00002545if test -z "$have_u_intxx_t" ; then
2546 AC_CACHE_CHECK([for uintXX_t types], ac_cv_have_uintxx_t, [
2547 AC_TRY_COMPILE(
2548 [
2549#include <sys/types.h>
Damien Millera8e06ce2003-11-21 23:48:55 +11002550 ],
2551 [ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1; ],
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00002552 [ ac_cv_have_uintxx_t="yes" ],
2553 [ ac_cv_have_uintxx_t="no" ]
2554 )
2555 ])
2556 if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002557 AC_DEFINE(HAVE_UINTXX_T, 1,
2558 [define if you have uintxx_t data type])
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00002559 fi
2560fi
2561
2562if test -z "$have_uintxx_t" ; then
2563 AC_MSG_CHECKING([for uintXX_t types in stdint.h])
2564 AC_TRY_COMPILE(
Damien Millera8e06ce2003-11-21 23:48:55 +11002565 [ #include <stdint.h> ],
2566 [ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1;],
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00002567 [
2568 AC_DEFINE(HAVE_UINTXX_T)
2569 AC_MSG_RESULT(yes)
2570 ],
2571 [ AC_MSG_RESULT(no) ]
2572 )
2573fi
2574
Damien Milleredb82922000-06-20 13:25:52 +10002575if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
Damien Millera8e06ce2003-11-21 23:48:55 +11002576 test "x$ac_cv_header_sys_bitypes_h" = "xyes")
Damien Millerb29ea912000-01-15 14:12:03 +11002577then
2578 AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
2579 AC_TRY_COMPILE(
Damien Miller61e50f12000-05-08 20:49:37 +10002580 [
2581#include <sys/bitypes.h>
Damien Millera8e06ce2003-11-21 23:48:55 +11002582 ],
Damien Millerb29ea912000-01-15 14:12:03 +11002583 [
Damien Miller70494d12000-04-03 15:57:06 +10002584 int8_t a; int16_t b; int32_t c;
2585 u_int8_t e; u_int16_t f; u_int32_t g;
2586 a = b = c = e = f = g = 1;
Damien Millera8e06ce2003-11-21 23:48:55 +11002587 ],
Damien Millerb29ea912000-01-15 14:12:03 +11002588 [
2589 AC_DEFINE(HAVE_U_INTXX_T)
2590 AC_DEFINE(HAVE_INTXX_T)
2591 AC_MSG_RESULT(yes)
2592 ],
2593 [AC_MSG_RESULT(no)]
Damien Millera8e06ce2003-11-21 23:48:55 +11002594 )
Damien Millerb29ea912000-01-15 14:12:03 +11002595fi
2596
Damien Miller58be7382001-09-15 21:31:54 +10002597
2598AC_CACHE_CHECK([for u_char], ac_cv_have_u_char, [
2599 AC_TRY_COMPILE(
2600 [
2601#include <sys/types.h>
2602 ],
2603 [ u_char foo; foo = 125; ],
2604 [ ac_cv_have_u_char="yes" ],
2605 [ ac_cv_have_u_char="no" ]
2606 )
2607])
2608if test "x$ac_cv_have_u_char" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002609 AC_DEFINE(HAVE_U_CHAR, 1, [define if you have u_char data type])
Damien Miller58be7382001-09-15 21:31:54 +10002610fi
2611
Tim Rice13aae5e2001-10-21 17:53:58 -07002612TYPE_SOCKLEN_T
Damien Miller74d0d4a1999-12-29 02:24:35 +11002613
Tim Rice200a5c02002-02-26 22:12:34 -08002614AC_CHECK_TYPES(sig_atomic_t,,,[#include <signal.h>])
Tim Rice4cec93f2002-02-26 08:40:48 -08002615
Damien Miller848b9932005-02-24 12:12:34 +11002616AC_CHECK_TYPES(in_addr_t,,,
2617[#include <sys/types.h>
2618#include <netinet/in.h>])
Darren Tuckerd9f88912005-02-20 21:01:48 +11002619
Damien Miller61e50f12000-05-08 20:49:37 +10002620AC_CACHE_CHECK([for size_t], ac_cv_have_size_t, [
2621 AC_TRY_COMPILE(
2622 [
2623#include <sys/types.h>
2624 ],
2625 [ size_t foo; foo = 1235; ],
2626 [ ac_cv_have_size_t="yes" ],
2627 [ ac_cv_have_size_t="no" ]
2628 )
2629])
2630if test "x$ac_cv_have_size_t" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002631 AC_DEFINE(HAVE_SIZE_T, 1, [define if you have size_t data type])
Damien Miller61e50f12000-05-08 20:49:37 +10002632fi
Damien Miller95058511999-12-29 10:36:45 +11002633
Damien Miller615f9392000-05-17 22:53:33 +10002634AC_CACHE_CHECK([for ssize_t], ac_cv_have_ssize_t, [
2635 AC_TRY_COMPILE(
2636 [
2637#include <sys/types.h>
2638 ],
2639 [ ssize_t foo; foo = 1235; ],
2640 [ ac_cv_have_ssize_t="yes" ],
2641 [ ac_cv_have_ssize_t="no" ]
2642 )
2643])
2644if test "x$ac_cv_have_ssize_t" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002645 AC_DEFINE(HAVE_SSIZE_T, 1, [define if you have ssize_t data type])
Damien Miller615f9392000-05-17 22:53:33 +10002646fi
2647
Ben Lindstrom0d5af602001-01-09 00:50:29 +00002648AC_CACHE_CHECK([for clock_t], ac_cv_have_clock_t, [
2649 AC_TRY_COMPILE(
2650 [
2651#include <time.h>
2652 ],
2653 [ clock_t foo; foo = 1235; ],
2654 [ ac_cv_have_clock_t="yes" ],
2655 [ ac_cv_have_clock_t="no" ]
2656 )
2657])
2658if test "x$ac_cv_have_clock_t" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002659 AC_DEFINE(HAVE_CLOCK_T, 1, [define if you have clock_t data type])
Ben Lindstrom0d5af602001-01-09 00:50:29 +00002660fi
2661
Damien Millerb54b40e2000-06-23 08:23:34 +10002662AC_CACHE_CHECK([for sa_family_t], ac_cv_have_sa_family_t, [
2663 AC_TRY_COMPILE(
2664 [
2665#include <sys/types.h>
2666#include <sys/socket.h>
2667 ],
2668 [ sa_family_t foo; foo = 1235; ],
2669 [ ac_cv_have_sa_family_t="yes" ],
Damien Miller78315eb2000-09-29 23:01:36 +11002670 [ AC_TRY_COMPILE(
2671 [
2672#include <sys/types.h>
2673#include <sys/socket.h>
2674#include <netinet/in.h>
2675 ],
2676 [ sa_family_t foo; foo = 1235; ],
2677 [ ac_cv_have_sa_family_t="yes" ],
2678
Damien Millerb54b40e2000-06-23 08:23:34 +10002679 [ ac_cv_have_sa_family_t="no" ]
Damien Miller78315eb2000-09-29 23:01:36 +11002680 )]
Damien Millerb54b40e2000-06-23 08:23:34 +10002681 )
2682])
2683if test "x$ac_cv_have_sa_family_t" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002684 AC_DEFINE(HAVE_SA_FAMILY_T, 1,
2685 [define if you have sa_family_t data type])
Damien Millerb54b40e2000-06-23 08:23:34 +10002686fi
2687
Damien Miller0f91b4e2000-06-18 15:43:25 +10002688AC_CACHE_CHECK([for pid_t], ac_cv_have_pid_t, [
2689 AC_TRY_COMPILE(
2690 [
2691#include <sys/types.h>
2692 ],
2693 [ pid_t foo; foo = 1235; ],
2694 [ ac_cv_have_pid_t="yes" ],
2695 [ ac_cv_have_pid_t="no" ]
2696 )
2697])
2698if test "x$ac_cv_have_pid_t" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002699 AC_DEFINE(HAVE_PID_T, 1, [define if you have pid_t data type])
Damien Miller0f91b4e2000-06-18 15:43:25 +10002700fi
2701
2702AC_CACHE_CHECK([for mode_t], ac_cv_have_mode_t, [
2703 AC_TRY_COMPILE(
2704 [
2705#include <sys/types.h>
2706 ],
2707 [ mode_t foo; foo = 1235; ],
2708 [ ac_cv_have_mode_t="yes" ],
2709 [ ac_cv_have_mode_t="no" ]
2710 )
2711])
2712if test "x$ac_cv_have_mode_t" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002713 AC_DEFINE(HAVE_MODE_T, 1, [define if you have mode_t data type])
Damien Miller0f91b4e2000-06-18 15:43:25 +10002714fi
2715
Damien Miller61e50f12000-05-08 20:49:37 +10002716
2717AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_have_struct_sockaddr_storage, [
2718 AC_TRY_COMPILE(
2719 [
Damien Miller81171112000-04-23 11:14:01 +10002720#include <sys/types.h>
2721#include <sys/socket.h>
Damien Miller61e50f12000-05-08 20:49:37 +10002722 ],
2723 [ struct sockaddr_storage s; ],
2724 [ ac_cv_have_struct_sockaddr_storage="yes" ],
2725 [ ac_cv_have_struct_sockaddr_storage="no" ]
2726 )
2727])
2728if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002729 AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1,
2730 [define if you have struct sockaddr_storage data type])
Damien Miller61e50f12000-05-08 20:49:37 +10002731fi
Damien Miller34132e52000-01-14 15:45:46 +11002732
Damien Miller61e50f12000-05-08 20:49:37 +10002733AC_CACHE_CHECK([for struct sockaddr_in6], ac_cv_have_struct_sockaddr_in6, [
2734 AC_TRY_COMPILE(
2735 [
Damien Miller7b22d652000-06-18 14:07:04 +10002736#include <sys/types.h>
Damien Miller61e50f12000-05-08 20:49:37 +10002737#include <netinet/in.h>
2738 ],
2739 [ struct sockaddr_in6 s; s.sin6_family = 0; ],
2740 [ ac_cv_have_struct_sockaddr_in6="yes" ],
2741 [ ac_cv_have_struct_sockaddr_in6="no" ]
2742 )
2743])
2744if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002745 AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1,
2746 [define if you have struct sockaddr_in6 data type])
Damien Miller61e50f12000-05-08 20:49:37 +10002747fi
Damien Miller34132e52000-01-14 15:45:46 +11002748
Damien Miller61e50f12000-05-08 20:49:37 +10002749AC_CACHE_CHECK([for struct in6_addr], ac_cv_have_struct_in6_addr, [
2750 AC_TRY_COMPILE(
2751 [
Damien Miller7b22d652000-06-18 14:07:04 +10002752#include <sys/types.h>
Damien Miller61e50f12000-05-08 20:49:37 +10002753#include <netinet/in.h>
2754 ],
2755 [ struct in6_addr s; s.s6_addr[0] = 0; ],
2756 [ ac_cv_have_struct_in6_addr="yes" ],
2757 [ ac_cv_have_struct_in6_addr="no" ]
2758 )
2759])
2760if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002761 AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1,
2762 [define if you have struct in6_addr data type])
Damien Miller61e50f12000-05-08 20:49:37 +10002763fi
Damien Miller34132e52000-01-14 15:45:46 +11002764
Damien Miller61e50f12000-05-08 20:49:37 +10002765AC_CACHE_CHECK([for struct addrinfo], ac_cv_have_struct_addrinfo, [
2766 AC_TRY_COMPILE(
2767 [
Damien Miller81171112000-04-23 11:14:01 +10002768#include <sys/types.h>
2769#include <sys/socket.h>
2770#include <netdb.h>
Damien Miller61e50f12000-05-08 20:49:37 +10002771 ],
2772 [ struct addrinfo s; s.ai_flags = AI_PASSIVE; ],
2773 [ ac_cv_have_struct_addrinfo="yes" ],
2774 [ ac_cv_have_struct_addrinfo="no" ]
2775 )
2776])
2777if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002778 AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1,
2779 [define if you have struct addrinfo data type])
Damien Miller61e50f12000-05-08 20:49:37 +10002780fi
2781
Ben Lindstrom42202bc2001-01-15 02:34:37 +00002782AC_CACHE_CHECK([for struct timeval], ac_cv_have_struct_timeval, [
2783 AC_TRY_COMPILE(
Damien Millera8e06ce2003-11-21 23:48:55 +11002784 [ #include <sys/time.h> ],
2785 [ struct timeval tv; tv.tv_sec = 1;],
Ben Lindstrom42202bc2001-01-15 02:34:37 +00002786 [ ac_cv_have_struct_timeval="yes" ],
2787 [ ac_cv_have_struct_timeval="no" ]
2788 )
2789])
2790if test "x$ac_cv_have_struct_timeval" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002791 AC_DEFINE(HAVE_STRUCT_TIMEVAL, 1, [define if you have struct timeval])
Ben Lindstrom42202bc2001-01-15 02:34:37 +00002792 have_struct_timeval=1
2793fi
2794
Tim Rice4e4dc562003-03-18 10:21:40 -08002795AC_CHECK_TYPES(struct timespec)
2796
Ben Lindstrom5bd6eb72003-03-21 00:34:34 +00002797# We need int64_t or else certian parts of the compile will fail.
Tim Rice8bb561b2005-03-17 16:23:19 -08002798if test "x$ac_cv_have_int64_t" = "xno" && \
2799 test "x$ac_cv_sizeof_long_int" != "x8" && \
2800 test "x$ac_cv_sizeof_long_long_int" = "x0" ; then
Ben Lindstrom5bd6eb72003-03-21 00:34:34 +00002801 echo "OpenSSH requires int64_t support. Contact your vendor or install"
2802 echo "an alternative compiler (I.E., GCC) before continuing."
2803 echo ""
2804 exit 1;
Tim Ricebee3f222001-03-11 17:32:12 -08002805else
2806dnl test snprintf (broken on SCO w/gcc)
Darren Tuckera0c2b392004-09-11 23:26:37 +10002807 AC_RUN_IFELSE(
Darren Tucker623d92f2004-09-12 22:36:15 +10002808 [AC_LANG_SOURCE([[
Tim Ricebee3f222001-03-11 17:32:12 -08002809#include <stdio.h>
2810#include <string.h>
2811#ifdef HAVE_SNPRINTF
2812main()
2813{
2814 char buf[50];
2815 char expected_out[50];
2816 int mazsize = 50 ;
2817#if (SIZEOF_LONG_INT == 8)
2818 long int num = 0x7fffffffffffffff;
2819#else
Kevin Steves6482ec82001-07-15 02:09:28 +00002820 long long num = 0x7fffffffffffffffll;
Tim Ricebee3f222001-03-11 17:32:12 -08002821#endif
2822 strcpy(expected_out, "9223372036854775807");
2823 snprintf(buf, mazsize, "%lld", num);
2824 if(strcmp(buf, expected_out) != 0)
Damien Millera8e06ce2003-11-21 23:48:55 +11002825 exit(1);
Tim Ricebee3f222001-03-11 17:32:12 -08002826 exit(0);
2827}
2828#else
2829main() { exit(0); }
2830#endif
Darren Tucker623d92f2004-09-12 22:36:15 +10002831 ]])], [ true ], [ AC_DEFINE(BROKEN_SNPRINTF) ],
Darren Tuckera0c2b392004-09-11 23:26:37 +10002832 AC_MSG_WARN([cross compiling: Assuming working snprintf()])
Tim Ricebee3f222001-03-11 17:32:12 -08002833 )
Ben Lindstrom3ad650a2001-01-03 06:02:51 +00002834fi
2835
Damien Miller78315eb2000-09-29 23:01:36 +11002836dnl Checks for structure members
Damien Miller61e50f12000-05-08 20:49:37 +10002837OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmp.h, HAVE_HOST_IN_UTMP)
2838OSSH_CHECK_HEADER_FOR_FIELD(ut_host, utmpx.h, HAVE_HOST_IN_UTMPX)
2839OSSH_CHECK_HEADER_FOR_FIELD(syslen, utmpx.h, HAVE_SYSLEN_IN_UTMPX)
2840OSSH_CHECK_HEADER_FOR_FIELD(ut_pid, utmp.h, HAVE_PID_IN_UTMP)
2841OSSH_CHECK_HEADER_FOR_FIELD(ut_type, utmp.h, HAVE_TYPE_IN_UTMP)
Damien Millerad1bc5f2000-05-20 14:53:09 +10002842OSSH_CHECK_HEADER_FOR_FIELD(ut_type, utmpx.h, HAVE_TYPE_IN_UTMPX)
Damien Miller61e50f12000-05-08 20:49:37 +10002843OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmp.h, HAVE_TV_IN_UTMP)
2844OSSH_CHECK_HEADER_FOR_FIELD(ut_id, utmp.h, HAVE_ID_IN_UTMP)
Damien Miller8e81ed32000-07-01 13:17:42 +10002845OSSH_CHECK_HEADER_FOR_FIELD(ut_id, utmpx.h, HAVE_ID_IN_UTMPX)
Damien Miller61e50f12000-05-08 20:49:37 +10002846OSSH_CHECK_HEADER_FOR_FIELD(ut_addr, utmp.h, HAVE_ADDR_IN_UTMP)
2847OSSH_CHECK_HEADER_FOR_FIELD(ut_addr, utmpx.h, HAVE_ADDR_IN_UTMPX)
2848OSSH_CHECK_HEADER_FOR_FIELD(ut_addr_v6, utmp.h, HAVE_ADDR_V6_IN_UTMP)
2849OSSH_CHECK_HEADER_FOR_FIELD(ut_addr_v6, utmpx.h, HAVE_ADDR_V6_IN_UTMPX)
andre2ff7b5d2000-06-03 14:57:40 +00002850OSSH_CHECK_HEADER_FOR_FIELD(ut_exit, utmp.h, HAVE_EXIT_IN_UTMP)
2851OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmp.h, HAVE_TIME_IN_UTMP)
2852OSSH_CHECK_HEADER_FOR_FIELD(ut_time, utmpx.h, HAVE_TIME_IN_UTMPX)
2853OSSH_CHECK_HEADER_FOR_FIELD(ut_tv, utmpx.h, HAVE_TV_IN_UTMPX)
Tim Rice13aae5e2001-10-21 17:53:58 -07002854
2855AC_CHECK_MEMBERS([struct stat.st_blksize])
Darren Tucker58e298d2005-11-25 13:14:58 +11002856AC_CHECK_MEMBER([struct __res_state.retrans], [], [AC_DEFINE(__res_state, state,
2857 [Define if we don't have struct __res_state in resolv.h])],
2858[
2859#include <stdio.h>
2860#if HAVE_SYS_TYPES_H
2861# include <sys/types.h>
2862#endif
2863#include <netinet/in.h>
2864#include <arpa/nameser.h>
2865#include <resolv.h>
2866])
andre2ff7b5d2000-06-03 14:57:40 +00002867
Damien Miller61e50f12000-05-08 20:49:37 +10002868AC_CACHE_CHECK([for ss_family field in struct sockaddr_storage],
2869 ac_cv_have_ss_family_in_struct_ss, [
2870 AC_TRY_COMPILE(
2871 [
Damien Miller81171112000-04-23 11:14:01 +10002872#include <sys/types.h>
2873#include <sys/socket.h>
Damien Miller61e50f12000-05-08 20:49:37 +10002874 ],
2875 [ struct sockaddr_storage s; s.ss_family = 1; ],
2876 [ ac_cv_have_ss_family_in_struct_ss="yes" ],
2877 [ ac_cv_have_ss_family_in_struct_ss="no" ],
2878 )
2879])
2880if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002881 AC_DEFINE(HAVE_SS_FAMILY_IN_SS, 1, [Fields in struct sockaddr_storage])
Damien Miller61e50f12000-05-08 20:49:37 +10002882fi
2883
Damien Miller61e50f12000-05-08 20:49:37 +10002884AC_CACHE_CHECK([for __ss_family field in struct sockaddr_storage],
2885 ac_cv_have___ss_family_in_struct_ss, [
2886 AC_TRY_COMPILE(
2887 [
Damien Miller81171112000-04-23 11:14:01 +10002888#include <sys/types.h>
2889#include <sys/socket.h>
Damien Miller61e50f12000-05-08 20:49:37 +10002890 ],
2891 [ struct sockaddr_storage s; s.__ss_family = 1; ],
2892 [ ac_cv_have___ss_family_in_struct_ss="yes" ],
2893 [ ac_cv_have___ss_family_in_struct_ss="no" ]
2894 )
2895])
2896if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002897 AC_DEFINE(HAVE___SS_FAMILY_IN_SS, 1,
2898 [Fields in struct sockaddr_storage])
Damien Miller61e50f12000-05-08 20:49:37 +10002899fi
Damien Millerbf1c9b21999-12-09 10:16:54 +11002900
Damien Millerad833b32000-08-23 10:46:23 +10002901AC_CACHE_CHECK([for pw_class field in struct passwd],
2902 ac_cv_have_pw_class_in_struct_passwd, [
2903 AC_TRY_COMPILE(
2904 [
Damien Millerad833b32000-08-23 10:46:23 +10002905#include <pwd.h>
2906 ],
Kevin Steves48b7cc02000-10-07 13:24:00 +00002907 [ struct passwd p; p.pw_class = 0; ],
Damien Millerad833b32000-08-23 10:46:23 +10002908 [ ac_cv_have_pw_class_in_struct_passwd="yes" ],
2909 [ ac_cv_have_pw_class_in_struct_passwd="no" ]
2910 )
2911])
2912if test "x$ac_cv_have_pw_class_in_struct_passwd" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002913 AC_DEFINE(HAVE_PW_CLASS_IN_PASSWD, 1,
2914 [Define if your password has a pw_class field])
Damien Millerad833b32000-08-23 10:46:23 +10002915fi
2916
Kevin Steves82456952001-06-22 21:14:18 +00002917AC_CACHE_CHECK([for pw_expire field in struct passwd],
2918 ac_cv_have_pw_expire_in_struct_passwd, [
2919 AC_TRY_COMPILE(
2920 [
2921#include <pwd.h>
2922 ],
2923 [ struct passwd p; p.pw_expire = 0; ],
2924 [ ac_cv_have_pw_expire_in_struct_passwd="yes" ],
2925 [ ac_cv_have_pw_expire_in_struct_passwd="no" ]
2926 )
2927])
2928if test "x$ac_cv_have_pw_expire_in_struct_passwd" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002929 AC_DEFINE(HAVE_PW_EXPIRE_IN_PASSWD, 1,
2930 [Define if your password has a pw_expire field])
Kevin Steves82456952001-06-22 21:14:18 +00002931fi
2932
2933AC_CACHE_CHECK([for pw_change field in struct passwd],
2934 ac_cv_have_pw_change_in_struct_passwd, [
2935 AC_TRY_COMPILE(
2936 [
2937#include <pwd.h>
2938 ],
2939 [ struct passwd p; p.pw_change = 0; ],
2940 [ ac_cv_have_pw_change_in_struct_passwd="yes" ],
2941 [ ac_cv_have_pw_change_in_struct_passwd="no" ]
2942 )
2943])
2944if test "x$ac_cv_have_pw_change_in_struct_passwd" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002945 AC_DEFINE(HAVE_PW_CHANGE_IN_PASSWD, 1,
2946 [Define if your password has a pw_change field])
Kevin Steves82456952001-06-22 21:14:18 +00002947fi
Damien Miller61e50f12000-05-08 20:49:37 +10002948
Tim Rice28bbb0c2002-05-27 17:37:32 -07002949dnl make sure we're using the real structure members and not defines
Kevin Steves939c9db2002-03-22 17:23:25 +00002950AC_CACHE_CHECK([for msg_accrights field in struct msghdr],
2951 ac_cv_have_accrights_in_msghdr, [
Darren Tuckera0c2b392004-09-11 23:26:37 +10002952 AC_COMPILE_IFELSE(
Kevin Steves939c9db2002-03-22 17:23:25 +00002953 [
Tim Riceae49fe62002-04-12 10:26:21 -07002954#include <sys/types.h>
Kevin Steves939c9db2002-03-22 17:23:25 +00002955#include <sys/socket.h>
2956#include <sys/uio.h>
Tim Rice28bbb0c2002-05-27 17:37:32 -07002957int main() {
2958#ifdef msg_accrights
Darren Tuckera0c2b392004-09-11 23:26:37 +10002959#error "msg_accrights is a macro"
Tim Rice28bbb0c2002-05-27 17:37:32 -07002960exit(1);
2961#endif
2962struct msghdr m;
2963m.msg_accrights = 0;
2964exit(0);
2965}
Kevin Steves939c9db2002-03-22 17:23:25 +00002966 ],
Kevin Steves939c9db2002-03-22 17:23:25 +00002967 [ ac_cv_have_accrights_in_msghdr="yes" ],
2968 [ ac_cv_have_accrights_in_msghdr="no" ]
2969 )
2970])
2971if test "x$ac_cv_have_accrights_in_msghdr" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002972 AC_DEFINE(HAVE_ACCRIGHTS_IN_MSGHDR, 1,
2973 [Define if your system uses access rights style
2974 file descriptor passing])
Kevin Steves939c9db2002-03-22 17:23:25 +00002975fi
2976
Kevin Stevesa44e0352002-04-07 16:18:03 +00002977AC_CACHE_CHECK([for msg_control field in struct msghdr],
2978 ac_cv_have_control_in_msghdr, [
Darren Tuckera0c2b392004-09-11 23:26:37 +10002979 AC_COMPILE_IFELSE(
Kevin Stevesa44e0352002-04-07 16:18:03 +00002980 [
Tim Riceae49fe62002-04-12 10:26:21 -07002981#include <sys/types.h>
Kevin Stevesa44e0352002-04-07 16:18:03 +00002982#include <sys/socket.h>
2983#include <sys/uio.h>
Tim Rice28bbb0c2002-05-27 17:37:32 -07002984int main() {
2985#ifdef msg_control
Darren Tuckera0c2b392004-09-11 23:26:37 +10002986#error "msg_control is a macro"
Tim Rice28bbb0c2002-05-27 17:37:32 -07002987exit(1);
2988#endif
2989struct msghdr m;
2990m.msg_control = 0;
2991exit(0);
2992}
Kevin Stevesa44e0352002-04-07 16:18:03 +00002993 ],
Kevin Stevesa44e0352002-04-07 16:18:03 +00002994 [ ac_cv_have_control_in_msghdr="yes" ],
2995 [ ac_cv_have_control_in_msghdr="no" ]
2996 )
2997])
2998if test "x$ac_cv_have_control_in_msghdr" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07002999 AC_DEFINE(HAVE_CONTROL_IN_MSGHDR, 1,
3000 [Define if your system uses ancillary data style
3001 file descriptor passing])
Kevin Stevesa44e0352002-04-07 16:18:03 +00003002fi
3003
Damien Miller61e50f12000-05-08 20:49:37 +10003004AC_CACHE_CHECK([if libc defines __progname], ac_cv_libc_defines___progname, [
Damien Millera8e06ce2003-11-21 23:48:55 +11003005 AC_TRY_LINK([],
3006 [ extern char *__progname; printf("%s", __progname); ],
Damien Miller61e50f12000-05-08 20:49:37 +10003007 [ ac_cv_libc_defines___progname="yes" ],
3008 [ ac_cv_libc_defines___progname="no" ]
3009 )
3010])
3011if test "x$ac_cv_libc_defines___progname" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07003012 AC_DEFINE(HAVE___PROGNAME, 1, [Define if libc defines __progname])
Damien Miller61e50f12000-05-08 20:49:37 +10003013fi
3014
Kevin Steves4846f4a2002-03-22 18:19:53 +00003015AC_CACHE_CHECK([whether $CC implements __FUNCTION__], ac_cv_cc_implements___FUNCTION__, [
3016 AC_TRY_LINK([
3017#include <stdio.h>
Damien Millera8e06ce2003-11-21 23:48:55 +11003018],
3019 [ printf("%s", __FUNCTION__); ],
Kevin Steves4846f4a2002-03-22 18:19:53 +00003020 [ ac_cv_cc_implements___FUNCTION__="yes" ],
3021 [ ac_cv_cc_implements___FUNCTION__="no" ]
3022 )
3023])
3024if test "x$ac_cv_cc_implements___FUNCTION__" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07003025 AC_DEFINE(HAVE___FUNCTION__, 1,
3026 [Define if compiler implements __FUNCTION__])
Kevin Steves4846f4a2002-03-22 18:19:53 +00003027fi
3028
3029AC_CACHE_CHECK([whether $CC implements __func__], ac_cv_cc_implements___func__, [
3030 AC_TRY_LINK([
3031#include <stdio.h>
Damien Millera8e06ce2003-11-21 23:48:55 +11003032],
3033 [ printf("%s", __func__); ],
Kevin Steves4846f4a2002-03-22 18:19:53 +00003034 [ ac_cv_cc_implements___func__="yes" ],
3035 [ ac_cv_cc_implements___func__="no" ]
3036 )
3037])
3038if test "x$ac_cv_cc_implements___func__" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07003039 AC_DEFINE(HAVE___func__, 1, [Define if compiler implements __func__])
Kevin Steves4846f4a2002-03-22 18:19:53 +00003040fi
3041
Damien Miller57f39152005-11-24 19:58:19 +11003042AC_CACHE_CHECK([whether va_copy exists], ac_cv_have_va_copy, [
3043 AC_TRY_LINK(
3044 [#include <stdarg.h>
3045 va_list x,y;],
3046 [va_copy(x,y);],
3047 [ ac_cv_have_va_copy="yes" ],
3048 [ ac_cv_have_va_copy="no" ]
3049 )
3050])
3051if test "x$ac_cv_have_va_copy" = "xyes" ; then
3052 AC_DEFINE(HAVE_VA_COPY, 1, [Define if va_copy exists])
3053fi
3054
3055AC_CACHE_CHECK([whether __va_copy exists], ac_cv_have___va_copy, [
3056 AC_TRY_LINK(
3057 [#include <stdarg.h>
3058 va_list x,y;],
3059 [__va_copy(x,y);],
3060 [ ac_cv_have___va_copy="yes" ],
3061 [ ac_cv_have___va_copy="no" ]
3062 )
3063])
3064if test "x$ac_cv_have___va_copy" = "xyes" ; then
3065 AC_DEFINE(HAVE___VA_COPY, 1, [Define if __va_copy exists])
3066fi
3067
Damien Miller4f8e6692001-07-14 13:22:53 +10003068AC_CACHE_CHECK([whether getopt has optreset support],
3069 ac_cv_have_getopt_optreset, [
3070 AC_TRY_LINK(
3071 [
3072#include <getopt.h>
3073 ],
3074 [ extern int optreset; optreset = 0; ],
3075 [ ac_cv_have_getopt_optreset="yes" ],
3076 [ ac_cv_have_getopt_optreset="no" ]
3077 )
3078])
3079if test "x$ac_cv_have_getopt_optreset" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07003080 AC_DEFINE(HAVE_GETOPT_OPTRESET, 1,
3081 [Define if your getopt(3) defines and uses optreset])
Damien Miller4f8e6692001-07-14 13:22:53 +10003082fi
Damien Millera22ba012000-03-02 23:09:20 +11003083
Damien Millerecbb26d2000-07-15 14:59:14 +10003084AC_CACHE_CHECK([if libc defines sys_errlist], ac_cv_libc_defines_sys_errlist, [
Damien Millera8e06ce2003-11-21 23:48:55 +11003085 AC_TRY_LINK([],
3086 [ extern const char *const sys_errlist[]; printf("%s", sys_errlist[0]);],
Damien Millerecbb26d2000-07-15 14:59:14 +10003087 [ ac_cv_libc_defines_sys_errlist="yes" ],
3088 [ ac_cv_libc_defines_sys_errlist="no" ]
3089 )
3090])
3091if test "x$ac_cv_libc_defines_sys_errlist" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07003092 AC_DEFINE(HAVE_SYS_ERRLIST, 1,
3093 [Define if your system defines sys_errlist[]])
Damien Millerecbb26d2000-07-15 14:59:14 +10003094fi
3095
3096
Damien Miller11fa2cc2000-08-16 10:35:58 +10003097AC_CACHE_CHECK([if libc defines sys_nerr], ac_cv_libc_defines_sys_nerr, [
Damien Millera8e06ce2003-11-21 23:48:55 +11003098 AC_TRY_LINK([],
3099 [ extern int sys_nerr; printf("%i", sys_nerr);],
Damien Miller11fa2cc2000-08-16 10:35:58 +10003100 [ ac_cv_libc_defines_sys_nerr="yes" ],
3101 [ ac_cv_libc_defines_sys_nerr="no" ]
3102 )
3103])
3104if test "x$ac_cv_libc_defines_sys_nerr" = "xyes" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07003105 AC_DEFINE(HAVE_SYS_NERR, 1, [Define if your system defines sys_nerr])
Damien Miller11fa2cc2000-08-16 10:35:58 +10003106fi
3107
Damien Millera8e06ce2003-11-21 23:48:55 +11003108SCARD_MSG="no"
Ben Lindstroma42694f2002-04-05 16:11:45 +00003109# Check whether user wants sectok support
3110AC_ARG_WITH(sectok,
3111 [ --with-sectok Enable smartcard support using libsectok],
Damien Miller85de5802001-09-18 14:01:11 +10003112 [
3113 if test "x$withval" != "xno" ; then
3114 if test "x$withval" != "xyes" ; then
3115 CPPFLAGS="$CPPFLAGS -I${withval}"
3116 LDFLAGS="$LDFLAGS -L${withval}"
3117 if test ! -z "$need_dash_r" ; then
3118 LDFLAGS="$LDFLAGS -R${withval}"
3119 fi
3120 if test ! -z "$blibpath" ; then
3121 blibpath="$blibpath:${withval}"
3122 fi
3123 fi
3124 AC_CHECK_HEADERS(sectok.h)
3125 if test "$ac_cv_header_sectok_h" != yes; then
3126 AC_MSG_ERROR(Can't find sectok.h)
3127 fi
3128 AC_CHECK_LIB(sectok, sectok_open)
3129 if test "$ac_cv_lib_sectok_sectok_open" != yes; then
3130 AC_MSG_ERROR(Can't find libsectok)
3131 fi
Tim Rice7df8d392005-09-19 09:33:39 -07003132 AC_DEFINE(SMARTCARD, 1,
3133 [Define if you want smartcard support])
3134 AC_DEFINE(USE_SECTOK, 1,
3135 [Define if you want smartcard support
3136 using sectok])
Damien Millera8e06ce2003-11-21 23:48:55 +11003137 SCARD_MSG="yes, using sectok"
Ben Lindstroma42694f2002-04-05 16:11:45 +00003138 fi
3139 ]
3140)
3141
3142# Check whether user wants OpenSC support
Tim Rice12ee8e22005-03-17 13:37:04 -08003143OPENSC_CONFIG="no"
Ben Lindstroma42694f2002-04-05 16:11:45 +00003144AC_ARG_WITH(opensc,
Darren Tucker82171c62005-09-22 20:19:54 +10003145 [ --with-opensc[[=PFX]] Enable smartcard support using OpenSC (optionally in PATH)],
Tim Rice12ee8e22005-03-17 13:37:04 -08003146 [
3147 if test "x$withval" != "xno" ; then
3148 if test "x$withval" != "xyes" ; then
3149 OPENSC_CONFIG=$withval/bin/opensc-config
3150 else
3151 AC_PATH_PROG(OPENSC_CONFIG, opensc-config, no)
3152 fi
3153 if test "$OPENSC_CONFIG" != "no"; then
3154 LIBOPENSC_CFLAGS=`$OPENSC_CONFIG --cflags`
3155 LIBOPENSC_LIBS=`$OPENSC_CONFIG --libs`
3156 CPPFLAGS="$CPPFLAGS $LIBOPENSC_CFLAGS"
Darren Tucker0ee3cbf2006-09-23 16:25:19 +10003157 LIBS="$LIBS $LIBOPENSC_LIBS"
Tim Rice12ee8e22005-03-17 13:37:04 -08003158 AC_DEFINE(SMARTCARD)
Tim Rice7df8d392005-09-19 09:33:39 -07003159 AC_DEFINE(USE_OPENSC, 1,
3160 [Define if you want smartcard support
3161 using OpenSC])
Tim Rice12ee8e22005-03-17 13:37:04 -08003162 SCARD_MSG="yes, using OpenSC"
3163 fi
3164 fi
3165 ]
3166)
Damien Miller85de5802001-09-18 14:01:11 +10003167
Darren Tucker5f88d342003-10-15 16:57:57 +10003168# Check libraries needed by DNS fingerprint support
Damien Millera8e06ce2003-11-21 23:48:55 +11003169AC_SEARCH_LIBS(getrrsetbyname, resolv,
Tim Rice7df8d392005-09-19 09:33:39 -07003170 [AC_DEFINE(HAVE_GETRRSETBYNAME, 1,
3171 [Define if getrrsetbyname() exists])],
Damien Miller7abe09b2003-05-15 10:53:49 +10003172 [
Darren Tucker5f88d342003-10-15 16:57:57 +10003173 # Needed by our getrrsetbyname()
3174 AC_SEARCH_LIBS(res_query, resolv)
3175 AC_SEARCH_LIBS(dn_expand, resolv)
Darren Tucker8e968a52004-05-13 11:56:16 +10003176 AC_MSG_CHECKING(if res_query will link)
3177 AC_TRY_LINK_FUNC(res_query, AC_MSG_RESULT(yes),
3178 [AC_MSG_RESULT(no)
3179 saved_LIBS="$LIBS"
3180 LIBS="$LIBS -lresolv"
3181 AC_MSG_CHECKING(for res_query in -lresolv)
3182 AC_LINK_IFELSE([
3183#include <resolv.h>
3184int main()
3185{
3186 res_query (0, 0, 0, 0, 0);
3187 return 0;
3188}
3189 ],
3190 [LIBS="$LIBS -lresolv"
3191 AC_MSG_RESULT(yes)],
3192 [LIBS="$saved_LIBS"
3193 AC_MSG_RESULT(no)])
3194 ])
Darren Tucker5f88d342003-10-15 16:57:57 +10003195 AC_CHECK_FUNCS(_getshort _getlong)
Darren Tuckerd886e1c2005-06-01 18:57:45 +10003196 AC_CHECK_DECLS([_getshort, _getlong], , ,
Tim Ricefcc7ff12005-06-02 20:28:29 -07003197 [#include <sys/types.h>
3198 #include <arpa/nameser.h>])
Darren Tucker5f88d342003-10-15 16:57:57 +10003199 AC_CHECK_MEMBER(HEADER.ad,
Tim Rice7df8d392005-09-19 09:33:39 -07003200 [AC_DEFINE(HAVE_HEADER_AD, 1,
3201 [Define if HEADER.ad exists in arpa/nameser.h])],,
Darren Tucker5f88d342003-10-15 16:57:57 +10003202 [#include <arpa/nameser.h>])
3203 ])
Damien Miller7abe09b2003-05-15 10:53:49 +10003204
Darren Tuckercc40d5e2007-04-29 13:58:06 +10003205AC_MSG_CHECKING(if struct __res_state _res is an extern)
3206AC_LINK_IFELSE([
3207#include <stdio.h>
3208#if HAVE_SYS_TYPES_H
3209# include <sys/types.h>
3210#endif
3211#include <netinet/in.h>
3212#include <arpa/nameser.h>
3213#include <resolv.h>
3214extern struct __res_state _res;
3215int main() { return 0; }
3216 ],
3217 [AC_MSG_RESULT(yes)
3218 AC_DEFINE(HAVE__RES_EXTERN, 1,
3219 [Define if you have struct __res_state _res as an extern])
3220 ],
3221 [ AC_MSG_RESULT(no) ]
3222)
3223
Damien Miller73b42d22006-04-22 21:26:08 +10003224# Check whether user wants SELinux support
3225SELINUX_MSG="no"
3226LIBSELINUX=""
3227AC_ARG_WITH(selinux,
3228 [ --with-selinux Enable SELinux support],
3229 [ if test "x$withval" != "xno" ; then
Darren Tucker20e9f972007-03-25 18:26:01 +10003230 save_LIBS="$LIBS"
Damien Miller73b42d22006-04-22 21:26:08 +10003231 AC_DEFINE(WITH_SELINUX,1,[Define if you want SELinux support.])
3232 SELINUX_MSG="yes"
3233 AC_CHECK_HEADER([selinux/selinux.h], ,
3234 AC_MSG_ERROR(SELinux support requires selinux.h header))
3235 AC_CHECK_LIB(selinux, setexeccon, [ LIBSELINUX="-lselinux" ],
3236 AC_MSG_ERROR(SELinux support requires libselinux library))
Darren Tucker20e9f972007-03-25 18:26:01 +10003237 SSHDLIBS="$SSHDLIBS $LIBSELINUX"
Damien Miller73b42d22006-04-22 21:26:08 +10003238 AC_CHECK_FUNCS(getseuserbyname get_default_context_with_level)
Darren Tuckeradc947d2006-10-07 09:07:20 +10003239 LIBS="$save_LIBS"
Damien Miller73b42d22006-04-22 21:26:08 +10003240 fi ]
3241)
Damien Miller73b42d22006-04-22 21:26:08 +10003242
Damien Millerfd4c9ee2002-04-13 11:04:40 +10003243# Check whether user wants Kerberos 5 support
Damien Millera8e06ce2003-11-21 23:48:55 +11003244KRB5_MSG="no"
Damien Millerfd4c9ee2002-04-13 11:04:40 +10003245AC_ARG_WITH(kerberos5,
Damien Millera8e06ce2003-11-21 23:48:55 +11003246 [ --with-kerberos5=PATH Enable Kerberos 5 support],
Darren Tucker1d3ca582004-01-22 12:05:34 +11003247 [ if test "x$withval" != "xno" ; then
3248 if test "x$withval" = "xyes" ; then
3249 KRB5ROOT="/usr/local"
3250 else
3251 KRB5ROOT=${withval}
3252 fi
3253
Tim Rice7df8d392005-09-19 09:33:39 -07003254 AC_DEFINE(KRB5, 1, [Define if you want Kerberos 5 support])
Darren Tucker1d3ca582004-01-22 12:05:34 +11003255 KRB5_MSG="yes"
3256
3257 AC_MSG_CHECKING(for krb5-config)
3258 if test -x $KRB5ROOT/bin/krb5-config ; then
3259 KRB5CONF=$KRB5ROOT/bin/krb5-config
3260 AC_MSG_RESULT($KRB5CONF)
3261
3262 AC_MSG_CHECKING(for gssapi support)
3263 if $KRB5CONF | grep gssapi >/dev/null ; then
3264 AC_MSG_RESULT(yes)
Tim Rice7df8d392005-09-19 09:33:39 -07003265 AC_DEFINE(GSSAPI, 1,
3266 [Define this if you want GSSAPI
3267 support in the version 2 protocol])
Darren Tucker0d27ed12004-02-24 10:37:33 +11003268 k5confopts=gssapi
Damien Millera8e06ce2003-11-21 23:48:55 +11003269 else
Darren Tucker1d3ca582004-01-22 12:05:34 +11003270 AC_MSG_RESULT(no)
Darren Tucker0d27ed12004-02-24 10:37:33 +11003271 k5confopts=""
Damien Millera8e06ce2003-11-21 23:48:55 +11003272 fi
Darren Tucker0d27ed12004-02-24 10:37:33 +11003273 K5CFLAGS="`$KRB5CONF --cflags $k5confopts`"
3274 K5LIBS="`$KRB5CONF --libs $k5confopts`"
Darren Tucker1d3ca582004-01-22 12:05:34 +11003275 CPPFLAGS="$CPPFLAGS $K5CFLAGS"
Darren Tucker1d3ca582004-01-22 12:05:34 +11003276 AC_MSG_CHECKING(whether we are using Heimdal)
3277 AC_TRY_COMPILE([ #include <krb5.h> ],
3278 [ char *tmp = heimdal_version; ],
3279 [ AC_MSG_RESULT(yes)
Tim Rice7df8d392005-09-19 09:33:39 -07003280 AC_DEFINE(HEIMDAL, 1,
3281 [Define this if you are using the
3282 Heimdal version of Kerberos V5]) ],
Darren Tucker1d3ca582004-01-22 12:05:34 +11003283 AC_MSG_RESULT(no)
3284 )
3285 else
3286 AC_MSG_RESULT(no)
Damien Millerfd4c9ee2002-04-13 11:04:40 +10003287 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include"
Damien Millera8e06ce2003-11-21 23:48:55 +11003288 LDFLAGS="$LDFLAGS -L${KRB5ROOT}/lib"
Damien Millera8e06ce2003-11-21 23:48:55 +11003289 AC_MSG_CHECKING(whether we are using Heimdal)
3290 AC_TRY_COMPILE([ #include <krb5.h> ],
3291 [ char *tmp = heimdal_version; ],
3292 [ AC_MSG_RESULT(yes)
3293 AC_DEFINE(HEIMDAL)
Damien Miller5561e0b2004-04-20 20:28:55 +10003294 K5LIBS="-lkrb5 -ldes"
3295 K5LIBS="$K5LIBS -lcom_err -lasn1"
Tim Riceeae17cc2005-03-17 16:52:20 -08003296 AC_CHECK_LIB(roken, net_write,
Damien Miller5561e0b2004-04-20 20:28:55 +10003297 [K5LIBS="$K5LIBS -lroken"])
Damien Millera8e06ce2003-11-21 23:48:55 +11003298 ],
3299 [ AC_MSG_RESULT(no)
3300 K5LIBS="-lkrb5 -lk5crypto -lcom_err"
3301 ]
3302 )
Damien Miller200d0a72003-06-30 19:21:36 +10003303 AC_SEARCH_LIBS(dn_expand, resolv)
Damien Millerfd4c9ee2002-04-13 11:04:40 +10003304
Darren Tucker49aaf4a2003-08-26 11:58:16 +10003305 AC_CHECK_LIB(gssapi,gss_init_sec_context,
3306 [ AC_DEFINE(GSSAPI)
3307 K5LIBS="-lgssapi $K5LIBS" ],
3308 [ AC_CHECK_LIB(gssapi_krb5,gss_init_sec_context,
3309 [ AC_DEFINE(GSSAPI)
Damien Millera8e06ce2003-11-21 23:48:55 +11003310 K5LIBS="-lgssapi_krb5 $K5LIBS" ],
Darren Tucker49aaf4a2003-08-26 11:58:16 +10003311 AC_MSG_WARN([Cannot find any suitable gss-api library - build may fail]),
3312 $K5LIBS)
3313 ],
3314 $K5LIBS)
Tim Riceeae17cc2005-03-17 16:52:20 -08003315
Darren Tucker49aaf4a2003-08-26 11:58:16 +10003316 AC_CHECK_HEADER(gssapi.h, ,
3317 [ unset ac_cv_header_gssapi_h
Damien Millera8e06ce2003-11-21 23:48:55 +11003318 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi"
Darren Tucker49aaf4a2003-08-26 11:58:16 +10003319 AC_CHECK_HEADERS(gssapi.h, ,
3320 AC_MSG_WARN([Cannot find any suitable gss-api header - build may fail])
Damien Millera8e06ce2003-11-21 23:48:55 +11003321 )
Darren Tucker49aaf4a2003-08-26 11:58:16 +10003322 ]
3323 )
3324
3325 oldCPP="$CPPFLAGS"
3326 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi"
3327 AC_CHECK_HEADER(gssapi_krb5.h, ,
3328 [ CPPFLAGS="$oldCPP" ])
3329
Damien Millera8e06ce2003-11-21 23:48:55 +11003330 fi
Darren Tucker1d3ca582004-01-22 12:05:34 +11003331 if test ! -z "$need_dash_r" ; then
3332 LDFLAGS="$LDFLAGS -R${KRB5ROOT}/lib"
3333 fi
3334 if test ! -z "$blibpath" ; then
3335 blibpath="$blibpath:${KRB5ROOT}/lib"
3336 fi
Tim Ricefd9e9e32005-09-12 17:36:10 -07003337
3338 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h)
3339 AC_CHECK_HEADERS(gssapi_krb5.h gssapi/gssapi_krb5.h)
3340 AC_CHECK_HEADERS(gssapi_generic.h gssapi/gssapi_generic.h)
3341
3342 LIBS="$LIBS $K5LIBS"
Tim Rice7df8d392005-09-19 09:33:39 -07003343 AC_SEARCH_LIBS(k_hasafs, kafs, AC_DEFINE(USE_AFS, 1,
3344 [Define this if you want to use libkafs' AFS support]))
Darren Tucker0d27ed12004-02-24 10:37:33 +11003345 fi
Darren Tucker0d27ed12004-02-24 10:37:33 +11003346 ]
Damien Millerfd4c9ee2002-04-13 11:04:40 +10003347)
Damien Millerc79bc0d2001-03-28 13:03:42 +10003348
Damien Millera22ba012000-03-02 23:09:20 +11003349# Looking for programs, paths and files
Damien Millera22ba012000-03-02 23:09:20 +11003350
Damien Millerf58c6722002-05-13 13:15:42 +10003351PRIVSEP_PATH=/var/empty
3352AC_ARG_WITH(privsep-path,
Tim Ricecbb90662002-07-08 19:17:10 -07003353 [ --with-privsep-path=xxx Path for privilege separation chroot (default=/var/empty)],
Damien Millerf58c6722002-05-13 13:15:42 +10003354 [
Tim Rice35cc69d2005-03-17 16:44:25 -08003355 if test -n "$withval" && test "x$withval" != "xno" && \
3356 test "x${withval}" != "xyes"; then
Damien Millerf58c6722002-05-13 13:15:42 +10003357 PRIVSEP_PATH=$withval
3358 fi
3359 ]
3360)
3361AC_SUBST(PRIVSEP_PATH)
3362
Damien Millera22ba012000-03-02 23:09:20 +11003363AC_ARG_WITH(xauth,
3364 [ --with-xauth=PATH Specify path to xauth program ],
3365 [
Tim Rice35cc69d2005-03-17 16:44:25 -08003366 if test -n "$withval" && test "x$withval" != "xno" && \
3367 test "x${withval}" != "xyes"; then
Damien Miller7b22d652000-06-18 14:07:04 +10003368 xauth_path=$withval
Damien Millera22ba012000-03-02 23:09:20 +11003369 fi
3370 ],
3371 [
Tim Ricee22be3b2002-07-17 19:20:07 -07003372 TestPath="$PATH"
3373 TestPath="${TestPath}${PATH_SEPARATOR}/usr/X/bin"
3374 TestPath="${TestPath}${PATH_SEPARATOR}/usr/bin/X11"
3375 TestPath="${TestPath}${PATH_SEPARATOR}/usr/X11R6/bin"
3376 TestPath="${TestPath}${PATH_SEPARATOR}/usr/openwin/bin"
3377 AC_PATH_PROG(xauth_path, xauth, , $TestPath)
Damien Milleredb82922000-06-20 13:25:52 +10003378 if (test ! -z "$xauth_path" && test -x "/usr/openwin/bin/xauth") ; then
Damien Millera22ba012000-03-02 23:09:20 +11003379 xauth_path="/usr/openwin/bin/xauth"
3380 fi
3381 ]
3382)
3383
Damien Miller7d901272003-01-13 16:55:22 +11003384STRIP_OPT=-s
3385AC_ARG_ENABLE(strip,
3386 [ --disable-strip Disable calling strip(1) on install],
3387 [
3388 if test "x$enableval" = "xno" ; then
3389 STRIP_OPT=
3390 fi
3391 ]
3392)
3393AC_SUBST(STRIP_OPT)
3394
Damien Millera19cf472000-11-29 13:28:50 +11003395if test -z "$xauth_path" ; then
3396 XAUTH_PATH="undefined"
3397 AC_SUBST(XAUTH_PATH)
3398else
Tim Rice7df8d392005-09-19 09:33:39 -07003399 AC_DEFINE_UNQUOTED(XAUTH_PATH, "$xauth_path",
3400 [Define if xauth is found in your path])
Damien Millera19cf472000-11-29 13:28:50 +11003401 XAUTH_PATH=$xauth_path
3402 AC_SUBST(XAUTH_PATH)
Damien Millera22ba012000-03-02 23:09:20 +11003403fi
Damien Millera22ba012000-03-02 23:09:20 +11003404
3405# Check for mail directory (last resort if we cannot get it from headers)
3406if test ! -z "$MAIL" ; then
3407 maildir=`dirname $MAIL`
Tim Rice7df8d392005-09-19 09:33:39 -07003408 AC_DEFINE_UNQUOTED(MAIL_DIRECTORY, "$maildir",
3409 [Set this to your mail directory if you don't have maillock.h])
Damien Millera22ba012000-03-02 23:09:20 +11003410fi
3411
Darren Tucker623d92f2004-09-12 22:36:15 +10003412if test ! -z "$cross_compiling" && test "x$cross_compiling" = "xyes"; then
Darren Tuckera0c2b392004-09-11 23:26:37 +10003413 AC_MSG_WARN([cross compiling: Disabling /dev/ptmx test])
3414 disable_ptmx_check=yes
3415fi
Damien Millera22ba012000-03-02 23:09:20 +11003416if test -z "$no_dev_ptmx" ; then
Kevin Steves0ea1d9d2002-04-25 18:17:04 +00003417 if test "x$disable_ptmx_check" != "xyes" ; then
Damien Millera8e06ce2003-11-21 23:48:55 +11003418 AC_CHECK_FILE("/dev/ptmx",
Kevin Steves0ea1d9d2002-04-25 18:17:04 +00003419 [
Tim Rice7df8d392005-09-19 09:33:39 -07003420 AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX, 1,
3421 [Define if you have /dev/ptmx])
Kevin Steves0ea1d9d2002-04-25 18:17:04 +00003422 have_dev_ptmx=1
3423 ]
3424 )
3425 fi
Damien Millera22ba012000-03-02 23:09:20 +11003426fi
Darren Tuckera0c2b392004-09-11 23:26:37 +10003427
Darren Tucker623d92f2004-09-12 22:36:15 +10003428if test ! -z "$cross_compiling" && test "x$cross_compiling" != "xyes"; then
Darren Tuckera0c2b392004-09-11 23:26:37 +10003429 AC_CHECK_FILE("/dev/ptc",
3430 [
Tim Rice7df8d392005-09-19 09:33:39 -07003431 AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC, 1,
3432 [Define if you have /dev/ptc])
Darren Tuckera0c2b392004-09-11 23:26:37 +10003433 have_dev_ptc=1
3434 ]
3435 )
3436else
3437 AC_MSG_WARN([cross compiling: Disabling /dev/ptc test])
3438fi
Damien Miller204ad072000-03-02 23:56:12 +11003439
Damien Millera22ba012000-03-02 23:09:20 +11003440# Options from here on. Some of these are preset by platform above
Ben Lindstrom9841b0a2001-06-09 02:26:58 +00003441AC_ARG_WITH(mantype,
Damien Miller897741e2001-04-16 10:41:46 +10003442 [ --with-mantype=man|cat|doc Set man page type],
Damien Miller670a4b82000-01-22 13:53:11 +11003443 [
Damien Miller897741e2001-04-16 10:41:46 +10003444 case "$withval" in
3445 man|cat|doc)
3446 MANTYPE=$withval
3447 ;;
3448 *)
3449 AC_MSG_ERROR(invalid man type: $withval)
3450 ;;
3451 esac
Damien Miller670a4b82000-01-22 13:53:11 +11003452 ]
3453)
Ben Lindstrombc709922001-04-18 18:04:21 +00003454if test -z "$MANTYPE"; then
Tim Ricee22be3b2002-07-17 19:20:07 -07003455 TestPath="/usr/bin${PATH_SEPARATOR}/usr/ucb"
3456 AC_PATH_PROGS(NROFF, nroff awf, /bin/false, $TestPath)
Ben Lindstrombc709922001-04-18 18:04:21 +00003457 if ${NROFF} -mdoc ${srcdir}/ssh.1 >/dev/null 2>&1; then
3458 MANTYPE=doc
3459 elif ${NROFF} -man ${srcdir}/ssh.1 >/dev/null 2>&1; then
3460 MANTYPE=man
3461 else
3462 MANTYPE=cat
3463 fi
3464fi
Damien Miller670a4b82000-01-22 13:53:11 +11003465AC_SUBST(MANTYPE)
Ben Lindstrombc709922001-04-18 18:04:21 +00003466if test "$MANTYPE" = "doc"; then
3467 mansubdir=man;
3468else
3469 mansubdir=$MANTYPE;
3470fi
3471AC_SUBST(mansubdir)
Damien Miller8bdeee21999-12-30 15:50:54 +11003472
Damien Millera22ba012000-03-02 23:09:20 +11003473# Check whether to enable MD5 passwords
Damien Millera8e06ce2003-11-21 23:48:55 +11003474MD5_MSG="no"
Damien Millerf7c0f821999-11-22 22:31:49 +11003475AC_ARG_WITH(md5-passwords,
Damien Millerdd1c7ba1999-11-19 15:53:20 +11003476 [ --with-md5-passwords Enable use of MD5 passwords],
Damien Miller8bdeee21999-12-30 15:50:54 +11003477 [
Damien Millerb85dcad2000-03-11 11:37:00 +11003478 if test "x$withval" != "xno" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07003479 AC_DEFINE(HAVE_MD5_PASSWORDS, 1,
3480 [Define if you want to allow MD5 passwords])
Damien Millera8e06ce2003-11-21 23:48:55 +11003481 MD5_MSG="yes"
Damien Miller8bdeee21999-12-30 15:50:54 +11003482 fi
3483 ]
Damien Millerdd1c7ba1999-11-19 15:53:20 +11003484)
3485
Damien Millera22ba012000-03-02 23:09:20 +11003486# Whether to disable shadow password support
Damien Miller76112de1999-12-21 11:18:08 +11003487AC_ARG_WITH(shadow,
3488 [ --without-shadow Disable shadow password support],
3489 [
Tim Riceeae17cc2005-03-17 16:52:20 -08003490 if test "x$withval" = "xno" ; then
Damien Miller76112de1999-12-21 11:18:08 +11003491 AC_DEFINE(DISABLE_SHADOW)
Damien Miller1f335fb2000-06-26 11:31:33 +10003492 disable_shadow=yes
Damien Miller76112de1999-12-21 11:18:08 +11003493 fi
3494 ]
3495)
3496
Damien Miller1f335fb2000-06-26 11:31:33 +10003497if test -z "$disable_shadow" ; then
3498 AC_MSG_CHECKING([if the systems has expire shadow information])
3499 AC_TRY_COMPILE(
3500 [
3501#include <sys/types.h>
3502#include <shadow.h>
3503 struct spwd sp;
3504 ],[ sp.sp_expire = sp.sp_lstchg = sp.sp_inact = 0; ],
3505 [ sp_expire_available=yes ], []
3506 )
3507
3508 if test "x$sp_expire_available" = "xyes" ; then
3509 AC_MSG_RESULT(yes)
Tim Rice7df8d392005-09-19 09:33:39 -07003510 AC_DEFINE(HAS_SHADOW_EXPIRE, 1,
3511 [Define if you want to use shadow password expire field])
Damien Miller1f335fb2000-06-26 11:31:33 +10003512 else
3513 AC_MSG_RESULT(no)
3514 fi
3515fi
3516
Damien Millera22ba012000-03-02 23:09:20 +11003517# Use ip address instead of hostname in $DISPLAY
Damien Miller9a947342000-08-30 10:03:33 +11003518if test ! -z "$IPADDR_IN_DISPLAY" ; then
3519 DISPLAY_HACK_MSG="yes"
Tim Rice7df8d392005-09-19 09:33:39 -07003520 AC_DEFINE(IPADDR_IN_DISPLAY, 1,
3521 [Define if you need to use IP address
3522 instead of hostname in $DISPLAY])
Damien Miller9a947342000-08-30 10:03:33 +11003523else
Damien Millera8e06ce2003-11-21 23:48:55 +11003524 DISPLAY_HACK_MSG="no"
Damien Miller9a947342000-08-30 10:03:33 +11003525 AC_ARG_WITH(ipaddr-display,
3526 [ --with-ipaddr-display Use ip address instead of hostname in \$DISPLAY],
3527 [
Tim Riceeae17cc2005-03-17 16:52:20 -08003528 if test "x$withval" != "xno" ; then
Damien Miller9a947342000-08-30 10:03:33 +11003529 AC_DEFINE(IPADDR_IN_DISPLAY)
Damien Millera8e06ce2003-11-21 23:48:55 +11003530 DISPLAY_HACK_MSG="yes"
Damien Miller9a947342000-08-30 10:03:33 +11003531 fi
3532 ]
3533 )
3534fi
Damien Miller76112de1999-12-21 11:18:08 +11003535
Darren Tuckere1a790d2003-09-16 11:52:19 +10003536# check for /etc/default/login and use it if present.
Tim Rice7ff4e6d2003-09-22 19:50:14 -07003537AC_ARG_ENABLE(etc-default-login,
Darren Tucker1b6f2292005-02-11 16:11:49 +11003538 [ --disable-etc-default-login Disable using PATH from /etc/default/login [no]],
Darren Tucker2f9573d2005-02-10 22:28:54 +11003539 [ if test "x$enableval" = "xno"; then
3540 AC_MSG_NOTICE([/etc/default/login handling disabled])
3541 etc_default_login=no
3542 else
3543 etc_default_login=yes
3544 fi ],
Darren Tucker314d89e2005-10-17 23:29:23 +10003545 [ if test ! -z "$cross_compiling" && test "x$cross_compiling" = "xyes";
3546 then
3547 AC_MSG_WARN([cross compiling: not checking /etc/default/login])
3548 etc_default_login=no
3549 else
3550 etc_default_login=yes
3551 fi ]
Darren Tucker2f9573d2005-02-10 22:28:54 +11003552)
Darren Tuckere1a790d2003-09-16 11:52:19 +10003553
Darren Tucker2f9573d2005-02-10 22:28:54 +11003554if test "x$etc_default_login" != "xno"; then
3555 AC_CHECK_FILE("/etc/default/login",
3556 [ external_path_file=/etc/default/login ])
Darren Tucker314d89e2005-10-17 23:29:23 +10003557 if test "x$external_path_file" = "x/etc/default/login"; then
Tim Rice7df8d392005-09-19 09:33:39 -07003558 AC_DEFINE(HAVE_ETC_DEFAULT_LOGIN, 1,
3559 [Define if your system has /etc/default/login])
Darren Tuckera0c2b392004-09-11 23:26:37 +10003560 fi
Darren Tucker2f9573d2005-02-10 22:28:54 +11003561fi
Darren Tuckere1a790d2003-09-16 11:52:19 +10003562
Tim Rice43a1c132002-04-17 21:19:14 -07003563dnl BSD systems use /etc/login.conf so --with-default-path= has no effect
Tim Rice8bb561b2005-03-17 16:23:19 -08003564if test $ac_cv_func_login_getcapbool = "yes" && \
3565 test $ac_cv_header_login_cap_h = "yes" ; then
Darren Tuckere1a790d2003-09-16 11:52:19 +10003566 external_path_file=/etc/login.conf
Tim Rice43a1c132002-04-17 21:19:14 -07003567fi
Darren Tuckere1a790d2003-09-16 11:52:19 +10003568
Damien Millera22ba012000-03-02 23:09:20 +11003569# Whether to mess with the default path
Damien Millera8e06ce2003-11-21 23:48:55 +11003570SERVER_PATH_MSG="(default)"
Damien Millere7f626c1999-12-31 09:49:44 +11003571AC_ARG_WITH(default-path,
Damien Millerf71d2a52002-05-13 15:14:08 +10003572 [ --with-default-path= Specify default \$PATH environment for server],
Damien Miller5a3e6831999-12-27 09:48:56 +11003573 [
Darren Tuckere1a790d2003-09-16 11:52:19 +10003574 if test "x$external_path_file" = "x/etc/login.conf" ; then
Tim Rice43a1c132002-04-17 21:19:14 -07003575 AC_MSG_WARN([
3576--with-default-path=PATH has no effect on this system.
3577Edit /etc/login.conf instead.])
Tim Riceeae17cc2005-03-17 16:52:20 -08003578 elif test "x$withval" != "xno" ; then
Tim Riceb925b4b2003-09-15 22:40:49 -07003579 if test ! -z "$external_path_file" ; then
Darren Tuckere1a790d2003-09-16 11:52:19 +10003580 AC_MSG_WARN([
3581--with-default-path=PATH will only be used if PATH is not defined in
3582$external_path_file .])
3583 fi
Tim Rice59ea0a02001-03-10 13:50:45 -08003584 user_path="$withval"
Damien Millera8e06ce2003-11-21 23:48:55 +11003585 SERVER_PATH_MSG="$withval"
Damien Miller5a3e6831999-12-27 09:48:56 +11003586 fi
Tim Rice59ea0a02001-03-10 13:50:45 -08003587 ],
Darren Tuckere1a790d2003-09-16 11:52:19 +10003588 [ if test "x$external_path_file" = "x/etc/login.conf" ; then
3589 AC_MSG_WARN([Make sure the path to scp is in /etc/login.conf])
Tim Rice43a1c132002-04-17 21:19:14 -07003590 else
Tim Riceb925b4b2003-09-15 22:40:49 -07003591 if test ! -z "$external_path_file" ; then
Darren Tuckere1a790d2003-09-16 11:52:19 +10003592 AC_MSG_WARN([
3593If PATH is defined in $external_path_file, ensure the path to scp is included,
3594otherwise scp will not work.])
3595 fi
Darren Tucker314d89e2005-10-17 23:29:23 +10003596 AC_RUN_IFELSE(
3597 [AC_LANG_SOURCE([[
Tim Rice59ea0a02001-03-10 13:50:45 -08003598/* find out what STDPATH is */
3599#include <stdio.h>
Tim Rice59ea0a02001-03-10 13:50:45 -08003600#ifdef HAVE_PATHS_H
3601# include <paths.h>
3602#endif
3603#ifndef _PATH_STDPATH
Tim Rice1c9e6882002-11-22 13:29:01 -08003604# ifdef _PATH_USERPATH /* Irix */
3605# define _PATH_STDPATH _PATH_USERPATH
3606# else
3607# define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin"
3608# endif
Tim Rice59ea0a02001-03-10 13:50:45 -08003609#endif
3610#include <sys/types.h>
3611#include <sys/stat.h>
3612#include <fcntl.h>
3613#define DATA "conftest.stdpath"
3614
3615main()
3616{
3617 FILE *fd;
3618 int rc;
Tim Riceeae17cc2005-03-17 16:52:20 -08003619
Tim Rice59ea0a02001-03-10 13:50:45 -08003620 fd = fopen(DATA,"w");
3621 if(fd == NULL)
3622 exit(1);
Tim Riceeae17cc2005-03-17 16:52:20 -08003623
Tim Rice59ea0a02001-03-10 13:50:45 -08003624 if ((rc = fprintf(fd,"%s", _PATH_STDPATH)) < 0)
3625 exit(1);
3626
3627 exit(0);
3628}
Darren Tucker314d89e2005-10-17 23:29:23 +10003629 ]])],
3630 [ user_path=`cat conftest.stdpath` ],
Tim Rice59ea0a02001-03-10 13:50:45 -08003631 [ user_path="/usr/bin:/bin:/usr/sbin:/sbin" ],
3632 [ user_path="/usr/bin:/bin:/usr/sbin:/sbin" ]
3633 )
3634# make sure $bindir is in USER_PATH so scp will work
3635 t_bindir=`eval echo ${bindir}`
3636 case $t_bindir in
3637 NONE/*) t_bindir=`echo $t_bindir | sed "s~NONE~$prefix~"` ;;
3638 esac
3639 case $t_bindir in
3640 NONE/*) t_bindir=`echo $t_bindir | sed "s~NONE~$ac_default_prefix~"` ;;
3641 esac
3642 echo $user_path | grep ":$t_bindir" > /dev/null 2>&1
3643 if test $? -ne 0 ; then
3644 echo $user_path | grep "^$t_bindir" > /dev/null 2>&1
3645 if test $? -ne 0 ; then
3646 user_path=$user_path:$t_bindir
3647 AC_MSG_RESULT(Adding $t_bindir to USER_PATH so scp will work)
3648 fi
3649 fi
Tim Rice43a1c132002-04-17 21:19:14 -07003650 fi ]
Damien Miller5a3e6831999-12-27 09:48:56 +11003651)
Darren Tuckere1a790d2003-09-16 11:52:19 +10003652if test "x$external_path_file" != "x/etc/login.conf" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07003653 AC_DEFINE_UNQUOTED(USER_PATH, "$user_path", [Specify default $PATH])
Tim Rice43a1c132002-04-17 21:19:14 -07003654 AC_SUBST(user_path)
3655fi
Damien Miller5a3e6831999-12-27 09:48:56 +11003656
Damien Millera18bbd32002-05-13 10:48:57 +10003657# Set superuser path separately to user path
Damien Millera18bbd32002-05-13 10:48:57 +10003658AC_ARG_WITH(superuser-path,
3659 [ --with-superuser-path= Specify different path for super-user],
3660 [
Tim Rice35cc69d2005-03-17 16:44:25 -08003661 if test -n "$withval" && test "x$withval" != "xno" && \
3662 test "x${withval}" != "xyes"; then
Tim Rice7df8d392005-09-19 09:33:39 -07003663 AC_DEFINE_UNQUOTED(SUPERUSER_PATH, "$withval",
3664 [Define if you want a different $PATH
3665 for the superuser])
Damien Millera18bbd32002-05-13 10:48:57 +10003666 superuser_path=$withval
3667 fi
3668 ]
3669)
3670
3671
Damien Miller61e50f12000-05-08 20:49:37 +10003672AC_MSG_CHECKING([if we need to convert IPv4 in IPv6-mapped addresses])
Damien Millera8e06ce2003-11-21 23:48:55 +11003673IPV4_IN6_HACK_MSG="no"
Damien Miller7bcb0892000-03-11 20:45:40 +11003674AC_ARG_WITH(4in6,
3675 [ --with-4in6 Check for and convert IPv4 in IPv6 mapped addresses],
3676 [
3677 if test "x$withval" != "xno" ; then
3678 AC_MSG_RESULT(yes)
Tim Rice7df8d392005-09-19 09:33:39 -07003679 AC_DEFINE(IPV4_IN_IPV6, 1,
3680 [Detect IPv4 in IPv6 mapped addresses
3681 and treat as IPv4])
Damien Millera8e06ce2003-11-21 23:48:55 +11003682 IPV4_IN6_HACK_MSG="yes"
Damien Miller7bcb0892000-03-11 20:45:40 +11003683 else
3684 AC_MSG_RESULT(no)
3685 fi
3686 ],[
3687 if test "x$inet6_default_4in6" = "xyes"; then
3688 AC_MSG_RESULT([yes (default)])
3689 AC_DEFINE(IPV4_IN_IPV6)
Damien Millera8e06ce2003-11-21 23:48:55 +11003690 IPV4_IN6_HACK_MSG="yes"
Damien Miller7bcb0892000-03-11 20:45:40 +11003691 else
3692 AC_MSG_RESULT([no (default)])
3693 fi
3694 ]
3695)
3696
Damien Miller60396b02001-02-18 17:01:00 +11003697# Whether to enable BSD auth support
Damien Miller6c21c512002-01-22 21:57:53 +11003698BSD_AUTH_MSG=no
Damien Miller60396b02001-02-18 17:01:00 +11003699AC_ARG_WITH(bsd-auth,
3700 [ --with-bsd-auth Enable BSD auth support],
3701 [
Tim Riceeae17cc2005-03-17 16:52:20 -08003702 if test "x$withval" != "xno" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07003703 AC_DEFINE(BSD_AUTH, 1,
3704 [Define if you have BSD auth support])
Damien Miller6c21c512002-01-22 21:57:53 +11003705 BSD_AUTH_MSG=yes
Damien Miller60396b02001-02-18 17:01:00 +11003706 fi
3707 ]
3708)
3709
Damien Millera22ba012000-03-02 23:09:20 +11003710# Where to place sshd.pid
Damien Millerb13c73e2000-01-17 22:02:17 +11003711piddir=/var/run
Damien Miller78315eb2000-09-29 23:01:36 +11003712# make sure the directory exists
Tim Riceeae17cc2005-03-17 16:52:20 -08003713if test ! -d $piddir ; then
Damien Miller78315eb2000-09-29 23:01:36 +11003714 piddir=`eval echo ${sysconfdir}`
3715 case $piddir in
Damien Millera8e06ce2003-11-21 23:48:55 +11003716 NONE/*) piddir=`echo $piddir | sed "s~NONE~$ac_default_prefix~"` ;;
Damien Miller78315eb2000-09-29 23:01:36 +11003717 esac
3718fi
3719
Tim Rice88f2ab52002-03-17 12:17:34 -08003720AC_ARG_WITH(pid-dir,
3721 [ --with-pid-dir=PATH Specify location of ssh.pid file],
3722 [
Tim Rice35cc69d2005-03-17 16:44:25 -08003723 if test -n "$withval" && test "x$withval" != "xno" && \
3724 test "x${withval}" != "xyes"; then
Tim Rice88f2ab52002-03-17 12:17:34 -08003725 piddir=$withval
Tim Riceeae17cc2005-03-17 16:52:20 -08003726 if test ! -d $piddir ; then
Tim Rice88f2ab52002-03-17 12:17:34 -08003727 AC_MSG_WARN([** no $piddir directory on this system **])
3728 fi
3729 fi
3730 ]
3731)
3732
Tim Rice7df8d392005-09-19 09:33:39 -07003733AC_DEFINE_UNQUOTED(_PATH_SSH_PIDDIR, "$piddir", [Specify location of ssh.pid])
Damien Millerb13c73e2000-01-17 22:02:17 +11003734AC_SUBST(piddir)
Damien Miller5eed6a22000-01-16 12:05:18 +11003735
andre2ff7b5d2000-06-03 14:57:40 +00003736dnl allow user to disable some login recording features
3737AC_ARG_ENABLE(lastlog,
andre43ca7e22000-06-19 08:23:46 +00003738 [ --disable-lastlog disable use of lastlog even if detected [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10003739 [
3740 if test "x$enableval" = "xno" ; then
3741 AC_DEFINE(DISABLE_LASTLOG)
3742 fi
3743 ]
andre2ff7b5d2000-06-03 14:57:40 +00003744)
3745AC_ARG_ENABLE(utmp,
andre43ca7e22000-06-19 08:23:46 +00003746 [ --disable-utmp disable use of utmp even if detected [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10003747 [
3748 if test "x$enableval" = "xno" ; then
3749 AC_DEFINE(DISABLE_UTMP)
3750 fi
3751 ]
andre2ff7b5d2000-06-03 14:57:40 +00003752)
3753AC_ARG_ENABLE(utmpx,
andre43ca7e22000-06-19 08:23:46 +00003754 [ --disable-utmpx disable use of utmpx even if detected [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10003755 [
3756 if test "x$enableval" = "xno" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07003757 AC_DEFINE(DISABLE_UTMPX, 1,
3758 [Define if you don't want to use utmpx])
Darren Tuckera3020db2003-06-28 12:54:33 +10003759 fi
3760 ]
andre2ff7b5d2000-06-03 14:57:40 +00003761)
3762AC_ARG_ENABLE(wtmp,
andre43ca7e22000-06-19 08:23:46 +00003763 [ --disable-wtmp disable use of wtmp even if detected [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10003764 [
3765 if test "x$enableval" = "xno" ; then
3766 AC_DEFINE(DISABLE_WTMP)
3767 fi
3768 ]
andre2ff7b5d2000-06-03 14:57:40 +00003769)
3770AC_ARG_ENABLE(wtmpx,
andre43ca7e22000-06-19 08:23:46 +00003771 [ --disable-wtmpx disable use of wtmpx even if detected [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10003772 [
3773 if test "x$enableval" = "xno" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07003774 AC_DEFINE(DISABLE_WTMPX, 1,
3775 [Define if you don't want to use wtmpx])
Darren Tuckera3020db2003-06-28 12:54:33 +10003776 fi
3777 ]
andre2ff7b5d2000-06-03 14:57:40 +00003778)
3779AC_ARG_ENABLE(libutil,
andre43ca7e22000-06-19 08:23:46 +00003780 [ --disable-libutil disable use of libutil (login() etc.) [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10003781 [
3782 if test "x$enableval" = "xno" ; then
3783 AC_DEFINE(DISABLE_LOGIN)
3784 fi
3785 ]
andre2ff7b5d2000-06-03 14:57:40 +00003786)
3787AC_ARG_ENABLE(pututline,
andre43ca7e22000-06-19 08:23:46 +00003788 [ --disable-pututline disable use of pututline() etc. ([uw]tmp) [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10003789 [
3790 if test "x$enableval" = "xno" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07003791 AC_DEFINE(DISABLE_PUTUTLINE, 1,
3792 [Define if you don't want to use pututline()
3793 etc. to write [uw]tmp])
Darren Tuckera3020db2003-06-28 12:54:33 +10003794 fi
3795 ]
andre2ff7b5d2000-06-03 14:57:40 +00003796)
3797AC_ARG_ENABLE(pututxline,
andre43ca7e22000-06-19 08:23:46 +00003798 [ --disable-pututxline disable use of pututxline() etc. ([uw]tmpx) [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10003799 [
3800 if test "x$enableval" = "xno" ; then
Tim Rice7df8d392005-09-19 09:33:39 -07003801 AC_DEFINE(DISABLE_PUTUTXLINE, 1,
3802 [Define if you don't want to use pututxline()
3803 etc. to write [uw]tmpx])
Darren Tuckera3020db2003-06-28 12:54:33 +10003804 fi
3805 ]
andre2ff7b5d2000-06-03 14:57:40 +00003806)
3807AC_ARG_WITH(lastlog,
andre43ca7e22000-06-19 08:23:46 +00003808 [ --with-lastlog=FILE|DIR specify lastlog location [common locations]],
Damien Miller709528a2001-01-31 09:57:55 +11003809 [
Tim Riceeae17cc2005-03-17 16:52:20 -08003810 if test "x$withval" = "xno" ; then
Damien Miller709528a2001-01-31 09:57:55 +11003811 AC_DEFINE(DISABLE_LASTLOG)
Tim Rice35cc69d2005-03-17 16:44:25 -08003812 elif test -n "$withval" && test "x${withval}" != "xyes"; then
Damien Miller709528a2001-01-31 09:57:55 +11003813 conf_lastlog_location=$withval
3814 fi
3815 ]
3816)
andre2ff7b5d2000-06-03 14:57:40 +00003817
3818dnl lastlog, [uw]tmpx? detection
3819dnl NOTE: set the paths in the platform section to avoid the
3820dnl need for command-line parameters
3821dnl lastlog and [uw]tmp are subject to a file search if all else fails
3822
3823dnl lastlog detection
3824dnl NOTE: the code itself will detect if lastlog is a directory
3825AC_MSG_CHECKING([if your system defines LASTLOG_FILE])
3826AC_TRY_COMPILE([
3827#include <sys/types.h>
3828#include <utmp.h>
3829#ifdef HAVE_LASTLOG_H
3830# include <lastlog.h>
3831#endif
Damien Miller2994e082000-06-04 15:51:47 +10003832#ifdef HAVE_PATHS_H
andre2ff7b5d2000-06-03 14:57:40 +00003833# include <paths.h>
3834#endif
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00003835#ifdef HAVE_LOGIN_H
3836# include <login.h>
3837#endif
andre2ff7b5d2000-06-03 14:57:40 +00003838 ],
3839 [ char *lastlog = LASTLOG_FILE; ],
3840 [ AC_MSG_RESULT(yes) ],
Damien Miller2994e082000-06-04 15:51:47 +10003841 [
3842 AC_MSG_RESULT(no)
3843 AC_MSG_CHECKING([if your system defines _PATH_LASTLOG])
3844 AC_TRY_COMPILE([
3845#include <sys/types.h>
3846#include <utmp.h>
3847#ifdef HAVE_LASTLOG_H
3848# include <lastlog.h>
3849#endif
3850#ifdef HAVE_PATHS_H
3851# include <paths.h>
3852#endif
3853 ],
3854 [ char *lastlog = _PATH_LASTLOG; ],
3855 [ AC_MSG_RESULT(yes) ],
3856 [
andree441aa32000-06-12 22:34:38 +00003857 AC_MSG_RESULT(no)
Damien Miller2994e082000-06-04 15:51:47 +10003858 system_lastlog_path=no
3859 ])
3860 ]
andre2ff7b5d2000-06-03 14:57:40 +00003861)
Damien Miller2994e082000-06-04 15:51:47 +10003862
andre2ff7b5d2000-06-03 14:57:40 +00003863if test -z "$conf_lastlog_location"; then
3864 if test x"$system_lastlog_path" = x"no" ; then
3865 for f in /var/log/lastlog /usr/adm/lastlog /var/adm/lastlog /etc/security/lastlog ; do
Damien Milleredb82922000-06-20 13:25:52 +10003866 if (test -d "$f" || test -f "$f") ; then
andre2ff7b5d2000-06-03 14:57:40 +00003867 conf_lastlog_location=$f
3868 fi
3869 done
3870 if test -z "$conf_lastlog_location"; then
andre45cad512000-06-12 23:27:31 +00003871 AC_MSG_WARN([** Cannot find lastlog **])
3872 dnl Don't define DISABLE_LASTLOG - that means we don't try wtmp/wtmpx
andre2ff7b5d2000-06-03 14:57:40 +00003873 fi
3874 fi
3875fi
3876
3877if test -n "$conf_lastlog_location"; then
Tim Rice7df8d392005-09-19 09:33:39 -07003878 AC_DEFINE_UNQUOTED(CONF_LASTLOG_FILE, "$conf_lastlog_location",
3879 [Define if you want to specify the path to your lastlog file])
Tim Riceeae17cc2005-03-17 16:52:20 -08003880fi
andre2ff7b5d2000-06-03 14:57:40 +00003881
3882dnl utmp detection
3883AC_MSG_CHECKING([if your system defines UTMP_FILE])
3884AC_TRY_COMPILE([
3885#include <sys/types.h>
3886#include <utmp.h>
Damien Miller2994e082000-06-04 15:51:47 +10003887#ifdef HAVE_PATHS_H
andre2ff7b5d2000-06-03 14:57:40 +00003888# include <paths.h>
3889#endif
3890 ],
3891 [ char *utmp = UTMP_FILE; ],
3892 [ AC_MSG_RESULT(yes) ],
3893 [ AC_MSG_RESULT(no)
3894 system_utmp_path=no ]
3895)
3896if test -z "$conf_utmp_location"; then
3897 if test x"$system_utmp_path" = x"no" ; then
3898 for f in /etc/utmp /usr/adm/utmp /var/run/utmp; do
3899 if test -f $f ; then
3900 conf_utmp_location=$f
3901 fi
3902 done
3903 if test -z "$conf_utmp_location"; then
3904 AC_DEFINE(DISABLE_UTMP)
3905 fi
3906 fi
3907fi
3908if test -n "$conf_utmp_location"; then
Tim Rice7df8d392005-09-19 09:33:39 -07003909 AC_DEFINE_UNQUOTED(CONF_UTMP_FILE, "$conf_utmp_location",
3910 [Define if you want to specify the path to your utmp file])
Tim Riceeae17cc2005-03-17 16:52:20 -08003911fi
andre2ff7b5d2000-06-03 14:57:40 +00003912
3913dnl wtmp detection
3914AC_MSG_CHECKING([if your system defines WTMP_FILE])
3915AC_TRY_COMPILE([
3916#include <sys/types.h>
3917#include <utmp.h>
Damien Miller2994e082000-06-04 15:51:47 +10003918#ifdef HAVE_PATHS_H
andre2ff7b5d2000-06-03 14:57:40 +00003919# include <paths.h>
3920#endif
3921 ],
3922 [ char *wtmp = WTMP_FILE; ],
3923 [ AC_MSG_RESULT(yes) ],
3924 [ AC_MSG_RESULT(no)
3925 system_wtmp_path=no ]
3926)
3927if test -z "$conf_wtmp_location"; then
3928 if test x"$system_wtmp_path" = x"no" ; then
3929 for f in /usr/adm/wtmp /var/log/wtmp; do
3930 if test -f $f ; then
3931 conf_wtmp_location=$f
3932 fi
3933 done
3934 if test -z "$conf_wtmp_location"; then
3935 AC_DEFINE(DISABLE_WTMP)
3936 fi
3937 fi
3938fi
3939if test -n "$conf_wtmp_location"; then
Tim Rice7df8d392005-09-19 09:33:39 -07003940 AC_DEFINE_UNQUOTED(CONF_WTMP_FILE, "$conf_wtmp_location",
3941 [Define if you want to specify the path to your wtmp file])
Tim Riceeae17cc2005-03-17 16:52:20 -08003942fi
andre2ff7b5d2000-06-03 14:57:40 +00003943
3944
3945dnl utmpx detection - I don't know any system so perverse as to require
3946dnl utmpx, but not define UTMPX_FILE (ditto wtmpx.) No doubt it's out
3947dnl there, though.
3948AC_MSG_CHECKING([if your system defines UTMPX_FILE])
3949AC_TRY_COMPILE([
3950#include <sys/types.h>
3951#include <utmp.h>
3952#ifdef HAVE_UTMPX_H
3953#include <utmpx.h>
3954#endif
Damien Miller2994e082000-06-04 15:51:47 +10003955#ifdef HAVE_PATHS_H
andre2ff7b5d2000-06-03 14:57:40 +00003956# include <paths.h>
3957#endif
3958 ],
3959 [ char *utmpx = UTMPX_FILE; ],
3960 [ AC_MSG_RESULT(yes) ],
3961 [ AC_MSG_RESULT(no)
3962 system_utmpx_path=no ]
3963)
3964if test -z "$conf_utmpx_location"; then
3965 if test x"$system_utmpx_path" = x"no" ; then
3966 AC_DEFINE(DISABLE_UTMPX)
3967 fi
3968else
Tim Rice7df8d392005-09-19 09:33:39 -07003969 AC_DEFINE_UNQUOTED(CONF_UTMPX_FILE, "$conf_utmpx_location",
3970 [Define if you want to specify the path to your utmpx file])
Tim Riceeae17cc2005-03-17 16:52:20 -08003971fi
andre2ff7b5d2000-06-03 14:57:40 +00003972
3973dnl wtmpx detection
3974AC_MSG_CHECKING([if your system defines WTMPX_FILE])
3975AC_TRY_COMPILE([
3976#include <sys/types.h>
3977#include <utmp.h>
3978#ifdef HAVE_UTMPX_H
3979#include <utmpx.h>
3980#endif
Damien Miller2994e082000-06-04 15:51:47 +10003981#ifdef HAVE_PATHS_H
andre2ff7b5d2000-06-03 14:57:40 +00003982# include <paths.h>
3983#endif
3984 ],
3985 [ char *wtmpx = WTMPX_FILE; ],
3986 [ AC_MSG_RESULT(yes) ],
3987 [ AC_MSG_RESULT(no)
3988 system_wtmpx_path=no ]
3989)
3990if test -z "$conf_wtmpx_location"; then
3991 if test x"$system_wtmpx_path" = x"no" ; then
3992 AC_DEFINE(DISABLE_WTMPX)
3993 fi
3994else
Tim Rice7df8d392005-09-19 09:33:39 -07003995 AC_DEFINE_UNQUOTED(CONF_WTMPX_FILE, "$conf_wtmpx_location",
3996 [Define if you want to specify the path to your wtmpx file])
Tim Riceeae17cc2005-03-17 16:52:20 -08003997fi
andre2ff7b5d2000-06-03 14:57:40 +00003998
Damien Miller4018c192000-04-30 09:30:44 +10003999
Damien Miller29ea30d2000-03-17 10:54:15 +11004000if test ! -z "$blibpath" ; then
Damien Millereab4bae2003-04-29 23:22:40 +10004001 LDFLAGS="$LDFLAGS $blibflags$blibpath"
4002 AC_MSG_WARN([Please check and edit blibpath in LDFLAGS in Makefile])
Damien Miller29ea30d2000-03-17 10:54:15 +11004003fi
4004
Darren Tucker7da23cb2005-08-03 00:20:15 +10004005dnl Adding -Werror to CFLAGS early prevents configure tests from running.
4006dnl Add now.
4007CFLAGS="$CFLAGS $werror_flags"
4008
Damien Millerbac2d8a2000-09-05 16:13:06 +11004009AC_EXEEXT
Damien Miller223897a2006-09-12 21:54:10 +10004010AC_CONFIG_FILES([Makefile buildpkg.sh opensshd.init openssh.xml \
4011 openbsd-compat/Makefile openbsd-compat/regress/Makefile \
4012 scard/Makefile ssh_prng_cmds survey.sh])
Tim Rice13aae5e2001-10-21 17:53:58 -07004013AC_OUTPUT
Damien Miller0437b332000-05-02 09:56:41 +10004014
Damien Miller7b22d652000-06-18 14:07:04 +10004015# Print summary of options
4016
Damien Miller7b22d652000-06-18 14:07:04 +10004017# Someone please show me a better way :)
4018A=`eval echo ${prefix}` ; A=`eval echo ${A}`
4019B=`eval echo ${bindir}` ; B=`eval echo ${B}`
4020C=`eval echo ${sbindir}` ; C=`eval echo ${C}`
4021D=`eval echo ${sysconfdir}` ; D=`eval echo ${D}`
Kevin Stevese0f49142000-10-14 17:51:48 +00004022E=`eval echo ${libexecdir}/ssh-askpass` ; E=`eval echo ${E}`
Ben Lindstrombc709922001-04-18 18:04:21 +00004023F=`eval echo ${mandir}/${mansubdir}X` ; F=`eval echo ${F}`
Damien Miller7b22d652000-06-18 14:07:04 +10004024G=`eval echo ${piddir}` ; G=`eval echo ${G}`
Damien Millerf58c6722002-05-13 13:15:42 +10004025H=`eval echo ${PRIVSEP_PATH}` ; H=`eval echo ${H}`
4026I=`eval echo ${user_path}` ; I=`eval echo ${I}`
4027J=`eval echo ${superuser_path}` ; J=`eval echo ${J}`
Damien Miller7b22d652000-06-18 14:07:04 +10004028
4029echo ""
Kevin Steves393d2f72001-04-08 22:50:43 +00004030echo "OpenSSH has been configured with the following options:"
Damien Millerf58c6722002-05-13 13:15:42 +10004031echo " User binaries: $B"
4032echo " System binaries: $C"
4033echo " Configuration files: $D"
4034echo " Askpass program: $E"
4035echo " Manual pages: $F"
4036echo " PID file: $G"
4037echo " Privilege separation chroot path: $H"
Darren Tuckere1a790d2003-09-16 11:52:19 +10004038if test "x$external_path_file" = "x/etc/login.conf" ; then
4039echo " At runtime, sshd will use the path defined in $external_path_file"
4040echo " Make sure the path to scp is present, otherwise scp will not work"
Tim Rice43a1c132002-04-17 21:19:14 -07004041else
Damien Millerf58c6722002-05-13 13:15:42 +10004042echo " sshd default user PATH: $I"
Tim Riceb925b4b2003-09-15 22:40:49 -07004043 if test ! -z "$external_path_file"; then
Darren Tuckere1a790d2003-09-16 11:52:19 +10004044echo " (If PATH is set in $external_path_file it will be used instead. If"
4045echo " used, ensure the path to scp is present, otherwise scp will not work.)"
4046 fi
Tim Rice43a1c132002-04-17 21:19:14 -07004047fi
Damien Millera18bbd32002-05-13 10:48:57 +10004048if test ! -z "$superuser_path" ; then
Damien Millerf58c6722002-05-13 13:15:42 +10004049echo " sshd superuser user PATH: $J"
Damien Millera18bbd32002-05-13 10:48:57 +10004050fi
Damien Millerf58c6722002-05-13 13:15:42 +10004051echo " Manpage format: $MANTYPE"
Damien Miller7abe09b2003-05-15 10:53:49 +10004052echo " PAM support: $PAM_MSG"
Damien Miller1b06dc32006-08-31 03:24:41 +10004053echo " OSF SIA support: $SIA_MSG"
Damien Millerf58c6722002-05-13 13:15:42 +10004054echo " KerberosV support: $KRB5_MSG"
Damien Miller73b42d22006-04-22 21:26:08 +10004055echo " SELinux support: $SELINUX_MSG"
Damien Millerf58c6722002-05-13 13:15:42 +10004056echo " Smartcard support: $SCARD_MSG"
Damien Millerf58c6722002-05-13 13:15:42 +10004057echo " S/KEY support: $SKEY_MSG"
4058echo " TCP Wrappers support: $TCPW_MSG"
4059echo " MD5 password support: $MD5_MSG"
Darren Tucker16bcc1c2004-11-07 20:14:34 +11004060echo " libedit support: $LIBEDIT_MSG"
Damien Miller1b06dc32006-08-31 03:24:41 +10004061echo " Solaris process contract support: $SPC_MSG"
Damien Miller903e1152002-05-13 14:41:31 +10004062echo " IP address in \$DISPLAY hack: $DISPLAY_HACK_MSG"
Damien Millerf58c6722002-05-13 13:15:42 +10004063echo " Translate v4 in v6 hack: $IPV4_IN6_HACK_MSG"
4064echo " BSD Auth support: $BSD_AUTH_MSG"
4065echo " Random number source: $RAND_MSG"
Damien Miller6c21c512002-01-22 21:57:53 +11004066if test ! -z "$USE_RAND_HELPER" ; then
Damien Millerf58c6722002-05-13 13:15:42 +10004067echo " ssh-rand-helper collects from: $RAND_HELPER_MSG"
Damien Miller60396b02001-02-18 17:01:00 +11004068fi
4069
Damien Miller7b22d652000-06-18 14:07:04 +10004070echo ""
4071
Ben Lindstrom28bfc0d2000-12-18 19:58:57 +00004072echo " Host: ${host}"
4073echo " Compiler: ${CC}"
4074echo " Compiler flags: ${CFLAGS}"
4075echo "Preprocessor flags: ${CPPFLAGS}"
4076echo " Linker flags: ${LDFLAGS}"
Darren Tucker20e9f972007-03-25 18:26:01 +10004077echo " Libraries: ${LIBS}"
4078if test ! -z "${SSHDLIBS}"; then
4079echo " +for sshd: ${SSHDLIBS}"
4080fi
Damien Miller7b22d652000-06-18 14:07:04 +10004081
4082echo ""
4083
Tim Rice6f1f7582004-05-30 21:38:51 -07004084if test "x$MAKE_PACKAGE_SUPPORTED" = "xyes" ; then
Darren Tuckercf59d312004-08-29 21:18:09 +10004085 echo "SVR4 style packages are supported with \"make package\""
4086 echo ""
Tim Rice6f1f7582004-05-30 21:38:51 -07004087fi
4088
Damien Miller82cf0ce2000-12-20 13:34:48 +11004089if test "x$PAM_MSG" = "xyes" ; then
Damien Miller6c21c512002-01-22 21:57:53 +11004090 echo "PAM is enabled. You may need to install a PAM control file "
4091 echo "for sshd, otherwise password authentication may fail. "
Damien Millera8e06ce2003-11-21 23:48:55 +11004092 echo "Example PAM control files can be found in the contrib/ "
Damien Miller6c21c512002-01-22 21:57:53 +11004093 echo "subdirectory"
Damien Miller6f9c3372000-10-25 10:06:04 +11004094 echo ""
4095fi
Ben Lindstrom3ad650a2001-01-03 06:02:51 +00004096
Damien Miller6c21c512002-01-22 21:57:53 +11004097if test ! -z "$RAND_HELPER_CMDHASH" ; then
4098 echo "WARNING: you are using the builtin random number collection "
4099 echo "service. Please read WARNING.RNG and request that your OS "
4100 echo "vendor includes kernel-based random number collection in "
4101 echo "future versions of your OS."
Ben Lindstrom3ad650a2001-01-03 06:02:51 +00004102 echo ""
4103fi
Damien Miller60396b02001-02-18 17:01:00 +11004104
Damien Millerb4097182004-05-23 14:09:40 +10004105if test ! -z "$NO_PEERCHECK" ; then
Darren Tucker164aa302007-03-21 21:39:57 +11004106 echo "WARNING: the operating system that you are using does not"
4107 echo "appear to support getpeereid(), getpeerucred() or the"
4108 echo "SO_PEERCRED getsockopt() option. These facilities are used to"
4109 echo "enforce security checks to prevent unauthorised connections to"
4110 echo "ssh-agent. Their absence increases the risk that a malicious"
4111 echo "user can connect to your agent."
Damien Millerb4097182004-05-23 14:09:40 +10004112 echo ""
4113fi
4114
Darren Tuckerd9f88912005-02-20 21:01:48 +11004115if test "$AUDIT_MODULE" = "bsm" ; then
4116 echo "WARNING: BSM audit support is currently considered EXPERIMENTAL."
4117 echo "See the Solaris section in README.platform for details."
4118fi