blob: 37db0fa7d4b64bae85666aefd4a53c3a0473f2a0 [file] [log] [blame]
Darren Tuckerfd994372014-01-17 09:53:24 +11001# $Id: configure.ac,v 1.548 2014/01/16 22:53:24 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
Tim Rice648f8762011-01-26 12:38:57 -080017AC_INIT([OpenSSH], [Portable], [openssh-unix-dev@mindrot.org])
Darren Tuckerfd994372014-01-17 09:53:24 +110018AC_REVISION($Revision: 1.548 $)
Tim Rice13aae5e2001-10-21 17:53:58 -070019AC_CONFIG_SRCDIR([ssh.c])
Tim Rice648f8762011-01-26 12:38:57 -080020AC_LANG([C])
Damien Miller7f6ea021999-10-28 13:25:17 +100021
Tim Rice648f8762011-01-26 12:38:57 -080022AC_CONFIG_HEADER([config.h])
Damien Miller856799b2000-03-15 21:18:10 +110023AC_PROG_CC
Damien Miller76112de1999-12-21 11:18:08 +110024AC_CANONICAL_HOST
Damien Miller4df5c762001-02-28 08:14:22 +110025AC_C_BIGENDIAN
Damien Miller7f6ea021999-10-28 13:25:17 +100026
Damien Millera22ba012000-03-02 23:09:20 +110027# Checks for programs.
Darren Tucker167bd9c2003-09-07 12:34:54 +100028AC_PROG_AWK
Damien Millerab18c411999-11-11 10:40:23 +110029AC_PROG_CPP
Damien Miller7f6ea021999-10-28 13:25:17 +100030AC_PROG_RANLIB
Damien Millerd8087f61999-11-25 12:31:26 +110031AC_PROG_INSTALL
Tim Ricefd80ddc2006-02-02 19:11:56 -080032AC_PROG_EGREP
Tim Rice648f8762011-01-26 12:38:57 -080033AC_PATH_PROG([AR], [ar])
34AC_PATH_PROG([CAT], [cat])
35AC_PATH_PROG([KILL], [kill])
36AC_PATH_PROGS([PERL], [perl5 perl])
37AC_PATH_PROG([SED], [sed])
38AC_SUBST([PERL])
39AC_PATH_PROG([ENT], [ent])
40AC_SUBST([ENT])
41AC_PATH_PROG([TEST_MINUS_S_SH], [bash])
42AC_PATH_PROG([TEST_MINUS_S_SH], [ksh])
43AC_PATH_PROG([TEST_MINUS_S_SH], [sh])
44AC_PATH_PROG([SH], [sh])
45AC_PATH_PROG([GROFF], [groff])
46AC_PATH_PROG([NROFF], [nroff])
47AC_PATH_PROG([MANDOC], [mandoc])
48AC_SUBST([TEST_SHELL], [sh])
Damien Miller2e1b0821999-12-25 10:11:29 +110049
Damien Miller30a69e72011-01-04 08:16:27 +110050dnl select manpage formatter
51if test "x$MANDOC" != "x" ; then
52 MANFMT="$MANDOC"
53elif test "x$NROFF" != "x" ; then
54 MANFMT="$NROFF -mandoc"
55elif test "x$GROFF" != "x" ; then
56 MANFMT="$GROFF -mandoc -Tascii"
57else
58 AC_MSG_WARN([no manpage formatted found])
59 MANFMT="false"
60fi
Tim Rice648f8762011-01-26 12:38:57 -080061AC_SUBST([MANFMT])
Damien Miller30a69e72011-01-04 08:16:27 +110062
Tim Rice6f1f7582004-05-30 21:38:51 -070063dnl for buildpkg.sh
Tim Rice648f8762011-01-26 12:38:57 -080064AC_PATH_PROG([PATH_GROUPADD_PROG], [groupadd], [groupadd],
Tim Rice6f1f7582004-05-30 21:38:51 -070065 [/usr/sbin${PATH_SEPARATOR}/etc])
Tim Rice648f8762011-01-26 12:38:57 -080066AC_PATH_PROG([PATH_USERADD_PROG], [useradd], [useradd],
Tim Rice6f1f7582004-05-30 21:38:51 -070067 [/usr/sbin${PATH_SEPARATOR}/etc])
Tim Rice648f8762011-01-26 12:38:57 -080068AC_CHECK_PROG([MAKE_PACKAGE_SUPPORTED], [pkgmk], [yes], [no])
Darren Tuckerfbea7642006-01-30 00:22:39 +110069if test -x /sbin/sh; then
Tim Rice648f8762011-01-26 12:38:57 -080070 AC_SUBST([STARTUP_SCRIPT_SHELL], [/sbin/sh])
Darren Tuckerfbea7642006-01-30 00:22:39 +110071else
Tim Rice648f8762011-01-26 12:38:57 -080072 AC_SUBST([STARTUP_SCRIPT_SHELL], [/bin/sh])
Darren Tuckerfbea7642006-01-30 00:22:39 +110073fi
Tim Rice6f1f7582004-05-30 21:38:51 -070074
Damien Millere8bb4502001-09-25 16:39:35 +100075# System features
76AC_SYS_LARGEFILE
77
Damien Miller3f62aba2000-11-29 11:56:35 +110078if test -z "$AR" ; then
79 AC_MSG_ERROR([*** 'ar' missing, please install or fix your \$PATH ***])
80fi
81
Damien Millerad833b32000-08-23 10:46:23 +100082# Use LOGIN_PROGRAM from environment if possible
83if test ! -z "$LOGIN_PROGRAM" ; then
Tim Rice648f8762011-01-26 12:38:57 -080084 AC_DEFINE_UNQUOTED([LOGIN_PROGRAM_FALLBACK], ["$LOGIN_PROGRAM"],
Tim Rice7df8d392005-09-19 09:33:39 -070085 [If your header files don't define LOGIN_PROGRAM,
86 then use this (detected) from environment and PATH])
Damien Millerad833b32000-08-23 10:46:23 +100087else
88 # Search for login
Tim Rice648f8762011-01-26 12:38:57 -080089 AC_PATH_PROG([LOGIN_PROGRAM_FALLBACK], [login])
Damien Millerad833b32000-08-23 10:46:23 +100090 if test ! -z "$LOGIN_PROGRAM_FALLBACK" ; then
Tim Rice648f8762011-01-26 12:38:57 -080091 AC_DEFINE_UNQUOTED([LOGIN_PROGRAM_FALLBACK], ["$LOGIN_PROGRAM_FALLBACK"])
Damien Millerad833b32000-08-23 10:46:23 +100092 fi
93fi
94
Tim Rice648f8762011-01-26 12:38:57 -080095AC_PATH_PROG([PATH_PASSWD_PROG], [passwd])
Darren Tucker23bc8d02004-02-06 16:24:31 +110096if test ! -z "$PATH_PASSWD_PROG" ; then
Tim Rice648f8762011-01-26 12:38:57 -080097 AC_DEFINE_UNQUOTED([_PATH_PASSWD_PROG], ["$PATH_PASSWD_PROG"],
Tim Rice7df8d392005-09-19 09:33:39 -070098 [Full path of your "passwd" program])
Darren Tucker23bc8d02004-02-06 16:24:31 +110099fi
100
Damien Miller166bd442000-03-16 10:48:25 +1100101if test -z "$LD" ; then
102 LD=$CC
103fi
Tim Rice648f8762011-01-26 12:38:57 -0800104AC_SUBST([LD])
Tim Riceeae17cc2005-03-17 16:52:20 -0800105
Damien Miller166bd442000-03-16 10:48:25 +1100106AC_C_INLINE
Darren Tucker67b37032005-06-03 17:58:31 +1000107
Tim Rice648f8762011-01-26 12:38:57 -0800108AC_CHECK_DECL([LLONG_MAX], [have_llong_max=1], , [#include <limits.h>])
Damien Miller69ff1df2011-06-23 08:30:03 +1000109AC_CHECK_DECL([SYSTR_POLICY_KILL], [have_systr_policy_kill=1], , [
110 #include <sys/types.h>
111 #include <sys/param.h>
112 #include <dev/systrace.h>
113])
114AC_CHECK_DECL([RLIMIT_NPROC],
115 [AC_DEFINE([HAVE_RLIMIT_NPROC], [], [sys/resource.h has RLIMIT_NPROC])], , [
116 #include <sys/types.h>
117 #include <sys/resource.h>
118])
Damien Millere0956e32012-04-04 11:27:54 +1000119AC_CHECK_DECL([PR_SET_NO_NEW_PRIVS], [have_linux_no_new_privs=1], , [
120 #include <sys/types.h>
121 #include <linux/prctl.h>
122])
Darren Tuckerb7918af2008-03-09 11:34:23 +1100123use_stack_protector=1
Darren Tuckerfd994372014-01-17 09:53:24 +1100124use_toolchain_hardening=1
Tim Rice648f8762011-01-26 12:38:57 -0800125AC_ARG_WITH([stackprotect],
Damien Millerda3155e2008-03-27 12:30:18 +1100126 [ --without-stackprotect Don't use compiler's stack protection], [
Darren Tuckerb7918af2008-03-09 11:34:23 +1100127 if test "x$withval" = "xno"; then
128 use_stack_protector=0
129 fi ])
Darren Tuckerfd994372014-01-17 09:53:24 +1100130AC_ARG_WITH([hardening],
131 [ --without-hardening Don't use toolchain hardening flags], [
132 if test "x$withval" = "xno"; then
133 use_stack_protector=0
134 use_toolchain_hardening=0
135 fi ])
Darren Tuckerb7918af2008-03-09 11:34:23 +1100136
Darren Tuckerfd994372014-01-17 09:53:24 +1100137# We use -Werror for the tests only so that we catch warnings like "this is
138# on by default" for things like -fPIE.
139AC_MSG_CHECKING([if $CC supports -Werror])
140saved_CFLAGS="$CFLAGS"
141CFLAGS="$CFLAGS -Werror"
142AC_COMPILE_IFELSE([AC_LANG_SOURCE([[int main(void) { return 0; }]])],
143 [ AC_MSG_RESULT([yes])
144 WERROR="-Werror"],
145 [ AC_MSG_RESULT([no])
146 WERROR="" ]
147)
148CFLAGS="$saved_CFLAGS"
Damien Miller134d02a2011-01-12 16:00:37 +1100149
Damien Millera8e06ce2003-11-21 23:48:55 +1100150if test "$GCC" = "yes" || test "$GCC" = "egcs"; then
Darren Tuckerfd994372014-01-17 09:53:24 +1100151 OSSH_CHECK_CFLAG_COMPILE([-Qunused-arguments])
152 OSSH_CHECK_CFLAG_COMPILE([-Wunknown-warning-option])
Damien Millerb1763622011-05-20 11:45:25 +1000153 OSSH_CHECK_CFLAG_COMPILE([-Wall])
154 OSSH_CHECK_CFLAG_COMPILE([-Wpointer-arith])
155 OSSH_CHECK_CFLAG_COMPILE([-Wuninitialized])
156 OSSH_CHECK_CFLAG_COMPILE([-Wsign-compare])
157 OSSH_CHECK_CFLAG_COMPILE([-Wformat-security])
Darren Tuckerabbc7a72013-05-10 13:54:23 +1000158 OSSH_CHECK_CFLAG_COMPILE([-Wsizeof-pointer-memaccess])
Damien Millerb1763622011-05-20 11:45:25 +1000159 OSSH_CHECK_CFLAG_COMPILE([-Wpointer-sign], [-Wno-pointer-sign])
160 OSSH_CHECK_CFLAG_COMPILE([-Wunused-result], [-Wno-unused-result])
161 OSSH_CHECK_CFLAG_COMPILE([-fno-strict-aliasing])
Darren Tucker4a725ef2011-11-21 16:38:48 +1100162 OSSH_CHECK_CFLAG_COMPILE([-D_FORTIFY_SOURCE=2])
Darren Tuckerfd994372014-01-17 09:53:24 +1100163 if test "x$use_toolchain_hardening" = "x1"; then
164 OSSH_CHECK_CFLAG_COMPILE([-ftrapv])
165 OSSH_CHECK_CFLAG_COMPILE([-fPIE])
166 OSSH_CHECK_LDFLAG_LINK([-pie])
167 OSSH_CHECK_LDFLAG_LINK([-Wl,-z,relro])
168 OSSH_CHECK_LDFLAG_LINK([-Wl,-z,now])
169 OSSH_CHECK_LDFLAG_LINK([-Wl,-z,noexecstack])
170 fi
Tim Rice648f8762011-01-26 12:38:57 -0800171 AC_MSG_CHECKING([gcc version])
Darren Tucker3f9545e2005-11-12 15:20:52 +1100172 GCC_VER=`$CC -v 2>&1 | $AWK '/gcc version /{print $3}'`
Tim Rice3db1e3f2005-08-23 17:11:26 -0700173 case $GCC_VER in
Darren Tucker391de5c2007-04-29 14:49:21 +1000174 1.*) no_attrib_nonnull=1 ;;
175 2.8* | 2.9*)
Darren Tucker391de5c2007-04-29 14:49:21 +1000176 no_attrib_nonnull=1
177 ;;
178 2.*) no_attrib_nonnull=1 ;;
Darren Tuckerf0324352005-11-10 21:30:36 +1100179 *) ;;
Tim Rice3db1e3f2005-08-23 17:11:26 -0700180 esac
Tim Rice648f8762011-01-26 12:38:57 -0800181 AC_MSG_RESULT([$GCC_VER])
Damien Millerde3cb0a2005-05-26 20:48:25 +1000182
Tim Rice648f8762011-01-26 12:38:57 -0800183 AC_MSG_CHECKING([if $CC accepts -fno-builtin-memset])
Darren Tucker330c93f2008-06-16 02:27:48 +1000184 saved_CFLAGS="$CFLAGS"
185 CFLAGS="$CFLAGS -fno-builtin-memset"
Tim Rice648f8762011-01-26 12:38:57 -0800186 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include <string.h> ]],
187 [[ char b[10]; memset(b, 0, sizeof(b)); ]])],
188 [ AC_MSG_RESULT([yes]) ],
189 [ AC_MSG_RESULT([no])
Darren Tucker330c93f2008-06-16 02:27:48 +1000190 CFLAGS="$saved_CFLAGS" ]
Tim Rice648f8762011-01-26 12:38:57 -0800191 )
Darren Tucker330c93f2008-06-16 02:27:48 +1000192
Darren Tuckerb7918af2008-03-09 11:34:23 +1100193 # -fstack-protector-all doesn't always work for some GCC versions
Darren Tuckerfe1cf972008-03-09 22:50:50 +1100194 # and/or platforms, so we test if we can. If it's not supported
Damien Miller7df2e402008-12-08 09:35:36 +1100195 # on a given platform gcc will emit a warning so we use -Werror.
Darren Tuckerb7918af2008-03-09 11:34:23 +1100196 if test "x$use_stack_protector" = "x1"; then
Darren Tuckerfd994372014-01-17 09:53:24 +1100197 for t in -fstack-protector-strong -fstack-protector-all \
198 -fstack-protector; do
Tim Rice648f8762011-01-26 12:38:57 -0800199 AC_MSG_CHECKING([if $CC supports $t])
Darren Tuckerb7918af2008-03-09 11:34:23 +1100200 saved_CFLAGS="$CFLAGS"
201 saved_LDFLAGS="$LDFLAGS"
Darren Tuckerfe1cf972008-03-09 22:50:50 +1100202 CFLAGS="$CFLAGS $t -Werror"
203 LDFLAGS="$LDFLAGS $t -Werror"
204 AC_LINK_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -0800205 [AC_LANG_PROGRAM([[ #include <stdio.h> ]],
206 [[
207 char x[256];
208 snprintf(x, sizeof(x), "XXX");
209 ]])],
210 [ AC_MSG_RESULT([yes])
Darren Tuckerfe1cf972008-03-09 22:50:50 +1100211 CFLAGS="$saved_CFLAGS $t"
212 LDFLAGS="$saved_LDFLAGS $t"
Tim Rice648f8762011-01-26 12:38:57 -0800213 AC_MSG_CHECKING([if $t works])
Darren Tuckerb7918af2008-03-09 11:34:23 +1100214 AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -0800215 [AC_LANG_PROGRAM([[ #include <stdio.h> ]],
216 [[
217 char x[256];
218 snprintf(x, sizeof(x), "XXX");
219 ]])],
220 [ AC_MSG_RESULT([yes])
Darren Tuckerb7918af2008-03-09 11:34:23 +1100221 break ],
Tim Rice648f8762011-01-26 12:38:57 -0800222 [ AC_MSG_RESULT([no]) ],
Darren Tuckerb7918af2008-03-09 11:34:23 +1100223 [ AC_MSG_WARN([cross compiling: cannot test])
224 break ]
Darren Tuckerfe1cf972008-03-09 22:50:50 +1100225 )
Darren Tuckerb7918af2008-03-09 11:34:23 +1100226 ],
Tim Rice648f8762011-01-26 12:38:57 -0800227 [ AC_MSG_RESULT([no]) ]
Darren Tuckerb7918af2008-03-09 11:34:23 +1100228 )
229 CFLAGS="$saved_CFLAGS"
230 LDFLAGS="$saved_LDFLAGS"
231 done
232 fi
Darren Tucker319b3d92007-12-02 21:02:22 +1100233
Darren Tucker67b37032005-06-03 17:58:31 +1000234 if test -z "$have_llong_max"; then
235 # retry LLONG_MAX with -std=gnu99, needed on some Linuxes
236 unset ac_cv_have_decl_LLONG_MAX
237 saved_CFLAGS="$CFLAGS"
238 CFLAGS="$CFLAGS -std=gnu99"
Tim Rice648f8762011-01-26 12:38:57 -0800239 AC_CHECK_DECL([LLONG_MAX],
Darren Tucker67b37032005-06-03 17:58:31 +1000240 [have_llong_max=1],
241 [CFLAGS="$saved_CFLAGS"],
242 [#include <limits.h>]
243 )
244 fi
Damien Miller166bd442000-03-16 10:48:25 +1100245fi
246
Darren Tucker951b53b2013-02-08 11:50:09 +1100247AC_MSG_CHECKING([if compiler allows __attribute__ on return types])
248AC_COMPILE_IFELSE(
249 [AC_LANG_PROGRAM([[
250#include <stdlib.h>
251__attribute__((__unused__)) static void foo(void){return;}]],
252 [[ exit(0); ]])],
253 [ AC_MSG_RESULT([yes]) ],
254 [ AC_MSG_RESULT([no])
255 AC_DEFINE(NO_ATTRIBUTE_ON_RETURN_TYPE, 1,
256 [compiler does not accept __attribute__ on return types]) ]
257)
258
Darren Tucker391de5c2007-04-29 14:49:21 +1000259if test "x$no_attrib_nonnull" != "x1" ; then
Tim Rice648f8762011-01-26 12:38:57 -0800260 AC_DEFINE([HAVE_ATTRIBUTE__NONNULL__], [1], [Have attribute nonnull])
Darren Tucker391de5c2007-04-29 14:49:21 +1000261fi
262
Tim Rice648f8762011-01-26 12:38:57 -0800263AC_ARG_WITH([rpath],
Tim Rice88368a32003-12-08 12:35:59 -0800264 [ --without-rpath Disable auto-added -R linker paths],
265 [
Tim Riceeae17cc2005-03-17 16:52:20 -0800266 if test "x$withval" = "xno" ; then
Tim Rice88368a32003-12-08 12:35:59 -0800267 need_dash_r=""
268 fi
269 if test "x$withval" = "xyes" ; then
270 need_dash_r=1
271 fi
272 ]
273)
274
Tim Rice1cfab232006-10-03 09:34:35 -0700275# Allow user to specify flags
Tim Rice648f8762011-01-26 12:38:57 -0800276AC_ARG_WITH([cflags],
Tim Rice1cfab232006-10-03 09:34:35 -0700277 [ --with-cflags Specify additional flags to pass to compiler],
278 [
279 if test -n "$withval" && test "x$withval" != "xno" && \
280 test "x${withval}" != "xyes"; then
281 CFLAGS="$CFLAGS $withval"
282 fi
283 ]
284)
Tim Rice648f8762011-01-26 12:38:57 -0800285AC_ARG_WITH([cppflags],
Tim Rice1cfab232006-10-03 09:34:35 -0700286 [ --with-cppflags Specify additional flags to pass to preprocessor] ,
287 [
288 if test -n "$withval" && test "x$withval" != "xno" && \
289 test "x${withval}" != "xyes"; then
290 CPPFLAGS="$CPPFLAGS $withval"
291 fi
292 ]
293)
Tim Rice648f8762011-01-26 12:38:57 -0800294AC_ARG_WITH([ldflags],
Tim Rice1cfab232006-10-03 09:34:35 -0700295 [ --with-ldflags Specify additional flags to pass to linker],
296 [
297 if test -n "$withval" && test "x$withval" != "xno" && \
298 test "x${withval}" != "xyes"; then
299 LDFLAGS="$LDFLAGS $withval"
300 fi
301 ]
302)
Tim Rice648f8762011-01-26 12:38:57 -0800303AC_ARG_WITH([libs],
Tim Rice1cfab232006-10-03 09:34:35 -0700304 [ --with-libs Specify additional libraries to link with],
305 [
306 if test -n "$withval" && test "x$withval" != "xno" && \
307 test "x${withval}" != "xyes"; then
308 LIBS="$LIBS $withval"
309 fi
310 ]
311)
Tim Rice648f8762011-01-26 12:38:57 -0800312AC_ARG_WITH([Werror],
Tim Rice1cfab232006-10-03 09:34:35 -0700313 [ --with-Werror Build main code with -Werror],
314 [
315 if test -n "$withval" && test "x$withval" != "xno"; then
316 werror_flags="-Werror"
317 if test "x${withval}" != "xyes"; then
318 werror_flags="$withval"
319 fi
320 fi
321 ]
322)
323
Tim Rice648f8762011-01-26 12:38:57 -0800324AC_CHECK_HEADERS([ \
Damien Miller1ff130d2013-12-07 11:51:51 +1100325 blf.h \
Tim Rice1cfab232006-10-03 09:34:35 -0700326 bstring.h \
327 crypt.h \
328 crypto/sha2.h \
329 dirent.h \
330 endian.h \
Damien Miller91f40d82013-02-22 11:37:00 +1100331 elf.h \
Tim Rice1cfab232006-10-03 09:34:35 -0700332 features.h \
333 fcntl.h \
334 floatingpoint.h \
335 getopt.h \
336 glob.h \
337 ia.h \
338 iaf.h \
339 limits.h \
Darren Tuckerae133d42013-06-06 08:30:20 +1000340 locale.h \
Tim Rice1cfab232006-10-03 09:34:35 -0700341 login.h \
342 maillock.h \
343 ndir.h \
344 net/if_tun.h \
345 netdb.h \
346 netgroup.h \
347 pam/pam_appl.h \
348 paths.h \
Darren Tuckerfebf0f52007-06-25 22:15:12 +1000349 poll.h \
Tim Rice1cfab232006-10-03 09:34:35 -0700350 pty.h \
351 readpassphrase.h \
352 rpc/types.h \
353 security/pam_appl.h \
354 sha2.h \
355 shadow.h \
356 stddef.h \
357 stdint.h \
358 string.h \
359 strings.h \
360 sys/audit.h \
361 sys/bitypes.h \
362 sys/bsdtty.h \
363 sys/cdefs.h \
364 sys/dir.h \
365 sys/mman.h \
366 sys/ndir.h \
Darren Tucker7c92a652007-09-27 07:00:09 +1000367 sys/poll.h \
Tim Rice1cfab232006-10-03 09:34:35 -0700368 sys/prctl.h \
369 sys/pstat.h \
370 sys/select.h \
371 sys/stat.h \
372 sys/stream.h \
373 sys/stropts.h \
374 sys/strtio.h \
Darren Tucker5b2e2ba2008-06-08 09:25:28 +1000375 sys/statvfs.h \
Tim Rice1cfab232006-10-03 09:34:35 -0700376 sys/sysmacros.h \
377 sys/time.h \
378 sys/timers.h \
Tim Rice1cfab232006-10-03 09:34:35 -0700379 time.h \
380 tmpdir.h \
381 ttyent.h \
Tim Riceaa8954f2007-05-09 15:57:43 -0700382 ucred.h \
Tim Rice1cfab232006-10-03 09:34:35 -0700383 unistd.h \
384 usersec.h \
385 util.h \
386 utime.h \
387 utmp.h \
388 utmpx.h \
389 vis.h \
Tim Rice648f8762011-01-26 12:38:57 -0800390])
Tim Rice1cfab232006-10-03 09:34:35 -0700391
392# lastlog.h requires sys/time.h to be included first on Solaris
Tim Rice648f8762011-01-26 12:38:57 -0800393AC_CHECK_HEADERS([lastlog.h], [], [], [
Tim Rice1cfab232006-10-03 09:34:35 -0700394#ifdef HAVE_SYS_TIME_H
395# include <sys/time.h>
396#endif
397])
398
399# sys/ptms.h requires sys/stream.h to be included first on Solaris
Tim Rice648f8762011-01-26 12:38:57 -0800400AC_CHECK_HEADERS([sys/ptms.h], [], [], [
Tim Rice1cfab232006-10-03 09:34:35 -0700401#ifdef HAVE_SYS_STREAM_H
402# include <sys/stream.h>
403#endif
404])
405
406# login_cap.h requires sys/types.h on NetBSD
Tim Rice648f8762011-01-26 12:38:57 -0800407AC_CHECK_HEADERS([login_cap.h], [], [], [
Tim Rice1cfab232006-10-03 09:34:35 -0700408#include <sys/types.h>
409])
410
Darren Tuckerc4b22ca2009-07-12 21:56:29 +1000411# older BSDs need sys/param.h before sys/mount.h
Tim Rice648f8762011-01-26 12:38:57 -0800412AC_CHECK_HEADERS([sys/mount.h], [], [], [
Darren Tuckerc4b22ca2009-07-12 21:56:29 +1000413#include <sys/param.h>
414])
415
Darren Tuckeref4901c2013-06-03 01:59:13 +1000416# Android requires sys/socket.h to be included before sys/un.h
417AC_CHECK_HEADERS([sys/un.h], [], [], [
Darren Tucker0b43ffe2013-06-03 09:30:44 +1000418#include <sys/types.h>
Darren Tucker16cac192013-06-04 12:55:24 +1000419#include <sys/socket.h>
Darren Tuckeref4901c2013-06-03 01:59:13 +1000420])
421
Damien Miller1b06dc32006-08-31 03:24:41 +1000422# Messages for features tested for in target-specific section
423SIA_MSG="no"
424SPC_MSG="no"
Darren Tucker97528352010-11-05 12:03:05 +1100425SP_MSG="no"
Damien Miller1b06dc32006-08-31 03:24:41 +1000426
Damien Millera22ba012000-03-02 23:09:20 +1100427# Check for some target-specific stuff
Damien Miller76112de1999-12-21 11:18:08 +1100428case "$host" in
Damien Miller75b1d102000-01-07 14:01:41 +1100429*-*-aix*)
Darren Tucker9216c372006-09-18 23:17:40 +1000430 # Some versions of VAC won't allow macro redefinitions at
431 # -qlanglevel=ansi, and autoconf 2.60 sometimes insists on using that
432 # particularly with older versions of vac or xlc.
433 # It also throws errors about null macro argments, but these are
434 # not fatal.
Tim Rice648f8762011-01-26 12:38:57 -0800435 AC_MSG_CHECKING([if compiler allows macro redefinitions])
Darren Tucker9216c372006-09-18 23:17:40 +1000436 AC_COMPILE_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -0800437 [AC_LANG_PROGRAM([[
Darren Tucker9216c372006-09-18 23:17:40 +1000438#define testmacro foo
Tim Rice648f8762011-01-26 12:38:57 -0800439#define testmacro bar]],
440 [[ exit(0); ]])],
441 [ AC_MSG_RESULT([yes]) ],
442 [ AC_MSG_RESULT([no])
Darren Tucker9216c372006-09-18 23:17:40 +1000443 CC="`echo $CC | sed 's/-qlanglvl\=ansi//g'`"
444 LD="`echo $LD | sed 's/-qlanglvl\=ansi//g'`"
445 CFLAGS="`echo $CFLAGS | sed 's/-qlanglvl\=ansi//g'`"
446 CPPFLAGS="`echo $CPPFLAGS | sed 's/-qlanglvl\=ansi//g'`"
447 ]
448 )
449
Damien Millera8e06ce2003-11-21 23:48:55 +1100450 AC_MSG_CHECKING([how to specify blibpath for linker ($LD)])
Damien Millereab4bae2003-04-29 23:22:40 +1000451 if (test -z "$blibpath"); then
Tim Ricefcb62202004-01-23 18:35:16 -0800452 blibpath="/usr/lib:/lib"
Damien Miller29ea30d2000-03-17 10:54:15 +1100453 fi
Damien Millereab4bae2003-04-29 23:22:40 +1000454 saved_LDFLAGS="$LDFLAGS"
Darren Tuckerbdc12122006-07-06 11:56:25 +1000455 if test "$GCC" = "yes"; then
456 flags="-Wl,-blibpath: -Wl,-rpath, -blibpath:"
457 else
458 flags="-blibpath: -Wl,-blibpath: -Wl,-rpath,"
459 fi
460 for tryflags in $flags ;do
Damien Millereab4bae2003-04-29 23:22:40 +1000461 if (test -z "$blibflags"); then
462 LDFLAGS="$saved_LDFLAGS $tryflags$blibpath"
Tim Rice648f8762011-01-26 12:38:57 -0800463 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
464 [blibflags=$tryflags], [])
Damien Millereab4bae2003-04-29 23:22:40 +1000465 fi
466 done
467 if (test -z "$blibflags"); then
Tim Rice648f8762011-01-26 12:38:57 -0800468 AC_MSG_RESULT([not found])
Damien Millereab4bae2003-04-29 23:22:40 +1000469 AC_MSG_ERROR([*** must be able to specify blibpath on AIX - check config.log])
470 else
Tim Rice648f8762011-01-26 12:38:57 -0800471 AC_MSG_RESULT([$blibflags])
Damien Millereab4bae2003-04-29 23:22:40 +1000472 fi
473 LDFLAGS="$saved_LDFLAGS"
Darren Tucker5c6a91a2003-07-14 16:21:44 +1000474 dnl Check for authenticate. Might be in libs.a on older AIXes
Tim Rice648f8762011-01-26 12:38:57 -0800475 AC_CHECK_FUNC([authenticate], [AC_DEFINE([WITH_AIXAUTHENTICATE], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700476 [Define if you want to enable AIX4's authenticate function])],
Tim Rice648f8762011-01-26 12:38:57 -0800477 [AC_CHECK_LIB([s], [authenticate],
478 [ AC_DEFINE([WITH_AIXAUTHENTICATE])
Tim Ricee958ed32002-07-05 07:12:33 -0700479 LIBS="$LIBS -ls"
480 ])
481 ])
Darren Tucker3c774c52005-02-16 22:49:31 +1100482 dnl Check for various auth function declarations in headers.
Darren Tucker04cfbe02005-02-20 23:27:11 +1100483 AC_CHECK_DECLS([authenticate, loginrestrictions, loginsuccess,
Darren Tuckere66519d2005-03-21 22:46:34 +1100484 passwdexpired, setauthdb], , , [#include <usersec.h>])
Darren Tucker5c6a91a2003-07-14 16:21:44 +1000485 dnl Check if loginfailed is declared and takes 4 arguments (AIX >= 5.2)
Tim Rice648f8762011-01-26 12:38:57 -0800486 AC_CHECK_DECLS([loginfailed],
487 [AC_MSG_CHECKING([if loginfailed takes 4 arguments])
488 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <usersec.h> ]],
489 [[ (void)loginfailed("user","host","tty",0); ]])],
490 [AC_MSG_RESULT([yes])
491 AC_DEFINE([AIX_LOGINFAILED_4ARG], [1],
492 [Define if your AIX loginfailed() function
493 takes 4 arguments (AIX >= 5.2)])], [AC_MSG_RESULT([no])
494 ])],
495 [],
496 [#include <usersec.h>]
Darren Tucker5c6a91a2003-07-14 16:21:44 +1000497 )
Tim Rice648f8762011-01-26 12:38:57 -0800498 AC_CHECK_FUNCS([getgrset setauthdb])
499 AC_CHECK_DECL([F_CLOSEM],
500 AC_DEFINE([HAVE_FCNTL_CLOSEM], [1], [Use F_CLOSEM fcntl for closefrom]),
Darren Tucker3083bc22006-08-17 19:35:49 +1000501 [],
502 [ #include <limits.h>
503 #include <fcntl.h> ]
504 )
Darren Tucker691d5232005-02-15 21:45:57 +1100505 check_for_aix_broken_getaddrinfo=1
Tim Rice648f8762011-01-26 12:38:57 -0800506 AC_DEFINE([BROKEN_REALPATH], [1], [Define if you have a broken realpath.])
507 AC_DEFINE([SETEUID_BREAKS_SETUID], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700508 [Define if your platform breaks doing a seteuid before a setuid])
Tim Rice648f8762011-01-26 12:38:57 -0800509 AC_DEFINE([BROKEN_SETREUID], [1], [Define if your setreuid() is broken])
510 AC_DEFINE([BROKEN_SETREGID], [1], [Define if your setregid() is broken])
andre60f3c982000-06-03 16:18:19 +0000511 dnl AIX handles lastlog as part of its login message
Tim Rice648f8762011-01-26 12:38:57 -0800512 AC_DEFINE([DISABLE_LASTLOG], [1], [Define if you don't want to use lastlog])
513 AC_DEFINE([LOGIN_NEEDS_UTMPX], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700514 [Some systems need a utmpx entry for /bin/login to work])
Tim Rice648f8762011-01-26 12:38:57 -0800515 AC_DEFINE([SPT_TYPE], [SPT_REUSEARGV],
Tim Rice7df8d392005-09-19 09:33:39 -0700516 [Define to a Set Process Title type if your system is
517 supported by bsd-setproctitle.c])
Tim Rice648f8762011-01-26 12:38:57 -0800518 AC_DEFINE([SSHPAM_CHAUTHTOK_NEEDS_RUID], [1],
Darren Tucker91d25a02005-11-26 22:24:09 +1100519 [AIX 5.2 and 5.3 (and presumably newer) require this])
Tim Rice648f8762011-01-26 12:38:57 -0800520 AC_DEFINE([PTY_ZEROREAD], [1], [read(1) can return 0 for a non-closed fd])
Darren Tuckeraa97d132013-03-12 11:31:05 +1100521 AC_DEFINE([PLATFORM_SYS_DIR_UID], 2, [System dirs owned by bin (uid 2)])
Damien Miller75b1d102000-01-07 14:01:41 +1100522 ;;
Darren Tucker898ac932013-06-03 02:03:25 +1000523*-*-android*)
524 AC_DEFINE([DISABLE_UTMP], [1], [Define if you don't want to use utmp])
525 AC_DEFINE([DISABLE_WTMP], [1], [Define if you don't want to use wtmp])
526 ;;
Damien Millerbac2d8a2000-09-05 16:13:06 +1100527*-*-cygwin*)
Damien Millerc8936ac2003-02-11 10:04:03 +1100528 check_for_libcrypt_later=1
Darren Tucker573e3872007-03-02 17:50:03 +1100529 LIBS="$LIBS /usr/lib/textreadmode.o"
Tim Rice648f8762011-01-26 12:38:57 -0800530 AC_DEFINE([HAVE_CYGWIN], [1], [Define if you are on Cygwin])
531 AC_DEFINE([USE_PIPES], [1], [Use PIPES instead of a socketpair()])
532 AC_DEFINE([DISABLE_SHADOW], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700533 [Define if you want to disable shadow passwords])
Tim Rice648f8762011-01-26 12:38:57 -0800534 AC_DEFINE([NO_X11_UNIX_SOCKETS], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700535 [Define if X11 doesn't support AF_UNIX sockets on that system])
Tim Rice648f8762011-01-26 12:38:57 -0800536 AC_DEFINE([NO_IPPORT_RESERVED_CONCEPT], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700537 [Define if the concept of ports only accessible to
538 superusers isn't known])
Tim Rice648f8762011-01-26 12:38:57 -0800539 AC_DEFINE([DISABLE_FD_PASSING], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700540 [Define if your platform needs to skip post auth
541 file descriptor passing])
Tim Rice648f8762011-01-26 12:38:57 -0800542 AC_DEFINE([SSH_IOBUFSZ], [65535], [Windows is sensitive to read buffer size])
543 AC_DEFINE([FILESYSTEM_NO_BACKSLASH], [1], [File names may not contain backslash characters])
Damien Millerbac2d8a2000-09-05 16:13:06 +1100544 ;;
Ben Lindstrom58055132001-02-15 18:34:29 +0000545*-*-dgux*)
Tim Rice648f8762011-01-26 12:38:57 -0800546 AC_DEFINE([IP_TOS_IS_BROKEN], [1],
Tim Ricea74000e2009-03-18 11:25:02 -0700547 [Define if your system choked on IP TOS setting])
Tim Rice648f8762011-01-26 12:38:57 -0800548 AC_DEFINE([SETEUID_BREAKS_SETUID])
549 AC_DEFINE([BROKEN_SETREUID])
550 AC_DEFINE([BROKEN_SETREGID])
Ben Lindstrom58055132001-02-15 18:34:29 +0000551 ;;
Ben Lindstromfed7bb42001-07-15 18:30:42 +0000552*-*-darwin*)
Tim Rice648f8762011-01-26 12:38:57 -0800553 AC_MSG_CHECKING([if we have working getaddrinfo])
554 AC_RUN_IFELSE([AC_LANG_SOURCE([[ #include <mach-o/dyld.h>
Damien Millerfc93d4b2002-09-04 23:26:29 +1000555main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
556 exit(0);
557 else
558 exit(1);
Tim Rice648f8762011-01-26 12:38:57 -0800559}
560 ]])],
561 [AC_MSG_RESULT([working])],
562 [AC_MSG_RESULT([buggy])
563 AC_DEFINE([BROKEN_GETADDRINFO], [1],
564 [getaddrinfo is broken (if present)])
565 ],
566 [AC_MSG_RESULT([assume it is working])])
567 AC_DEFINE([SETEUID_BREAKS_SETUID])
568 AC_DEFINE([BROKEN_SETREUID])
569 AC_DEFINE([BROKEN_SETREGID])
570 AC_DEFINE([BROKEN_GLOB], [1], [OS X glob does not do what we expect])
571 AC_DEFINE_UNQUOTED([BIND_8_COMPAT], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700572 [Define if your resolver libs need this for getrrsetbyname])
Tim Rice648f8762011-01-26 12:38:57 -0800573 AC_DEFINE([SSH_TUN_FREEBSD], [1], [Open tunnel devices the FreeBSD way])
574 AC_DEFINE([SSH_TUN_COMPAT_AF], [1],
Darren Tucker3eb48342006-06-23 21:05:12 +1000575 [Use tunnel device compatibility to OpenBSD])
Tim Rice648f8762011-01-26 12:38:57 -0800576 AC_DEFINE([SSH_TUN_PREPEND_AF], [1],
Darren Tucker3eb48342006-06-23 21:05:12 +1000577 [Prepend the address family to IP tunnel traffic])
Tim Rice648f8762011-01-26 12:38:57 -0800578 m4_pattern_allow([AU_IPv])
579 AC_CHECK_DECL([AU_IPv4], [],
580 AC_DEFINE([AU_IPv4], [0], [System only supports IPv4 audit records])
Darren Tuckeracada072008-02-25 21:05:04 +1100581 [#include <bsm/audit.h>]
Tim Rice648f8762011-01-26 12:38:57 -0800582 AC_DEFINE([LASTLOG_WRITE_PUTUTXLINE], [1],
Damien Miller20e231f2009-02-12 13:12:21 +1100583 [Define if pututxline updates lastlog too])
Darren Tuckeracada072008-02-25 21:05:04 +1100584 )
Damien Millerc09182f2011-06-03 12:11:38 +1000585 AC_DEFINE([SPT_TYPE], [SPT_REUSEARGV],
586 [Define to a Set Process Title type if your system is
587 supported by bsd-setproctitle.c])
Damien Millercd5e52e2011-06-27 07:18:18 +1000588 AC_CHECK_FUNCS([sandbox_init])
589 AC_CHECK_HEADERS([sandbox.h])
Ben Lindstromfed7bb42001-07-15 18:30:42 +0000590 ;;
Darren Tucker57b29202006-09-10 20:25:51 +1000591*-*-dragonfly*)
592 SSHDLIBS="$SSHDLIBS -lcrypt"
Darren Tucker882abfd2013-11-09 00:17:41 +1100593 TEST_MALLOC_OPTIONS="AFGJPRX"
Darren Tucker57b29202006-09-10 20:25:51 +1000594 ;;
Darren Tuckera83d90f2010-03-26 10:27:33 +1100595*-*-haiku*)
596 LIBS="$LIBS -lbsd "
Tim Rice648f8762011-01-26 12:38:57 -0800597 AC_CHECK_LIB([network], [socket])
598 AC_DEFINE([HAVE_U_INT64_T])
Darren Tuckera83d90f2010-03-26 10:27:33 +1100599 MANTYPE=man
600 ;;
Darren Tuckerfd333282005-05-28 18:31:42 +1000601*-*-hpux*)
602 # first we define all of the options common to all HP-UX releases
Kevin Steves315f8b72001-06-28 00:24:41 +0000603 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1"
Damien Miller9a947342000-08-30 10:03:33 +1100604 IPADDR_IN_DISPLAY=yes
Tim Rice648f8762011-01-26 12:38:57 -0800605 AC_DEFINE([USE_PIPES])
606 AC_DEFINE([LOGIN_NO_ENDOPT], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700607 [Define if your login program cannot handle end of options ("--")])
Tim Rice648f8762011-01-26 12:38:57 -0800608 AC_DEFINE([LOGIN_NEEDS_UTMPX])
609 AC_DEFINE([LOCKED_PASSWD_STRING], ["*"],
Tim Rice7df8d392005-09-19 09:33:39 -0700610 [String used in /etc/passwd to denote locked account])
Tim Rice648f8762011-01-26 12:38:57 -0800611 AC_DEFINE([SPT_TYPE], [SPT_PSTAT])
Darren Tuckeraa97d132013-03-12 11:31:05 +1100612 AC_DEFINE([PLATFORM_SYS_DIR_UID], 2, [System dirs owned by bin (uid 2)])
Tim Rice90f42b02011-06-02 18:17:49 -0700613 maildir="/var/mail"
Tim Ricef028f1e2002-07-19 12:41:10 -0700614 LIBS="$LIBS -lsec"
Tim Rice648f8762011-01-26 12:38:57 -0800615 AC_CHECK_LIB([xnet], [t_error], ,
616 [AC_MSG_ERROR([*** -lxnet needed on HP-UX - check config.log ***])])
Darren Tuckerfd333282005-05-28 18:31:42 +1000617
618 # next, we define all of the options specific to major releases
619 case "$host" in
620 *-*-hpux10*)
621 if test -z "$GCC"; then
622 CFLAGS="$CFLAGS -Ae"
623 fi
624 ;;
625 *-*-hpux11*)
Tim Rice648f8762011-01-26 12:38:57 -0800626 AC_DEFINE([PAM_SUN_CODEBASE], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700627 [Define if you are using Solaris-derived PAM which
628 passes pam_messages to the conversation function
629 with an extra level of indirection])
Tim Rice648f8762011-01-26 12:38:57 -0800630 AC_DEFINE([DISABLE_UTMP], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700631 [Define if you don't want to use utmp])
Tim Rice648f8762011-01-26 12:38:57 -0800632 AC_DEFINE([USE_BTMP], [1], [Use btmp to log bad logins])
Darren Tuckerfd333282005-05-28 18:31:42 +1000633 check_for_hpux_broken_getaddrinfo=1
634 check_for_conflicting_getspnam=1
635 ;;
636 esac
637
638 # lastly, we define options specific to minor releases
639 case "$host" in
640 *-*-hpux10.26)
Tim Rice648f8762011-01-26 12:38:57 -0800641 AC_DEFINE([HAVE_SECUREWARE], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700642 [Define if you have SecureWare-based
643 protected password database])
Darren Tuckerfd333282005-05-28 18:31:42 +1000644 disable_ptmx_check=yes
645 LIBS="$LIBS -lsecpw"
646 ;;
647 esac
Damien Miller1bead332000-04-30 00:47:29 +1000648 ;;
Damien Millerbeb4ba51999-12-28 15:09:35 +1100649*-*-irix5*)
Damien Miller190d5a82000-09-30 09:43:19 +1100650 PATH="$PATH:/usr/etc"
Tim Rice648f8762011-01-26 12:38:57 -0800651 AC_DEFINE([BROKEN_INET_NTOA], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700652 [Define if you system's inet_ntoa is busted
653 (e.g. Irix gcc issue)])
Tim Rice648f8762011-01-26 12:38:57 -0800654 AC_DEFINE([SETEUID_BREAKS_SETUID])
655 AC_DEFINE([BROKEN_SETREUID])
656 AC_DEFINE([BROKEN_SETREGID])
657 AC_DEFINE([WITH_ABBREV_NO_TTY], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700658 [Define if you shouldn't strip 'tty' from your
659 ttyname in [uw]tmp])
Tim Rice648f8762011-01-26 12:38:57 -0800660 AC_DEFINE([LOCKED_PASSWD_STRING], ["*LK*"])
Damien Miller1808f382000-01-06 12:03:12 +1100661 ;;
662*-*-irix6*)
Damien Miller190d5a82000-09-30 09:43:19 +1100663 PATH="$PATH:/usr/etc"
Tim Rice648f8762011-01-26 12:38:57 -0800664 AC_DEFINE([WITH_IRIX_ARRAY], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700665 [Define if you have/want arrays
666 (cluster-wide session managment, not C arrays)])
Tim Rice648f8762011-01-26 12:38:57 -0800667 AC_DEFINE([WITH_IRIX_PROJECT], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700668 [Define if you want IRIX project management])
Tim Rice648f8762011-01-26 12:38:57 -0800669 AC_DEFINE([WITH_IRIX_AUDIT], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700670 [Define if you want IRIX audit trails])
Tim Rice648f8762011-01-26 12:38:57 -0800671 AC_CHECK_FUNC([jlimit_startjob], [AC_DEFINE([WITH_IRIX_JOBS], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700672 [Define if you want IRIX kernel jobs])])
Tim Rice648f8762011-01-26 12:38:57 -0800673 AC_DEFINE([BROKEN_INET_NTOA])
674 AC_DEFINE([SETEUID_BREAKS_SETUID])
675 AC_DEFINE([BROKEN_SETREUID])
676 AC_DEFINE([BROKEN_SETREGID])
677 AC_DEFINE([BROKEN_UPDWTMPX], [1], [updwtmpx is broken (if present)])
678 AC_DEFINE([WITH_ABBREV_NO_TTY])
679 AC_DEFINE([LOCKED_PASSWD_STRING], ["*LK*"])
Damien Millerbeb4ba51999-12-28 15:09:35 +1100680 ;;
Damien Miller90551722009-02-16 15:37:03 +1100681*-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
682 check_for_libcrypt_later=1
Tim Rice648f8762011-01-26 12:38:57 -0800683 AC_DEFINE([PAM_TTY_KLUDGE])
684 AC_DEFINE([LOCKED_PASSWD_PREFIX], ["!"])
685 AC_DEFINE([SPT_TYPE], [SPT_REUSEARGV])
686 AC_DEFINE([_PATH_BTMP], ["/var/log/btmp"], [log for bad login attempts])
687 AC_DEFINE([USE_BTMP], [1], [Use btmp to log bad logins])
Damien Miller90551722009-02-16 15:37:03 +1100688 ;;
Damien Millerb29ea912000-01-15 14:12:03 +1100689*-*-linux*)
690 no_dev_ptmx=1
Damien Millera64b57a2001-01-17 10:44:13 +1100691 check_for_libcrypt_later=1
Darren Tucker70a3d552003-08-21 17:58:29 +1000692 check_for_openpty_ctty_bug=1
Tim Rice648f8762011-01-26 12:38:57 -0800693 AC_DEFINE([PAM_TTY_KLUDGE], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700694 [Work around problematic Linux PAM modules handling of PAM_TTY])
Tim Rice648f8762011-01-26 12:38:57 -0800695 AC_DEFINE([LOCKED_PASSWD_PREFIX], ["!"],
Tim Rice7df8d392005-09-19 09:33:39 -0700696 [String used in /etc/passwd to denote locked account])
Tim Rice648f8762011-01-26 12:38:57 -0800697 AC_DEFINE([SPT_TYPE], [SPT_REUSEARGV])
698 AC_DEFINE([LINK_OPNOTSUPP_ERRNO], [EPERM],
Tim Rice7df8d392005-09-19 09:33:39 -0700699 [Define to whatever link() returns for "not supported"
700 if it doesn't return EOPNOTSUPP.])
Tim Rice648f8762011-01-26 12:38:57 -0800701 AC_DEFINE([_PATH_BTMP], ["/var/log/btmp"], [log for bad login attempts])
702 AC_DEFINE([USE_BTMP])
703 AC_DEFINE([LINUX_OOM_ADJUST], [1], [Adjust Linux out-of-memory killer])
Damien Miller7bcb0892000-03-11 20:45:40 +1100704 inet6_default_4in6=yes
Darren Tucker3c016542003-05-02 20:48:21 +1000705 case `uname -r` in
Darren Tuckerc437cda2003-05-10 17:05:46 +1000706 1.*|2.0.*)
Tim Rice648f8762011-01-26 12:38:57 -0800707 AC_DEFINE([BROKEN_CMSG_TYPE], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700708 [Define if cmsg_type is not passed correctly])
Darren Tucker3c016542003-05-02 20:48:21 +1000709 ;;
Darren Tucker3c016542003-05-02 20:48:21 +1000710 esac
Damien Miller89e03ba2005-12-31 16:42:03 +1100711 # tun(4) forwarding compat code
Tim Rice648f8762011-01-26 12:38:57 -0800712 AC_CHECK_HEADERS([linux/if_tun.h])
Damien Millerbd4e4102006-01-01 21:03:30 +1100713 if test "x$ac_cv_header_linux_if_tun_h" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -0800714 AC_DEFINE([SSH_TUN_LINUX], [1],
Damien Miller89e03ba2005-12-31 16:42:03 +1100715 [Open tunnel devices the Linux tun/tap way])
Tim Rice648f8762011-01-26 12:38:57 -0800716 AC_DEFINE([SSH_TUN_COMPAT_AF], [1],
Damien Miller89e03ba2005-12-31 16:42:03 +1100717 [Use tunnel device compatibility to OpenBSD])
Tim Rice648f8762011-01-26 12:38:57 -0800718 AC_DEFINE([SSH_TUN_PREPEND_AF], [1],
Damien Miller89e03ba2005-12-31 16:42:03 +1100719 [Prepend the address family to IP tunnel traffic])
720 fi
Darren Tucker60395f92012-07-03 14:31:18 +1000721 AC_CHECK_HEADERS([linux/seccomp.h linux/filter.h linux/audit.h], [],
722 [], [#include <linux/types.h>])
Damien Millere0956e32012-04-04 11:27:54 +1000723 AC_CHECK_FUNCS([prctl])
Damien Miller91f40d82013-02-22 11:37:00 +1100724 AC_MSG_CHECKING([for seccomp architecture])
725 seccomp_audit_arch=
Damien Millere0956e32012-04-04 11:27:54 +1000726 case "$host" in
727 x86_64-*)
Damien Miller91f40d82013-02-22 11:37:00 +1100728 seccomp_audit_arch=AUDIT_ARCH_X86_64
Damien Millere0956e32012-04-04 11:27:54 +1000729 ;;
730 i*86-*)
Damien Miller91f40d82013-02-22 11:37:00 +1100731 seccomp_audit_arch=AUDIT_ARCH_I386
Damien Millere0956e32012-04-04 11:27:54 +1000732 ;;
Damien Miller91f40d82013-02-22 11:37:00 +1100733 arm*-*)
734 seccomp_audit_arch=AUDIT_ARCH_ARM
735 ;;
Damien Millere0956e32012-04-04 11:27:54 +1000736 esac
Damien Miller91f40d82013-02-22 11:37:00 +1100737 if test "x$seccomp_audit_arch" != "x" ; then
738 AC_MSG_RESULT(["$seccomp_audit_arch"])
739 AC_DEFINE_UNQUOTED([SECCOMP_AUDIT_ARCH], [$seccomp_audit_arch],
740 [Specify the system call convention in use])
741 else
742 AC_MSG_RESULT([architecture not supported])
743 fi
Damien Millerb29ea912000-01-15 14:12:03 +1100744 ;;
Ben Lindstromb5628642000-10-18 00:02:25 +0000745mips-sony-bsd|mips-sony-newsos4)
Tim Rice648f8762011-01-26 12:38:57 -0800746 AC_DEFINE([NEED_SETPGRP], [1], [Need setpgrp to acquire controlling tty])
Ben Lindstromb5628642000-10-18 00:02:25 +0000747 SONY=1
Ben Lindstromb5628642000-10-18 00:02:25 +0000748 ;;
Damien Milleree1c0b32000-01-21 00:18:15 +1100749*-*-netbsd*)
Damien Millerfc93d4b2002-09-04 23:26:29 +1000750 check_for_libcrypt_before=1
Tim Riceeae17cc2005-03-17 16:52:20 -0800751 if test "x$withval" != "xno" ; then
Tim Rice88368a32003-12-08 12:35:59 -0800752 need_dash_r=1
753 fi
Tim Rice648f8762011-01-26 12:38:57 -0800754 AC_DEFINE([SSH_TUN_FREEBSD], [1], [Open tunnel devices the FreeBSD way])
Damien Miller2dcddbf2006-01-01 19:47:05 +1100755 AC_CHECK_HEADER([net/if_tap.h], ,
Tim Rice648f8762011-01-26 12:38:57 -0800756 AC_DEFINE([SSH_TUN_NO_L2], [1], [No layer 2 tunnel support]))
757 AC_DEFINE([SSH_TUN_PREPEND_AF], [1],
Damien Miller2dcddbf2006-01-01 19:47:05 +1100758 [Prepend the address family to IP tunnel traffic])
Darren Tucker882abfd2013-11-09 00:17:41 +1100759 TEST_MALLOC_OPTIONS="AJRX"
Damien Milleree1c0b32000-01-21 00:18:15 +1100760 ;;
Damien Millerfbd884a2001-02-27 08:39:07 +1100761*-*-freebsd*)
762 check_for_libcrypt_later=1
Tim Rice648f8762011-01-26 12:38:57 -0800763 AC_DEFINE([LOCKED_PASSWD_PREFIX], ["*LOCKED*"], [Account locked with pw(1)])
764 AC_DEFINE([SSH_TUN_FREEBSD], [1], [Open tunnel devices the FreeBSD way])
Damien Miller2dcddbf2006-01-01 19:47:05 +1100765 AC_CHECK_HEADER([net/if_tap.h], ,
Tim Rice648f8762011-01-26 12:38:57 -0800766 AC_DEFINE([SSH_TUN_NO_L2], [1], [No layer 2 tunnel support]))
767 AC_DEFINE([BROKEN_GLOB], [1], [FreeBSD glob does not do what we need])
Darren Tucker882abfd2013-11-09 00:17:41 +1100768 AC_DEFINE([BROKEN_STRNVIS], [1], [FreeBSD strnvis does not do what we need])
769 TEST_MALLOC_OPTIONS="AJRX"
Damien Millerfbd884a2001-02-27 08:39:07 +1100770 ;;
Darren Tuckered9eb022003-09-22 11:18:47 +1000771*-*-bsdi*)
Tim Rice648f8762011-01-26 12:38:57 -0800772 AC_DEFINE([SETEUID_BREAKS_SETUID])
773 AC_DEFINE([BROKEN_SETREUID])
774 AC_DEFINE([BROKEN_SETREGID])
Darren Tuckered9eb022003-09-22 11:18:47 +1000775 ;;
Damien Miller0f91b4e2000-06-18 15:43:25 +1000776*-next-*)
Damien Miller0f91b4e2000-06-18 15:43:25 +1000777 conf_lastlog_location="/usr/adm/lastlog"
Damien Millere5192fa2000-08-29 14:30:37 +1100778 conf_utmp_location=/etc/utmp
779 conf_wtmp_location=/usr/adm/wtmp
Tim Rice90f42b02011-06-02 18:17:49 -0700780 maildir=/usr/spool/mail
Tim Rice648f8762011-01-26 12:38:57 -0800781 AC_DEFINE([HAVE_NEXT], [1], [Define if you are on NeXT])
782 AC_DEFINE([BROKEN_REALPATH])
783 AC_DEFINE([USE_PIPES])
784 AC_DEFINE([BROKEN_SAVED_UIDS], [1], [Needed for NeXT])
Damien Miller0f91b4e2000-06-18 15:43:25 +1000785 ;;
Darren Tucker4a422572005-07-14 17:22:11 +1000786*-*-openbsd*)
Tim Rice648f8762011-01-26 12:38:57 -0800787 AC_DEFINE([HAVE_ATTRIBUTE__SENTINEL__], [1], [OpenBSD's gcc has sentinel])
788 AC_DEFINE([HAVE_ATTRIBUTE__BOUNDED__], [1], [OpenBSD's gcc has bounded])
789 AC_DEFINE([SSH_TUN_OPENBSD], [1], [Open tunnel devices the OpenBSD way])
790 AC_DEFINE([SYSLOG_R_SAFE_IN_SIGHAND], [1],
Damien Millerbb598142006-08-19 08:38:23 +1000791 [syslog_r function is safe to use in in a signal handler])
Darren Tucker882abfd2013-11-09 00:17:41 +1100792 TEST_MALLOC_OPTIONS="AFGJPRX"
Darren Tucker4a422572005-07-14 17:22:11 +1000793 ;;
Damien Miller75b1d102000-01-07 14:01:41 +1100794*-*-solaris*)
Tim Riceeae17cc2005-03-17 16:52:20 -0800795 if test "x$withval" != "xno" ; then
Tim Ricead4a1882004-02-29 15:53:37 -0800796 need_dash_r=1
797 fi
Tim Rice648f8762011-01-26 12:38:57 -0800798 AC_DEFINE([PAM_SUN_CODEBASE])
799 AC_DEFINE([LOGIN_NEEDS_UTMPX])
800 AC_DEFINE([LOGIN_NEEDS_TERM], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700801 [Some versions of /bin/login need the TERM supplied
802 on the commandline])
Tim Rice648f8762011-01-26 12:38:57 -0800803 AC_DEFINE([PAM_TTY_KLUDGE])
804 AC_DEFINE([SSHPAM_CHAUTHTOK_NEEDS_RUID], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700805 [Define if pam_chauthtok wants real uid set
806 to the unpriv'ed user])
Tim Rice648f8762011-01-26 12:38:57 -0800807 AC_DEFINE([LOCKED_PASSWD_STRING], ["*LK*"])
Darren Tuckerc437cda2003-05-10 17:05:46 +1000808 # Pushing STREAMS modules will cause sshd to acquire a controlling tty.
Tim Rice648f8762011-01-26 12:38:57 -0800809 AC_DEFINE([SSHD_ACQUIRES_CTTY], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700810 [Define if sshd somehow reacquires a controlling TTY
811 after setsid()])
Tim Rice648f8762011-01-26 12:38:57 -0800812 AC_DEFINE([PASSWD_NEEDS_USERNAME], [1], [must supply username to passwd
Darren Tucker0249f932006-06-24 12:10:07 +1000813 in case the name is longer than 8 chars])
Tim Rice648f8762011-01-26 12:38:57 -0800814 AC_DEFINE([BROKEN_TCGETATTR_ICANON], [1], [tcgetattr with ICANON may hang])
Darren Tuckere1a790d2003-09-16 11:52:19 +1000815 external_path_file=/etc/default/login
andre2ff7b5d2000-06-03 14:57:40 +0000816 # hardwire lastlog location (can't detect it on some versions)
817 conf_lastlog_location="/var/adm/lastlog"
Tim Rice648f8762011-01-26 12:38:57 -0800818 AC_MSG_CHECKING([for obsolete utmp and wtmp in solaris2.x])
Damien Millera1cb6442000-06-09 11:58:35 +1000819 sol2ver=`echo "$host"| sed -e 's/.*[[0-9]]\.//'`
820 if test "$sol2ver" -ge 8; then
Tim Rice648f8762011-01-26 12:38:57 -0800821 AC_MSG_RESULT([yes])
822 AC_DEFINE([DISABLE_UTMP])
823 AC_DEFINE([DISABLE_WTMP], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700824 [Define if you don't want to use wtmp])
Damien Millera1cb6442000-06-09 11:58:35 +1000825 else
Tim Rice648f8762011-01-26 12:38:57 -0800826 AC_MSG_RESULT([no])
Damien Millera1cb6442000-06-09 11:58:35 +1000827 fi
Tim Rice648f8762011-01-26 12:38:57 -0800828 AC_ARG_WITH([solaris-contracts],
Damien Miller1b06dc32006-08-31 03:24:41 +1000829 [ --with-solaris-contracts Enable Solaris process contracts (experimental)],
830 [
Tim Rice648f8762011-01-26 12:38:57 -0800831 AC_CHECK_LIB([contract], [ct_tmpl_activate],
832 [ AC_DEFINE([USE_SOLARIS_PROCESS_CONTRACTS], [1],
Damien Miller1b06dc32006-08-31 03:24:41 +1000833 [Define if you have Solaris process contracts])
834 SSHDLIBS="$SSHDLIBS -lcontract"
Damien Miller1b06dc32006-08-31 03:24:41 +1000835 SPC_MSG="yes" ], )
836 ],
837 )
Tim Rice648f8762011-01-26 12:38:57 -0800838 AC_ARG_WITH([solaris-projects],
Darren Tucker97528352010-11-05 12:03:05 +1100839 [ --with-solaris-projects Enable Solaris projects (experimental)],
840 [
Tim Rice648f8762011-01-26 12:38:57 -0800841 AC_CHECK_LIB([project], [setproject],
842 [ AC_DEFINE([USE_SOLARIS_PROJECTS], [1],
Darren Tucker97528352010-11-05 12:03:05 +1100843 [Define if you have Solaris projects])
844 SSHDLIBS="$SSHDLIBS -lproject"
Darren Tucker97528352010-11-05 12:03:05 +1100845 SP_MSG="yes" ], )
846 ],
847 )
Tim Rice5ab9b632013-06-02 14:05:48 -0700848 TEST_SHELL=$SHELL # let configure find us a capable shell
Damien Miller75b1d102000-01-07 14:01:41 +1100849 ;;
Damien Millerdfc83f42000-05-20 15:02:59 +1000850*-*-sunos4*)
Ben Lindstrom28bfc0d2000-12-18 19:58:57 +0000851 CPPFLAGS="$CPPFLAGS -DSUNOS4"
Tim Rice648f8762011-01-26 12:38:57 -0800852 AC_CHECK_FUNCS([getpwanam])
853 AC_DEFINE([PAM_SUN_CODEBASE])
Damien Miller36ccb5c2000-08-09 16:34:27 +1000854 conf_utmp_location=/etc/utmp
855 conf_wtmp_location=/var/adm/wtmp
856 conf_lastlog_location=/var/adm/lastlog
Tim Rice648f8762011-01-26 12:38:57 -0800857 AC_DEFINE([USE_PIPES])
Damien Millerdfc83f42000-05-20 15:02:59 +1000858 ;;
Ben Lindstrom603bdfd2001-02-12 07:29:45 +0000859*-ncr-sysv*)
Tim Rice13aae5e2001-10-21 17:53:58 -0700860 LIBS="$LIBS -lc89"
Tim Rice648f8762011-01-26 12:38:57 -0800861 AC_DEFINE([USE_PIPES])
862 AC_DEFINE([SSHD_ACQUIRES_CTTY])
863 AC_DEFINE([SETEUID_BREAKS_SETUID])
864 AC_DEFINE([BROKEN_SETREUID])
865 AC_DEFINE([BROKEN_SETREGID])
Ben Lindstrom603bdfd2001-02-12 07:29:45 +0000866 ;;
Damien Miller2ae714f2000-07-11 09:29:50 +1000867*-sni-sysv*)
Tim Riceffdf4aa2001-10-27 10:45:36 -0700868 # /usr/ucblib MUST NOT be searched on ReliantUNIX
Tim Rice648f8762011-01-26 12:38:57 -0800869 AC_CHECK_LIB([dl], [dlsym], ,)
Darren Tucker79d09fa2005-11-24 22:34:54 +1100870 # -lresolv needs to be at the end of LIBS or DNS lookups break
Tim Rice648f8762011-01-26 12:38:57 -0800871 AC_CHECK_LIB([resolv], [res_query], [ LIBS="$LIBS -lresolv" ])
Damien Millerfd9885e2001-01-10 08:16:53 +1100872 IPADDR_IN_DISPLAY=yes
Tim Rice648f8762011-01-26 12:38:57 -0800873 AC_DEFINE([USE_PIPES])
874 AC_DEFINE([IP_TOS_IS_BROKEN])
875 AC_DEFINE([SETEUID_BREAKS_SETUID])
876 AC_DEFINE([BROKEN_SETREUID])
877 AC_DEFINE([BROKEN_SETREGID])
878 AC_DEFINE([SSHD_ACQUIRES_CTTY])
Darren Tuckere1a790d2003-09-16 11:52:19 +1000879 external_path_file=/etc/default/login
Tim Riceffdf4aa2001-10-27 10:45:36 -0700880 # /usr/ucblib/libucb.a no longer needed on ReliantUNIX
881 # Attention: always take care to bind libsocket and libnsl before libc,
882 # otherwise you will find lots of "SIOCGPGRP errno 22" on syslog
Damien Miller2ae714f2000-07-11 09:29:50 +1000883 ;;
Tim Rice0f83d292004-12-08 18:29:58 -0800884# UnixWare 1.x, UnixWare 2.x, and others based on code from Univel.
Damien Miller78315eb2000-09-29 23:01:36 +1100885*-*-sysv4.2*)
Tim Rice648f8762011-01-26 12:38:57 -0800886 AC_DEFINE([USE_PIPES])
887 AC_DEFINE([SETEUID_BREAKS_SETUID])
888 AC_DEFINE([BROKEN_SETREUID])
889 AC_DEFINE([BROKEN_SETREGID])
890 AC_DEFINE([PASSWD_NEEDS_USERNAME], [1], [must supply username to passwd])
891 AC_DEFINE([LOCKED_PASSWD_STRING], ["*LK*"])
Tim Rice5ab9b632013-06-02 14:05:48 -0700892 TEST_SHELL=$SHELL # let configure find us a capable shell
Damien Miller78315eb2000-09-29 23:01:36 +1100893 ;;
Tim Rice0f83d292004-12-08 18:29:58 -0800894# UnixWare 7.x, OpenUNIX 8
Damien Miller78315eb2000-09-29 23:01:36 +1100895*-*-sysv5*)
Tim Rice641ebf12010-01-17 17:05:39 -0800896 CPPFLAGS="$CPPFLAGS -Dvsnprintf=_xvsnprintf -Dsnprintf=_xsnprintf"
Tim Rice648f8762011-01-26 12:38:57 -0800897 AC_DEFINE([UNIXWARE_LONG_PASSWORDS], [1], [Support passwords > 8 chars])
898 AC_DEFINE([USE_PIPES])
899 AC_DEFINE([SETEUID_BREAKS_SETUID])
900 AC_DEFINE([BROKEN_GETADDRINFO])
901 AC_DEFINE([BROKEN_SETREUID])
902 AC_DEFINE([BROKEN_SETREGID])
903 AC_DEFINE([PASSWD_NEEDS_USERNAME])
Tim Rice5ab9b632013-06-02 14:05:48 -0700904 TEST_SHELL=$SHELL # let configure find us a capable shell
Tim Rice4dbacff2005-06-01 20:09:28 -0700905 case "$host" in
906 *-*-sysv5SCO_SV*) # SCO OpenServer 6.x
Tim Rice90f42b02011-06-02 18:17:49 -0700907 maildir=/var/spool/mail
Tim Rice648f8762011-01-26 12:38:57 -0800908 AC_DEFINE([BROKEN_LIBIAF], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700909 [ia_uinfo routines not supported by OS yet])
Tim Rice648f8762011-01-26 12:38:57 -0800910 AC_DEFINE([BROKEN_UPDWTMPX])
911 AC_CHECK_LIB([prot], [getluid], [ LIBS="$LIBS -lprot"
912 AC_CHECK_FUNCS([getluid setluid], , , [-lprot])
913 AC_DEFINE([HAVE_SECUREWARE])
914 AC_DEFINE([DISABLE_SHADOW])
915 ], , )
Tim Rice4dbacff2005-06-01 20:09:28 -0700916 ;;
Tim Rice648f8762011-01-26 12:38:57 -0800917 *) AC_DEFINE([LOCKED_PASSWD_STRING], ["*LK*"])
Tim Rice26767912009-01-07 20:50:08 -0800918 check_for_libcrypt_later=1
Tim Rice46259d82005-11-28 18:40:34 -0800919 ;;
Tim Rice4dbacff2005-06-01 20:09:28 -0700920 esac
Damien Miller78315eb2000-09-29 23:01:36 +1100921 ;;
Damien Miller75b1d102000-01-07 14:01:41 +1100922*-*-sysv*)
Damien Miller75b1d102000-01-07 14:01:41 +1100923 ;;
Tim Rice0f83d292004-12-08 18:29:58 -0800924# SCO UNIX and OEM versions of SCO UNIX
Damien Miller78315eb2000-09-29 23:01:36 +1100925*-*-sco3.2v4*)
Tim Ricec390c8d2005-03-07 01:21:37 -0800926 AC_MSG_ERROR("This Platform is no longer supported.")
Damien Miller78315eb2000-09-29 23:01:36 +1100927 ;;
Tim Rice0f83d292004-12-08 18:29:58 -0800928# SCO OpenServer 5.x
Damien Miller78315eb2000-09-29 23:01:36 +1100929*-*-sco3.2v5*)
Tim Rice89fe3f32003-01-19 20:20:24 -0800930 if test -z "$GCC"; then
931 CFLAGS="$CFLAGS -belf"
932 fi
Damien Miller5dfe9762001-02-16 12:05:39 +1100933 LIBS="$LIBS -lprot -lx -ltinfo -lm"
Damien Millera66626b2000-06-13 18:57:53 +1000934 no_dev_ptmx=1
Tim Rice648f8762011-01-26 12:38:57 -0800935 AC_DEFINE([USE_PIPES])
936 AC_DEFINE([HAVE_SECUREWARE])
937 AC_DEFINE([DISABLE_SHADOW])
938 AC_DEFINE([DISABLE_FD_PASSING])
939 AC_DEFINE([SETEUID_BREAKS_SETUID])
940 AC_DEFINE([BROKEN_GETADDRINFO])
941 AC_DEFINE([BROKEN_SETREUID])
942 AC_DEFINE([BROKEN_SETREGID])
943 AC_DEFINE([WITH_ABBREV_NO_TTY])
944 AC_DEFINE([BROKEN_UPDWTMPX])
945 AC_DEFINE([PASSWD_NEEDS_USERNAME])
946 AC_CHECK_FUNCS([getluid setluid])
Tim Rice07183b82001-04-25 21:40:28 -0700947 MANTYPE=man
Tim Rice5ab9b632013-06-02 14:05:48 -0700948 TEST_SHELL=$SHELL # let configure find us a capable shell
Tim Riceaa86c392013-03-16 20:55:46 -0700949 SKIP_DISABLE_LASTLOG_DEFINE=yes
Damien Millera66626b2000-06-13 18:57:53 +1000950 ;;
Ben Lindstrom232ccf72002-07-22 23:34:25 +0000951*-*-unicosmk*)
Tim Rice648f8762011-01-26 12:38:57 -0800952 AC_DEFINE([NO_SSH_LASTLOG], [1],
Tim Rice7df8d392005-09-19 09:33:39 -0700953 [Define if you don't want to use lastlog in session.c])
Tim Rice648f8762011-01-26 12:38:57 -0800954 AC_DEFINE([SETEUID_BREAKS_SETUID])
955 AC_DEFINE([BROKEN_SETREUID])
956 AC_DEFINE([BROKEN_SETREGID])
957 AC_DEFINE([USE_PIPES])
958 AC_DEFINE([DISABLE_FD_PASSING])
Ben Lindstrom232ccf72002-07-22 23:34:25 +0000959 LDFLAGS="$LDFLAGS"
960 LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm"
961 MANTYPE=cat
Ben Lindstrom762104e2002-07-23 00:00:05 +0000962 ;;
Darren Tucker9f7ffc52003-09-10 11:39:05 +1000963*-*-unicosmp*)
Tim Rice648f8762011-01-26 12:38:57 -0800964 AC_DEFINE([SETEUID_BREAKS_SETUID])
965 AC_DEFINE([BROKEN_SETREUID])
966 AC_DEFINE([BROKEN_SETREGID])
967 AC_DEFINE([WITH_ABBREV_NO_TTY])
968 AC_DEFINE([USE_PIPES])
969 AC_DEFINE([DISABLE_FD_PASSING])
Darren Tucker9f7ffc52003-09-10 11:39:05 +1000970 LDFLAGS="$LDFLAGS"
Darren Tucker2df33432004-01-30 14:34:21 +1100971 LIBS="$LIBS -lgen -lacid -ldb"
Darren Tucker9f7ffc52003-09-10 11:39:05 +1000972 MANTYPE=cat
973 ;;
Ben Lindstromd9e08242001-07-22 19:32:00 +0000974*-*-unicos*)
Tim Rice648f8762011-01-26 12:38:57 -0800975 AC_DEFINE([SETEUID_BREAKS_SETUID])
976 AC_DEFINE([BROKEN_SETREUID])
977 AC_DEFINE([BROKEN_SETREGID])
978 AC_DEFINE([USE_PIPES])
979 AC_DEFINE([DISABLE_FD_PASSING])
980 AC_DEFINE([NO_SSH_LASTLOG])
Ben Lindstrom232ccf72002-07-22 23:34:25 +0000981 LDFLAGS="$LDFLAGS -Wl,-Dmsglevel=334:fatal"
982 LIBS="$LIBS -lgen -lrsc -lshare -luex -lacm"
983 MANTYPE=cat
Tim Ricee991e3c2001-08-07 15:29:07 -0700984 ;;
Damien Millerb8c656e2000-06-28 15:22:41 +1000985*-dec-osf*)
Tim Rice648f8762011-01-26 12:38:57 -0800986 AC_MSG_CHECKING([for Digital Unix SIA])
Ben Lindstrom72af2ef2001-05-08 20:42:28 +0000987 no_osfsia=""
Tim Rice648f8762011-01-26 12:38:57 -0800988 AC_ARG_WITH([osfsia],
Ben Lindstrom72af2ef2001-05-08 20:42:28 +0000989 [ --with-osfsia Enable Digital Unix SIA],
990 [
991 if test "x$withval" = "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -0800992 AC_MSG_RESULT([disabled])
Ben Lindstrom72af2ef2001-05-08 20:42:28 +0000993 no_osfsia=1
994 fi
995 ],
996 )
997 if test -z "$no_osfsia" ; then
Damien Millerb8c656e2000-06-28 15:22:41 +1000998 if test -f /etc/sia/matrix.conf; then
Tim Rice648f8762011-01-26 12:38:57 -0800999 AC_MSG_RESULT([yes])
1000 AC_DEFINE([HAVE_OSF_SIA], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07001001 [Define if you have Digital Unix Security
1002 Integration Architecture])
Tim Rice648f8762011-01-26 12:38:57 -08001003 AC_DEFINE([DISABLE_LOGIN], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07001004 [Define if you don't want to use your
1005 system's login() call])
Tim Rice648f8762011-01-26 12:38:57 -08001006 AC_DEFINE([DISABLE_FD_PASSING])
Damien Millerb8c656e2000-06-28 15:22:41 +10001007 LIBS="$LIBS -lsecurity -ldb -lm -laud"
Damien Miller1b06dc32006-08-31 03:24:41 +10001008 SIA_MSG="yes"
Damien Millerb8c656e2000-06-28 15:22:41 +10001009 else
Tim Rice648f8762011-01-26 12:38:57 -08001010 AC_MSG_RESULT([no])
1011 AC_DEFINE([LOCKED_PASSWD_SUBSTR], ["Nologin"],
Tim Rice7df8d392005-09-19 09:33:39 -07001012 [String used in /etc/passwd to denote locked account])
Damien Millerb8c656e2000-06-28 15:22:41 +10001013 fi
1014 fi
Tim Rice648f8762011-01-26 12:38:57 -08001015 AC_DEFINE([BROKEN_GETADDRINFO])
1016 AC_DEFINE([SETEUID_BREAKS_SETUID])
1017 AC_DEFINE([BROKEN_SETREUID])
1018 AC_DEFINE([BROKEN_SETREGID])
1019 AC_DEFINE([BROKEN_READV_COMPARISON], [1], [Can't do comparisons on readv])
Damien Millerb8c656e2000-06-28 15:22:41 +10001020 ;;
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00001021
Tim Rice70335a62006-02-04 17:42:58 -08001022*-*-nto-qnx*)
Tim Rice648f8762011-01-26 12:38:57 -08001023 AC_DEFINE([USE_PIPES])
1024 AC_DEFINE([NO_X11_UNIX_SOCKETS])
Tim Rice648f8762011-01-26 12:38:57 -08001025 AC_DEFINE([DISABLE_LASTLOG])
1026 AC_DEFINE([SSHD_ACQUIRES_CTTY])
1027 AC_DEFINE([BROKEN_SHADOW_EXPIRE], [1], [QNX shadow support is broken])
Tim Rice2f993462006-02-11 18:37:48 -08001028 enable_etc_default_login=no # has incompatible /etc/default/login
Darren Tucker8acb3b62007-08-10 14:36:12 +10001029 case "$host" in
1030 *-*-nto-qnx6*)
Tim Rice648f8762011-01-26 12:38:57 -08001031 AC_DEFINE([DISABLE_FD_PASSING])
Darren Tucker8acb3b62007-08-10 14:36:12 +10001032 ;;
1033 esac
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00001034 ;;
Darren Tucker2be1cbb2005-05-27 21:13:40 +10001035
1036*-*-ultrix*)
Tim Rice648f8762011-01-26 12:38:57 -08001037 AC_DEFINE([BROKEN_GETGROUPS], [1], [getgroups(0,NULL) will return -1])
1038 AC_DEFINE([BROKEN_MMAP], [1], [Ultrix mmap can't map files])
1039 AC_DEFINE([NEED_SETPGRP])
1040 AC_DEFINE([HAVE_SYS_SYSLOG_H], [1], [Force use of sys/syslog.h on Ultrix])
Tim Ricefcc7ff12005-06-02 20:28:29 -07001041 ;;
Darren Tucker93e7e8f2005-08-23 08:06:55 +10001042
1043*-*-lynxos)
1044 CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"
Tim Rice648f8762011-01-26 12:38:57 -08001045 AC_DEFINE([BROKEN_SETVBUF], [1], [LynxOS has broken setvbuf() implementation])
Darren Tucker93e7e8f2005-08-23 08:06:55 +10001046 ;;
Damien Miller76112de1999-12-21 11:18:08 +11001047esac
1048
Tim Rice648f8762011-01-26 12:38:57 -08001049AC_MSG_CHECKING([compiler and flags for sanity])
1050AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> ]], [[ exit(0); ]])],
1051 [ AC_MSG_RESULT([yes]) ],
Darren Tucker6eb93042003-06-29 21:30:41 +10001052 [
Tim Rice648f8762011-01-26 12:38:57 -08001053 AC_MSG_RESULT([no])
Darren Tucker6eb93042003-06-29 21:30:41 +10001054 AC_MSG_ERROR([*** compiler cannot create working executables, check config.log ***])
Darren Tuckera0c2b392004-09-11 23:26:37 +10001055 ],
1056 [ AC_MSG_WARN([cross compiling: not checking compiler sanity]) ]
Darren Tucker6eb93042003-06-29 21:30:41 +10001057)
1058
Darren Tucker0c9653f2005-05-28 15:58:14 +10001059dnl Checks for header files.
Damien Millera22ba012000-03-02 23:09:20 +11001060# Checks for libraries.
Tim Rice648f8762011-01-26 12:38:57 -08001061AC_CHECK_FUNC([yp_match], , [AC_CHECK_LIB([nsl], [yp_match])])
1062AC_CHECK_FUNC([setsockopt], , [AC_CHECK_LIB([socket], [setsockopt])])
Ben Lindstrom3ad650a2001-01-03 06:02:51 +00001063
Tim Rice1e1ef642003-09-11 22:19:31 -07001064dnl IRIX and Solaris 2.5.1 have dirname() in libgen
Tim Rice648f8762011-01-26 12:38:57 -08001065AC_CHECK_FUNCS([dirname], [AC_CHECK_HEADERS([libgen.h])] , [
1066 AC_CHECK_LIB([gen], [dirname], [
Tim Rice1e1ef642003-09-11 22:19:31 -07001067 AC_CACHE_CHECK([for broken dirname],
1068 ac_cv_have_broken_dirname, [
1069 save_LIBS="$LIBS"
1070 LIBS="$LIBS -lgen"
Darren Tucker314d89e2005-10-17 23:29:23 +10001071 AC_RUN_IFELSE(
1072 [AC_LANG_SOURCE([[
Tim Rice1e1ef642003-09-11 22:19:31 -07001073#include <libgen.h>
1074#include <string.h>
1075
1076int main(int argc, char **argv) {
1077 char *s, buf[32];
1078
1079 strncpy(buf,"/etc", 32);
1080 s = dirname(buf);
1081 if (!s || strncmp(s, "/", 32) != 0) {
1082 exit(1);
1083 } else {
1084 exit(0);
1085 }
1086}
Darren Tucker314d89e2005-10-17 23:29:23 +10001087 ]])],
Tim Rice1e1ef642003-09-11 22:19:31 -07001088 [ ac_cv_have_broken_dirname="no" ],
Darren Tucker314d89e2005-10-17 23:29:23 +10001089 [ ac_cv_have_broken_dirname="yes" ],
1090 [ ac_cv_have_broken_dirname="no" ],
Tim Rice1e1ef642003-09-11 22:19:31 -07001091 )
1092 LIBS="$save_LIBS"
1093 ])
1094 if test "x$ac_cv_have_broken_dirname" = "xno" ; then
1095 LIBS="$LIBS -lgen"
Tim Rice648f8762011-01-26 12:38:57 -08001096 AC_DEFINE([HAVE_DIRNAME])
1097 AC_CHECK_HEADERS([libgen.h])
Tim Rice1e1ef642003-09-11 22:19:31 -07001098 fi
1099 ])
1100])
1101
Tim Rice648f8762011-01-26 12:38:57 -08001102AC_CHECK_FUNC([getspnam], ,
1103 [AC_CHECK_LIB([gen], [getspnam], [LIBS="$LIBS -lgen"])])
1104AC_SEARCH_LIBS([basename], [gen], [AC_DEFINE([HAVE_BASENAME], [1],
1105 [Define if you have the basename function.])])
Tim Rice1e1ef642003-09-11 22:19:31 -07001106
Tim Rice13aae5e2001-10-21 17:53:58 -07001107dnl zlib is required
Tim Rice648f8762011-01-26 12:38:57 -08001108AC_ARG_WITH([zlib],
Tim Rice13aae5e2001-10-21 17:53:58 -07001109 [ --with-zlib=PATH Use zlib in PATH],
Darren Tucker86a5f8d2005-03-21 09:55:17 +11001110 [ if test "x$withval" = "xno" ; then
1111 AC_MSG_ERROR([*** zlib is required ***])
1112 elif test "x$withval" != "xyes"; then
Tim Rice13aae5e2001-10-21 17:53:58 -07001113 if test -d "$withval/lib"; then
1114 if test -n "${need_dash_r}"; then
Tim Rice02cebcd2001-10-25 10:01:30 -07001115 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001116 else
Tim Rice02cebcd2001-10-25 10:01:30 -07001117 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001118 fi
1119 else
1120 if test -n "${need_dash_r}"; then
Tim Rice02cebcd2001-10-25 10:01:30 -07001121 LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001122 else
Tim Rice02cebcd2001-10-25 10:01:30 -07001123 LDFLAGS="-L${withval} ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001124 fi
1125 fi
1126 if test -d "$withval/include"; then
Tim Rice02cebcd2001-10-25 10:01:30 -07001127 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001128 else
Tim Rice02cebcd2001-10-25 10:01:30 -07001129 CPPFLAGS="-I${withval} ${CPPFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001130 fi
Darren Tucker86a5f8d2005-03-21 09:55:17 +11001131 fi ]
Tim Rice13aae5e2001-10-21 17:53:58 -07001132)
1133
Tim Rice648f8762011-01-26 12:38:57 -08001134AC_CHECK_HEADER([zlib.h], ,[AC_MSG_ERROR([*** zlib.h missing - please install first or check config.log ***])])
1135AC_CHECK_LIB([z], [deflate], ,
Tim Ricefcb62202004-01-23 18:35:16 -08001136 [
1137 saved_CPPFLAGS="$CPPFLAGS"
1138 saved_LDFLAGS="$LDFLAGS"
1139 save_LIBS="$LIBS"
1140 dnl Check default zlib install dir
1141 if test -n "${need_dash_r}"; then
1142 LDFLAGS="-L/usr/local/lib -R/usr/local/lib ${saved_LDFLAGS}"
1143 else
1144 LDFLAGS="-L/usr/local/lib ${saved_LDFLAGS}"
1145 fi
1146 CPPFLAGS="-I/usr/local/include ${saved_CPPFLAGS}"
1147 LIBS="$LIBS -lz"
Tim Rice648f8762011-01-26 12:38:57 -08001148 AC_TRY_LINK_FUNC([deflate], [AC_DEFINE([HAVE_LIBZ])],
Tim Ricefcb62202004-01-23 18:35:16 -08001149 [
1150 AC_MSG_ERROR([*** zlib missing - please install first or check config.log ***])
1151 ]
1152 )
1153 ]
1154)
Darren Tuckerdcc736b2004-01-30 14:20:59 +11001155
Tim Rice648f8762011-01-26 12:38:57 -08001156AC_ARG_WITH([zlib-version-check],
Darren Tuckerdcc736b2004-01-30 14:20:59 +11001157 [ --without-zlib-version-check Disable zlib version check],
1158 [ if test "x$withval" = "xno" ; then
1159 zlib_check_nonfatal=1
1160 fi
1161 ]
1162)
1163
Tim Rice648f8762011-01-26 12:38:57 -08001164AC_MSG_CHECKING([for possibly buggy zlib])
1165AC_RUN_IFELSE([AC_LANG_PROGRAM([[
Darren Tucker2f0b5c42005-04-24 17:52:22 +10001166#include <stdio.h>
Darren Tuckerc8a0f272013-03-22 12:49:14 +11001167#include <stdlib.h>
Darren Tucker2dcd2392004-01-23 17:13:33 +11001168#include <zlib.h>
Tim Rice648f8762011-01-26 12:38:57 -08001169 ]],
1170 [[
Darren Tucker2f0b5c42005-04-24 17:52:22 +10001171 int a=0, b=0, c=0, d=0, n, v;
1172 n = sscanf(ZLIB_VERSION, "%d.%d.%d.%d", &a, &b, &c, &d);
1173 if (n != 3 && n != 4)
Darren Tucker2dcd2392004-01-23 17:13:33 +11001174 exit(1);
Darren Tucker2f0b5c42005-04-24 17:52:22 +10001175 v = a*1000000 + b*10000 + c*100 + d;
1176 fprintf(stderr, "found zlib version %s (%d)\n", ZLIB_VERSION, v);
1177
1178 /* 1.1.4 is OK */
1179 if (a == 1 && b == 1 && c >= 4)
Darren Tucker2dcd2392004-01-23 17:13:33 +11001180 exit(0);
Darren Tucker2f0b5c42005-04-24 17:52:22 +10001181
Darren Tucker41097ed2005-07-25 15:24:21 +10001182 /* 1.2.3 and up are OK */
1183 if (v >= 1020300)
Darren Tucker2f0b5c42005-04-24 17:52:22 +10001184 exit(0);
1185
Darren Tucker2dcd2392004-01-23 17:13:33 +11001186 exit(2);
Darren Tucker623d92f2004-09-12 22:36:15 +10001187 ]])],
Tim Rice648f8762011-01-26 12:38:57 -08001188 AC_MSG_RESULT([no]),
1189 [ AC_MSG_RESULT([yes])
Darren Tuckerdcc736b2004-01-30 14:20:59 +11001190 if test -z "$zlib_check_nonfatal" ; then
1191 AC_MSG_ERROR([*** zlib too old - check config.log ***
1192Your reported zlib version has known security problems. It's possible your
1193vendor has fixed these problems without changing the version number. If you
1194are sure this is the case, you can disable the check by running
1195"./configure --without-zlib-version-check".
Darren Tuckerac1910f2005-07-26 12:00:42 +10001196If you are in doubt, upgrade zlib to version 1.2.3 or greater.
Darren Tucker2f0b5c42005-04-24 17:52:22 +10001197See http://www.gzip.org/zlib/ for details.])
Darren Tuckerdcc736b2004-01-30 14:20:59 +11001198 else
1199 AC_MSG_WARN([zlib version may have security problems])
1200 fi
Darren Tuckera0c2b392004-09-11 23:26:37 +10001201 ],
1202 [ AC_MSG_WARN([cross compiling: not checking zlib version]) ]
Darren Tucker2dcd2392004-01-23 17:13:33 +11001203)
Damien Miller6f9c3372000-10-25 10:06:04 +11001204
Ben Lindstrom3ad650a2001-01-03 06:02:51 +00001205dnl UnixWare 2.x
Tim Rice648f8762011-01-26 12:38:57 -08001206AC_CHECK_FUNC([strcasecmp],
1207 [], [ AC_CHECK_LIB([resolv], [strcasecmp], [LIBS="$LIBS -lresolv"]) ]
Ben Lindstrom3ad650a2001-01-03 06:02:51 +00001208)
Tim Rice648f8762011-01-26 12:38:57 -08001209AC_CHECK_FUNCS([utimes],
1210 [], [ AC_CHECK_LIB([c89], [utimes], [AC_DEFINE([HAVE_UTIMES])
Tim Ricecbb90662002-07-08 19:17:10 -07001211 LIBS="$LIBS -lc89"]) ]
Ben Lindstrom3ad650a2001-01-03 06:02:51 +00001212)
Damien Millerab18c411999-11-11 10:40:23 +11001213
Tim Ricee589a292001-11-03 11:09:32 -08001214dnl Checks for libutil functions
Damien Millerb87f6b72013-02-23 09:12:23 +11001215AC_CHECK_HEADERS([bsd/libutil.h libutil.h])
Damien Miller398c0ff2012-04-19 21:46:35 +10001216AC_SEARCH_LIBS([fmt_scaled], [util bsd])
Darren Tuckere194ba42013-05-16 20:47:31 +10001217AC_SEARCH_LIBS([scan_scaled], [util bsd])
Damien Miller398c0ff2012-04-19 21:46:35 +10001218AC_SEARCH_LIBS([login], [util bsd])
1219AC_SEARCH_LIBS([logout], [util bsd])
1220AC_SEARCH_LIBS([logwtmp], [util bsd])
1221AC_SEARCH_LIBS([openpty], [util bsd])
1222AC_SEARCH_LIBS([updwtmp], [util bsd])
Darren Tuckere194ba42013-05-16 20:47:31 +10001223AC_CHECK_FUNCS([fmt_scaled scan_scaled login logout openpty updwtmp logwtmp])
Tim Ricee589a292001-11-03 11:09:32 -08001224
Ben Lindstrom8697e082001-02-24 21:41:10 +00001225AC_FUNC_STRFTIME
1226
Damien Miller3c027682001-03-14 11:39:45 +11001227# Check for ALTDIRFUNC glob() extension
Tim Rice648f8762011-01-26 12:38:57 -08001228AC_MSG_CHECKING([for GLOB_ALTDIRFUNC support])
1229AC_EGREP_CPP([FOUNDIT],
Damien Miller3c027682001-03-14 11:39:45 +11001230 [
1231 #include <glob.h>
1232 #ifdef GLOB_ALTDIRFUNC
1233 FOUNDIT
1234 #endif
Damien Millera8e06ce2003-11-21 23:48:55 +11001235 ],
Damien Miller3c027682001-03-14 11:39:45 +11001236 [
Tim Rice648f8762011-01-26 12:38:57 -08001237 AC_DEFINE([GLOB_HAS_ALTDIRFUNC], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07001238 [Define if your system glob() function has
1239 the GLOB_ALTDIRFUNC extension])
Tim Rice648f8762011-01-26 12:38:57 -08001240 AC_MSG_RESULT([yes])
Damien Miller3c027682001-03-14 11:39:45 +11001241 ],
1242 [
Tim Rice648f8762011-01-26 12:38:57 -08001243 AC_MSG_RESULT([no])
Damien Miller3c027682001-03-14 11:39:45 +11001244 ]
1245)
Damien Millerab18c411999-11-11 10:40:23 +11001246
Ben Lindstrom45b14db2001-03-17 01:15:38 +00001247# Check for g.gl_matchc glob() extension
Tim Rice648f8762011-01-26 12:38:57 -08001248AC_MSG_CHECKING([for gl_matchc field in glob_t])
1249AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <glob.h> ]],
1250 [[ glob_t g; g.gl_matchc = 1; ]])],
Damien Millera8e06ce2003-11-21 23:48:55 +11001251 [
Tim Rice648f8762011-01-26 12:38:57 -08001252 AC_DEFINE([GLOB_HAS_GL_MATCHC], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07001253 [Define if your system glob() function has
1254 gl_matchc options in glob_t])
Tim Rice648f8762011-01-26 12:38:57 -08001255 AC_MSG_RESULT([yes])
1256 ], [
1257 AC_MSG_RESULT([no])
1258])
Ben Lindstrom45b14db2001-03-17 01:15:38 +00001259
Damien Millera6e121a2010-10-07 21:39:17 +11001260# Check for g.gl_statv glob() extension
Tim Rice648f8762011-01-26 12:38:57 -08001261AC_MSG_CHECKING([for gl_statv and GLOB_KEEPSTAT extensions for glob])
1262AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <glob.h> ]], [[
Damien Millera6e121a2010-10-07 21:39:17 +11001263#ifndef GLOB_KEEPSTAT
1264#error "glob does not support GLOB_KEEPSTAT extension"
1265#endif
1266glob_t g;
1267g.gl_statv = NULL;
Tim Rice648f8762011-01-26 12:38:57 -08001268]])],
Damien Millera6e121a2010-10-07 21:39:17 +11001269 [
Tim Rice648f8762011-01-26 12:38:57 -08001270 AC_DEFINE([GLOB_HAS_GL_STATV], [1],
Damien Millera6e121a2010-10-07 21:39:17 +11001271 [Define if your system glob() function has
1272 gl_statv options in glob_t])
Tim Rice648f8762011-01-26 12:38:57 -08001273 AC_MSG_RESULT([yes])
1274 ], [
1275 AC_MSG_RESULT([no])
1276
1277])
Damien Millera6e121a2010-10-07 21:39:17 +11001278
Tim Rice648f8762011-01-26 12:38:57 -08001279AC_CHECK_DECLS([GLOB_NOMATCH], , , [#include <glob.h>])
Darren Tucker096faec2006-09-01 20:29:10 +10001280
Damien Miller18bb4732001-03-28 14:35:30 +10001281AC_MSG_CHECKING([whether struct dirent allocates space for d_name])
Darren Tuckera0c2b392004-09-11 23:26:37 +10001282AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08001283 [AC_LANG_PROGRAM([[
Damien Miller18bb4732001-03-28 14:35:30 +10001284#include <sys/types.h>
Tim Rice648f8762011-01-26 12:38:57 -08001285#include <dirent.h>]],
1286 [[
1287 struct dirent d;
1288 exit(sizeof(d.d_name)<=sizeof(char));
Darren Tucker623d92f2004-09-12 22:36:15 +10001289 ]])],
Tim Rice648f8762011-01-26 12:38:57 -08001290 [AC_MSG_RESULT([yes])],
Damien Miller18bb4732001-03-28 14:35:30 +10001291 [
Tim Rice648f8762011-01-26 12:38:57 -08001292 AC_MSG_RESULT([no])
1293 AC_DEFINE([BROKEN_ONE_BYTE_DIRENT_D_NAME], [1],
Darren Tucker79d09fa2005-11-24 22:34:54 +11001294 [Define if your struct dirent expects you to
Tim Rice7df8d392005-09-19 09:33:39 -07001295 allocate extra space for d_name])
Darren Tuckera0c2b392004-09-11 23:26:37 +10001296 ],
Tim Riceeae17cc2005-03-17 16:52:20 -08001297 [
Darren Tuckera0c2b392004-09-11 23:26:37 +10001298 AC_MSG_WARN([cross compiling: assuming BROKEN_ONE_BYTE_DIRENT_D_NAME])
Tim Rice648f8762011-01-26 12:38:57 -08001299 AC_DEFINE([BROKEN_ONE_BYTE_DIRENT_D_NAME])
Damien Miller18bb4732001-03-28 14:35:30 +10001300 ]
1301)
1302
Damien Miller36f49652004-08-15 18:40:59 +10001303AC_MSG_CHECKING([for /proc/pid/fd directory])
1304if test -d "/proc/$$/fd" ; then
Tim Rice648f8762011-01-26 12:38:57 -08001305 AC_DEFINE([HAVE_PROC_PID], [1], [Define if you have /proc/$pid/fd])
1306 AC_MSG_RESULT([yes])
Damien Miller36f49652004-08-15 18:40:59 +10001307else
Tim Rice648f8762011-01-26 12:38:57 -08001308 AC_MSG_RESULT([no])
Damien Miller36f49652004-08-15 18:40:59 +10001309fi
1310
Damien Millerc547bf12001-02-16 10:18:12 +11001311# Check whether user wants S/Key support
Damien Millera8e06ce2003-11-21 23:48:55 +11001312SKEY_MSG="no"
Tim Rice648f8762011-01-26 12:38:57 -08001313AC_ARG_WITH([skey],
Darren Tucker1b6f2292005-02-11 16:11:49 +11001314 [ --with-skey[[=PATH]] Enable S/Key support (optionally in PATH)],
Damien Millerc547bf12001-02-16 10:18:12 +11001315 [
1316 if test "x$withval" != "xno" ; then
1317
1318 if test "x$withval" != "xyes" ; then
1319 CPPFLAGS="$CPPFLAGS -I${withval}/include"
1320 LDFLAGS="$LDFLAGS -L${withval}/lib"
1321 fi
1322
Tim Rice648f8762011-01-26 12:38:57 -08001323 AC_DEFINE([SKEY], [1], [Define if you want S/Key support])
Damien Millerc547bf12001-02-16 10:18:12 +11001324 LIBS="-lskey $LIBS"
Damien Millera8e06ce2003-11-21 23:48:55 +11001325 SKEY_MSG="yes"
Tim Riceeae17cc2005-03-17 16:52:20 -08001326
Tim Rice4cec93f2002-02-26 08:40:48 -08001327 AC_MSG_CHECKING([for s/key support])
Darren Tucker314d89e2005-10-17 23:29:23 +10001328 AC_LINK_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08001329 [AC_LANG_PROGRAM([[
Tim Rice4cec93f2002-02-26 08:40:48 -08001330#include <stdio.h>
1331#include <skey.h>
Tim Rice648f8762011-01-26 12:38:57 -08001332 ]], [[
1333 char *ff = skey_keyinfo(""); ff="";
1334 exit(0);
Darren Tucker314d89e2005-10-17 23:29:23 +10001335 ]])],
Tim Rice648f8762011-01-26 12:38:57 -08001336 [AC_MSG_RESULT([yes])],
Tim Rice4cec93f2002-02-26 08:40:48 -08001337 [
Tim Rice648f8762011-01-26 12:38:57 -08001338 AC_MSG_RESULT([no])
Damien Millerc547bf12001-02-16 10:18:12 +11001339 AC_MSG_ERROR([** Incomplete or missing s/key libraries.])
1340 ])
Tim Rice648f8762011-01-26 12:38:57 -08001341 AC_MSG_CHECKING([if skeychallenge takes 4 arguments])
1342 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1343#include <stdio.h>
1344#include <skey.h>
1345 ]], [[
1346 (void)skeychallenge(NULL,"name","",0);
1347 ]])],
1348 [
1349 AC_MSG_RESULT([yes])
1350 AC_DEFINE([SKEYCHALLENGE_4ARG], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07001351 [Define if your skeychallenge()
1352 function takes 4 arguments (NetBSD)])],
Tim Rice648f8762011-01-26 12:38:57 -08001353 [
1354 AC_MSG_RESULT([no])
1355 ])
Damien Millerc547bf12001-02-16 10:18:12 +11001356 fi
1357 ]
1358)
1359
1360# Check whether user wants TCP wrappers support
Tim Rice13aae5e2001-10-21 17:53:58 -07001361TCPW_MSG="no"
Tim Rice648f8762011-01-26 12:38:57 -08001362AC_ARG_WITH([tcp-wrappers],
Darren Tucker1b6f2292005-02-11 16:11:49 +11001363 [ --with-tcp-wrappers[[=PATH]] Enable tcpwrappers support (optionally in PATH)],
Damien Millerc547bf12001-02-16 10:18:12 +11001364 [
1365 if test "x$withval" != "xno" ; then
1366 saved_LIBS="$LIBS"
Tim Rice13aae5e2001-10-21 17:53:58 -07001367 saved_LDFLAGS="$LDFLAGS"
1368 saved_CPPFLAGS="$CPPFLAGS"
Tim Rice8bb561b2005-03-17 16:23:19 -08001369 if test -n "${withval}" && \
Tim Rice35cc69d2005-03-17 16:44:25 -08001370 test "x${withval}" != "xyes"; then
Tim Rice13aae5e2001-10-21 17:53:58 -07001371 if test -d "${withval}/lib"; then
1372 if test -n "${need_dash_r}"; then
Tim Rice02cebcd2001-10-25 10:01:30 -07001373 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001374 else
Tim Rice02cebcd2001-10-25 10:01:30 -07001375 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001376 fi
1377 else
1378 if test -n "${need_dash_r}"; then
Tim Rice02cebcd2001-10-25 10:01:30 -07001379 LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001380 else
Tim Rice02cebcd2001-10-25 10:01:30 -07001381 LDFLAGS="-L${withval} ${LDFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001382 fi
1383 fi
1384 if test -d "${withval}/include"; then
Tim Rice02cebcd2001-10-25 10:01:30 -07001385 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001386 else
Tim Rice02cebcd2001-10-25 10:01:30 -07001387 CPPFLAGS="-I${withval} ${CPPFLAGS}"
Tim Rice13aae5e2001-10-21 17:53:58 -07001388 fi
Tim Rice13aae5e2001-10-21 17:53:58 -07001389 fi
Darren Tucker20e9f972007-03-25 18:26:01 +10001390 LIBS="-lwrap $LIBS"
Tim Rice648f8762011-01-26 12:38:57 -08001391 AC_MSG_CHECKING([for libwrap])
1392 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Damien Miller0ac45002004-04-14 20:14:26 +10001393#include <sys/types.h>
1394#include <sys/socket.h>
1395#include <netinet/in.h>
Damien Millerc547bf12001-02-16 10:18:12 +11001396#include <tcpd.h>
Tim Rice648f8762011-01-26 12:38:57 -08001397int deny_severity = 0, allow_severity = 0;
1398 ]], [[
1399 hosts_access(0);
1400 ]])], [
1401 AC_MSG_RESULT([yes])
1402 AC_DEFINE([LIBWRAP], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07001403 [Define if you want
1404 TCP Wrappers support])
Darren Tucker20e9f972007-03-25 18:26:01 +10001405 SSHDLIBS="$SSHDLIBS -lwrap"
Tim Rice13aae5e2001-10-21 17:53:58 -07001406 TCPW_MSG="yes"
Tim Rice648f8762011-01-26 12:38:57 -08001407 ], [
Damien Millerc547bf12001-02-16 10:18:12 +11001408 AC_MSG_ERROR([*** libwrap missing])
Tim Rice648f8762011-01-26 12:38:57 -08001409
1410 ])
Tim Rice4cec93f2002-02-26 08:40:48 -08001411 LIBS="$saved_LIBS"
Damien Millerc547bf12001-02-16 10:18:12 +11001412 fi
1413 ]
1414)
1415
Darren Tuckeraa3cbd12011-11-04 11:25:24 +11001416# Check whether user wants to use ldns
1417LDNS_MSG="no"
1418AC_ARG_WITH(ldns,
1419 [ --with-ldns[[=PATH]] Use ldns for DNSSEC support (optionally in PATH)],
1420 [
1421 if test "x$withval" != "xno" ; then
1422
1423 if test "x$withval" != "xyes" ; then
1424 CPPFLAGS="$CPPFLAGS -I${withval}/include"
1425 LDFLAGS="$LDFLAGS -L${withval}/lib"
1426 fi
1427
1428 AC_DEFINE(HAVE_LDNS, 1, [Define if you want ldns support])
1429 LIBS="-lldns $LIBS"
1430 LDNS_MSG="yes"
1431
1432 AC_MSG_CHECKING([for ldns support])
1433 AC_LINK_IFELSE(
1434 [AC_LANG_SOURCE([[
1435#include <stdio.h>
1436#include <stdlib.h>
1437#include <stdint.h>
1438#include <ldns/ldns.h>
1439int main() { ldns_status status = ldns_verify_trusted(NULL, NULL, NULL, NULL); status=LDNS_STATUS_OK; exit(0); }
1440 ]])
1441 ],
1442 [AC_MSG_RESULT(yes)],
1443 [
1444 AC_MSG_RESULT(no)
1445 AC_MSG_ERROR([** Incomplete or missing ldns libraries.])
1446 ])
1447 fi
1448 ]
1449)
1450
Darren Tucker16bcc1c2004-11-07 20:14:34 +11001451# Check whether user wants libedit support
1452LIBEDIT_MSG="no"
Tim Rice648f8762011-01-26 12:38:57 -08001453AC_ARG_WITH([libedit],
Darren Tucker1b6f2292005-02-11 16:11:49 +11001454 [ --with-libedit[[=PATH]] Enable libedit support for sftp],
Darren Tucker16bcc1c2004-11-07 20:14:34 +11001455 [ if test "x$withval" != "xno" ; then
Darren Tuckerc4ccb122010-04-09 14:04:35 +10001456 if test "x$withval" = "xyes" ; then
Darren Tucker59353892012-05-19 15:24:37 +10001457 AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no])
Darren Tuckerc4ccb122010-04-09 14:04:35 +10001458 if test "x$PKGCONFIG" != "xno"; then
Tim Rice648f8762011-01-26 12:38:57 -08001459 AC_MSG_CHECKING([if $PKGCONFIG knows about libedit])
Darren Tuckerc4ccb122010-04-09 14:04:35 +10001460 if "$PKGCONFIG" libedit; then
Tim Rice648f8762011-01-26 12:38:57 -08001461 AC_MSG_RESULT([yes])
Darren Tuckerc4ccb122010-04-09 14:04:35 +10001462 use_pkgconfig_for_libedit=yes
1463 else
Tim Rice648f8762011-01-26 12:38:57 -08001464 AC_MSG_RESULT([no])
Darren Tuckerc4ccb122010-04-09 14:04:35 +10001465 fi
1466 fi
1467 else
Darren Tuckerc373a562005-09-22 20:15:08 +10001468 CPPFLAGS="$CPPFLAGS -I${withval}/include"
1469 if test -n "${need_dash_r}"; then
1470 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
1471 else
1472 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
1473 fi
Darren Tucker1df61452005-03-21 09:58:07 +11001474 fi
Damien Miller1f789802010-10-11 22:35:22 +11001475 if test "x$use_pkgconfig_for_libedit" = "xyes"; then
Darren Tucker8369c8e2013-12-05 11:00:16 +11001476 LIBEDIT=`$PKGCONFIG --libs libedit`
Darren Tuckerc4ccb122010-04-09 14:04:35 +10001477 CPPFLAGS="$CPPFLAGS `$PKGCONFIG --cflags libedit`"
1478 else
1479 LIBEDIT="-ledit -lcurses"
1480 fi
1481 OTHERLIBS=`echo $LIBEDIT | sed 's/-ledit//'`
Tim Rice648f8762011-01-26 12:38:57 -08001482 AC_CHECK_LIB([edit], [el_init],
1483 [ AC_DEFINE([USE_LIBEDIT], [1], [Use libedit for sftp])
Darren Tucker16bcc1c2004-11-07 20:14:34 +11001484 LIBEDIT_MSG="yes"
Tim Rice648f8762011-01-26 12:38:57 -08001485 AC_SUBST([LIBEDIT])
Darren Tucker16bcc1c2004-11-07 20:14:34 +11001486 ],
Tim Rice648f8762011-01-26 12:38:57 -08001487 [ AC_MSG_ERROR([libedit not found]) ],
Darren Tuckerc4ccb122010-04-09 14:04:35 +10001488 [ $OTHERLIBS ]
Darren Tucker16bcc1c2004-11-07 20:14:34 +11001489 )
Tim Rice648f8762011-01-26 12:38:57 -08001490 AC_MSG_CHECKING([if libedit version is compatible])
Tim Ricec1819c82005-08-15 17:48:40 -07001491 AC_COMPILE_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08001492 [AC_LANG_PROGRAM([[ #include <histedit.h> ]],
1493 [[
Darren Tuckerc7572b22005-08-10 20:34:15 +10001494 int i = H_SETSIZE;
1495 el_init("", NULL, NULL, NULL);
1496 exit(0);
Tim Ricec1819c82005-08-15 17:48:40 -07001497 ]])],
Tim Rice648f8762011-01-26 12:38:57 -08001498 [ AC_MSG_RESULT([yes]) ],
1499 [ AC_MSG_RESULT([no])
1500 AC_MSG_ERROR([libedit version is not compatible]) ]
Darren Tuckerc7572b22005-08-10 20:34:15 +10001501 )
Darren Tucker16bcc1c2004-11-07 20:14:34 +11001502 fi ]
1503)
1504
Darren Tuckerd9f88912005-02-20 21:01:48 +11001505AUDIT_MODULE=none
Tim Rice648f8762011-01-26 12:38:57 -08001506AC_ARG_WITH([audit],
Darren Tuckerea52a822011-01-17 21:15:27 +11001507 [ --with-audit=module Enable audit support (modules=debug,bsm,linux)],
Darren Tuckerd9f88912005-02-20 21:01:48 +11001508 [
Tim Rice648f8762011-01-26 12:38:57 -08001509 AC_MSG_CHECKING([for supported audit module])
Darren Tuckerd9f88912005-02-20 21:01:48 +11001510 case "$withval" in
1511 bsm)
Tim Rice648f8762011-01-26 12:38:57 -08001512 AC_MSG_RESULT([bsm])
Darren Tuckerd9f88912005-02-20 21:01:48 +11001513 AUDIT_MODULE=bsm
1514 dnl Checks for headers, libs and functions
Tim Rice648f8762011-01-26 12:38:57 -08001515 AC_CHECK_HEADERS([bsm/audit.h], [],
1516 [AC_MSG_ERROR([BSM enabled and bsm/audit.h not found])],
Darren Tucker6d0d6fb2006-09-09 01:05:21 +10001517 [
1518#ifdef HAVE_TIME_H
1519# include <time.h>
1520#endif
1521 ]
1522)
Tim Rice648f8762011-01-26 12:38:57 -08001523 AC_CHECK_LIB([bsm], [getaudit], [],
1524 [AC_MSG_ERROR([BSM enabled and required library not found])])
1525 AC_CHECK_FUNCS([getaudit], [],
1526 [AC_MSG_ERROR([BSM enabled and required function not found])])
Darren Tuckerd9f88912005-02-20 21:01:48 +11001527 # These are optional
Tim Rice648f8762011-01-26 12:38:57 -08001528 AC_CHECK_FUNCS([getaudit_addr aug_get_machine])
1529 AC_DEFINE([USE_BSM_AUDIT], [1], [Use BSM audit module])
Darren Tucker1fcec9d2013-12-19 11:00:12 +11001530 if test "$sol2ver" -ge 11; then
Darren Tucker93a2d412012-02-24 10:40:41 +11001531 SSHDLIBS="$SSHDLIBS -lscf"
1532 AC_DEFINE([BROKEN_BSM_API], [1],
1533 [The system has incomplete BSM API])
1534 fi
Darren Tuckerd9f88912005-02-20 21:01:48 +11001535 ;;
Darren Tuckerea52a822011-01-17 21:15:27 +11001536 linux)
Tim Rice648f8762011-01-26 12:38:57 -08001537 AC_MSG_RESULT([linux])
Darren Tuckerea52a822011-01-17 21:15:27 +11001538 AUDIT_MODULE=linux
1539 dnl Checks for headers, libs and functions
Tim Rice648f8762011-01-26 12:38:57 -08001540 AC_CHECK_HEADERS([libaudit.h])
Darren Tuckerea52a822011-01-17 21:15:27 +11001541 SSHDLIBS="$SSHDLIBS -laudit"
Tim Rice648f8762011-01-26 12:38:57 -08001542 AC_DEFINE([USE_LINUX_AUDIT], [1], [Use Linux audit module])
Darren Tuckerea52a822011-01-17 21:15:27 +11001543 ;;
Darren Tuckerd9f88912005-02-20 21:01:48 +11001544 debug)
1545 AUDIT_MODULE=debug
Tim Rice648f8762011-01-26 12:38:57 -08001546 AC_MSG_RESULT([debug])
1547 AC_DEFINE([SSH_AUDIT_EVENTS], [1], [Use audit debugging module])
Darren Tuckerd9f88912005-02-20 21:01:48 +11001548 ;;
Tim Rice8bc6b902005-08-09 10:09:53 -07001549 no)
Tim Rice648f8762011-01-26 12:38:57 -08001550 AC_MSG_RESULT([no])
Tim Rice8bc6b902005-08-09 10:09:53 -07001551 ;;
Darren Tuckerd9f88912005-02-20 21:01:48 +11001552 *)
1553 AC_MSG_ERROR([Unknown audit module $withval])
1554 ;;
1555 esac ]
1556)
1557
Damien Millerfe1f1432003-02-24 15:45:42 +11001558dnl Checks for library functions. Please keep in alphabetical order
Tim Rice648f8762011-01-26 12:38:57 -08001559AC_CHECK_FUNCS([ \
Damien Miller1ff130d2013-12-07 11:51:51 +11001560 Blowfish_initstate \
1561 Blowfish_expandstate \
1562 Blowfish_expand0state \
1563 Blowfish_stream2word \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001564 arc4random \
Damien Millera4be7c22008-05-19 14:47:37 +10001565 arc4random_buf \
Damien Millerdf8b0302013-11-07 13:28:16 +11001566 arc4random_stir \
Damien Millera4be7c22008-05-19 14:47:37 +10001567 arc4random_uniform \
Damien Miller57f39152005-11-24 19:58:19 +11001568 asprintf \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001569 b64_ntop \
1570 __b64_ntop \
1571 b64_pton \
1572 __b64_pton \
1573 bcopy \
Damien Millera9134422013-12-07 11:35:36 +11001574 bcrypt_pbkdf \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001575 bindresvport_sa \
Damien Miller1ff130d2013-12-07 11:51:51 +11001576 blf_enc \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001577 clock \
1578 closefrom \
1579 dirfd \
Darren Tuckerefdf5342013-05-30 08:29:08 +10001580 endgrent \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001581 fchmod \
1582 fchown \
1583 freeaddrinfo \
Darren Tucker598eaa62008-06-09 03:32:29 +10001584 fstatvfs \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001585 futimes \
1586 getaddrinfo \
1587 getcwd \
1588 getgrouplist \
1589 getnameinfo \
1590 getopt \
1591 getpeereid \
Darren Tucker164aa302007-03-21 21:39:57 +11001592 getpeerucred \
Darren Tucker3c4a24c2013-02-15 11:41:35 +11001593 getpgid \
1594 getpgrp \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001595 _getpty \
1596 getrlimit \
1597 getttyent \
1598 glob \
Darren Tucker909a3902010-01-15 12:38:30 +11001599 group_from_gid \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001600 inet_aton \
1601 inet_ntoa \
1602 inet_ntop \
1603 innetgr \
1604 login_getcapbool \
Darren Tuckerae133d42013-06-06 08:30:20 +10001605 mblen \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001606 md5_crypt \
1607 memmove \
1608 mkdtemp \
1609 mmap \
1610 ngetaddrinfo \
1611 nsleep \
1612 ogetaddrinfo \
1613 openlog_r \
Darren Tuckerfebf0f52007-06-25 22:15:12 +10001614 poll \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001615 prctl \
1616 pstat \
1617 readpassphrase \
1618 realpath \
1619 recvmsg \
1620 rresvport_af \
1621 sendmsg \
1622 setdtablesize \
1623 setegid \
1624 setenv \
1625 seteuid \
Darren Tucker909a3902010-01-15 12:38:30 +11001626 setgroupent \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001627 setgroups \
Darren Tucker34f702a2012-07-04 08:50:09 +10001628 setlinebuf \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001629 setlogin \
Darren Tucker909a3902010-01-15 12:38:30 +11001630 setpassent\
Darren Tucker0c9653f2005-05-28 15:58:14 +10001631 setpcred \
1632 setproctitle \
1633 setregid \
1634 setreuid \
1635 setrlimit \
1636 setsid \
1637 setvbuf \
1638 sigaction \
1639 sigvec \
1640 snprintf \
1641 socketpair \
Darren Tucker5b2e2ba2008-06-08 09:25:28 +10001642 statfs \
1643 statvfs \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001644 strdup \
1645 strerror \
1646 strlcat \
1647 strlcpy \
1648 strmode \
Darren Tuckerb54f50e2011-09-29 23:17:18 +10001649 strnlen \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001650 strnvis \
Darren Tuckeraa74f672010-08-16 13:15:23 +10001651 strptime \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001652 strtonum \
Darren Tucker81eb5d52005-06-01 21:39:33 +10001653 strtoll \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001654 strtoul \
Darren Tucker8e6fb782013-02-15 12:13:01 +11001655 strtoull \
Damien Miller34a17692007-06-11 14:15:42 +10001656 swap32 \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001657 sysconf \
1658 tcgetpgrp \
Damien Milleraa180632010-10-07 21:25:27 +11001659 timingsafe_bcmp \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001660 truncate \
1661 unsetenv \
1662 updwtmpx \
Darren Tucker909a3902010-01-15 12:38:30 +11001663 user_from_uid \
Damien Millerf4db77d2013-03-15 10:34:25 +11001664 usleep \
Damien Miller57f39152005-11-24 19:58:19 +11001665 vasprintf \
Darren Tucker0c9653f2005-05-28 15:58:14 +10001666 vhangup \
1667 vsnprintf \
1668 waitpid \
Tim Rice648f8762011-01-26 12:38:57 -08001669])
Tim Rice13aae5e2001-10-21 17:53:58 -07001670
Tim Ricec7a8af02010-11-08 14:26:23 -08001671AC_LINK_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08001672 [AC_LANG_PROGRAM(
1673 [[ #include <ctype.h> ]],
1674 [[ return (isblank('a')); ]])],
1675 [AC_DEFINE([HAVE_ISBLANK], [1], [Define if you have isblank(3C).])
Tim Ricec7a8af02010-11-08 14:26:23 -08001676])
1677
Damien Millerb3c9f782010-02-12 10:11:34 +11001678# PKCS#11 support requires dlopen() and co
Tim Rice648f8762011-01-26 12:38:57 -08001679AC_SEARCH_LIBS([dlopen], [dl],
1680 [AC_DEFINE([ENABLE_PKCS11], [], [Enable for PKCS#11 support])]
Damien Millerb3c9f782010-02-12 10:11:34 +11001681)
1682
Darren Tuckerd5e082f2003-09-22 12:08:23 +10001683# IRIX has a const char return value for gai_strerror()
Tim Rice648f8762011-01-26 12:38:57 -08001684AC_CHECK_FUNCS([gai_strerror], [
1685 AC_DEFINE([HAVE_GAI_STRERROR])
1686 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Darren Tuckerd5e082f2003-09-22 12:08:23 +10001687#include <sys/types.h>
1688#include <sys/socket.h>
1689#include <netdb.h>
1690
Tim Rice648f8762011-01-26 12:38:57 -08001691const char *gai_strerror(int);
1692 ]], [[
1693 char *str;
1694 str = gai_strerror(0);
1695 ]])], [
1696 AC_DEFINE([HAVE_CONST_GAI_STRERROR_PROTO], [1],
1697 [Define if gai_strerror() returns const char *])], [])])
Darren Tuckerd5e082f2003-09-22 12:08:23 +10001698
Tim Rice648f8762011-01-26 12:38:57 -08001699AC_SEARCH_LIBS([nanosleep], [rt posix4], [AC_DEFINE([HAVE_NANOSLEEP], [1],
1700 [Some systems put nanosleep outside of libc])])
Damien Millercd6853c2003-01-28 11:33:42 +11001701
Darren Tuckera7108912013-06-02 08:18:31 +10001702AC_SEARCH_LIBS([clock_gettime], [rt],
1703 [AC_DEFINE([HAVE_CLOCK_GETTIME], [1], [Have clock_gettime])])
1704
Darren Tuckerf1159b52003-07-07 19:44:01 +10001705dnl Make sure prototypes are defined for these before using them.
Tim Rice648f8762011-01-26 12:38:57 -08001706AC_CHECK_DECL([getrusage], [AC_CHECK_FUNCS([getrusage])])
1707AC_CHECK_DECL([strsep],
1708 [AC_CHECK_FUNCS([strsep])],
Darren Tucker390b6d52005-05-28 16:54:36 +10001709 [],
1710 [
1711#ifdef HAVE_STRING_H
1712# include <string.h>
1713#endif
1714 ])
Ben Lindstrom3e006472002-10-16 00:24:03 +00001715
Darren Tuckerb2427c82003-09-10 15:22:44 +10001716dnl tcsendbreak might be a macro
Tim Rice648f8762011-01-26 12:38:57 -08001717AC_CHECK_DECL([tcsendbreak],
1718 [AC_DEFINE([HAVE_TCSENDBREAK])],
1719 [AC_CHECK_FUNCS([tcsendbreak])],
Darren Tuckerb2427c82003-09-10 15:22:44 +10001720 [#include <termios.h>]
1721)
1722
Tim Rice648f8762011-01-26 12:38:57 -08001723AC_CHECK_DECLS([h_errno], , ,[#include <netdb.h>])
Darren Tucker5bb14002004-04-23 18:53:10 +10001724
Tim Rice648f8762011-01-26 12:38:57 -08001725AC_CHECK_DECLS([SHUT_RD], , ,
Darren Tucker128a0892006-07-12 19:02:56 +10001726 [
1727#include <sys/types.h>
1728#include <sys/socket.h>
1729 ])
Darren Tucker248469b2006-07-12 14:14:31 +10001730
Tim Rice648f8762011-01-26 12:38:57 -08001731AC_CHECK_DECLS([O_NONBLOCK], , ,
Darren Tucker248469b2006-07-12 14:14:31 +10001732 [
1733#include <sys/types.h>
1734#ifdef HAVE_SYS_STAT_H
1735# include <sys/stat.h>
1736#endif
1737#ifdef HAVE_FCNTL_H
1738# include <fcntl.h>
1739#endif
1740 ])
1741
Tim Rice648f8762011-01-26 12:38:57 -08001742AC_CHECK_DECLS([writev], , , [
Darren Tuckered0b5922006-09-03 22:44:49 +10001743#include <sys/types.h>
1744#include <sys/uio.h>
1745#include <unistd.h>
1746 ])
1747
Tim Rice648f8762011-01-26 12:38:57 -08001748AC_CHECK_DECLS([MAXSYMLINKS], , , [
Darren Tucker6d862a52007-04-29 14:39:02 +10001749#include <sys/param.h>
1750 ])
1751
Tim Rice648f8762011-01-26 12:38:57 -08001752AC_CHECK_DECLS([offsetof], , , [
Darren Tuckerdca0edf2007-04-29 15:06:44 +10001753#include <stddef.h>
1754 ])
1755
Darren Tuckerc7aad002013-06-02 07:18:47 +10001756# extra bits for select(2)
1757AC_CHECK_DECLS([howmany, NFDBITS], [], [], [[
1758#include <sys/param.h>
1759#include <sys/types.h>
1760#ifdef HAVE_SYS_SYSMACROS_H
1761#include <sys/sysmacros.h>
1762#endif
1763#ifdef HAVE_SYS_SELECT_H
1764#include <sys/select.h>
1765#endif
1766#ifdef HAVE_SYS_TIME_H
1767#include <sys/time.h>
1768#endif
1769#ifdef HAVE_UNISTD_H
1770#include <unistd.h>
1771#endif
1772 ]])
1773AC_CHECK_TYPES([fd_mask], [], [], [[
1774#include <sys/param.h>
1775#include <sys/types.h>
1776#ifdef HAVE_SYS_SELECT_H
1777#include <sys/select.h>
1778#endif
1779#ifdef HAVE_SYS_TIME_H
1780#include <sys/time.h>
1781#endif
1782#ifdef HAVE_UNISTD_H
1783#include <unistd.h>
1784#endif
1785 ]])
1786
Tim Rice648f8762011-01-26 12:38:57 -08001787AC_CHECK_FUNCS([setresuid], [
Darren Tucker2a6b0292003-12-31 14:59:17 +11001788 dnl Some platorms have setresuid that isn't implemented, test for this
Tim Rice648f8762011-01-26 12:38:57 -08001789 AC_MSG_CHECKING([if setresuid seems to work])
Darren Tucker623d92f2004-09-12 22:36:15 +10001790 AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08001791 [AC_LANG_PROGRAM([[
Darren Tuckere937be32003-12-17 18:53:26 +11001792#include <stdlib.h>
1793#include <errno.h>
Tim Rice648f8762011-01-26 12:38:57 -08001794 ]], [[
1795 errno=0;
1796 setresuid(0,0,0);
1797 if (errno==ENOSYS)
1798 exit(1);
1799 else
1800 exit(0);
Darren Tucker623d92f2004-09-12 22:36:15 +10001801 ]])],
Tim Rice648f8762011-01-26 12:38:57 -08001802 [AC_MSG_RESULT([yes])],
1803 [AC_DEFINE([BROKEN_SETRESUID], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07001804 [Define if your setresuid() is broken])
Tim Rice648f8762011-01-26 12:38:57 -08001805 AC_MSG_RESULT([not implemented])],
Darren Tuckera0c2b392004-09-11 23:26:37 +10001806 [AC_MSG_WARN([cross compiling: not checking setresuid])]
Darren Tucker2a6b0292003-12-31 14:59:17 +11001807 )
1808])
Darren Tuckere937be32003-12-17 18:53:26 +11001809
Tim Rice648f8762011-01-26 12:38:57 -08001810AC_CHECK_FUNCS([setresgid], [
Darren Tucker2a6b0292003-12-31 14:59:17 +11001811 dnl Some platorms have setresgid that isn't implemented, test for this
Tim Rice648f8762011-01-26 12:38:57 -08001812 AC_MSG_CHECKING([if setresgid seems to work])
Darren Tucker623d92f2004-09-12 22:36:15 +10001813 AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08001814 [AC_LANG_PROGRAM([[
Darren Tuckere937be32003-12-17 18:53:26 +11001815#include <stdlib.h>
1816#include <errno.h>
Tim Rice648f8762011-01-26 12:38:57 -08001817 ]], [[
1818 errno=0;
1819 setresgid(0,0,0);
1820 if (errno==ENOSYS)
1821 exit(1);
1822 else
1823 exit(0);
Darren Tucker623d92f2004-09-12 22:36:15 +10001824 ]])],
Tim Rice648f8762011-01-26 12:38:57 -08001825 [AC_MSG_RESULT([yes])],
1826 [AC_DEFINE([BROKEN_SETRESGID], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07001827 [Define if your setresgid() is broken])
Tim Rice648f8762011-01-26 12:38:57 -08001828 AC_MSG_RESULT([not implemented])],
Darren Tuckera0c2b392004-09-11 23:26:37 +10001829 [AC_MSG_WARN([cross compiling: not checking setresuid])]
Darren Tucker2a6b0292003-12-31 14:59:17 +11001830 )
1831])
Darren Tuckere937be32003-12-17 18:53:26 +11001832
Damien Millerad833b32000-08-23 10:46:23 +10001833dnl Checks for time functions
Tim Rice648f8762011-01-26 12:38:57 -08001834AC_CHECK_FUNCS([gettimeofday time])
Damien Millerad833b32000-08-23 10:46:23 +10001835dnl Checks for utmp functions
Tim Rice648f8762011-01-26 12:38:57 -08001836AC_CHECK_FUNCS([endutent getutent getutid getutline pututline setutent])
1837AC_CHECK_FUNCS([utmpname])
Damien Millerad833b32000-08-23 10:46:23 +10001838dnl Checks for utmpx functions
Tim Rice648f8762011-01-26 12:38:57 -08001839AC_CHECK_FUNCS([endutxent getutxent getutxid getutxline getutxuser pututxline])
1840AC_CHECK_FUNCS([setutxdb setutxent utmpxname])
Damien Miller20e231f2009-02-12 13:12:21 +11001841dnl Checks for lastlog functions
Tim Rice648f8762011-01-26 12:38:57 -08001842AC_CHECK_FUNCS([getlastlogxbyname])
Damien Millercedfecc1999-11-15 14:36:53 +11001843
Tim Rice648f8762011-01-26 12:38:57 -08001844AC_CHECK_FUNC([daemon],
1845 [AC_DEFINE([HAVE_DAEMON], [1], [Define if your libraries define daemon()])],
1846 [AC_CHECK_LIB([bsd], [daemon],
1847 [LIBS="$LIBS -lbsd"; AC_DEFINE([HAVE_DAEMON])])]
Damien Miller04f80141999-11-19 15:32:34 +11001848)
1849
Tim Rice648f8762011-01-26 12:38:57 -08001850AC_CHECK_FUNC([getpagesize],
1851 [AC_DEFINE([HAVE_GETPAGESIZE], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07001852 [Define if your libraries define getpagesize()])],
Tim Rice648f8762011-01-26 12:38:57 -08001853 [AC_CHECK_LIB([ucb], [getpagesize],
1854 [LIBS="$LIBS -lucb"; AC_DEFINE([HAVE_GETPAGESIZE])])]
Damien Miller9fb07e42000-03-05 16:22:59 +11001855)
1856
Damien Millercb170cb2000-07-01 16:52:55 +10001857# Check for broken snprintf
1858if test "x$ac_cv_func_snprintf" = "xyes" ; then
1859 AC_MSG_CHECKING([whether snprintf correctly terminates long strings])
Darren Tuckera0c2b392004-09-11 23:26:37 +10001860 AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08001861 [AC_LANG_PROGRAM([[ #include <stdio.h> ]],
1862 [[
1863 char b[5];
1864 snprintf(b,5,"123456789");
1865 exit(b[4]!='\0');
Darren Tucker623d92f2004-09-12 22:36:15 +10001866 ]])],
Tim Rice648f8762011-01-26 12:38:57 -08001867 [AC_MSG_RESULT([yes])],
Damien Millercb170cb2000-07-01 16:52:55 +10001868 [
Tim Rice648f8762011-01-26 12:38:57 -08001869 AC_MSG_RESULT([no])
1870 AC_DEFINE([BROKEN_SNPRINTF], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07001871 [Define if your snprintf is busted])
Damien Millercb170cb2000-07-01 16:52:55 +10001872 AC_MSG_WARN([****** Your snprintf() function is broken, complain to your vendor])
Darren Tuckera0c2b392004-09-11 23:26:37 +10001873 ],
1874 [ AC_MSG_WARN([cross compiling: Assuming working snprintf()]) ]
Damien Millercb170cb2000-07-01 16:52:55 +10001875 )
1876fi
1877
Damien Miller57f39152005-11-24 19:58:19 +11001878# If we don't have a working asprintf, then we strongly depend on vsnprintf
1879# returning the right thing on overflow: the number of characters it tried to
1880# create (as per SUSv3)
1881if test "x$ac_cv_func_asprintf" != "xyes" && \
1882 test "x$ac_cv_func_vsnprintf" = "xyes" ; then
1883 AC_MSG_CHECKING([whether vsnprintf returns correct values on overflow])
1884 AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08001885 [AC_LANG_PROGRAM([[
Damien Miller57f39152005-11-24 19:58:19 +11001886#include <sys/types.h>
1887#include <stdio.h>
1888#include <stdarg.h>
1889
1890int x_snprintf(char *str,size_t count,const char *fmt,...)
1891{
1892 size_t ret; va_list ap;
1893 va_start(ap, fmt); ret = vsnprintf(str, count, fmt, ap); va_end(ap);
1894 return ret;
1895}
Tim Rice648f8762011-01-26 12:38:57 -08001896 ]], [[
Damien Miller57f39152005-11-24 19:58:19 +11001897 char x[1];
1898 exit(x_snprintf(x, 1, "%s %d", "hello", 12345) == 11 ? 0 : 1);
Tim Rice648f8762011-01-26 12:38:57 -08001899 ]])],
1900 [AC_MSG_RESULT([yes])],
Damien Miller57f39152005-11-24 19:58:19 +11001901 [
Tim Rice648f8762011-01-26 12:38:57 -08001902 AC_MSG_RESULT([no])
1903 AC_DEFINE([BROKEN_SNPRINTF], [1],
Damien Miller57f39152005-11-24 19:58:19 +11001904 [Define if your snprintf is busted])
1905 AC_MSG_WARN([****** Your vsnprintf() function is broken, complain to your vendor])
1906 ],
1907 [ AC_MSG_WARN([cross compiling: Assuming working vsnprintf()]) ]
1908 )
1909fi
1910
Darren Tuckerd40c66c2005-12-17 22:32:03 +11001911# On systems where [v]snprintf is broken, but is declared in stdio,
1912# check that the fmt argument is const char * or just char *.
1913# This is only useful for when BROKEN_SNPRINTF
1914AC_MSG_CHECKING([whether snprintf can declare const char *fmt])
Tim Rice648f8762011-01-26 12:38:57 -08001915AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1916#include <stdio.h>
1917int snprintf(char *a, size_t b, const char *c, ...) { return 0; }
1918 ]], [[
1919 snprintf(0, 0, 0);
1920 ]])],
1921 [AC_MSG_RESULT([yes])
1922 AC_DEFINE([SNPRINTF_CONST], [const],
Darren Tuckerd40c66c2005-12-17 22:32:03 +11001923 [Define as const if snprintf() can declare const char *fmt])],
Tim Rice648f8762011-01-26 12:38:57 -08001924 [AC_MSG_RESULT([no])
1925 AC_DEFINE([SNPRINTF_CONST], [/* not const */])])
Darren Tuckerd40c66c2005-12-17 22:32:03 +11001926
Damien Millerb4097182004-05-23 14:09:40 +10001927# Check for missing getpeereid (or equiv) support
1928NO_PEERCHECK=""
Darren Tucker164aa302007-03-21 21:39:57 +11001929if test "x$ac_cv_func_getpeereid" != "xyes" -a "x$ac_cv_func_getpeerucred" != "xyes"; then
Damien Millerb4097182004-05-23 14:09:40 +10001930 AC_MSG_CHECKING([whether system supports SO_PEERCRED getsockopt])
Tim Rice648f8762011-01-26 12:38:57 -08001931 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1932#include <sys/types.h>
1933#include <sys/socket.h>]], [[int i = SO_PEERCRED;]])],
1934 [ AC_MSG_RESULT([yes])
1935 AC_DEFINE([HAVE_SO_PEERCRED], [1], [Have PEERCRED socket option])
1936 ], [AC_MSG_RESULT([no])
1937 NO_PEERCHECK=1
1938 ])
Damien Millerb4097182004-05-23 14:09:40 +10001939fi
1940
Damien Millere8328192003-01-07 15:18:32 +11001941dnl see whether mkstemp() requires XXXXXX
1942if test "x$ac_cv_func_mkdtemp" = "xyes" ; then
1943AC_MSG_CHECKING([for (overly) strict mkstemp])
Darren Tucker314d89e2005-10-17 23:29:23 +10001944AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08001945 [AC_LANG_PROGRAM([[
Damien Millere8328192003-01-07 15:18:32 +11001946#include <stdlib.h>
Tim Rice648f8762011-01-26 12:38:57 -08001947 ]], [[
1948 char template[]="conftest.mkstemp-test";
1949 if (mkstemp(template) == -1)
1950 exit(1);
1951 unlink(template);
1952 exit(0);
Darren Tucker314d89e2005-10-17 23:29:23 +10001953 ]])],
Damien Millere8328192003-01-07 15:18:32 +11001954 [
Tim Rice648f8762011-01-26 12:38:57 -08001955 AC_MSG_RESULT([no])
Damien Millere8328192003-01-07 15:18:32 +11001956 ],
Damien Millera8e06ce2003-11-21 23:48:55 +11001957 [
Tim Rice648f8762011-01-26 12:38:57 -08001958 AC_MSG_RESULT([yes])
1959 AC_DEFINE([HAVE_STRICT_MKSTEMP], [1], [Silly mkstemp()])
Damien Millere8328192003-01-07 15:18:32 +11001960 ],
1961 [
Tim Rice648f8762011-01-26 12:38:57 -08001962 AC_MSG_RESULT([yes])
1963 AC_DEFINE([HAVE_STRICT_MKSTEMP])
Damien Millera8e06ce2003-11-21 23:48:55 +11001964 ]
Damien Millere8328192003-01-07 15:18:32 +11001965)
1966fi
1967
Darren Tucker70a3d552003-08-21 17:58:29 +10001968dnl make sure that openpty does not reacquire controlling terminal
1969if test ! -z "$check_for_openpty_ctty_bug"; then
Tim Rice648f8762011-01-26 12:38:57 -08001970 AC_MSG_CHECKING([if openpty correctly handles controlling tty])
Darren Tucker314d89e2005-10-17 23:29:23 +10001971 AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08001972 [AC_LANG_PROGRAM([[
Darren Tucker70a3d552003-08-21 17:58:29 +10001973#include <stdio.h>
1974#include <sys/fcntl.h>
1975#include <sys/types.h>
1976#include <sys/wait.h>
Tim Rice648f8762011-01-26 12:38:57 -08001977 ]], [[
Darren Tucker70a3d552003-08-21 17:58:29 +10001978 pid_t pid;
1979 int fd, ptyfd, ttyfd, status;
1980
1981 pid = fork();
1982 if (pid < 0) { /* failed */
1983 exit(1);
1984 } else if (pid > 0) { /* parent */
1985 waitpid(pid, &status, 0);
Damien Millera8e06ce2003-11-21 23:48:55 +11001986 if (WIFEXITED(status))
Darren Tucker70a3d552003-08-21 17:58:29 +10001987 exit(WEXITSTATUS(status));
1988 else
1989 exit(2);
1990 } else { /* child */
1991 close(0); close(1); close(2);
1992 setsid();
1993 openpty(&ptyfd, &ttyfd, NULL, NULL, NULL);
1994 fd = open("/dev/tty", O_RDWR | O_NOCTTY);
1995 if (fd >= 0)
1996 exit(3); /* Acquired ctty: broken */
1997 else
1998 exit(0); /* Did not acquire ctty: OK */
1999 }
Darren Tucker314d89e2005-10-17 23:29:23 +10002000 ]])],
Darren Tucker70a3d552003-08-21 17:58:29 +10002001 [
Tim Rice648f8762011-01-26 12:38:57 -08002002 AC_MSG_RESULT([yes])
Darren Tucker70a3d552003-08-21 17:58:29 +10002003 ],
2004 [
Tim Rice648f8762011-01-26 12:38:57 -08002005 AC_MSG_RESULT([no])
2006 AC_DEFINE([SSHD_ACQUIRES_CTTY])
Darren Tucker314d89e2005-10-17 23:29:23 +10002007 ],
2008 [
Tim Rice648f8762011-01-26 12:38:57 -08002009 AC_MSG_RESULT([cross-compiling, assuming yes])
Darren Tucker70a3d552003-08-21 17:58:29 +10002010 ]
2011 )
2012fi
2013
Tim Rice8bb561b2005-03-17 16:23:19 -08002014if test "x$ac_cv_func_getaddrinfo" = "xyes" && \
2015 test "x$check_for_hpux_broken_getaddrinfo" = "x1"; then
Tim Rice648f8762011-01-26 12:38:57 -08002016 AC_MSG_CHECKING([if getaddrinfo seems to work])
Darren Tucker314d89e2005-10-17 23:29:23 +10002017 AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08002018 [AC_LANG_PROGRAM([[
Darren Tucker4398cf52004-04-06 21:39:02 +10002019#include <stdio.h>
2020#include <sys/socket.h>
2021#include <netdb.h>
2022#include <errno.h>
2023#include <netinet/in.h>
2024
2025#define TEST_PORT "2222"
Tim Rice648f8762011-01-26 12:38:57 -08002026 ]], [[
Darren Tucker4398cf52004-04-06 21:39:02 +10002027 int err, sock;
2028 struct addrinfo *gai_ai, *ai, hints;
2029 char ntop[NI_MAXHOST], strport[NI_MAXSERV], *name = NULL;
2030
2031 memset(&hints, 0, sizeof(hints));
2032 hints.ai_family = PF_UNSPEC;
2033 hints.ai_socktype = SOCK_STREAM;
2034 hints.ai_flags = AI_PASSIVE;
2035
2036 err = getaddrinfo(name, TEST_PORT, &hints, &gai_ai);
2037 if (err != 0) {
2038 fprintf(stderr, "getaddrinfo failed (%s)", gai_strerror(err));
2039 exit(1);
2040 }
2041
2042 for (ai = gai_ai; ai != NULL; ai = ai->ai_next) {
2043 if (ai->ai_family != AF_INET6)
2044 continue;
2045
2046 err = getnameinfo(ai->ai_addr, ai->ai_addrlen, ntop,
2047 sizeof(ntop), strport, sizeof(strport),
2048 NI_NUMERICHOST|NI_NUMERICSERV);
2049
2050 if (err != 0) {
2051 if (err == EAI_SYSTEM)
2052 perror("getnameinfo EAI_SYSTEM");
2053 else
2054 fprintf(stderr, "getnameinfo failed: %s\n",
2055 gai_strerror(err));
2056 exit(2);
2057 }
2058
2059 sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
2060 if (sock < 0)
2061 perror("socket");
2062 if (bind(sock, ai->ai_addr, ai->ai_addrlen) < 0) {
2063 if (errno == EBADF)
2064 exit(3);
2065 }
2066 }
2067 exit(0);
Darren Tucker314d89e2005-10-17 23:29:23 +10002068 ]])],
Darren Tucker4398cf52004-04-06 21:39:02 +10002069 [
Tim Rice648f8762011-01-26 12:38:57 -08002070 AC_MSG_RESULT([yes])
Darren Tucker4398cf52004-04-06 21:39:02 +10002071 ],
2072 [
Tim Rice648f8762011-01-26 12:38:57 -08002073 AC_MSG_RESULT([no])
2074 AC_DEFINE([BROKEN_GETADDRINFO])
Darren Tucker314d89e2005-10-17 23:29:23 +10002075 ],
2076 [
Tim Rice648f8762011-01-26 12:38:57 -08002077 AC_MSG_RESULT([cross-compiling, assuming yes])
Darren Tucker4398cf52004-04-06 21:39:02 +10002078 ]
2079 )
2080fi
2081
Tim Rice8bb561b2005-03-17 16:23:19 -08002082if test "x$ac_cv_func_getaddrinfo" = "xyes" && \
2083 test "x$check_for_aix_broken_getaddrinfo" = "x1"; then
Tim Rice648f8762011-01-26 12:38:57 -08002084 AC_MSG_CHECKING([if getaddrinfo seems to work])
Darren Tucker314d89e2005-10-17 23:29:23 +10002085 AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08002086 [AC_LANG_PROGRAM([[
Darren Tucker691d5232005-02-15 21:45:57 +11002087#include <stdio.h>
2088#include <sys/socket.h>
2089#include <netdb.h>
2090#include <errno.h>
2091#include <netinet/in.h>
2092
2093#define TEST_PORT "2222"
Tim Rice648f8762011-01-26 12:38:57 -08002094 ]], [[
Darren Tucker691d5232005-02-15 21:45:57 +11002095 int err, sock;
2096 struct addrinfo *gai_ai, *ai, hints;
2097 char ntop[NI_MAXHOST], strport[NI_MAXSERV], *name = NULL;
2098
2099 memset(&hints, 0, sizeof(hints));
2100 hints.ai_family = PF_UNSPEC;
2101 hints.ai_socktype = SOCK_STREAM;
2102 hints.ai_flags = AI_PASSIVE;
2103
2104 err = getaddrinfo(name, TEST_PORT, &hints, &gai_ai);
2105 if (err != 0) {
2106 fprintf(stderr, "getaddrinfo failed (%s)", gai_strerror(err));
2107 exit(1);
2108 }
2109
2110 for (ai = gai_ai; ai != NULL; ai = ai->ai_next) {
2111 if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6)
2112 continue;
2113
2114 err = getnameinfo(ai->ai_addr, ai->ai_addrlen, ntop,
2115 sizeof(ntop), strport, sizeof(strport),
2116 NI_NUMERICHOST|NI_NUMERICSERV);
2117
2118 if (ai->ai_family == AF_INET && err != 0) {
2119 perror("getnameinfo");
2120 exit(2);
2121 }
2122 }
2123 exit(0);
Darren Tucker314d89e2005-10-17 23:29:23 +10002124 ]])],
Darren Tucker691d5232005-02-15 21:45:57 +11002125 [
Tim Rice648f8762011-01-26 12:38:57 -08002126 AC_MSG_RESULT([yes])
2127 AC_DEFINE([AIX_GETNAMEINFO_HACK], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07002128 [Define if you have a getaddrinfo that fails
2129 for the all-zeros IPv6 address])
Darren Tucker691d5232005-02-15 21:45:57 +11002130 ],
2131 [
Tim Rice648f8762011-01-26 12:38:57 -08002132 AC_MSG_RESULT([no])
2133 AC_DEFINE([BROKEN_GETADDRINFO])
Darren Tucker314d89e2005-10-17 23:29:23 +10002134 ],
Darren Tucker8b272ab2006-06-27 11:20:28 +10002135 [
Tim Rice648f8762011-01-26 12:38:57 -08002136 AC_MSG_RESULT([cross-compiling, assuming no])
Darren Tucker691d5232005-02-15 21:45:57 +11002137 ]
2138 )
2139fi
2140
Darren Tuckera56f1912004-11-02 20:30:54 +11002141if test "x$check_for_conflicting_getspnam" = "x1"; then
Tim Rice648f8762011-01-26 12:38:57 -08002142 AC_MSG_CHECKING([for conflicting getspnam in shadow.h])
2143 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <shadow.h> ]],
2144 [[ exit(0); ]])],
Darren Tuckera56f1912004-11-02 20:30:54 +11002145 [
Tim Rice648f8762011-01-26 12:38:57 -08002146 AC_MSG_RESULT([no])
Darren Tuckera56f1912004-11-02 20:30:54 +11002147 ],
2148 [
Tim Rice648f8762011-01-26 12:38:57 -08002149 AC_MSG_RESULT([yes])
2150 AC_DEFINE([GETSPNAM_CONFLICTING_DEFS], [1],
Darren Tuckera56f1912004-11-02 20:30:54 +11002151 [Conflicting defs for getspnam])
2152 ]
2153 )
2154fi
2155
Damien Miller606f8802000-09-16 15:39:56 +11002156AC_FUNC_GETPGRP
2157
Tim Riceaef73712002-05-11 13:17:42 -07002158# Search for OpenSSL
2159saved_CPPFLAGS="$CPPFLAGS"
2160saved_LDFLAGS="$LDFLAGS"
Tim Rice648f8762011-01-26 12:38:57 -08002161AC_ARG_WITH([ssl-dir],
Damien Millera22ba012000-03-02 23:09:20 +11002162 [ --with-ssl-dir=PATH Specify path to OpenSSL installation ],
2163 [
Ben Lindstrom23e13712000-10-29 22:49:19 +00002164 if test "x$withval" != "xno" ; then
Darren Tuckerc7e38d52005-02-09 22:12:30 +11002165 case "$withval" in
2166 # Relative paths
2167 ./*|../*) withval="`pwd`/$withval"
2168 esac
Tim Riceaef73712002-05-11 13:17:42 -07002169 if test -d "$withval/lib"; then
2170 if test -n "${need_dash_r}"; then
2171 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
2172 else
2173 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
2174 fi
Darren Tucker9f8703b2010-04-23 11:12:06 +10002175 elif test -d "$withval/lib64"; then
2176 if test -n "${need_dash_r}"; then
2177 LDFLAGS="-L${withval}/lib64 -R${withval}/lib64 ${LDFLAGS}"
2178 else
2179 LDFLAGS="-L${withval}/lib64 ${LDFLAGS}"
2180 fi
Tim Riceaef73712002-05-11 13:17:42 -07002181 else
2182 if test -n "${need_dash_r}"; then
2183 LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}"
2184 else
2185 LDFLAGS="-L${withval} ${LDFLAGS}"
2186 fi
2187 fi
2188 if test -d "$withval/include"; then
2189 CPPFLAGS="-I${withval}/include ${CPPFLAGS}"
2190 else
2191 CPPFLAGS="-I${withval} ${CPPFLAGS}"
2192 fi
Damien Millera22ba012000-03-02 23:09:20 +11002193 fi
2194 ]
2195)
Tim Rice3d5352e2004-02-12 09:27:21 -08002196LIBS="-lcrypto $LIBS"
Tim Rice648f8762011-01-26 12:38:57 -08002197AC_TRY_LINK_FUNC([RAND_add], [AC_DEFINE([HAVE_OPENSSL], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07002198 [Define if your ssl headers are included
Tim Rice648f8762011-01-26 12:38:57 -08002199 with #include <openssl/header.h>])],
Damien Miller3b512e12000-05-17 23:29:18 +10002200 [
Tim Riceaef73712002-05-11 13:17:42 -07002201 dnl Check default openssl install dir
2202 if test -n "${need_dash_r}"; then
2203 LDFLAGS="-L/usr/local/ssl/lib -R/usr/local/ssl/lib ${saved_LDFLAGS}"
Damien Miller3b512e12000-05-17 23:29:18 +10002204 else
Tim Riceaef73712002-05-11 13:17:42 -07002205 LDFLAGS="-L/usr/local/ssl/lib ${saved_LDFLAGS}"
Damien Miller3b512e12000-05-17 23:29:18 +10002206 fi
Tim Riceaef73712002-05-11 13:17:42 -07002207 CPPFLAGS="-I/usr/local/ssl/include ${saved_CPPFLAGS}"
Darren Tucker83d8f282009-08-17 09:35:22 +10002208 AC_CHECK_HEADER([openssl/opensslv.h], ,
Tim Rice648f8762011-01-26 12:38:57 -08002209 [AC_MSG_ERROR([*** OpenSSL headers missing - please install first or check config.log ***])])
2210 AC_TRY_LINK_FUNC([RAND_add], [AC_DEFINE([HAVE_OPENSSL])],
Tim Riceaef73712002-05-11 13:17:42 -07002211 [
2212 AC_MSG_ERROR([*** Can't find recent OpenSSL libcrypto (see config.log for details) ***])
2213 ]
2214 )
2215 ]
2216)
2217
Tim Riced730b782002-08-13 18:52:10 -07002218# Determine OpenSSL header version
2219AC_MSG_CHECKING([OpenSSL header version])
Darren Tuckera0c2b392004-09-11 23:26:37 +10002220AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08002221 [AC_LANG_PROGRAM([[
Tim Riced730b782002-08-13 18:52:10 -07002222#include <stdio.h>
2223#include <string.h>
2224#include <openssl/opensslv.h>
2225#define DATA "conftest.sslincver"
Tim Rice648f8762011-01-26 12:38:57 -08002226 ]], [[
Damien Millera8e06ce2003-11-21 23:48:55 +11002227 FILE *fd;
2228 int rc;
Tim Riced730b782002-08-13 18:52:10 -07002229
Damien Millera8e06ce2003-11-21 23:48:55 +11002230 fd = fopen(DATA,"w");
2231 if(fd == NULL)
2232 exit(1);
Tim Riced730b782002-08-13 18:52:10 -07002233
2234 if ((rc = fprintf(fd ,"%x (%s)\n", OPENSSL_VERSION_NUMBER, OPENSSL_VERSION_TEXT)) <0)
2235 exit(1);
2236
2237 exit(0);
Darren Tucker623d92f2004-09-12 22:36:15 +10002238 ]])],
Tim Riced730b782002-08-13 18:52:10 -07002239 [
2240 ssl_header_ver=`cat conftest.sslincver`
Tim Rice648f8762011-01-26 12:38:57 -08002241 AC_MSG_RESULT([$ssl_header_ver])
Tim Riced730b782002-08-13 18:52:10 -07002242 ],
2243 [
Tim Rice648f8762011-01-26 12:38:57 -08002244 AC_MSG_RESULT([not found])
2245 AC_MSG_ERROR([OpenSSL version header not found.])
Darren Tuckera0c2b392004-09-11 23:26:37 +10002246 ],
2247 [
2248 AC_MSG_WARN([cross compiling: not checking])
Tim Riced730b782002-08-13 18:52:10 -07002249 ]
2250)
2251
2252# Determine OpenSSL library version
2253AC_MSG_CHECKING([OpenSSL library version])
Darren Tuckera0c2b392004-09-11 23:26:37 +10002254AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08002255 [AC_LANG_PROGRAM([[
Tim Riced730b782002-08-13 18:52:10 -07002256#include <stdio.h>
2257#include <string.h>
2258#include <openssl/opensslv.h>
2259#include <openssl/crypto.h>
2260#define DATA "conftest.ssllibver"
Tim Rice648f8762011-01-26 12:38:57 -08002261 ]], [[
Damien Millera8e06ce2003-11-21 23:48:55 +11002262 FILE *fd;
2263 int rc;
Tim Riced730b782002-08-13 18:52:10 -07002264
Damien Millera8e06ce2003-11-21 23:48:55 +11002265 fd = fopen(DATA,"w");
2266 if(fd == NULL)
2267 exit(1);
Tim Riced730b782002-08-13 18:52:10 -07002268
2269 if ((rc = fprintf(fd ,"%x (%s)\n", SSLeay(), SSLeay_version(SSLEAY_VERSION))) <0)
2270 exit(1);
2271
2272 exit(0);
Darren Tucker623d92f2004-09-12 22:36:15 +10002273 ]])],
Tim Riced730b782002-08-13 18:52:10 -07002274 [
2275 ssl_library_ver=`cat conftest.ssllibver`
Tim Rice648f8762011-01-26 12:38:57 -08002276 AC_MSG_RESULT([$ssl_library_ver])
Tim Riced730b782002-08-13 18:52:10 -07002277 ],
2278 [
Tim Rice648f8762011-01-26 12:38:57 -08002279 AC_MSG_RESULT([not found])
2280 AC_MSG_ERROR([OpenSSL library not found.])
Darren Tuckera0c2b392004-09-11 23:26:37 +10002281 ],
2282 [
2283 AC_MSG_WARN([cross compiling: not checking])
Tim Riced730b782002-08-13 18:52:10 -07002284 ]
2285)
Damien Millera22ba012000-03-02 23:09:20 +11002286
Tim Rice648f8762011-01-26 12:38:57 -08002287AC_ARG_WITH([openssl-header-check],
Damien Miller9975e482007-03-05 11:51:27 +11002288 [ --without-openssl-header-check Disable OpenSSL version consistency check],
2289 [ if test "x$withval" = "xno" ; then
2290 openssl_check_nonfatal=1
2291 fi
2292 ]
2293)
2294
Damien Millerec932372002-01-22 22:16:03 +11002295# Sanity check OpenSSL headers
2296AC_MSG_CHECKING([whether OpenSSL's headers match the library])
Darren Tuckera0c2b392004-09-11 23:26:37 +10002297AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08002298 [AC_LANG_PROGRAM([[
Damien Millerec932372002-01-22 22:16:03 +11002299#include <string.h>
2300#include <openssl/opensslv.h>
Tim Rice648f8762011-01-26 12:38:57 -08002301 ]], [[
2302 exit(SSLeay() == OPENSSL_VERSION_NUMBER ? 0 : 1);
Darren Tucker623d92f2004-09-12 22:36:15 +10002303 ]])],
Damien Millerec932372002-01-22 22:16:03 +11002304 [
Tim Rice648f8762011-01-26 12:38:57 -08002305 AC_MSG_RESULT([yes])
Damien Millerec932372002-01-22 22:16:03 +11002306 ],
2307 [
Tim Rice648f8762011-01-26 12:38:57 -08002308 AC_MSG_RESULT([no])
Damien Miller9975e482007-03-05 11:51:27 +11002309 if test "x$openssl_check_nonfatal" = "x"; then
2310 AC_MSG_ERROR([Your OpenSSL headers do not match your
2311library. Check config.log for details.
2312If you are sure your installation is consistent, you can disable the check
2313by running "./configure --without-openssl-header-check".
2314Also see contrib/findssl.sh for help identifying header/library mismatches.
2315])
2316 else
2317 AC_MSG_WARN([Your OpenSSL headers do not match your
2318library. Check config.log for details.
Darren Tuckera0472e02003-06-24 20:22:09 +10002319Also see contrib/findssl.sh for help identifying header/library mismatches.])
Damien Miller9975e482007-03-05 11:51:27 +11002320 fi
Darren Tuckera0c2b392004-09-11 23:26:37 +10002321 ],
2322 [
2323 AC_MSG_WARN([cross compiling: not checking])
Damien Millerec932372002-01-22 22:16:03 +11002324 ]
2325)
2326
Darren Tucker639bbe82006-08-20 20:17:53 +10002327AC_MSG_CHECKING([if programs using OpenSSL functions will link])
2328AC_LINK_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08002329 [AC_LANG_PROGRAM([[ #include <openssl/evp.h> ]],
2330 [[ SSLeay_add_all_algorithms(); ]])],
Darren Tucker639bbe82006-08-20 20:17:53 +10002331 [
Tim Rice648f8762011-01-26 12:38:57 -08002332 AC_MSG_RESULT([yes])
Darren Tucker639bbe82006-08-20 20:17:53 +10002333 ],
2334 [
Tim Rice648f8762011-01-26 12:38:57 -08002335 AC_MSG_RESULT([no])
Darren Tucker639bbe82006-08-20 20:17:53 +10002336 saved_LIBS="$LIBS"
2337 LIBS="$LIBS -ldl"
2338 AC_MSG_CHECKING([if programs using OpenSSL need -ldl])
2339 AC_LINK_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08002340 [AC_LANG_PROGRAM([[ #include <openssl/evp.h> ]],
2341 [[ SSLeay_add_all_algorithms(); ]])],
Darren Tucker639bbe82006-08-20 20:17:53 +10002342 [
Tim Rice648f8762011-01-26 12:38:57 -08002343 AC_MSG_RESULT([yes])
Darren Tucker639bbe82006-08-20 20:17:53 +10002344 ],
2345 [
Tim Rice648f8762011-01-26 12:38:57 -08002346 AC_MSG_RESULT([no])
Darren Tucker639bbe82006-08-20 20:17:53 +10002347 LIBS="$saved_LIBS"
2348 ]
2349 )
2350 ]
2351)
2352
Darren Tuckere9b3ad72012-01-17 14:03:34 +11002353AC_CHECK_FUNCS([RSA_generate_key_ex DSA_generate_parameters_ex BN_is_prime_ex RSA_get_default_method HMAC_CTX_init])
Darren Tuckerebdef762010-12-04 23:20:50 +11002354
Tim Rice648f8762011-01-26 12:38:57 -08002355AC_ARG_WITH([ssl-engine],
Darren Tuckerfabdb6c2006-02-20 20:17:35 +11002356 [ --with-ssl-engine Enable OpenSSL (hardware) ENGINE support ],
2357 [ if test "x$withval" != "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08002358 AC_MSG_CHECKING([for OpenSSL ENGINE support])
2359 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
2360#include <openssl/engine.h>
2361 ]], [[
2362 ENGINE_load_builtin_engines();
2363 ENGINE_register_all_complete();
2364 ]])],
2365 [ AC_MSG_RESULT([yes])
2366 AC_DEFINE([USE_OPENSSL_ENGINE], [1],
Darren Tuckerfabdb6c2006-02-20 20:17:35 +11002367 [Enable OpenSSL engine support])
Tim Rice648f8762011-01-26 12:38:57 -08002368 ], [ AC_MSG_ERROR([OpenSSL ENGINE support not found])
2369 ])
Darren Tuckerfabdb6c2006-02-20 20:17:35 +11002370 fi ]
2371)
2372
Darren Tucker129d0bb2005-12-19 17:40:40 +11002373# Check for OpenSSL without EVP_aes_{192,256}_cbc
2374AC_MSG_CHECKING([whether OpenSSL has crippled AES support])
Darren Tuckerf1f4bdd2006-08-04 19:44:23 +10002375AC_LINK_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08002376 [AC_LANG_PROGRAM([[
Darren Tucker129d0bb2005-12-19 17:40:40 +11002377#include <string.h>
2378#include <openssl/evp.h>
Tim Rice648f8762011-01-26 12:38:57 -08002379 ]], [[
2380 exit(EVP_aes_192_cbc() == NULL || EVP_aes_256_cbc() == NULL);
Darren Tucker129d0bb2005-12-19 17:40:40 +11002381 ]])],
2382 [
Tim Rice648f8762011-01-26 12:38:57 -08002383 AC_MSG_RESULT([no])
Darren Tucker129d0bb2005-12-19 17:40:40 +11002384 ],
2385 [
Tim Rice648f8762011-01-26 12:38:57 -08002386 AC_MSG_RESULT([yes])
2387 AC_DEFINE([OPENSSL_LOBOTOMISED_AES], [1],
Darren Tucker129d0bb2005-12-19 17:40:40 +11002388 [libcrypto is missing AES 192 and 256 bit functions])
2389 ]
2390)
2391
Damien Miller25a02b02012-12-13 08:18:56 +11002392# Check for OpenSSL with EVP_aes_*ctr
2393AC_MSG_CHECKING([whether OpenSSL has AES CTR via EVP])
2394AC_LINK_IFELSE(
2395 [AC_LANG_PROGRAM([[
2396#include <string.h>
2397#include <openssl/evp.h>
2398 ]], [[
2399 exit(EVP_aes_128_ctr() == NULL ||
2400 EVP_aes_192_cbc() == NULL ||
2401 EVP_aes_256_cbc() == NULL);
2402 ]])],
2403 [
2404 AC_MSG_RESULT([yes])
2405 AC_DEFINE([OPENSSL_HAVE_EVPCTR], [1],
2406 [libcrypto has EVP AES CTR])
2407 ],
2408 [
2409 AC_MSG_RESULT([no])
2410 ]
2411)
2412
Damien Millerd522c682013-01-09 16:42:47 +11002413# Check for OpenSSL with EVP_aes_*gcm
2414AC_MSG_CHECKING([whether OpenSSL has AES GCM via EVP])
2415AC_LINK_IFELSE(
2416 [AC_LANG_PROGRAM([[
2417#include <string.h>
2418#include <openssl/evp.h>
2419 ]], [[
2420 exit(EVP_aes_128_gcm() == NULL ||
Damien Millerb6f73b32013-02-11 10:39:12 +11002421 EVP_aes_256_gcm() == NULL ||
2422 EVP_CTRL_GCM_SET_IV_FIXED == 0 ||
2423 EVP_CTRL_GCM_IV_GEN == 0 ||
2424 EVP_CTRL_GCM_SET_TAG == 0 ||
2425 EVP_CTRL_GCM_GET_TAG == 0 ||
2426 EVP_CIPHER_CTX_ctrl(NULL, 0, 0, NULL) == 0);
Damien Millerd522c682013-01-09 16:42:47 +11002427 ]])],
2428 [
2429 AC_MSG_RESULT([yes])
2430 AC_DEFINE([OPENSSL_HAVE_EVPGCM], [1],
2431 [libcrypto has EVP AES GCM])
2432 ],
2433 [
2434 AC_MSG_RESULT([no])
Darren Tucker6d8bd572013-06-11 11:26:10 +10002435 unsupported_algorithms="$unsupported_cipers \
2436 aes128-gcm@openssh.com aes256-gcm@openssh.com"
Damien Millerd522c682013-01-09 16:42:47 +11002437 ]
2438)
2439
Damien Millerb6f73b32013-02-11 10:39:12 +11002440AC_SEARCH_LIBS([EVP_CIPHER_CTX_ctrl], [crypto],
2441 [AC_DEFINE([HAVE_EVP_CIPHER_CTX_CTRL], [1],
2442 [Define if libcrypto has EVP_CIPHER_CTX_ctrl])])
2443
Darren Tucker3e7e15f2009-03-07 22:22:35 +11002444AC_MSG_CHECKING([if EVP_DigestUpdate returns an int])
2445AC_LINK_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08002446 [AC_LANG_PROGRAM([[
Darren Tucker3e7e15f2009-03-07 22:22:35 +11002447#include <string.h>
2448#include <openssl/evp.h>
Tim Rice648f8762011-01-26 12:38:57 -08002449 ]], [[
2450 if(EVP_DigestUpdate(NULL, NULL,0))
2451 exit(0);
Darren Tucker3e7e15f2009-03-07 22:22:35 +11002452 ]])],
2453 [
Tim Rice648f8762011-01-26 12:38:57 -08002454 AC_MSG_RESULT([yes])
Darren Tucker3e7e15f2009-03-07 22:22:35 +11002455 ],
2456 [
Tim Rice648f8762011-01-26 12:38:57 -08002457 AC_MSG_RESULT([no])
2458 AC_DEFINE([OPENSSL_EVP_DIGESTUPDATE_VOID], [1],
Darren Tucker3e7e15f2009-03-07 22:22:35 +11002459 [Define if EVP_DigestUpdate returns void])
2460 ]
2461)
2462
Tim Rice3d5352e2004-02-12 09:27:21 -08002463# Some systems want crypt() from libcrypt, *not* the version in OpenSSL,
2464# because the system crypt() is more featureful.
2465if test "x$check_for_libcrypt_before" = "x1"; then
Tim Rice648f8762011-01-26 12:38:57 -08002466 AC_CHECK_LIB([crypt], [crypt])
Tim Rice3d5352e2004-02-12 09:27:21 -08002467fi
2468
Damien Millera8e06ce2003-11-21 23:48:55 +11002469# Some Linux systems (Slackware) need crypt() from libcrypt, *not* the
Tim Rice43fa5572004-02-11 14:46:40 -08002470# version in OpenSSL.
Damien Miller4f9f42a2003-05-10 19:28:02 +10002471if test "x$check_for_libcrypt_later" = "x1"; then
Tim Rice648f8762011-01-26 12:38:57 -08002472 AC_CHECK_LIB([crypt], [crypt], [LIBS="$LIBS -lcrypt"])
Damien Millera64b57a2001-01-17 10:44:13 +11002473fi
Darren Tuckerc0c33732013-06-02 06:28:03 +10002474AC_CHECK_FUNCS([crypt DES_crypt])
Damien Millera64b57a2001-01-17 10:44:13 +11002475
Damien Milleraf87af12006-03-15 13:02:28 +11002476# Search for SHA256 support in libc and/or OpenSSL
Darren Tucker4bf7e502013-11-07 22:33:48 +11002477AC_CHECK_FUNCS([SHA256_Update EVP_sha256], ,
2478 [unsupported_algorithms="$unsupported_algorithms \
Darren Tucker6d8bd572013-06-11 11:26:10 +10002479 hmac-sha2-256 hmac-sha2-512 \
2480 diffie-hellman-group-exchange-sha256 \
2481 hmac-sha2-256-etm@openssh.com hmac-sha2-512-etm@openssh.com"
2482 ]
2483)
Damien Milleraf87af12006-03-15 13:02:28 +11002484
Damien Miller6af914a2010-09-10 11:39:26 +10002485# Check complete ECC support in OpenSSL
Darren Tucker37bcef52013-11-09 18:39:25 +11002486AC_MSG_CHECKING([whether OpenSSL has NID_X9_62_prime256v1])
2487AC_LINK_IFELSE(
2488 [AC_LANG_PROGRAM([[
2489#include <openssl/ec.h>
2490#include <openssl/ecdh.h>
2491#include <openssl/ecdsa.h>
2492#include <openssl/evp.h>
2493#include <openssl/objects.h>
2494#include <openssl/opensslv.h>
2495#if OPENSSL_VERSION_NUMBER < 0x0090807f /* 0.9.8g */
2496# error "OpenSSL < 0.9.8g has unreliable ECC code"
2497#endif
2498 ]], [[
2499 EC_KEY *e = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
2500 const EVP_MD *m = EVP_sha256(); /* We need this too */
2501 ]])],
2502 [ AC_MSG_RESULT([yes])
2503 enable_nistp256=1 ],
2504 [ AC_MSG_RESULT([no]) ]
2505)
2506
2507AC_MSG_CHECKING([whether OpenSSL has NID_secp384r1])
2508AC_LINK_IFELSE(
2509 [AC_LANG_PROGRAM([[
2510#include <openssl/ec.h>
2511#include <openssl/ecdh.h>
2512#include <openssl/ecdsa.h>
2513#include <openssl/evp.h>
2514#include <openssl/objects.h>
2515#include <openssl/opensslv.h>
2516#if OPENSSL_VERSION_NUMBER < 0x0090807f /* 0.9.8g */
2517# error "OpenSSL < 0.9.8g has unreliable ECC code"
2518#endif
2519 ]], [[
2520 EC_KEY *e = EC_KEY_new_by_curve_name(NID_secp384r1);
2521 const EVP_MD *m = EVP_sha384(); /* We need this too */
2522 ]])],
2523 [ AC_MSG_RESULT([yes])
2524 enable_nistp384=1 ],
2525 [ AC_MSG_RESULT([no]) ]
2526)
2527
2528AC_MSG_CHECKING([whether OpenSSL has NID_secp521r1])
Damien Miller6af914a2010-09-10 11:39:26 +10002529AC_LINK_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08002530 [AC_LANG_PROGRAM([[
Damien Miller6af914a2010-09-10 11:39:26 +10002531#include <openssl/ec.h>
Damien Millere323ebc2011-01-19 23:12:27 +11002532#include <openssl/ecdh.h>
2533#include <openssl/ecdsa.h>
Damien Miller6af914a2010-09-10 11:39:26 +10002534#include <openssl/evp.h>
2535#include <openssl/objects.h>
Damien Millere323ebc2011-01-19 23:12:27 +11002536#include <openssl/opensslv.h>
2537#if OPENSSL_VERSION_NUMBER < 0x0090807f /* 0.9.8g */
2538# error "OpenSSL < 0.9.8g has unreliable ECC code"
2539#endif
Tim Rice648f8762011-01-26 12:38:57 -08002540 ]], [[
Damien Miller6af914a2010-09-10 11:39:26 +10002541 EC_KEY *e = EC_KEY_new_by_curve_name(NID_secp521r1);
2542 const EVP_MD *m = EVP_sha512(); /* We need this too */
Damien Miller6af914a2010-09-10 11:39:26 +10002543 ]])],
Darren Tucker37bcef52013-11-09 18:39:25 +11002544 [ AC_MSG_RESULT([yes])
2545 AC_MSG_CHECKING([if OpenSSL's NID_secp521r1 is functional])
2546 AC_RUN_IFELSE(
2547 [AC_LANG_PROGRAM([[
2548#include <openssl/ec.h>
2549#include <openssl/ecdh.h>
2550#include <openssl/ecdsa.h>
2551#include <openssl/evp.h>
2552#include <openssl/objects.h>
2553#include <openssl/opensslv.h>
2554 ]],[[
2555 EC_KEY *e = EC_KEY_new_by_curve_name(NID_secp521r1);
2556 const EVP_MD *m = EVP_sha512(); /* We need this too */
2557 exit(e == NULL || m == NULL);
2558 ]])],
2559 [ AC_MSG_RESULT([yes])
2560 enable_nistp521=1 ],
2561 [ AC_MSG_RESULT([no]) ],
Darren Tucker95cb2d42013-11-09 22:02:31 +11002562 [ AC_MSG_WARN([cross-compiling: assuming yes])
Darren Tucker37bcef52013-11-09 18:39:25 +11002563 enable_nistp521=1 ]
Darren Tucker95cb2d42013-11-09 22:02:31 +11002564 )],
Darren Tucker37bcef52013-11-09 18:39:25 +11002565 AC_MSG_RESULT([no])
Damien Miller6af914a2010-09-10 11:39:26 +10002566)
Darren Tucker37bcef52013-11-09 18:39:25 +11002567
2568COMMENT_OUT_ECC="#no ecc#"
2569TEST_SSH_ECC=no
2570
2571if test x$enable_nistp256 = x1 || test x$enable_nistp384 = x1 || \
Darren Tuckerdd5264d2013-11-09 22:32:51 +11002572 test x$enable_nistp521 = x1; then
Darren Tucker37bcef52013-11-09 18:39:25 +11002573 AC_DEFINE(OPENSSL_HAS_ECC, [1], [OpenSSL has ECC])
2574fi
2575if test x$enable_nistp256 = x1; then
2576 AC_DEFINE([OPENSSL_HAS_NISTP256], [1],
2577 [libcrypto has NID_X9_62_prime256v1])
2578 TEST_SSH_ECC=yes
2579 COMMENT_OUT_ECC=""
2580else
2581 unsupported_algorithms="$unsupported_algorithms ecdsa-sha2-nistp256 \
2582 ecdh-sha2-nistp256 ecdsa-sha2-nistp256-cert-v01@openssh.com"
2583fi
2584if test x$enable_nistp384 = x1; then
2585 AC_DEFINE([OPENSSL_HAS_NISTP384], [1], [libcrypto has NID_secp384r1])
2586 TEST_SSH_ECC=yes
2587 COMMENT_OUT_ECC=""
2588else
2589 unsupported_algorithms="$unsupported_algorithms ecdsa-sha2-nistp384 \
2590 ecdh-sha2-nistp384 ecdsa-sha2-nistp384-cert-v01@openssh.com"
2591fi
2592if test x$enable_nistp521 = x1; then
2593 AC_DEFINE([OPENSSL_HAS_NISTP521], [1], [libcrypto has NID_secp521r1])
2594 TEST_SSH_ECC=yes
2595 COMMENT_OUT_ECC=""
2596else
2597 unsupported_algorithms="$unsupported_algorithms ecdh-sha2-nistp521 \
2598 ecdsa-sha2-nistp521 ecdsa-sha2-nistp521-cert-v01@openssh.com"
2599fi
2600
Tim Rice648f8762011-01-26 12:38:57 -08002601AC_SUBST([TEST_SSH_ECC])
2602AC_SUBST([COMMENT_OUT_ECC])
Damien Miller6af914a2010-09-10 11:39:26 +10002603
Tim Rice99203ec2007-03-26 09:35:28 -07002604saved_LIBS="$LIBS"
Tim Rice648f8762011-01-26 12:38:57 -08002605AC_CHECK_LIB([iaf], [ia_openinfo], [
Tim Rice99203ec2007-03-26 09:35:28 -07002606 LIBS="$LIBS -liaf"
Tim Rice648f8762011-01-26 12:38:57 -08002607 AC_CHECK_FUNCS([set_id], [SSHDLIBS="$SSHDLIBS -liaf"
2608 AC_DEFINE([HAVE_LIBIAF], [1],
Tim Rice0eeaf122007-09-10 16:24:17 -07002609 [Define if system has libiaf that supports set_id])
2610 ])
Tim Rice99203ec2007-03-26 09:35:28 -07002611])
2612LIBS="$saved_LIBS"
Damien Miller6c21c512002-01-22 21:57:53 +11002613
2614### Configure cryptographic random number support
2615
2616# Check wheter OpenSSL seeds itself
2617AC_MSG_CHECKING([whether OpenSSL's PRNG is internally seeded])
Darren Tuckera0c2b392004-09-11 23:26:37 +10002618AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08002619 [AC_LANG_PROGRAM([[
Damien Miller6c21c512002-01-22 21:57:53 +11002620#include <string.h>
2621#include <openssl/rand.h>
Tim Rice648f8762011-01-26 12:38:57 -08002622 ]], [[
2623 exit(RAND_status() == 1 ? 0 : 1);
Darren Tucker623d92f2004-09-12 22:36:15 +10002624 ]])],
Damien Miller6c21c512002-01-22 21:57:53 +11002625 [
2626 OPENSSL_SEEDS_ITSELF=yes
Tim Rice648f8762011-01-26 12:38:57 -08002627 AC_MSG_RESULT([yes])
Damien Miller6c21c512002-01-22 21:57:53 +11002628 ],
2629 [
Tim Rice648f8762011-01-26 12:38:57 -08002630 AC_MSG_RESULT([no])
Darren Tuckera0c2b392004-09-11 23:26:37 +10002631 ],
2632 [
2633 AC_MSG_WARN([cross compiling: assuming yes])
Damien Millerf22019b2011-05-05 13:48:37 +10002634 # This is safe, since we will fatal() at runtime if
2635 # OpenSSL is not seeded correctly.
Darren Tuckera0c2b392004-09-11 23:26:37 +10002636 OPENSSL_SEEDS_ITSELF=yes
Damien Miller6c21c512002-01-22 21:57:53 +11002637 ]
2638)
2639
Damien Millerf22019b2011-05-05 13:48:37 +10002640# PRNGD TCP socket
2641AC_ARG_WITH([prngd-port],
2642 [ --with-prngd-port=PORT read entropy from PRNGD/EGD TCP localhost:PORT],
2643 [
2644 case "$withval" in
2645 no)
2646 withval=""
2647 ;;
2648 [[0-9]]*)
2649 ;;
2650 *)
2651 AC_MSG_ERROR([You must specify a numeric port number for --with-prngd-port])
2652 ;;
2653 esac
2654 if test ! -z "$withval" ; then
2655 PRNGD_PORT="$withval"
2656 AC_DEFINE_UNQUOTED([PRNGD_PORT], [$PRNGD_PORT],
2657 [Port number of PRNGD/EGD random number socket])
2658 fi
2659 ]
2660)
2661
2662# PRNGD Unix domain socket
2663AC_ARG_WITH([prngd-socket],
2664 [ --with-prngd-socket=FILE read entropy from PRNGD/EGD socket FILE (default=/var/run/egd-pool)],
2665 [
2666 case "$withval" in
2667 yes)
2668 withval="/var/run/egd-pool"
2669 ;;
2670 no)
2671 withval=""
2672 ;;
2673 /*)
2674 ;;
2675 *)
2676 AC_MSG_ERROR([You must specify an absolute path to the entropy socket])
2677 ;;
2678 esac
2679
2680 if test ! -z "$withval" ; then
2681 if test ! -z "$PRNGD_PORT" ; then
2682 AC_MSG_ERROR([You may not specify both a PRNGD/EGD port and socket])
2683 fi
2684 if test ! -r "$withval" ; then
2685 AC_MSG_WARN([Entropy socket is not readable])
2686 fi
2687 PRNGD_SOCKET="$withval"
2688 AC_DEFINE_UNQUOTED([PRNGD_SOCKET], ["$PRNGD_SOCKET"],
2689 [Location of PRNGD/EGD random number socket])
2690 fi
2691 ],
2692 [
2693 # Check for existing socket only if we don't have a random device already
2694 if test "x$OPENSSL_SEEDS_ITSELF" != "xyes" ; then
2695 AC_MSG_CHECKING([for PRNGD/EGD socket])
2696 # Insert other locations here
2697 for sock in /var/run/egd-pool /dev/egd-pool /etc/entropy; do
2698 if test -r $sock && $TEST_MINUS_S_SH -c "test -S $sock -o -p $sock" ; then
2699 PRNGD_SOCKET="$sock"
2700 AC_DEFINE_UNQUOTED([PRNGD_SOCKET], ["$PRNGD_SOCKET"])
2701 break;
2702 fi
2703 done
2704 if test ! -z "$PRNGD_SOCKET" ; then
2705 AC_MSG_RESULT([$PRNGD_SOCKET])
2706 else
2707 AC_MSG_RESULT([not found])
2708 fi
2709 fi
2710 ]
2711)
2712
2713# Which randomness source do we use?
2714if test ! -z "$PRNGD_PORT" ; then
2715 RAND_MSG="PRNGd port $PRNGD_PORT"
2716elif test ! -z "$PRNGD_SOCKET" ; then
2717 RAND_MSG="PRNGd socket $PRNGD_SOCKET"
2718elif test ! -z "$OPENSSL_SEEDS_ITSELF" ; then
2719 AC_DEFINE([OPENSSL_PRNG_ONLY], [1],
2720 [Define if you want OpenSSL's internally seeded PRNG only])
2721 RAND_MSG="OpenSSL internal ONLY"
2722else
2723 AC_MSG_ERROR([OpenSSH has no source of random numbers. Please configure OpenSSL with an entropy source or re-run configure using one of the --with-prngd-port or --with-prngd-socket options])
2724fi
2725
Darren Tucker3e6bde42006-08-20 20:03:50 +10002726# Check for PAM libs
2727PAM_MSG="no"
Tim Rice648f8762011-01-26 12:38:57 -08002728AC_ARG_WITH([pam],
Darren Tucker3e6bde42006-08-20 20:03:50 +10002729 [ --with-pam Enable PAM support ],
2730 [
2731 if test "x$withval" != "xno" ; then
2732 if test "x$ac_cv_header_security_pam_appl_h" != "xyes" && \
2733 test "x$ac_cv_header_pam_pam_appl_h" != "xyes" ; then
2734 AC_MSG_ERROR([PAM headers not found])
2735 fi
2736
2737 saved_LIBS="$LIBS"
Tim Rice648f8762011-01-26 12:38:57 -08002738 AC_CHECK_LIB([dl], [dlopen], , )
2739 AC_CHECK_LIB([pam], [pam_set_item], , [AC_MSG_ERROR([*** libpam missing])])
2740 AC_CHECK_FUNCS([pam_getenvlist])
2741 AC_CHECK_FUNCS([pam_putenv])
Darren Tucker3e6bde42006-08-20 20:03:50 +10002742 LIBS="$saved_LIBS"
2743
2744 PAM_MSG="yes"
2745
Darren Tucker20e9f972007-03-25 18:26:01 +10002746 SSHDLIBS="$SSHDLIBS -lpam"
Tim Rice648f8762011-01-26 12:38:57 -08002747 AC_DEFINE([USE_PAM], [1],
Darren Tucker3e6bde42006-08-20 20:03:50 +10002748 [Define if you want to enable PAM support])
Darren Tucker639bbe82006-08-20 20:17:53 +10002749
Darren Tucker3e6bde42006-08-20 20:03:50 +10002750 if test $ac_cv_lib_dl_dlopen = yes; then
Darren Tucker639bbe82006-08-20 20:17:53 +10002751 case "$LIBS" in
2752 *-ldl*)
2753 # libdl already in LIBS
2754 ;;
2755 *)
Darren Tucker20e9f972007-03-25 18:26:01 +10002756 SSHDLIBS="$SSHDLIBS -ldl"
Darren Tucker639bbe82006-08-20 20:17:53 +10002757 ;;
2758 esac
Darren Tucker3e6bde42006-08-20 20:03:50 +10002759 fi
Darren Tucker3e6bde42006-08-20 20:03:50 +10002760 fi
2761 ]
2762)
2763
2764# Check for older PAM
2765if test "x$PAM_MSG" = "xyes" ; then
2766 # Check PAM strerror arguments (old PAM)
2767 AC_MSG_CHECKING([whether pam_strerror takes only one argument])
Tim Rice648f8762011-01-26 12:38:57 -08002768 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Darren Tucker3e6bde42006-08-20 20:03:50 +10002769#include <stdlib.h>
2770#if defined(HAVE_SECURITY_PAM_APPL_H)
2771#include <security/pam_appl.h>
2772#elif defined (HAVE_PAM_PAM_APPL_H)
2773#include <pam/pam_appl.h>
2774#endif
Tim Rice648f8762011-01-26 12:38:57 -08002775 ]], [[
2776(void)pam_strerror((pam_handle_t *)NULL, -1);
2777 ]])], [AC_MSG_RESULT([no])], [
2778 AC_DEFINE([HAVE_OLD_PAM], [1],
Darren Tucker3e6bde42006-08-20 20:03:50 +10002779 [Define if you have an old version of PAM
2780 which takes only one argument to pam_strerror])
Tim Rice648f8762011-01-26 12:38:57 -08002781 AC_MSG_RESULT([yes])
Darren Tucker3e6bde42006-08-20 20:03:50 +10002782 PAM_MSG="yes (old library)"
Tim Rice648f8762011-01-26 12:38:57 -08002783
2784 ])
Darren Tucker3e6bde42006-08-20 20:03:50 +10002785fi
Damien Miller6c21c512002-01-22 21:57:53 +11002786
Damien Millerd3f6ad22002-06-25 10:24:47 +10002787SSH_PRIVSEP_USER=sshd
Tim Rice648f8762011-01-26 12:38:57 -08002788AC_ARG_WITH([privsep-user],
Kevin Stevesc81e1292002-05-13 03:51:40 +00002789 [ --with-privsep-user=user Specify non-privileged user for privilege separation],
Kevin Steves7ff91122002-04-07 19:22:54 +00002790 [
Tim Rice35cc69d2005-03-17 16:44:25 -08002791 if test -n "$withval" && test "x$withval" != "xno" && \
2792 test "x${withval}" != "xyes"; then
Damien Millerd3f6ad22002-06-25 10:24:47 +10002793 SSH_PRIVSEP_USER=$withval
Kevin Steves7ff91122002-04-07 19:22:54 +00002794 fi
Tim Riceeae17cc2005-03-17 16:52:20 -08002795 ]
Kevin Steves7ff91122002-04-07 19:22:54 +00002796)
Tim Rice648f8762011-01-26 12:38:57 -08002797AC_DEFINE_UNQUOTED([SSH_PRIVSEP_USER], ["$SSH_PRIVSEP_USER"],
Tim Rice7df8d392005-09-19 09:33:39 -07002798 [non-privileged user for privilege separation])
Tim Rice648f8762011-01-26 12:38:57 -08002799AC_SUBST([SSH_PRIVSEP_USER])
Kevin Steves7ff91122002-04-07 19:22:54 +00002800
Damien Miller91f40d82013-02-22 11:37:00 +11002801if test "x$have_linux_no_new_privs" = "x1" ; then
2802AC_CHECK_DECL([SECCOMP_MODE_FILTER], [have_seccomp_filter=1], , [
2803 #include <sys/types.h>
2804 #include <linux/seccomp.h>
2805])
2806fi
2807if test "x$have_seccomp_filter" = "x1" ; then
2808AC_MSG_CHECKING([kernel for seccomp_filter support])
2809AC_LINK_IFELSE([AC_LANG_PROGRAM([[
2810 #include <errno.h>
2811 #include <elf.h>
2812 #include <linux/audit.h>
2813 #include <linux/seccomp.h>
2814 #include <stdlib.h>
2815 #include <sys/prctl.h>
2816 ]],
2817 [[ int i = $seccomp_audit_arch;
2818 errno = 0;
2819 prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, NULL, 0, 0);
2820 exit(errno == EFAULT ? 0 : 1); ]])],
2821 [ AC_MSG_RESULT([yes]) ], [
2822 AC_MSG_RESULT([no])
2823 # Disable seccomp filter as a target
2824 have_seccomp_filter=0
2825 ]
2826)
2827fi
2828
Damien Miller69ff1df2011-06-23 08:30:03 +10002829# Decide which sandbox style to use
2830sandbox_arg=""
2831AC_ARG_WITH([sandbox],
Damien Millere0956e32012-04-04 11:27:54 +10002832 [ --with-sandbox=style Specify privilege separation sandbox (no, darwin, rlimit, systrace, seccomp_filter)],
Damien Miller69ff1df2011-06-23 08:30:03 +10002833 [
2834 if test "x$withval" = "xyes" ; then
2835 sandbox_arg=""
2836 else
2837 sandbox_arg="$withval"
2838 fi
2839 ]
2840)
Darren Tucker60395f92012-07-03 14:31:18 +10002841
2842# Some platforms (seems to be the ones that have a kernel poll(2)-type
2843# function with which they implement select(2)) use an extra file descriptor
2844# when calling select(2), which means we can't use the rlimit sandbox.
2845AC_MSG_CHECKING([if select works with descriptor rlimit])
2846AC_RUN_IFELSE(
2847 [AC_LANG_PROGRAM([[
2848#include <sys/types.h>
2849#ifdef HAVE_SYS_TIME_H
2850# include <sys/time.h>
2851#endif
2852#include <sys/resource.h>
2853#ifdef HAVE_SYS_SELECT_H
2854# include <sys/select.h>
2855#endif
2856#include <errno.h>
2857#include <fcntl.h>
2858#include <stdlib.h>
2859 ]],[[
2860 struct rlimit rl_zero;
2861 int fd, r;
2862 fd_set fds;
Damien Millere4f43472013-03-08 12:14:22 +11002863 struct timeval tv;
Darren Tucker60395f92012-07-03 14:31:18 +10002864
2865 fd = open("/dev/null", O_RDONLY);
2866 FD_ZERO(&fds);
2867 FD_SET(fd, &fds);
2868 rl_zero.rlim_cur = rl_zero.rlim_max = 0;
2869 setrlimit(RLIMIT_FSIZE, &rl_zero);
2870 setrlimit(RLIMIT_NOFILE, &rl_zero);
Damien Millere4f43472013-03-08 12:14:22 +11002871 tv.tv_sec = 1;
2872 tv.tv_usec = 0;
2873 r = select(fd+1, &fds, NULL, NULL, &tv);
Darren Tucker60395f92012-07-03 14:31:18 +10002874 exit (r == -1 ? 1 : 0);
2875 ]])],
2876 [AC_MSG_RESULT([yes])
2877 select_works_with_rlimit=yes],
2878 [AC_MSG_RESULT([no])
2879 select_works_with_rlimit=no],
2880 [AC_MSG_WARN([cross compiling: assuming yes])]
2881)
2882
Darren Tuckerff008de2013-03-06 17:48:48 +11002883AC_MSG_CHECKING([if setrlimit(RLIMIT_NOFILE,{0,0}) works])
2884AC_RUN_IFELSE(
2885 [AC_LANG_PROGRAM([[
2886#include <sys/types.h>
2887#ifdef HAVE_SYS_TIME_H
2888# include <sys/time.h>
2889#endif
2890#include <sys/resource.h>
2891#include <errno.h>
2892#include <stdlib.h>
2893 ]],[[
2894 struct rlimit rl_zero;
2895 int fd, r;
2896 fd_set fds;
2897
2898 rl_zero.rlim_cur = rl_zero.rlim_max = 0;
2899 r = setrlimit(RLIMIT_NOFILE, &rl_zero);
2900 exit (r == -1 ? 1 : 0);
2901 ]])],
2902 [AC_MSG_RESULT([yes])
2903 rlimit_nofile_zero_works=yes],
2904 [AC_MSG_RESULT([no])
2905 rlimit_nofile_zero_works=no],
2906 [AC_MSG_WARN([cross compiling: assuming yes])]
2907)
2908
Darren Tuckerd545a4b2012-07-03 22:48:31 +10002909AC_MSG_CHECKING([if setrlimit RLIMIT_FSIZE works])
2910AC_RUN_IFELSE(
2911 [AC_LANG_PROGRAM([[
2912#include <sys/types.h>
2913#include <sys/resource.h>
2914#include <stdlib.h>
2915 ]],[[
2916 struct rlimit rl_zero;
2917
2918 rl_zero.rlim_cur = rl_zero.rlim_max = 0;
2919 exit(setrlimit(RLIMIT_FSIZE, &rl_zero) != 0);
2920 ]])],
2921 [AC_MSG_RESULT([yes])],
2922 [AC_MSG_RESULT([no])
2923 AC_DEFINE(SANDBOX_SKIP_RLIMIT_FSIZE, 1,
2924 [setrlimit RLIMIT_FSIZE works])],
2925 [AC_MSG_WARN([cross compiling: assuming yes])]
2926)
2927
Damien Miller69ff1df2011-06-23 08:30:03 +10002928if test "x$sandbox_arg" = "xsystrace" || \
2929 ( test -z "$sandbox_arg" && test "x$have_systr_policy_kill" = "x1" ) ; then
Damien Miller1a91c0f2011-08-17 11:59:25 +10002930 test "x$have_systr_policy_kill" != "x1" && \
2931 AC_MSG_ERROR([systrace sandbox requires systrace headers and SYSTR_POLICY_KILL support])
Damien Miller69ff1df2011-06-23 08:30:03 +10002932 SANDBOX_STYLE="systrace"
2933 AC_DEFINE([SANDBOX_SYSTRACE], [1], [Sandbox using systrace(4)])
Damien Millercd5e52e2011-06-27 07:18:18 +10002934elif test "x$sandbox_arg" = "xdarwin" || \
2935 ( test -z "$sandbox_arg" && test "x$ac_cv_func_sandbox_init" = "xyes" && \
2936 test "x$ac_cv_header_sandbox_h" = "xyes") ; then
Damien Miller1a91c0f2011-08-17 11:59:25 +10002937 test "x$ac_cv_func_sandbox_init" != "xyes" -o \
2938 "x$ac_cv_header_sandbox_h" != "xyes" && \
2939 AC_MSG_ERROR([Darwin seatbelt sandbox requires sandbox.h and sandbox_init function])
Damien Millercd5e52e2011-06-27 07:18:18 +10002940 SANDBOX_STYLE="darwin"
2941 AC_DEFINE([SANDBOX_DARWIN], [1], [Sandbox using Darwin sandbox_init(3)])
Damien Millere0956e32012-04-04 11:27:54 +10002942elif test "x$sandbox_arg" = "xseccomp_filter" || \
2943 ( test -z "$sandbox_arg" && \
Darren Tuckerd0494fd2012-05-19 14:25:39 +10002944 test "x$have_seccomp_filter" = "x1" && \
Damien Miller91f40d82013-02-22 11:37:00 +11002945 test "x$ac_cv_header_elf_h" = "xyes" && \
Damien Millere0956e32012-04-04 11:27:54 +10002946 test "x$ac_cv_header_linux_audit_h" = "xyes" && \
Damien Miller91f40d82013-02-22 11:37:00 +11002947 test "x$ac_cv_header_linux_filter_h" = "xyes" && \
2948 test "x$seccomp_audit_arch" != "x" && \
Damien Millere0956e32012-04-04 11:27:54 +10002949 test "x$have_linux_no_new_privs" = "x1" && \
2950 test "x$ac_cv_func_prctl" = "xyes" ) ; then
Damien Miller91f40d82013-02-22 11:37:00 +11002951 test "x$seccomp_audit_arch" = "x" && \
Damien Millere0956e32012-04-04 11:27:54 +10002952 AC_MSG_ERROR([seccomp_filter sandbox not supported on $host])
2953 test "x$have_linux_no_new_privs" != "x1" && \
2954 AC_MSG_ERROR([seccomp_filter sandbox requires PR_SET_NO_NEW_PRIVS])
2955 test "x$have_seccomp_filter" != "x1" && \
2956 AC_MSG_ERROR([seccomp_filter sandbox requires seccomp headers])
2957 test "x$ac_cv_func_prctl" != "xyes" && \
2958 AC_MSG_ERROR([seccomp_filter sandbox requires prctl function])
2959 SANDBOX_STYLE="seccomp_filter"
2960 AC_DEFINE([SANDBOX_SECCOMP_FILTER], [1], [Sandbox using seccomp filter])
Damien Miller69ff1df2011-06-23 08:30:03 +10002961elif test "x$sandbox_arg" = "xrlimit" || \
Darren Tucker60395f92012-07-03 14:31:18 +10002962 ( test -z "$sandbox_arg" && test "x$ac_cv_func_setrlimit" = "xyes" && \
Darren Tuckerff008de2013-03-06 17:48:48 +11002963 test "x$select_works_with_rlimit" = "xyes" && \
2964 test "x$rlimit_nofile_zero_works" = "xyes" ) ; then
Damien Miller1a91c0f2011-08-17 11:59:25 +10002965 test "x$ac_cv_func_setrlimit" != "xyes" && \
2966 AC_MSG_ERROR([rlimit sandbox requires setrlimit function])
Darren Tucker60395f92012-07-03 14:31:18 +10002967 test "x$select_works_with_rlimit" != "xyes" && \
2968 AC_MSG_ERROR([rlimit sandbox requires select to work with rlimit])
Damien Miller69ff1df2011-06-23 08:30:03 +10002969 SANDBOX_STYLE="rlimit"
2970 AC_DEFINE([SANDBOX_RLIMIT], [1], [Sandbox using setrlimit(2)])
2971elif test -z "$sandbox_arg" || test "x$sandbox_arg" = "xno" || \
2972 test "x$sandbox_arg" = "xnone" || test "x$sandbox_arg" = "xnull" ; then
2973 SANDBOX_STYLE="none"
2974 AC_DEFINE([SANDBOX_NULL], [1], [no privsep sandboxing])
2975else
Tim Ricea6e60612011-08-17 21:48:22 -07002976 AC_MSG_ERROR([unsupported --with-sandbox])
Damien Miller69ff1df2011-06-23 08:30:03 +10002977fi
2978
Ben Lindstromb5628642000-10-18 00:02:25 +00002979# Cheap hack to ensure NEWS-OS libraries are arranged right.
2980if test ! -z "$SONY" ; then
2981 LIBS="$LIBS -liberty";
2982fi
2983
Damien Miller57f39152005-11-24 19:58:19 +11002984# Check for long long datatypes
2985AC_CHECK_TYPES([long long, unsigned long long, long double])
2986
2987# Check datatype sizes
Tim Rice648f8762011-01-26 12:38:57 -08002988AC_CHECK_SIZEOF([short int], [2])
2989AC_CHECK_SIZEOF([int], [4])
2990AC_CHECK_SIZEOF([long int], [4])
2991AC_CHECK_SIZEOF([long long int], [8])
Damien Millerc6398ef1999-11-20 12:18:40 +11002992
Damien Millerfa2bb692002-04-23 23:22:25 +10002993# Sanity check long long for some platforms (AIX)
2994if test "x$ac_cv_sizeof_long_long_int" = "x4" ; then
2995 ac_cv_sizeof_long_long_int=0
2996fi
2997
Darren Tucker537f1ed2005-10-25 18:38:33 +10002998# compute LLONG_MIN and LLONG_MAX if we don't know them.
2999if test -z "$have_llong_max"; then
3000 AC_MSG_CHECKING([for max value of long long])
3001 AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08003002 [AC_LANG_PROGRAM([[
Darren Tucker537f1ed2005-10-25 18:38:33 +10003003#include <stdio.h>
3004/* Why is this so damn hard? */
3005#ifdef __GNUC__
3006# undef __GNUC__
3007#endif
3008#define __USE_ISOC99
3009#include <limits.h>
3010#define DATA "conftest.llminmax"
Darren Tuckerd1450db2006-03-13 19:06:51 +11003011#define my_abs(a) ((a) < 0 ? ((a) * -1) : (a))
3012
3013/*
3014 * printf in libc on some platforms (eg old Tru64) does not understand %lld so
3015 * we do this the hard way.
3016 */
3017static int
3018fprint_ll(FILE *f, long long n)
3019{
3020 unsigned int i;
3021 int l[sizeof(long long) * 8];
3022
3023 if (n < 0)
3024 if (fprintf(f, "-") < 0)
3025 return -1;
3026 for (i = 0; n != 0; i++) {
3027 l[i] = my_abs(n % 10);
3028 n /= 10;
3029 }
3030 do {
3031 if (fprintf(f, "%d", l[--i]) < 0)
3032 return -1;
3033 } while (i != 0);
3034 if (fprintf(f, " ") < 0)
3035 return -1;
3036 return 0;
3037}
Tim Rice648f8762011-01-26 12:38:57 -08003038 ]], [[
Darren Tucker537f1ed2005-10-25 18:38:33 +10003039 FILE *f;
3040 long long i, llmin, llmax = 0;
3041
3042 if((f = fopen(DATA,"w")) == NULL)
3043 exit(1);
3044
3045#if defined(LLONG_MIN) && defined(LLONG_MAX)
3046 fprintf(stderr, "Using system header for LLONG_MIN and LLONG_MAX\n");
3047 llmin = LLONG_MIN;
3048 llmax = LLONG_MAX;
3049#else
3050 fprintf(stderr, "Calculating LLONG_MIN and LLONG_MAX\n");
3051 /* This will work on one's complement and two's complement */
3052 for (i = 1; i > llmax; i <<= 1, i++)
3053 llmax = i;
3054 llmin = llmax + 1LL; /* wrap */
3055#endif
3056
3057 /* Sanity check */
3058 if (llmin + 1 < llmin || llmin - 1 < llmin || llmax + 1 > llmax
Darren Tuckerd1450db2006-03-13 19:06:51 +11003059 || llmax - 1 > llmax || llmin == llmax || llmin == 0
3060 || llmax == 0 || llmax < LONG_MAX || llmin > LONG_MIN) {
Darren Tucker537f1ed2005-10-25 18:38:33 +10003061 fprintf(f, "unknown unknown\n");
3062 exit(2);
3063 }
3064
Darren Tuckerd1450db2006-03-13 19:06:51 +11003065 if (fprint_ll(f, llmin) < 0)
Darren Tucker537f1ed2005-10-25 18:38:33 +10003066 exit(3);
Darren Tuckerd1450db2006-03-13 19:06:51 +11003067 if (fprint_ll(f, llmax) < 0)
3068 exit(4);
3069 if (fclose(f) < 0)
3070 exit(5);
Darren Tucker537f1ed2005-10-25 18:38:33 +10003071 exit(0);
Darren Tucker537f1ed2005-10-25 18:38:33 +10003072 ]])],
3073 [
3074 llong_min=`$AWK '{print $1}' conftest.llminmax`
3075 llong_max=`$AWK '{print $2}' conftest.llminmax`
3076
Tim Rice648f8762011-01-26 12:38:57 -08003077 AC_MSG_RESULT([$llong_max])
3078 AC_DEFINE_UNQUOTED([LLONG_MAX], [${llong_max}LL],
Darren Tucker537f1ed2005-10-25 18:38:33 +10003079 [max value of long long calculated by configure])
3080 AC_MSG_CHECKING([for min value of long long])
Tim Rice648f8762011-01-26 12:38:57 -08003081 AC_MSG_RESULT([$llong_min])
3082 AC_DEFINE_UNQUOTED([LLONG_MIN], [${llong_min}LL],
Darren Tucker537f1ed2005-10-25 18:38:33 +10003083 [min value of long long calculated by configure])
3084 ],
3085 [
Tim Rice648f8762011-01-26 12:38:57 -08003086 AC_MSG_RESULT([not found])
Darren Tucker537f1ed2005-10-25 18:38:33 +10003087 ],
3088 [
3089 AC_MSG_WARN([cross compiling: not checking])
3090 ]
3091 )
3092fi
3093
3094
Damien Millera22ba012000-03-02 23:09:20 +11003095# More checks for data types
Damien Millercaf6dd62000-08-29 11:33:50 +11003096AC_CACHE_CHECK([for u_int type], ac_cv_have_u_int, [
Tim Rice648f8762011-01-26 12:38:57 -08003097 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/types.h> ]],
3098 [[ u_int a; a = 1;]])],
3099 [ ac_cv_have_u_int="yes" ], [ ac_cv_have_u_int="no"
3100 ])
Damien Millercaf6dd62000-08-29 11:33:50 +11003101])
3102if test "x$ac_cv_have_u_int" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003103 AC_DEFINE([HAVE_U_INT], [1], [define if you have u_int data type])
Damien Millercaf6dd62000-08-29 11:33:50 +11003104 have_u_int=1
3105fi
3106
Damien Miller61e50f12000-05-08 20:49:37 +10003107AC_CACHE_CHECK([for intXX_t types], ac_cv_have_intxx_t, [
Tim Rice648f8762011-01-26 12:38:57 -08003108 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/types.h> ]],
3109 [[ int8_t a; int16_t b; int32_t c; a = b = c = 1;]])],
3110 [ ac_cv_have_intxx_t="yes" ], [ ac_cv_have_intxx_t="no"
3111 ])
Damien Miller61e50f12000-05-08 20:49:37 +10003112])
3113if test "x$ac_cv_have_intxx_t" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003114 AC_DEFINE([HAVE_INTXX_T], [1], [define if you have intxx_t data type])
Damien Miller61e50f12000-05-08 20:49:37 +10003115 have_intxx_t=1
3116fi
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00003117
3118if (test -z "$have_intxx_t" && \
Damien Millera8e06ce2003-11-21 23:48:55 +11003119 test "x$ac_cv_header_stdint_h" = "xyes")
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00003120then
3121 AC_MSG_CHECKING([for intXX_t types in stdint.h])
Tim Rice648f8762011-01-26 12:38:57 -08003122 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <stdint.h> ]],
3123 [[ int8_t a; int16_t b; int32_t c; a = b = c = 1;]])],
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00003124 [
Tim Rice648f8762011-01-26 12:38:57 -08003125 AC_DEFINE([HAVE_INTXX_T])
3126 AC_MSG_RESULT([yes])
3127 ], [ AC_MSG_RESULT([no])
3128 ])
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00003129fi
3130
Damien Miller578783e2000-09-23 14:12:24 +11003131AC_CACHE_CHECK([for int64_t type], ac_cv_have_int64_t, [
Tim Rice648f8762011-01-26 12:38:57 -08003132 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Tim Rice907881e2002-07-18 11:44:50 -07003133#include <sys/types.h>
3134#ifdef HAVE_STDINT_H
3135# include <stdint.h>
3136#endif
3137#include <sys/socket.h>
3138#ifdef HAVE_SYS_BITYPES_H
3139# include <sys/bitypes.h>
3140#endif
Tim Rice648f8762011-01-26 12:38:57 -08003141 ]], [[
3142int64_t a; a = 1;
3143 ]])],
3144 [ ac_cv_have_int64_t="yes" ], [ ac_cv_have_int64_t="no"
3145 ])
Damien Miller578783e2000-09-23 14:12:24 +11003146])
3147if test "x$ac_cv_have_int64_t" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003148 AC_DEFINE([HAVE_INT64_T], [1], [define if you have int64_t data type])
Tim Rice4cec93f2002-02-26 08:40:48 -08003149fi
3150
Damien Miller61e50f12000-05-08 20:49:37 +10003151AC_CACHE_CHECK([for u_intXX_t types], ac_cv_have_u_intxx_t, [
Tim Rice648f8762011-01-26 12:38:57 -08003152 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/types.h> ]],
3153 [[ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;]])],
3154 [ ac_cv_have_u_intxx_t="yes" ], [ ac_cv_have_u_intxx_t="no"
3155 ])
Damien Miller61e50f12000-05-08 20:49:37 +10003156])
3157if test "x$ac_cv_have_u_intxx_t" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003158 AC_DEFINE([HAVE_U_INTXX_T], [1], [define if you have u_intxx_t data type])
Damien Miller61e50f12000-05-08 20:49:37 +10003159 have_u_intxx_t=1
3160fi
Damien Millerc6398ef1999-11-20 12:18:40 +11003161
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00003162if test -z "$have_u_intxx_t" ; then
3163 AC_MSG_CHECKING([for u_intXX_t types in sys/socket.h])
Tim Rice648f8762011-01-26 12:38:57 -08003164 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/socket.h> ]],
3165 [[ u_int8_t a; u_int16_t b; u_int32_t c; a = b = c = 1;]])],
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00003166 [
Tim Rice648f8762011-01-26 12:38:57 -08003167 AC_DEFINE([HAVE_U_INTXX_T])
3168 AC_MSG_RESULT([yes])
3169 ], [ AC_MSG_RESULT([no])
3170 ])
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00003171fi
3172
Damien Miller578783e2000-09-23 14:12:24 +11003173AC_CACHE_CHECK([for u_int64_t types], ac_cv_have_u_int64_t, [
Tim Rice648f8762011-01-26 12:38:57 -08003174 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/types.h> ]],
3175 [[ u_int64_t a; a = 1;]])],
3176 [ ac_cv_have_u_int64_t="yes" ], [ ac_cv_have_u_int64_t="no"
3177 ])
Damien Miller578783e2000-09-23 14:12:24 +11003178])
3179if test "x$ac_cv_have_u_int64_t" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003180 AC_DEFINE([HAVE_U_INT64_T], [1], [define if you have u_int64_t data type])
Damien Miller578783e2000-09-23 14:12:24 +11003181 have_u_int64_t=1
3182fi
3183
Tim Rice4cec93f2002-02-26 08:40:48 -08003184if test -z "$have_u_int64_t" ; then
3185 AC_MSG_CHECKING([for u_int64_t type in sys/bitypes.h])
Tim Rice648f8762011-01-26 12:38:57 -08003186 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/bitypes.h> ]],
3187 [[ u_int64_t a; a = 1]])],
Tim Rice4cec93f2002-02-26 08:40:48 -08003188 [
Tim Rice648f8762011-01-26 12:38:57 -08003189 AC_DEFINE([HAVE_U_INT64_T])
3190 AC_MSG_RESULT([yes])
3191 ], [ AC_MSG_RESULT([no])
3192 ])
Tim Rice4cec93f2002-02-26 08:40:48 -08003193fi
3194
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00003195if test -z "$have_u_intxx_t" ; then
3196 AC_CACHE_CHECK([for uintXX_t types], ac_cv_have_uintxx_t, [
Tim Rice648f8762011-01-26 12:38:57 -08003197 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00003198#include <sys/types.h>
Tim Rice648f8762011-01-26 12:38:57 -08003199 ]], [[
3200 uint8_t a;
3201 uint16_t b;
3202 uint32_t c;
3203 a = b = c = 1;
3204 ]])],
3205 [ ac_cv_have_uintxx_t="yes" ], [ ac_cv_have_uintxx_t="no"
3206 ])
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00003207 ])
3208 if test "x$ac_cv_have_uintxx_t" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003209 AC_DEFINE([HAVE_UINTXX_T], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07003210 [define if you have uintxx_t data type])
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00003211 fi
3212fi
3213
3214if test -z "$have_uintxx_t" ; then
3215 AC_MSG_CHECKING([for uintXX_t types in stdint.h])
Tim Rice648f8762011-01-26 12:38:57 -08003216 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <stdint.h> ]],
3217 [[ uint8_t a; uint16_t b; uint32_t c; a = b = c = 1;]])],
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00003218 [
Tim Rice648f8762011-01-26 12:38:57 -08003219 AC_DEFINE([HAVE_UINTXX_T])
3220 AC_MSG_RESULT([yes])
3221 ], [ AC_MSG_RESULT([no])
3222 ])
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00003223fi
3224
Damien Milleredb82922000-06-20 13:25:52 +10003225if (test -z "$have_u_intxx_t" || test -z "$have_intxx_t" && \
Damien Millera8e06ce2003-11-21 23:48:55 +11003226 test "x$ac_cv_header_sys_bitypes_h" = "xyes")
Damien Millerb29ea912000-01-15 14:12:03 +11003227then
3228 AC_MSG_CHECKING([for intXX_t and u_intXX_t types in sys/bitypes.h])
Tim Rice648f8762011-01-26 12:38:57 -08003229 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Damien Miller61e50f12000-05-08 20:49:37 +10003230#include <sys/bitypes.h>
Tim Rice648f8762011-01-26 12:38:57 -08003231 ]], [[
Damien Miller70494d12000-04-03 15:57:06 +10003232 int8_t a; int16_t b; int32_t c;
3233 u_int8_t e; u_int16_t f; u_int32_t g;
3234 a = b = c = e = f = g = 1;
Tim Rice648f8762011-01-26 12:38:57 -08003235 ]])],
Damien Millerb29ea912000-01-15 14:12:03 +11003236 [
Tim Rice648f8762011-01-26 12:38:57 -08003237 AC_DEFINE([HAVE_U_INTXX_T])
3238 AC_DEFINE([HAVE_INTXX_T])
3239 AC_MSG_RESULT([yes])
3240 ], [AC_MSG_RESULT([no])
3241 ])
Damien Millerb29ea912000-01-15 14:12:03 +11003242fi
3243
Damien Miller58be7382001-09-15 21:31:54 +10003244
3245AC_CACHE_CHECK([for u_char], ac_cv_have_u_char, [
Tim Rice648f8762011-01-26 12:38:57 -08003246 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/types.h> ]],
3247 [[ u_char foo; foo = 125; ]])],
3248 [ ac_cv_have_u_char="yes" ], [ ac_cv_have_u_char="no"
3249 ])
Damien Miller58be7382001-09-15 21:31:54 +10003250])
3251if test "x$ac_cv_have_u_char" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003252 AC_DEFINE([HAVE_U_CHAR], [1], [define if you have u_char data type])
Damien Miller58be7382001-09-15 21:31:54 +10003253fi
3254
Darren Tucker007e3b32013-11-03 18:43:55 +11003255AC_CHECK_TYPES([intmax_t, uintmax_t], , , [
3256#include <sys/types.h>
3257#include <stdint.h>
3258])
3259
Tim Rice13aae5e2001-10-21 17:53:58 -07003260TYPE_SOCKLEN_T
Damien Miller74d0d4a1999-12-29 02:24:35 +11003261
Tim Rice648f8762011-01-26 12:38:57 -08003262AC_CHECK_TYPES([sig_atomic_t], , , [#include <signal.h>])
3263AC_CHECK_TYPES([fsblkcnt_t, fsfilcnt_t], , , [
Darren Tucker598eaa62008-06-09 03:32:29 +10003264#include <sys/types.h>
3265#ifdef HAVE_SYS_BITYPES_H
3266#include <sys/bitypes.h>
3267#endif
3268#ifdef HAVE_SYS_STATFS_H
3269#include <sys/statfs.h>
3270#endif
3271#ifdef HAVE_SYS_STATVFS_H
3272#include <sys/statvfs.h>
3273#endif
3274])
Tim Rice4cec93f2002-02-26 08:40:48 -08003275
Tim Rice648f8762011-01-26 12:38:57 -08003276AC_CHECK_TYPES([in_addr_t, in_port_t], , ,
Damien Miller848b9932005-02-24 12:12:34 +11003277[#include <sys/types.h>
3278#include <netinet/in.h>])
Darren Tuckerd9f88912005-02-20 21:01:48 +11003279
Damien Miller61e50f12000-05-08 20:49:37 +10003280AC_CACHE_CHECK([for size_t], ac_cv_have_size_t, [
Tim Rice648f8762011-01-26 12:38:57 -08003281 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/types.h> ]],
3282 [[ size_t foo; foo = 1235; ]])],
3283 [ ac_cv_have_size_t="yes" ], [ ac_cv_have_size_t="no"
3284 ])
Damien Miller61e50f12000-05-08 20:49:37 +10003285])
3286if test "x$ac_cv_have_size_t" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003287 AC_DEFINE([HAVE_SIZE_T], [1], [define if you have size_t data type])
Damien Miller61e50f12000-05-08 20:49:37 +10003288fi
Damien Miller95058511999-12-29 10:36:45 +11003289
Damien Miller615f9392000-05-17 22:53:33 +10003290AC_CACHE_CHECK([for ssize_t], ac_cv_have_ssize_t, [
Tim Rice648f8762011-01-26 12:38:57 -08003291 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/types.h> ]],
3292 [[ ssize_t foo; foo = 1235; ]])],
3293 [ ac_cv_have_ssize_t="yes" ], [ ac_cv_have_ssize_t="no"
3294 ])
Damien Miller615f9392000-05-17 22:53:33 +10003295])
3296if test "x$ac_cv_have_ssize_t" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003297 AC_DEFINE([HAVE_SSIZE_T], [1], [define if you have ssize_t data type])
Damien Miller615f9392000-05-17 22:53:33 +10003298fi
3299
Ben Lindstrom0d5af602001-01-09 00:50:29 +00003300AC_CACHE_CHECK([for clock_t], ac_cv_have_clock_t, [
Tim Rice648f8762011-01-26 12:38:57 -08003301 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <time.h> ]],
3302 [[ clock_t foo; foo = 1235; ]])],
3303 [ ac_cv_have_clock_t="yes" ], [ ac_cv_have_clock_t="no"
3304 ])
Ben Lindstrom0d5af602001-01-09 00:50:29 +00003305])
3306if test "x$ac_cv_have_clock_t" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003307 AC_DEFINE([HAVE_CLOCK_T], [1], [define if you have clock_t data type])
Ben Lindstrom0d5af602001-01-09 00:50:29 +00003308fi
3309
Damien Millerb54b40e2000-06-23 08:23:34 +10003310AC_CACHE_CHECK([for sa_family_t], ac_cv_have_sa_family_t, [
Tim Rice648f8762011-01-26 12:38:57 -08003311 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Damien Millerb54b40e2000-06-23 08:23:34 +10003312#include <sys/types.h>
3313#include <sys/socket.h>
Tim Rice648f8762011-01-26 12:38:57 -08003314 ]], [[ sa_family_t foo; foo = 1235; ]])],
3315 [ ac_cv_have_sa_family_t="yes" ],
3316 [ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Damien Miller78315eb2000-09-29 23:01:36 +11003317#include <sys/types.h>
3318#include <sys/socket.h>
3319#include <netinet/in.h>
Tim Rice648f8762011-01-26 12:38:57 -08003320 ]], [[ sa_family_t foo; foo = 1235; ]])],
Damien Miller78315eb2000-09-29 23:01:36 +11003321 [ ac_cv_have_sa_family_t="yes" ],
Damien Millerb54b40e2000-06-23 08:23:34 +10003322 [ ac_cv_have_sa_family_t="no" ]
3323 )
Tim Rice648f8762011-01-26 12:38:57 -08003324 ])
Damien Millerb54b40e2000-06-23 08:23:34 +10003325])
3326if test "x$ac_cv_have_sa_family_t" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003327 AC_DEFINE([HAVE_SA_FAMILY_T], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07003328 [define if you have sa_family_t data type])
Damien Millerb54b40e2000-06-23 08:23:34 +10003329fi
3330
Damien Miller0f91b4e2000-06-18 15:43:25 +10003331AC_CACHE_CHECK([for pid_t], ac_cv_have_pid_t, [
Tim Rice648f8762011-01-26 12:38:57 -08003332 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/types.h> ]],
3333 [[ pid_t foo; foo = 1235; ]])],
3334 [ ac_cv_have_pid_t="yes" ], [ ac_cv_have_pid_t="no"
3335 ])
Damien Miller0f91b4e2000-06-18 15:43:25 +10003336])
3337if test "x$ac_cv_have_pid_t" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003338 AC_DEFINE([HAVE_PID_T], [1], [define if you have pid_t data type])
Damien Miller0f91b4e2000-06-18 15:43:25 +10003339fi
3340
3341AC_CACHE_CHECK([for mode_t], ac_cv_have_mode_t, [
Tim Rice648f8762011-01-26 12:38:57 -08003342 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/types.h> ]],
3343 [[ mode_t foo; foo = 1235; ]])],
3344 [ ac_cv_have_mode_t="yes" ], [ ac_cv_have_mode_t="no"
3345 ])
Damien Miller0f91b4e2000-06-18 15:43:25 +10003346])
3347if test "x$ac_cv_have_mode_t" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003348 AC_DEFINE([HAVE_MODE_T], [1], [define if you have mode_t data type])
Damien Miller0f91b4e2000-06-18 15:43:25 +10003349fi
3350
Damien Miller61e50f12000-05-08 20:49:37 +10003351
3352AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_have_struct_sockaddr_storage, [
Tim Rice648f8762011-01-26 12:38:57 -08003353 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Damien Miller81171112000-04-23 11:14:01 +10003354#include <sys/types.h>
3355#include <sys/socket.h>
Tim Rice648f8762011-01-26 12:38:57 -08003356 ]], [[ struct sockaddr_storage s; ]])],
3357 [ ac_cv_have_struct_sockaddr_storage="yes" ],
3358 [ ac_cv_have_struct_sockaddr_storage="no"
3359 ])
Damien Miller61e50f12000-05-08 20:49:37 +10003360])
3361if test "x$ac_cv_have_struct_sockaddr_storage" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003362 AC_DEFINE([HAVE_STRUCT_SOCKADDR_STORAGE], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07003363 [define if you have struct sockaddr_storage data type])
Damien Miller61e50f12000-05-08 20:49:37 +10003364fi
Damien Miller34132e52000-01-14 15:45:46 +11003365
Damien Miller61e50f12000-05-08 20:49:37 +10003366AC_CACHE_CHECK([for struct sockaddr_in6], ac_cv_have_struct_sockaddr_in6, [
Tim Rice648f8762011-01-26 12:38:57 -08003367 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Damien Miller7b22d652000-06-18 14:07:04 +10003368#include <sys/types.h>
Damien Miller61e50f12000-05-08 20:49:37 +10003369#include <netinet/in.h>
Tim Rice648f8762011-01-26 12:38:57 -08003370 ]], [[ struct sockaddr_in6 s; s.sin6_family = 0; ]])],
3371 [ ac_cv_have_struct_sockaddr_in6="yes" ],
3372 [ ac_cv_have_struct_sockaddr_in6="no"
3373 ])
Damien Miller61e50f12000-05-08 20:49:37 +10003374])
3375if test "x$ac_cv_have_struct_sockaddr_in6" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003376 AC_DEFINE([HAVE_STRUCT_SOCKADDR_IN6], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07003377 [define if you have struct sockaddr_in6 data type])
Damien Miller61e50f12000-05-08 20:49:37 +10003378fi
Damien Miller34132e52000-01-14 15:45:46 +11003379
Damien Miller61e50f12000-05-08 20:49:37 +10003380AC_CACHE_CHECK([for struct in6_addr], ac_cv_have_struct_in6_addr, [
Tim Rice648f8762011-01-26 12:38:57 -08003381 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Damien Miller7b22d652000-06-18 14:07:04 +10003382#include <sys/types.h>
Damien Miller61e50f12000-05-08 20:49:37 +10003383#include <netinet/in.h>
Tim Rice648f8762011-01-26 12:38:57 -08003384 ]], [[ struct in6_addr s; s.s6_addr[0] = 0; ]])],
3385 [ ac_cv_have_struct_in6_addr="yes" ],
3386 [ ac_cv_have_struct_in6_addr="no"
3387 ])
Damien Miller61e50f12000-05-08 20:49:37 +10003388])
3389if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003390 AC_DEFINE([HAVE_STRUCT_IN6_ADDR], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07003391 [define if you have struct in6_addr data type])
Tim Rice0f4d2c02008-11-18 21:26:41 -08003392
3393dnl Now check for sin6_scope_id
Tim Rice648f8762011-01-26 12:38:57 -08003394 AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id], , ,
Tim Rice0f4d2c02008-11-18 21:26:41 -08003395 [
3396#ifdef HAVE_SYS_TYPES_H
3397#include <sys/types.h>
3398#endif
3399#include <netinet/in.h>
3400 ])
Damien Miller61e50f12000-05-08 20:49:37 +10003401fi
Damien Miller34132e52000-01-14 15:45:46 +11003402
Damien Miller61e50f12000-05-08 20:49:37 +10003403AC_CACHE_CHECK([for struct addrinfo], ac_cv_have_struct_addrinfo, [
Tim Rice648f8762011-01-26 12:38:57 -08003404 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Damien Miller81171112000-04-23 11:14:01 +10003405#include <sys/types.h>
3406#include <sys/socket.h>
3407#include <netdb.h>
Tim Rice648f8762011-01-26 12:38:57 -08003408 ]], [[ struct addrinfo s; s.ai_flags = AI_PASSIVE; ]])],
3409 [ ac_cv_have_struct_addrinfo="yes" ],
3410 [ ac_cv_have_struct_addrinfo="no"
3411 ])
Damien Miller61e50f12000-05-08 20:49:37 +10003412])
3413if test "x$ac_cv_have_struct_addrinfo" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003414 AC_DEFINE([HAVE_STRUCT_ADDRINFO], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07003415 [define if you have struct addrinfo data type])
Damien Miller61e50f12000-05-08 20:49:37 +10003416fi
3417
Ben Lindstrom42202bc2001-01-15 02:34:37 +00003418AC_CACHE_CHECK([for struct timeval], ac_cv_have_struct_timeval, [
Tim Rice648f8762011-01-26 12:38:57 -08003419 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <sys/time.h> ]],
3420 [[ struct timeval tv; tv.tv_sec = 1;]])],
3421 [ ac_cv_have_struct_timeval="yes" ],
3422 [ ac_cv_have_struct_timeval="no"
3423 ])
Ben Lindstrom42202bc2001-01-15 02:34:37 +00003424])
3425if test "x$ac_cv_have_struct_timeval" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003426 AC_DEFINE([HAVE_STRUCT_TIMEVAL], [1], [define if you have struct timeval])
Ben Lindstrom42202bc2001-01-15 02:34:37 +00003427 have_struct_timeval=1
3428fi
3429
Tim Rice648f8762011-01-26 12:38:57 -08003430AC_CHECK_TYPES([struct timespec])
Tim Rice4e4dc562003-03-18 10:21:40 -08003431
Ben Lindstrom5bd6eb72003-03-21 00:34:34 +00003432# We need int64_t or else certian parts of the compile will fail.
Tim Rice8bb561b2005-03-17 16:23:19 -08003433if test "x$ac_cv_have_int64_t" = "xno" && \
3434 test "x$ac_cv_sizeof_long_int" != "x8" && \
3435 test "x$ac_cv_sizeof_long_long_int" = "x0" ; then
Ben Lindstrom5bd6eb72003-03-21 00:34:34 +00003436 echo "OpenSSH requires int64_t support. Contact your vendor or install"
3437 echo "an alternative compiler (I.E., GCC) before continuing."
3438 echo ""
3439 exit 1;
Tim Ricebee3f222001-03-11 17:32:12 -08003440else
3441dnl test snprintf (broken on SCO w/gcc)
Darren Tuckera0c2b392004-09-11 23:26:37 +10003442 AC_RUN_IFELSE(
Darren Tucker623d92f2004-09-12 22:36:15 +10003443 [AC_LANG_SOURCE([[
Tim Ricebee3f222001-03-11 17:32:12 -08003444#include <stdio.h>
3445#include <string.h>
3446#ifdef HAVE_SNPRINTF
3447main()
3448{
3449 char buf[50];
3450 char expected_out[50];
3451 int mazsize = 50 ;
3452#if (SIZEOF_LONG_INT == 8)
3453 long int num = 0x7fffffffffffffff;
3454#else
Kevin Steves6482ec82001-07-15 02:09:28 +00003455 long long num = 0x7fffffffffffffffll;
Tim Ricebee3f222001-03-11 17:32:12 -08003456#endif
3457 strcpy(expected_out, "9223372036854775807");
3458 snprintf(buf, mazsize, "%lld", num);
3459 if(strcmp(buf, expected_out) != 0)
Damien Millera8e06ce2003-11-21 23:48:55 +11003460 exit(1);
Tim Ricebee3f222001-03-11 17:32:12 -08003461 exit(0);
3462}
3463#else
3464main() { exit(0); }
3465#endif
Tim Rice648f8762011-01-26 12:38:57 -08003466 ]])], [ true ], [ AC_DEFINE([BROKEN_SNPRINTF]) ],
Darren Tuckera0c2b392004-09-11 23:26:37 +10003467 AC_MSG_WARN([cross compiling: Assuming working snprintf()])
Tim Ricebee3f222001-03-11 17:32:12 -08003468 )
Ben Lindstrom3ad650a2001-01-03 06:02:51 +00003469fi
3470
Damien Miller78315eb2000-09-29 23:01:36 +11003471dnl Checks for structure members
Tim Rice648f8762011-01-26 12:38:57 -08003472OSSH_CHECK_HEADER_FOR_FIELD([ut_host], [utmp.h], [HAVE_HOST_IN_UTMP])
3473OSSH_CHECK_HEADER_FOR_FIELD([ut_host], [utmpx.h], [HAVE_HOST_IN_UTMPX])
3474OSSH_CHECK_HEADER_FOR_FIELD([syslen], [utmpx.h], [HAVE_SYSLEN_IN_UTMPX])
3475OSSH_CHECK_HEADER_FOR_FIELD([ut_pid], [utmp.h], [HAVE_PID_IN_UTMP])
3476OSSH_CHECK_HEADER_FOR_FIELD([ut_type], [utmp.h], [HAVE_TYPE_IN_UTMP])
3477OSSH_CHECK_HEADER_FOR_FIELD([ut_type], [utmpx.h], [HAVE_TYPE_IN_UTMPX])
3478OSSH_CHECK_HEADER_FOR_FIELD([ut_tv], [utmp.h], [HAVE_TV_IN_UTMP])
3479OSSH_CHECK_HEADER_FOR_FIELD([ut_id], [utmp.h], [HAVE_ID_IN_UTMP])
3480OSSH_CHECK_HEADER_FOR_FIELD([ut_id], [utmpx.h], [HAVE_ID_IN_UTMPX])
3481OSSH_CHECK_HEADER_FOR_FIELD([ut_addr], [utmp.h], [HAVE_ADDR_IN_UTMP])
3482OSSH_CHECK_HEADER_FOR_FIELD([ut_addr], [utmpx.h], [HAVE_ADDR_IN_UTMPX])
3483OSSH_CHECK_HEADER_FOR_FIELD([ut_addr_v6], [utmp.h], [HAVE_ADDR_V6_IN_UTMP])
3484OSSH_CHECK_HEADER_FOR_FIELD([ut_addr_v6], [utmpx.h], [HAVE_ADDR_V6_IN_UTMPX])
3485OSSH_CHECK_HEADER_FOR_FIELD([ut_exit], [utmp.h], [HAVE_EXIT_IN_UTMP])
3486OSSH_CHECK_HEADER_FOR_FIELD([ut_time], [utmp.h], [HAVE_TIME_IN_UTMP])
3487OSSH_CHECK_HEADER_FOR_FIELD([ut_time], [utmpx.h], [HAVE_TIME_IN_UTMPX])
3488OSSH_CHECK_HEADER_FOR_FIELD([ut_tv], [utmpx.h], [HAVE_TV_IN_UTMPX])
Tim Rice13aae5e2001-10-21 17:53:58 -07003489
3490AC_CHECK_MEMBERS([struct stat.st_blksize])
Damien Miller6332da22013-04-23 14:25:52 +10003491AC_CHECK_MEMBERS([struct passwd.pw_gecos, struct passwd.pw_class,
3492struct passwd.pw_change, struct passwd.pw_expire],
3493[], [], [[
3494#include <sys/types.h>
3495#include <pwd.h>
3496]])
3497
Tim Rice648f8762011-01-26 12:38:57 -08003498AC_CHECK_MEMBER([struct __res_state.retrans], [], [AC_DEFINE([__res_state], [state],
Darren Tucker58e298d2005-11-25 13:14:58 +11003499 [Define if we don't have struct __res_state in resolv.h])],
Damien Miller6332da22013-04-23 14:25:52 +10003500[[
Darren Tucker58e298d2005-11-25 13:14:58 +11003501#include <stdio.h>
3502#if HAVE_SYS_TYPES_H
3503# include <sys/types.h>
3504#endif
3505#include <netinet/in.h>
3506#include <arpa/nameser.h>
3507#include <resolv.h>
Damien Miller6332da22013-04-23 14:25:52 +10003508]])
andre2ff7b5d2000-06-03 14:57:40 +00003509
Damien Miller61e50f12000-05-08 20:49:37 +10003510AC_CACHE_CHECK([for ss_family field in struct sockaddr_storage],
3511 ac_cv_have_ss_family_in_struct_ss, [
Tim Rice648f8762011-01-26 12:38:57 -08003512 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Damien Miller81171112000-04-23 11:14:01 +10003513#include <sys/types.h>
3514#include <sys/socket.h>
Tim Rice648f8762011-01-26 12:38:57 -08003515 ]], [[ struct sockaddr_storage s; s.ss_family = 1; ]])],
3516 [ ac_cv_have_ss_family_in_struct_ss="yes" ],
3517 [ ac_cv_have_ss_family_in_struct_ss="no" ])
Damien Miller61e50f12000-05-08 20:49:37 +10003518])
3519if test "x$ac_cv_have_ss_family_in_struct_ss" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003520 AC_DEFINE([HAVE_SS_FAMILY_IN_SS], [1], [Fields in struct sockaddr_storage])
Damien Miller61e50f12000-05-08 20:49:37 +10003521fi
3522
Damien Miller61e50f12000-05-08 20:49:37 +10003523AC_CACHE_CHECK([for __ss_family field in struct sockaddr_storage],
3524 ac_cv_have___ss_family_in_struct_ss, [
Tim Rice648f8762011-01-26 12:38:57 -08003525 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Damien Miller81171112000-04-23 11:14:01 +10003526#include <sys/types.h>
3527#include <sys/socket.h>
Tim Rice648f8762011-01-26 12:38:57 -08003528 ]], [[ struct sockaddr_storage s; s.__ss_family = 1; ]])],
3529 [ ac_cv_have___ss_family_in_struct_ss="yes" ],
3530 [ ac_cv_have___ss_family_in_struct_ss="no"
3531 ])
Damien Miller61e50f12000-05-08 20:49:37 +10003532])
3533if test "x$ac_cv_have___ss_family_in_struct_ss" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003534 AC_DEFINE([HAVE___SS_FAMILY_IN_SS], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07003535 [Fields in struct sockaddr_storage])
Damien Miller61e50f12000-05-08 20:49:37 +10003536fi
Damien Millerbf1c9b21999-12-09 10:16:54 +11003537
Tim Rice28bbb0c2002-05-27 17:37:32 -07003538dnl make sure we're using the real structure members and not defines
Kevin Steves939c9db2002-03-22 17:23:25 +00003539AC_CACHE_CHECK([for msg_accrights field in struct msghdr],
3540 ac_cv_have_accrights_in_msghdr, [
Tim Rice648f8762011-01-26 12:38:57 -08003541 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Tim Riceae49fe62002-04-12 10:26:21 -07003542#include <sys/types.h>
Kevin Steves939c9db2002-03-22 17:23:25 +00003543#include <sys/socket.h>
3544#include <sys/uio.h>
Tim Rice648f8762011-01-26 12:38:57 -08003545 ]], [[
Tim Rice28bbb0c2002-05-27 17:37:32 -07003546#ifdef msg_accrights
Darren Tuckera0c2b392004-09-11 23:26:37 +10003547#error "msg_accrights is a macro"
Tim Rice28bbb0c2002-05-27 17:37:32 -07003548exit(1);
3549#endif
3550struct msghdr m;
3551m.msg_accrights = 0;
3552exit(0);
Tim Rice648f8762011-01-26 12:38:57 -08003553 ]])],
Kevin Steves939c9db2002-03-22 17:23:25 +00003554 [ ac_cv_have_accrights_in_msghdr="yes" ],
3555 [ ac_cv_have_accrights_in_msghdr="no" ]
3556 )
3557])
3558if test "x$ac_cv_have_accrights_in_msghdr" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003559 AC_DEFINE([HAVE_ACCRIGHTS_IN_MSGHDR], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07003560 [Define if your system uses access rights style
3561 file descriptor passing])
Kevin Steves939c9db2002-03-22 17:23:25 +00003562fi
3563
Tim Rice648f8762011-01-26 12:38:57 -08003564AC_MSG_CHECKING([if struct statvfs.f_fsid is integral type])
3565AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Darren Tuckere1a3ddf2012-05-04 11:05:45 +10003566#include <sys/param.h>
Darren Tucker32780622009-06-16 16:11:02 +10003567#include <sys/stat.h>
3568#ifdef HAVE_SYS_TIME_H
3569# include <sys/time.h>
3570#endif
3571#ifdef HAVE_SYS_MOUNT_H
3572#include <sys/mount.h>
3573#endif
3574#ifdef HAVE_SYS_STATVFS_H
3575#include <sys/statvfs.h>
3576#endif
Tim Rice648f8762011-01-26 12:38:57 -08003577 ]], [[ struct statvfs s; s.f_fsid = 0; ]])],
3578 [ AC_MSG_RESULT([yes]) ],
3579 [ AC_MSG_RESULT([no])
Darren Tucker32780622009-06-16 16:11:02 +10003580
Tim Rice648f8762011-01-26 12:38:57 -08003581 AC_MSG_CHECKING([if fsid_t has member val])
3582 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Darren Tucker32780622009-06-16 16:11:02 +10003583#include <sys/types.h>
Tim Rice648f8762011-01-26 12:38:57 -08003584#include <sys/statvfs.h>
3585 ]], [[ fsid_t t; t.val[0] = 0; ]])],
3586 [ AC_MSG_RESULT([yes])
3587 AC_DEFINE([FSID_HAS_VAL], [1], [fsid_t has member val]) ],
3588 [ AC_MSG_RESULT([no]) ])
Darren Tucker32780622009-06-16 16:11:02 +10003589
Tim Rice648f8762011-01-26 12:38:57 -08003590 AC_MSG_CHECKING([if f_fsid has member __val])
3591 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Darren Tucker32780622009-06-16 16:11:02 +10003592#include <sys/types.h>
Tim Rice648f8762011-01-26 12:38:57 -08003593#include <sys/statvfs.h>
3594 ]], [[ fsid_t t; t.__val[0] = 0; ]])],
3595 [ AC_MSG_RESULT([yes])
3596 AC_DEFINE([FSID_HAS___VAL], [1], [fsid_t has member __val]) ],
3597 [ AC_MSG_RESULT([no]) ])
Darren Tucker32780622009-06-16 16:11:02 +10003598])
Darren Tucker77001382008-06-09 06:17:53 +10003599
Kevin Stevesa44e0352002-04-07 16:18:03 +00003600AC_CACHE_CHECK([for msg_control field in struct msghdr],
3601 ac_cv_have_control_in_msghdr, [
Tim Rice648f8762011-01-26 12:38:57 -08003602 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Tim Riceae49fe62002-04-12 10:26:21 -07003603#include <sys/types.h>
Kevin Stevesa44e0352002-04-07 16:18:03 +00003604#include <sys/socket.h>
3605#include <sys/uio.h>
Tim Rice648f8762011-01-26 12:38:57 -08003606 ]], [[
Tim Rice28bbb0c2002-05-27 17:37:32 -07003607#ifdef msg_control
Darren Tuckera0c2b392004-09-11 23:26:37 +10003608#error "msg_control is a macro"
Tim Rice28bbb0c2002-05-27 17:37:32 -07003609exit(1);
3610#endif
3611struct msghdr m;
3612m.msg_control = 0;
3613exit(0);
Tim Rice648f8762011-01-26 12:38:57 -08003614 ]])],
Kevin Stevesa44e0352002-04-07 16:18:03 +00003615 [ ac_cv_have_control_in_msghdr="yes" ],
3616 [ ac_cv_have_control_in_msghdr="no" ]
3617 )
3618])
3619if test "x$ac_cv_have_control_in_msghdr" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003620 AC_DEFINE([HAVE_CONTROL_IN_MSGHDR], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07003621 [Define if your system uses ancillary data style
3622 file descriptor passing])
Kevin Stevesa44e0352002-04-07 16:18:03 +00003623fi
3624
Damien Miller61e50f12000-05-08 20:49:37 +10003625AC_CACHE_CHECK([if libc defines __progname], ac_cv_libc_defines___progname, [
Tim Rice648f8762011-01-26 12:38:57 -08003626 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
3627 [[ extern char *__progname; printf("%s", __progname); ]])],
3628 [ ac_cv_libc_defines___progname="yes" ],
3629 [ ac_cv_libc_defines___progname="no"
3630 ])
Damien Miller61e50f12000-05-08 20:49:37 +10003631])
3632if test "x$ac_cv_libc_defines___progname" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003633 AC_DEFINE([HAVE___PROGNAME], [1], [Define if libc defines __progname])
Damien Miller61e50f12000-05-08 20:49:37 +10003634fi
3635
Kevin Steves4846f4a2002-03-22 18:19:53 +00003636AC_CACHE_CHECK([whether $CC implements __FUNCTION__], ac_cv_cc_implements___FUNCTION__, [
Tim Rice648f8762011-01-26 12:38:57 -08003637 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> ]],
3638 [[ printf("%s", __FUNCTION__); ]])],
3639 [ ac_cv_cc_implements___FUNCTION__="yes" ],
3640 [ ac_cv_cc_implements___FUNCTION__="no"
3641 ])
Kevin Steves4846f4a2002-03-22 18:19:53 +00003642])
3643if test "x$ac_cv_cc_implements___FUNCTION__" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003644 AC_DEFINE([HAVE___FUNCTION__], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07003645 [Define if compiler implements __FUNCTION__])
Kevin Steves4846f4a2002-03-22 18:19:53 +00003646fi
3647
3648AC_CACHE_CHECK([whether $CC implements __func__], ac_cv_cc_implements___func__, [
Tim Rice648f8762011-01-26 12:38:57 -08003649 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> ]],
3650 [[ printf("%s", __func__); ]])],
3651 [ ac_cv_cc_implements___func__="yes" ],
3652 [ ac_cv_cc_implements___func__="no"
3653 ])
Kevin Steves4846f4a2002-03-22 18:19:53 +00003654])
3655if test "x$ac_cv_cc_implements___func__" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003656 AC_DEFINE([HAVE___func__], [1], [Define if compiler implements __func__])
Kevin Steves4846f4a2002-03-22 18:19:53 +00003657fi
3658
Damien Miller57f39152005-11-24 19:58:19 +11003659AC_CACHE_CHECK([whether va_copy exists], ac_cv_have_va_copy, [
Tim Rice648f8762011-01-26 12:38:57 -08003660 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
3661#include <stdarg.h>
3662va_list x,y;
3663 ]], [[ va_copy(x,y); ]])],
3664 [ ac_cv_have_va_copy="yes" ],
3665 [ ac_cv_have_va_copy="no"
3666 ])
Damien Miller57f39152005-11-24 19:58:19 +11003667])
3668if test "x$ac_cv_have_va_copy" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003669 AC_DEFINE([HAVE_VA_COPY], [1], [Define if va_copy exists])
Damien Miller57f39152005-11-24 19:58:19 +11003670fi
3671
3672AC_CACHE_CHECK([whether __va_copy exists], ac_cv_have___va_copy, [
Tim Rice648f8762011-01-26 12:38:57 -08003673 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
3674#include <stdarg.h>
3675va_list x,y;
3676 ]], [[ __va_copy(x,y); ]])],
3677 [ ac_cv_have___va_copy="yes" ], [ ac_cv_have___va_copy="no"
3678 ])
Damien Miller57f39152005-11-24 19:58:19 +11003679])
3680if test "x$ac_cv_have___va_copy" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003681 AC_DEFINE([HAVE___VA_COPY], [1], [Define if __va_copy exists])
Damien Miller57f39152005-11-24 19:58:19 +11003682fi
3683
Damien Miller4f8e6692001-07-14 13:22:53 +10003684AC_CACHE_CHECK([whether getopt has optreset support],
3685 ac_cv_have_getopt_optreset, [
Tim Rice648f8762011-01-26 12:38:57 -08003686 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include <getopt.h> ]],
3687 [[ extern int optreset; optreset = 0; ]])],
3688 [ ac_cv_have_getopt_optreset="yes" ],
3689 [ ac_cv_have_getopt_optreset="no"
3690 ])
Damien Miller4f8e6692001-07-14 13:22:53 +10003691])
3692if test "x$ac_cv_have_getopt_optreset" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003693 AC_DEFINE([HAVE_GETOPT_OPTRESET], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07003694 [Define if your getopt(3) defines and uses optreset])
Damien Miller4f8e6692001-07-14 13:22:53 +10003695fi
Damien Millera22ba012000-03-02 23:09:20 +11003696
Damien Millerecbb26d2000-07-15 14:59:14 +10003697AC_CACHE_CHECK([if libc defines sys_errlist], ac_cv_libc_defines_sys_errlist, [
Tim Rice648f8762011-01-26 12:38:57 -08003698 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
3699[[ extern const char *const sys_errlist[]; printf("%s", sys_errlist[0]);]])],
3700 [ ac_cv_libc_defines_sys_errlist="yes" ],
3701 [ ac_cv_libc_defines_sys_errlist="no"
3702 ])
Damien Millerecbb26d2000-07-15 14:59:14 +10003703])
3704if test "x$ac_cv_libc_defines_sys_errlist" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003705 AC_DEFINE([HAVE_SYS_ERRLIST], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07003706 [Define if your system defines sys_errlist[]])
Damien Millerecbb26d2000-07-15 14:59:14 +10003707fi
3708
3709
Damien Miller11fa2cc2000-08-16 10:35:58 +10003710AC_CACHE_CHECK([if libc defines sys_nerr], ac_cv_libc_defines_sys_nerr, [
Tim Rice648f8762011-01-26 12:38:57 -08003711 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
3712[[ extern int sys_nerr; printf("%i", sys_nerr);]])],
3713 [ ac_cv_libc_defines_sys_nerr="yes" ],
3714 [ ac_cv_libc_defines_sys_nerr="no"
3715 ])
Damien Miller11fa2cc2000-08-16 10:35:58 +10003716])
3717if test "x$ac_cv_libc_defines_sys_nerr" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08003718 AC_DEFINE([HAVE_SYS_NERR], [1], [Define if your system defines sys_nerr])
Damien Miller11fa2cc2000-08-16 10:35:58 +10003719fi
3720
Darren Tucker5f88d342003-10-15 16:57:57 +10003721# Check libraries needed by DNS fingerprint support
Tim Rice648f8762011-01-26 12:38:57 -08003722AC_SEARCH_LIBS([getrrsetbyname], [resolv],
3723 [AC_DEFINE([HAVE_GETRRSETBYNAME], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07003724 [Define if getrrsetbyname() exists])],
Damien Miller7abe09b2003-05-15 10:53:49 +10003725 [
Darren Tucker5f88d342003-10-15 16:57:57 +10003726 # Needed by our getrrsetbyname()
Tim Rice648f8762011-01-26 12:38:57 -08003727 AC_SEARCH_LIBS([res_query], [resolv])
3728 AC_SEARCH_LIBS([dn_expand], [resolv])
3729 AC_MSG_CHECKING([if res_query will link])
3730 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Darren Tuckere02b49a2009-09-11 14:56:08 +10003731#include <sys/types.h>
3732#include <netinet/in.h>
3733#include <arpa/nameser.h>
3734#include <netdb.h>
3735#include <resolv.h>
Tim Rice648f8762011-01-26 12:38:57 -08003736 ]], [[
Darren Tuckere02b49a2009-09-11 14:56:08 +10003737 res_query (0, 0, 0, 0, 0);
Tim Rice648f8762011-01-26 12:38:57 -08003738 ]])],
3739 AC_MSG_RESULT([yes]),
3740 [AC_MSG_RESULT([no])
Darren Tucker8e968a52004-05-13 11:56:16 +10003741 saved_LIBS="$LIBS"
3742 LIBS="$LIBS -lresolv"
Tim Rice648f8762011-01-26 12:38:57 -08003743 AC_MSG_CHECKING([for res_query in -lresolv])
3744 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Darren Tuckere02b49a2009-09-11 14:56:08 +10003745#include <sys/types.h>
3746#include <netinet/in.h>
3747#include <arpa/nameser.h>
3748#include <netdb.h>
Darren Tucker8e968a52004-05-13 11:56:16 +10003749#include <resolv.h>
Tim Rice648f8762011-01-26 12:38:57 -08003750 ]], [[
Darren Tucker8e968a52004-05-13 11:56:16 +10003751 res_query (0, 0, 0, 0, 0);
Tim Rice648f8762011-01-26 12:38:57 -08003752 ]])],
3753 [AC_MSG_RESULT([yes])],
Darren Tucker8e968a52004-05-13 11:56:16 +10003754 [LIBS="$saved_LIBS"
Tim Rice648f8762011-01-26 12:38:57 -08003755 AC_MSG_RESULT([no])])
Darren Tucker8e968a52004-05-13 11:56:16 +10003756 ])
Tim Rice648f8762011-01-26 12:38:57 -08003757 AC_CHECK_FUNCS([_getshort _getlong])
Darren Tuckerd886e1c2005-06-01 18:57:45 +10003758 AC_CHECK_DECLS([_getshort, _getlong], , ,
Tim Ricefcc7ff12005-06-02 20:28:29 -07003759 [#include <sys/types.h>
3760 #include <arpa/nameser.h>])
Tim Rice648f8762011-01-26 12:38:57 -08003761 AC_CHECK_MEMBER([HEADER.ad],
3762 [AC_DEFINE([HAVE_HEADER_AD], [1],
3763 [Define if HEADER.ad exists in arpa/nameser.h])], ,
Darren Tucker5f88d342003-10-15 16:57:57 +10003764 [#include <arpa/nameser.h>])
3765 ])
Damien Miller7abe09b2003-05-15 10:53:49 +10003766
Tim Rice648f8762011-01-26 12:38:57 -08003767AC_MSG_CHECKING([if struct __res_state _res is an extern])
3768AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Darren Tuckercc40d5e2007-04-29 13:58:06 +10003769#include <stdio.h>
3770#if HAVE_SYS_TYPES_H
3771# include <sys/types.h>
3772#endif
3773#include <netinet/in.h>
3774#include <arpa/nameser.h>
3775#include <resolv.h>
3776extern struct __res_state _res;
Tim Rice648f8762011-01-26 12:38:57 -08003777 ]], [[ ]])],
3778 [AC_MSG_RESULT([yes])
3779 AC_DEFINE([HAVE__RES_EXTERN], [1],
Darren Tuckercc40d5e2007-04-29 13:58:06 +10003780 [Define if you have struct __res_state _res as an extern])
3781 ],
Tim Rice648f8762011-01-26 12:38:57 -08003782 [ AC_MSG_RESULT([no]) ]
Darren Tuckercc40d5e2007-04-29 13:58:06 +10003783)
3784
Damien Miller73b42d22006-04-22 21:26:08 +10003785# Check whether user wants SELinux support
3786SELINUX_MSG="no"
3787LIBSELINUX=""
Tim Rice648f8762011-01-26 12:38:57 -08003788AC_ARG_WITH([selinux],
Damien Miller5b1c8b32008-03-27 12:33:07 +11003789 [ --with-selinux Enable SELinux support],
Damien Miller73b42d22006-04-22 21:26:08 +10003790 [ if test "x$withval" != "xno" ; then
Darren Tucker20e9f972007-03-25 18:26:01 +10003791 save_LIBS="$LIBS"
Tim Rice648f8762011-01-26 12:38:57 -08003792 AC_DEFINE([WITH_SELINUX], [1],
3793 [Define if you want SELinux support.])
Damien Miller73b42d22006-04-22 21:26:08 +10003794 SELINUX_MSG="yes"
3795 AC_CHECK_HEADER([selinux/selinux.h], ,
Tim Rice648f8762011-01-26 12:38:57 -08003796 AC_MSG_ERROR([SELinux support requires selinux.h header]))
3797 AC_CHECK_LIB([selinux], [setexeccon],
Damien Miller1d2bfc42010-02-10 10:19:29 +11003798 [ LIBSELINUX="-lselinux"
3799 LIBS="$LIBS -lselinux"
3800 ],
Tim Rice648f8762011-01-26 12:38:57 -08003801 AC_MSG_ERROR([SELinux support requires libselinux library]))
Damien Miller71adf122011-01-25 12:16:15 +11003802 SSHLIBS="$SSHLIBS $LIBSELINUX"
Darren Tucker20e9f972007-03-25 18:26:01 +10003803 SSHDLIBS="$SSHDLIBS $LIBSELINUX"
Tim Rice648f8762011-01-26 12:38:57 -08003804 AC_CHECK_FUNCS([getseuserbyname get_default_context_with_level])
Darren Tuckeradc947d2006-10-07 09:07:20 +10003805 LIBS="$save_LIBS"
Damien Miller73b42d22006-04-22 21:26:08 +10003806 fi ]
3807)
Tim Rice648f8762011-01-26 12:38:57 -08003808AC_SUBST([SSHLIBS])
3809AC_SUBST([SSHDLIBS])
Damien Miller73b42d22006-04-22 21:26:08 +10003810
Damien Millerfd4c9ee2002-04-13 11:04:40 +10003811# Check whether user wants Kerberos 5 support
Damien Millera8e06ce2003-11-21 23:48:55 +11003812KRB5_MSG="no"
Tim Rice648f8762011-01-26 12:38:57 -08003813AC_ARG_WITH([kerberos5],
Damien Millera8e06ce2003-11-21 23:48:55 +11003814 [ --with-kerberos5=PATH Enable Kerberos 5 support],
Darren Tucker1d3ca582004-01-22 12:05:34 +11003815 [ if test "x$withval" != "xno" ; then
3816 if test "x$withval" = "xyes" ; then
3817 KRB5ROOT="/usr/local"
3818 else
3819 KRB5ROOT=${withval}
3820 fi
3821
Tim Rice648f8762011-01-26 12:38:57 -08003822 AC_DEFINE([KRB5], [1], [Define if you want Kerberos 5 support])
Darren Tucker1d3ca582004-01-22 12:05:34 +11003823 KRB5_MSG="yes"
3824
Tim Rice648f8762011-01-26 12:38:57 -08003825 AC_PATH_PROG([KRB5CONF], [krb5-config],
Darren Tuckerdad48e72009-09-01 18:26:00 +10003826 [$KRB5ROOT/bin/krb5-config],
3827 [$KRB5ROOT/bin:$PATH])
3828 if test -x $KRB5CONF ; then
Darren Tucker964de182013-02-22 10:39:59 +11003829 K5CFLAGS="`$KRB5CONF --cflags`"
3830 K5LIBS="`$KRB5CONF --libs`"
3831 CPPFLAGS="$CPPFLAGS $K5CFLAGS"
Darren Tucker1d3ca582004-01-22 12:05:34 +11003832
Tim Rice648f8762011-01-26 12:38:57 -08003833 AC_MSG_CHECKING([for gssapi support])
Darren Tucker1d3ca582004-01-22 12:05:34 +11003834 if $KRB5CONF | grep gssapi >/dev/null ; then
Tim Rice648f8762011-01-26 12:38:57 -08003835 AC_MSG_RESULT([yes])
3836 AC_DEFINE([GSSAPI], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07003837 [Define this if you want GSSAPI
3838 support in the version 2 protocol])
Darren Tucker964de182013-02-22 10:39:59 +11003839 GSSCFLAGS="`$KRB5CONF --cflags gssapi`"
3840 GSSLIBS="`$KRB5CONF --libs gssapi`"
3841 CPPFLAGS="$CPPFLAGS $GSSCFLAGS"
Damien Millera8e06ce2003-11-21 23:48:55 +11003842 else
Tim Rice648f8762011-01-26 12:38:57 -08003843 AC_MSG_RESULT([no])
Damien Millera8e06ce2003-11-21 23:48:55 +11003844 fi
Tim Rice648f8762011-01-26 12:38:57 -08003845 AC_MSG_CHECKING([whether we are using Heimdal])
3846 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <krb5.h>
3847 ]], [[ char *tmp = heimdal_version; ]])],
3848 [ AC_MSG_RESULT([yes])
3849 AC_DEFINE([HEIMDAL], [1],
3850 [Define this if you are using the Heimdal
3851 version of Kerberos V5]) ],
3852 [AC_MSG_RESULT([no])
3853 ])
Darren Tucker1d3ca582004-01-22 12:05:34 +11003854 else
Damien Millerfd4c9ee2002-04-13 11:04:40 +10003855 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include"
Damien Millera8e06ce2003-11-21 23:48:55 +11003856 LDFLAGS="$LDFLAGS -L${KRB5ROOT}/lib"
Tim Rice648f8762011-01-26 12:38:57 -08003857 AC_MSG_CHECKING([whether we are using Heimdal])
3858 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <krb5.h>
3859 ]], [[ char *tmp = heimdal_version; ]])],
3860 [ AC_MSG_RESULT([yes])
3861 AC_DEFINE([HEIMDAL])
Damien Miller41bccf72011-01-02 21:53:07 +11003862 K5LIBS="-lkrb5"
Damien Miller5561e0b2004-04-20 20:28:55 +10003863 K5LIBS="$K5LIBS -lcom_err -lasn1"
Tim Rice648f8762011-01-26 12:38:57 -08003864 AC_CHECK_LIB([roken], [net_write],
Damien Miller5561e0b2004-04-20 20:28:55 +10003865 [K5LIBS="$K5LIBS -lroken"])
Tim Rice648f8762011-01-26 12:38:57 -08003866 AC_CHECK_LIB([des], [des_cbc_encrypt],
Damien Miller41bccf72011-01-02 21:53:07 +11003867 [K5LIBS="$K5LIBS -ldes"])
Tim Rice648f8762011-01-26 12:38:57 -08003868 ], [ AC_MSG_RESULT([no])
Damien Millera8e06ce2003-11-21 23:48:55 +11003869 K5LIBS="-lkrb5 -lk5crypto -lcom_err"
Tim Rice648f8762011-01-26 12:38:57 -08003870
3871 ])
3872 AC_SEARCH_LIBS([dn_expand], [resolv])
Damien Millerfd4c9ee2002-04-13 11:04:40 +10003873
Tim Rice648f8762011-01-26 12:38:57 -08003874 AC_CHECK_LIB([gssapi_krb5], [gss_init_sec_context],
3875 [ AC_DEFINE([GSSAPI])
Darren Tucker964de182013-02-22 10:39:59 +11003876 GSSLIBS="-lgssapi_krb5" ],
Tim Rice648f8762011-01-26 12:38:57 -08003877 [ AC_CHECK_LIB([gssapi], [gss_init_sec_context],
3878 [ AC_DEFINE([GSSAPI])
Darren Tucker964de182013-02-22 10:39:59 +11003879 GSSLIBS="-lgssapi" ],
Darren Tuckera2b5a4c2013-02-22 10:43:15 +11003880 [ AC_CHECK_LIB([gss], [gss_init_sec_context],
3881 [ AC_DEFINE([GSSAPI])
3882 GSSLIBS="-lgss" ],
3883 AC_MSG_WARN([Cannot find any suitable gss-api library - build may fail]))
3884 ])
Darren Tucker964de182013-02-22 10:39:59 +11003885 ])
Tim Riceeae17cc2005-03-17 16:52:20 -08003886
Tim Rice648f8762011-01-26 12:38:57 -08003887 AC_CHECK_HEADER([gssapi.h], ,
Darren Tucker49aaf4a2003-08-26 11:58:16 +10003888 [ unset ac_cv_header_gssapi_h
Damien Millera8e06ce2003-11-21 23:48:55 +11003889 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi"
Tim Rice648f8762011-01-26 12:38:57 -08003890 AC_CHECK_HEADERS([gssapi.h], ,
Darren Tucker49aaf4a2003-08-26 11:58:16 +10003891 AC_MSG_WARN([Cannot find any suitable gss-api header - build may fail])
Damien Millera8e06ce2003-11-21 23:48:55 +11003892 )
Darren Tucker49aaf4a2003-08-26 11:58:16 +10003893 ]
3894 )
3895
3896 oldCPP="$CPPFLAGS"
3897 CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include/gssapi"
Tim Rice648f8762011-01-26 12:38:57 -08003898 AC_CHECK_HEADER([gssapi_krb5.h], ,
Darren Tucker49aaf4a2003-08-26 11:58:16 +10003899 [ CPPFLAGS="$oldCPP" ])
3900
Damien Millera8e06ce2003-11-21 23:48:55 +11003901 fi
Darren Tucker1d3ca582004-01-22 12:05:34 +11003902 if test ! -z "$need_dash_r" ; then
3903 LDFLAGS="$LDFLAGS -R${KRB5ROOT}/lib"
3904 fi
3905 if test ! -z "$blibpath" ; then
3906 blibpath="$blibpath:${KRB5ROOT}/lib"
3907 fi
Tim Ricefd9e9e32005-09-12 17:36:10 -07003908
Tim Rice648f8762011-01-26 12:38:57 -08003909 AC_CHECK_HEADERS([gssapi.h gssapi/gssapi.h])
3910 AC_CHECK_HEADERS([gssapi_krb5.h gssapi/gssapi_krb5.h])
3911 AC_CHECK_HEADERS([gssapi_generic.h gssapi/gssapi_generic.h])
Tim Ricefd9e9e32005-09-12 17:36:10 -07003912
Tim Rice648f8762011-01-26 12:38:57 -08003913 AC_SEARCH_LIBS([k_hasafs], [kafs], [AC_DEFINE([USE_AFS], [1],
3914 [Define this if you want to use libkafs' AFS support])])
Darren Tucker03978c62013-02-25 11:24:44 +11003915
3916 AC_CHECK_DECLS([GSS_C_NT_HOSTBASED_SERVICE], [], [], [[
3917#ifdef HAVE_GSSAPI_H
3918# include <gssapi.h>
3919#elif defined(HAVE_GSSAPI_GSSAPI_H)
3920# include <gssapi/gssapi.h>
3921#endif
3922
3923#ifdef HAVE_GSSAPI_GENERIC_H
3924# include <gssapi_generic.h>
3925#elif defined(HAVE_GSSAPI_GSSAPI_GENERIC_H)
3926# include <gssapi/gssapi_generic.h>
3927#endif
3928 ]])
Darren Tuckerf3ab2c52013-08-04 21:48:41 +10003929 saved_LIBS="$LIBS"
3930 LIBS="$LIBS $K5LIBS"
3931 AC_CHECK_FUNCS([krb5_cc_new_unique krb5_get_error_message krb5_free_error_message])
3932 LIBS="$saved_LIBS"
3933
Darren Tucker0d27ed12004-02-24 10:37:33 +11003934 fi
Darren Tucker0d27ed12004-02-24 10:37:33 +11003935 ]
Damien Millerfd4c9ee2002-04-13 11:04:40 +10003936)
Darren Tucker964de182013-02-22 10:39:59 +11003937AC_SUBST([GSSLIBS])
3938AC_SUBST([K5LIBS])
Damien Millerc79bc0d2001-03-28 13:03:42 +10003939
Damien Millera22ba012000-03-02 23:09:20 +11003940# Looking for programs, paths and files
Damien Millera22ba012000-03-02 23:09:20 +11003941
Damien Millerf58c6722002-05-13 13:15:42 +10003942PRIVSEP_PATH=/var/empty
Tim Rice648f8762011-01-26 12:38:57 -08003943AC_ARG_WITH([privsep-path],
Tim Ricecbb90662002-07-08 19:17:10 -07003944 [ --with-privsep-path=xxx Path for privilege separation chroot (default=/var/empty)],
Damien Millerf58c6722002-05-13 13:15:42 +10003945 [
Tim Rice35cc69d2005-03-17 16:44:25 -08003946 if test -n "$withval" && test "x$withval" != "xno" && \
3947 test "x${withval}" != "xyes"; then
Damien Millerf58c6722002-05-13 13:15:42 +10003948 PRIVSEP_PATH=$withval
3949 fi
3950 ]
3951)
Tim Rice648f8762011-01-26 12:38:57 -08003952AC_SUBST([PRIVSEP_PATH])
Damien Millerf58c6722002-05-13 13:15:42 +10003953
Tim Rice648f8762011-01-26 12:38:57 -08003954AC_ARG_WITH([xauth],
Damien Millera22ba012000-03-02 23:09:20 +11003955 [ --with-xauth=PATH Specify path to xauth program ],
3956 [
Tim Rice35cc69d2005-03-17 16:44:25 -08003957 if test -n "$withval" && test "x$withval" != "xno" && \
3958 test "x${withval}" != "xyes"; then
Damien Miller7b22d652000-06-18 14:07:04 +10003959 xauth_path=$withval
Damien Millera22ba012000-03-02 23:09:20 +11003960 fi
3961 ],
3962 [
Tim Ricee22be3b2002-07-17 19:20:07 -07003963 TestPath="$PATH"
3964 TestPath="${TestPath}${PATH_SEPARATOR}/usr/X/bin"
3965 TestPath="${TestPath}${PATH_SEPARATOR}/usr/bin/X11"
3966 TestPath="${TestPath}${PATH_SEPARATOR}/usr/X11R6/bin"
3967 TestPath="${TestPath}${PATH_SEPARATOR}/usr/openwin/bin"
Tim Rice648f8762011-01-26 12:38:57 -08003968 AC_PATH_PROG([xauth_path], [xauth], , [$TestPath])
Damien Milleredb82922000-06-20 13:25:52 +10003969 if (test ! -z "$xauth_path" && test -x "/usr/openwin/bin/xauth") ; then
Damien Millera22ba012000-03-02 23:09:20 +11003970 xauth_path="/usr/openwin/bin/xauth"
3971 fi
3972 ]
3973)
3974
Damien Miller7d901272003-01-13 16:55:22 +11003975STRIP_OPT=-s
Tim Rice648f8762011-01-26 12:38:57 -08003976AC_ARG_ENABLE([strip],
Damien Miller7d901272003-01-13 16:55:22 +11003977 [ --disable-strip Disable calling strip(1) on install],
3978 [
3979 if test "x$enableval" = "xno" ; then
3980 STRIP_OPT=
3981 fi
3982 ]
3983)
Tim Rice648f8762011-01-26 12:38:57 -08003984AC_SUBST([STRIP_OPT])
Damien Miller7d901272003-01-13 16:55:22 +11003985
Damien Millera19cf472000-11-29 13:28:50 +11003986if test -z "$xauth_path" ; then
3987 XAUTH_PATH="undefined"
Tim Rice648f8762011-01-26 12:38:57 -08003988 AC_SUBST([XAUTH_PATH])
Damien Millera19cf472000-11-29 13:28:50 +11003989else
Tim Rice648f8762011-01-26 12:38:57 -08003990 AC_DEFINE_UNQUOTED([XAUTH_PATH], ["$xauth_path"],
Tim Rice7df8d392005-09-19 09:33:39 -07003991 [Define if xauth is found in your path])
Damien Millera19cf472000-11-29 13:28:50 +11003992 XAUTH_PATH=$xauth_path
Tim Rice648f8762011-01-26 12:38:57 -08003993 AC_SUBST([XAUTH_PATH])
Damien Millera22ba012000-03-02 23:09:20 +11003994fi
Damien Millera22ba012000-03-02 23:09:20 +11003995
Tim Rice90f42b02011-06-02 18:17:49 -07003996dnl # --with-maildir=/path/to/mail gets top priority.
3997dnl # if maildir is set in the platform case statement above we use that.
3998dnl # Otherwise we run a program to get the dir from system headers.
3999dnl # We first look for _PATH_MAILDIR then MAILDIR then _PATH_MAIL
4000dnl # If we find _PATH_MAILDIR we do nothing because that is what
4001dnl # session.c expects anyway. Otherwise we set to the value found
4002dnl # stripping any trailing slash. If for some strage reason our program
4003dnl # does not find what it needs, we default to /var/spool/mail.
4004# Check for mail directory
4005AC_ARG_WITH([maildir],
4006 [ --with-maildir=/path/to/mail Specify your system mail directory],
4007 [
4008 if test "X$withval" != X && test "x$withval" != xno && \
4009 test "x${withval}" != xyes; then
4010 AC_DEFINE_UNQUOTED([MAIL_DIRECTORY], ["$withval"],
4011 [Set this to your mail directory if you do not have _PATH_MAILDIR])
4012 fi
4013 ],[
4014 if test "X$maildir" != "X"; then
4015 AC_DEFINE_UNQUOTED([MAIL_DIRECTORY], ["$maildir"])
4016 else
4017 AC_MSG_CHECKING([Discovering system mail directory])
4018 AC_RUN_IFELSE(
4019 [AC_LANG_PROGRAM([[
4020#include <stdio.h>
4021#include <string.h>
4022#ifdef HAVE_PATHS_H
4023#include <paths.h>
4024#endif
4025#ifdef HAVE_MAILLOCK_H
4026#include <maillock.h>
4027#endif
4028#define DATA "conftest.maildir"
4029 ]], [[
4030 FILE *fd;
4031 int rc;
4032
4033 fd = fopen(DATA,"w");
4034 if(fd == NULL)
4035 exit(1);
4036
4037#if defined (_PATH_MAILDIR)
4038 if ((rc = fprintf(fd ,"_PATH_MAILDIR:%s\n", _PATH_MAILDIR)) <0)
4039 exit(1);
4040#elif defined (MAILDIR)
4041 if ((rc = fprintf(fd ,"MAILDIR:%s\n", MAILDIR)) <0)
4042 exit(1);
4043#elif defined (_PATH_MAIL)
4044 if ((rc = fprintf(fd ,"_PATH_MAIL:%s\n", _PATH_MAIL)) <0)
4045 exit(1);
4046#else
4047 exit (2);
4048#endif
4049
4050 exit(0);
4051 ]])],
4052 [
4053 maildir_what=`awk -F: '{print $1}' conftest.maildir`
4054 maildir=`awk -F: '{print $2}' conftest.maildir \
4055 | sed 's|/$||'`
4056 AC_MSG_RESULT([Using: $maildir from $maildir_what])
4057 if test "x$maildir_what" != "x_PATH_MAILDIR"; then
4058 AC_DEFINE_UNQUOTED([MAIL_DIRECTORY], ["$maildir"])
4059 fi
4060 ],
4061 [
4062 if test "X$ac_status" = "X2";then
4063# our test program didn't find it. Default to /var/spool/mail
4064 AC_MSG_RESULT([Using: default value of /var/spool/mail])
4065 AC_DEFINE_UNQUOTED([MAIL_DIRECTORY], ["/var/spool/mail"])
4066 else
4067 AC_MSG_RESULT([*** not found ***])
4068 fi
4069 ],
4070 [
4071 AC_MSG_WARN([cross compiling: use --with-maildir=/path/to/mail])
4072 ]
4073 )
4074 fi
4075 ]
4076) # maildir
Damien Millera22ba012000-03-02 23:09:20 +11004077
Darren Tucker623d92f2004-09-12 22:36:15 +10004078if test ! -z "$cross_compiling" && test "x$cross_compiling" = "xyes"; then
Darren Tuckera0c2b392004-09-11 23:26:37 +10004079 AC_MSG_WARN([cross compiling: Disabling /dev/ptmx test])
4080 disable_ptmx_check=yes
4081fi
Damien Millera22ba012000-03-02 23:09:20 +11004082if test -z "$no_dev_ptmx" ; then
Kevin Steves0ea1d9d2002-04-25 18:17:04 +00004083 if test "x$disable_ptmx_check" != "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004084 AC_CHECK_FILE(["/dev/ptmx"],
Kevin Steves0ea1d9d2002-04-25 18:17:04 +00004085 [
Tim Rice648f8762011-01-26 12:38:57 -08004086 AC_DEFINE_UNQUOTED([HAVE_DEV_PTMX], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07004087 [Define if you have /dev/ptmx])
Kevin Steves0ea1d9d2002-04-25 18:17:04 +00004088 have_dev_ptmx=1
4089 ]
4090 )
4091 fi
Damien Millera22ba012000-03-02 23:09:20 +11004092fi
Darren Tuckera0c2b392004-09-11 23:26:37 +10004093
Darren Tucker623d92f2004-09-12 22:36:15 +10004094if test ! -z "$cross_compiling" && test "x$cross_compiling" != "xyes"; then
Tim Rice648f8762011-01-26 12:38:57 -08004095 AC_CHECK_FILE(["/dev/ptc"],
Darren Tuckera0c2b392004-09-11 23:26:37 +10004096 [
Tim Rice648f8762011-01-26 12:38:57 -08004097 AC_DEFINE_UNQUOTED([HAVE_DEV_PTS_AND_PTC], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07004098 [Define if you have /dev/ptc])
Darren Tuckera0c2b392004-09-11 23:26:37 +10004099 have_dev_ptc=1
4100 ]
4101 )
4102else
4103 AC_MSG_WARN([cross compiling: Disabling /dev/ptc test])
4104fi
Damien Miller204ad072000-03-02 23:56:12 +11004105
Damien Millera22ba012000-03-02 23:09:20 +11004106# Options from here on. Some of these are preset by platform above
Tim Rice648f8762011-01-26 12:38:57 -08004107AC_ARG_WITH([mantype],
Damien Miller897741e2001-04-16 10:41:46 +10004108 [ --with-mantype=man|cat|doc Set man page type],
Damien Miller670a4b82000-01-22 13:53:11 +11004109 [
Damien Miller897741e2001-04-16 10:41:46 +10004110 case "$withval" in
4111 man|cat|doc)
4112 MANTYPE=$withval
4113 ;;
4114 *)
Tim Rice648f8762011-01-26 12:38:57 -08004115 AC_MSG_ERROR([invalid man type: $withval])
Damien Miller897741e2001-04-16 10:41:46 +10004116 ;;
4117 esac
Damien Miller670a4b82000-01-22 13:53:11 +11004118 ]
4119)
Ben Lindstrombc709922001-04-18 18:04:21 +00004120if test -z "$MANTYPE"; then
Tim Ricee22be3b2002-07-17 19:20:07 -07004121 TestPath="/usr/bin${PATH_SEPARATOR}/usr/ucb"
Tim Rice648f8762011-01-26 12:38:57 -08004122 AC_PATH_PROGS([NROFF], [nroff awf], [/bin/false], [$TestPath])
Ben Lindstrombc709922001-04-18 18:04:21 +00004123 if ${NROFF} -mdoc ${srcdir}/ssh.1 >/dev/null 2>&1; then
4124 MANTYPE=doc
4125 elif ${NROFF} -man ${srcdir}/ssh.1 >/dev/null 2>&1; then
4126 MANTYPE=man
4127 else
4128 MANTYPE=cat
4129 fi
4130fi
Tim Rice648f8762011-01-26 12:38:57 -08004131AC_SUBST([MANTYPE])
Ben Lindstrombc709922001-04-18 18:04:21 +00004132if test "$MANTYPE" = "doc"; then
4133 mansubdir=man;
4134else
4135 mansubdir=$MANTYPE;
4136fi
Tim Rice648f8762011-01-26 12:38:57 -08004137AC_SUBST([mansubdir])
Damien Miller8bdeee21999-12-30 15:50:54 +11004138
Damien Millera22ba012000-03-02 23:09:20 +11004139# Check whether to enable MD5 passwords
Damien Millera8e06ce2003-11-21 23:48:55 +11004140MD5_MSG="no"
Tim Rice648f8762011-01-26 12:38:57 -08004141AC_ARG_WITH([md5-passwords],
Damien Millerdd1c7ba1999-11-19 15:53:20 +11004142 [ --with-md5-passwords Enable use of MD5 passwords],
Damien Miller8bdeee21999-12-30 15:50:54 +11004143 [
Damien Millerb85dcad2000-03-11 11:37:00 +11004144 if test "x$withval" != "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004145 AC_DEFINE([HAVE_MD5_PASSWORDS], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07004146 [Define if you want to allow MD5 passwords])
Damien Millera8e06ce2003-11-21 23:48:55 +11004147 MD5_MSG="yes"
Damien Miller8bdeee21999-12-30 15:50:54 +11004148 fi
4149 ]
Damien Millerdd1c7ba1999-11-19 15:53:20 +11004150)
4151
Damien Millera22ba012000-03-02 23:09:20 +11004152# Whether to disable shadow password support
Tim Rice648f8762011-01-26 12:38:57 -08004153AC_ARG_WITH([shadow],
Damien Miller76112de1999-12-21 11:18:08 +11004154 [ --without-shadow Disable shadow password support],
4155 [
Tim Riceeae17cc2005-03-17 16:52:20 -08004156 if test "x$withval" = "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004157 AC_DEFINE([DISABLE_SHADOW])
Damien Miller1f335fb2000-06-26 11:31:33 +10004158 disable_shadow=yes
Damien Miller76112de1999-12-21 11:18:08 +11004159 fi
4160 ]
4161)
4162
Damien Miller1f335fb2000-06-26 11:31:33 +10004163if test -z "$disable_shadow" ; then
4164 AC_MSG_CHECKING([if the systems has expire shadow information])
Tim Rice648f8762011-01-26 12:38:57 -08004165 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Damien Miller1f335fb2000-06-26 11:31:33 +10004166#include <sys/types.h>
4167#include <shadow.h>
Tim Rice648f8762011-01-26 12:38:57 -08004168struct spwd sp;
4169 ]], [[ sp.sp_expire = sp.sp_lstchg = sp.sp_inact = 0; ]])],
4170 [ sp_expire_available=yes ], [
4171 ])
Damien Miller1f335fb2000-06-26 11:31:33 +10004172
4173 if test "x$sp_expire_available" = "xyes" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004174 AC_MSG_RESULT([yes])
4175 AC_DEFINE([HAS_SHADOW_EXPIRE], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07004176 [Define if you want to use shadow password expire field])
Damien Miller1f335fb2000-06-26 11:31:33 +10004177 else
Tim Rice648f8762011-01-26 12:38:57 -08004178 AC_MSG_RESULT([no])
Damien Miller1f335fb2000-06-26 11:31:33 +10004179 fi
4180fi
4181
Damien Millera22ba012000-03-02 23:09:20 +11004182# Use ip address instead of hostname in $DISPLAY
Damien Miller9a947342000-08-30 10:03:33 +11004183if test ! -z "$IPADDR_IN_DISPLAY" ; then
4184 DISPLAY_HACK_MSG="yes"
Tim Rice648f8762011-01-26 12:38:57 -08004185 AC_DEFINE([IPADDR_IN_DISPLAY], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07004186 [Define if you need to use IP address
4187 instead of hostname in $DISPLAY])
Damien Miller9a947342000-08-30 10:03:33 +11004188else
Damien Millera8e06ce2003-11-21 23:48:55 +11004189 DISPLAY_HACK_MSG="no"
Tim Rice648f8762011-01-26 12:38:57 -08004190 AC_ARG_WITH([ipaddr-display],
Damien Miller9a947342000-08-30 10:03:33 +11004191 [ --with-ipaddr-display Use ip address instead of hostname in \$DISPLAY],
4192 [
Tim Riceeae17cc2005-03-17 16:52:20 -08004193 if test "x$withval" != "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004194 AC_DEFINE([IPADDR_IN_DISPLAY])
Damien Millera8e06ce2003-11-21 23:48:55 +11004195 DISPLAY_HACK_MSG="yes"
Damien Miller9a947342000-08-30 10:03:33 +11004196 fi
4197 ]
4198 )
4199fi
Damien Miller76112de1999-12-21 11:18:08 +11004200
Darren Tuckere1a790d2003-09-16 11:52:19 +10004201# check for /etc/default/login and use it if present.
Tim Rice648f8762011-01-26 12:38:57 -08004202AC_ARG_ENABLE([etc-default-login],
Darren Tucker1b6f2292005-02-11 16:11:49 +11004203 [ --disable-etc-default-login Disable using PATH from /etc/default/login [no]],
Darren Tucker2f9573d2005-02-10 22:28:54 +11004204 [ if test "x$enableval" = "xno"; then
4205 AC_MSG_NOTICE([/etc/default/login handling disabled])
4206 etc_default_login=no
4207 else
4208 etc_default_login=yes
4209 fi ],
Darren Tucker314d89e2005-10-17 23:29:23 +10004210 [ if test ! -z "$cross_compiling" && test "x$cross_compiling" = "xyes";
4211 then
4212 AC_MSG_WARN([cross compiling: not checking /etc/default/login])
4213 etc_default_login=no
4214 else
4215 etc_default_login=yes
4216 fi ]
Darren Tucker2f9573d2005-02-10 22:28:54 +11004217)
Darren Tuckere1a790d2003-09-16 11:52:19 +10004218
Darren Tucker2f9573d2005-02-10 22:28:54 +11004219if test "x$etc_default_login" != "xno"; then
Tim Rice648f8762011-01-26 12:38:57 -08004220 AC_CHECK_FILE(["/etc/default/login"],
Darren Tucker2f9573d2005-02-10 22:28:54 +11004221 [ external_path_file=/etc/default/login ])
Darren Tucker314d89e2005-10-17 23:29:23 +10004222 if test "x$external_path_file" = "x/etc/default/login"; then
Tim Rice648f8762011-01-26 12:38:57 -08004223 AC_DEFINE([HAVE_ETC_DEFAULT_LOGIN], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07004224 [Define if your system has /etc/default/login])
Darren Tuckera0c2b392004-09-11 23:26:37 +10004225 fi
Darren Tucker2f9573d2005-02-10 22:28:54 +11004226fi
Darren Tuckere1a790d2003-09-16 11:52:19 +10004227
Tim Rice43a1c132002-04-17 21:19:14 -07004228dnl BSD systems use /etc/login.conf so --with-default-path= has no effect
Tim Rice8bb561b2005-03-17 16:23:19 -08004229if test $ac_cv_func_login_getcapbool = "yes" && \
4230 test $ac_cv_header_login_cap_h = "yes" ; then
Darren Tuckere1a790d2003-09-16 11:52:19 +10004231 external_path_file=/etc/login.conf
Tim Rice43a1c132002-04-17 21:19:14 -07004232fi
Darren Tuckere1a790d2003-09-16 11:52:19 +10004233
Damien Millera22ba012000-03-02 23:09:20 +11004234# Whether to mess with the default path
Damien Millera8e06ce2003-11-21 23:48:55 +11004235SERVER_PATH_MSG="(default)"
Tim Rice648f8762011-01-26 12:38:57 -08004236AC_ARG_WITH([default-path],
Damien Millerf71d2a52002-05-13 15:14:08 +10004237 [ --with-default-path= Specify default \$PATH environment for server],
Damien Miller5a3e6831999-12-27 09:48:56 +11004238 [
Darren Tuckere1a790d2003-09-16 11:52:19 +10004239 if test "x$external_path_file" = "x/etc/login.conf" ; then
Tim Rice43a1c132002-04-17 21:19:14 -07004240 AC_MSG_WARN([
4241--with-default-path=PATH has no effect on this system.
4242Edit /etc/login.conf instead.])
Tim Riceeae17cc2005-03-17 16:52:20 -08004243 elif test "x$withval" != "xno" ; then
Tim Riceb925b4b2003-09-15 22:40:49 -07004244 if test ! -z "$external_path_file" ; then
Darren Tuckere1a790d2003-09-16 11:52:19 +10004245 AC_MSG_WARN([
4246--with-default-path=PATH will only be used if PATH is not defined in
4247$external_path_file .])
4248 fi
Tim Rice59ea0a02001-03-10 13:50:45 -08004249 user_path="$withval"
Damien Millera8e06ce2003-11-21 23:48:55 +11004250 SERVER_PATH_MSG="$withval"
Damien Miller5a3e6831999-12-27 09:48:56 +11004251 fi
Tim Rice59ea0a02001-03-10 13:50:45 -08004252 ],
Darren Tuckere1a790d2003-09-16 11:52:19 +10004253 [ if test "x$external_path_file" = "x/etc/login.conf" ; then
4254 AC_MSG_WARN([Make sure the path to scp is in /etc/login.conf])
Tim Rice43a1c132002-04-17 21:19:14 -07004255 else
Tim Riceb925b4b2003-09-15 22:40:49 -07004256 if test ! -z "$external_path_file" ; then
Darren Tuckere1a790d2003-09-16 11:52:19 +10004257 AC_MSG_WARN([
4258If PATH is defined in $external_path_file, ensure the path to scp is included,
4259otherwise scp will not work.])
4260 fi
Darren Tucker314d89e2005-10-17 23:29:23 +10004261 AC_RUN_IFELSE(
Tim Rice648f8762011-01-26 12:38:57 -08004262 [AC_LANG_PROGRAM([[
Tim Rice59ea0a02001-03-10 13:50:45 -08004263/* find out what STDPATH is */
4264#include <stdio.h>
Tim Rice59ea0a02001-03-10 13:50:45 -08004265#ifdef HAVE_PATHS_H
4266# include <paths.h>
4267#endif
4268#ifndef _PATH_STDPATH
Tim Rice1c9e6882002-11-22 13:29:01 -08004269# ifdef _PATH_USERPATH /* Irix */
4270# define _PATH_STDPATH _PATH_USERPATH
4271# else
4272# define _PATH_STDPATH "/usr/bin:/bin:/usr/sbin:/sbin"
4273# endif
Tim Rice59ea0a02001-03-10 13:50:45 -08004274#endif
4275#include <sys/types.h>
4276#include <sys/stat.h>
4277#include <fcntl.h>
4278#define DATA "conftest.stdpath"
Tim Rice648f8762011-01-26 12:38:57 -08004279 ]], [[
Tim Rice59ea0a02001-03-10 13:50:45 -08004280 FILE *fd;
4281 int rc;
Tim Riceeae17cc2005-03-17 16:52:20 -08004282
Tim Rice59ea0a02001-03-10 13:50:45 -08004283 fd = fopen(DATA,"w");
4284 if(fd == NULL)
4285 exit(1);
Tim Riceeae17cc2005-03-17 16:52:20 -08004286
Tim Rice59ea0a02001-03-10 13:50:45 -08004287 if ((rc = fprintf(fd,"%s", _PATH_STDPATH)) < 0)
4288 exit(1);
4289
4290 exit(0);
Darren Tucker314d89e2005-10-17 23:29:23 +10004291 ]])],
4292 [ user_path=`cat conftest.stdpath` ],
Tim Rice59ea0a02001-03-10 13:50:45 -08004293 [ user_path="/usr/bin:/bin:/usr/sbin:/sbin" ],
4294 [ user_path="/usr/bin:/bin:/usr/sbin:/sbin" ]
4295 )
4296# make sure $bindir is in USER_PATH so scp will work
Damien Miller77eab7b2012-07-06 11:49:28 +10004297 t_bindir="${bindir}"
4298 while echo "${t_bindir}" | egrep '\$\{|NONE/' >/dev/null 2>&1; do
4299 t_bindir=`eval echo ${t_bindir}`
4300 case $t_bindir in
4301 NONE/*) t_bindir=`echo $t_bindir | sed "s~NONE~$prefix~"` ;;
4302 esac
4303 case $t_bindir in
4304 NONE/*) t_bindir=`echo $t_bindir | sed "s~NONE~$ac_default_prefix~"` ;;
4305 esac
4306 done
Tim Rice59ea0a02001-03-10 13:50:45 -08004307 echo $user_path | grep ":$t_bindir" > /dev/null 2>&1
4308 if test $? -ne 0 ; then
4309 echo $user_path | grep "^$t_bindir" > /dev/null 2>&1
4310 if test $? -ne 0 ; then
4311 user_path=$user_path:$t_bindir
Tim Rice648f8762011-01-26 12:38:57 -08004312 AC_MSG_RESULT([Adding $t_bindir to USER_PATH so scp will work])
Tim Rice59ea0a02001-03-10 13:50:45 -08004313 fi
4314 fi
Tim Rice43a1c132002-04-17 21:19:14 -07004315 fi ]
Damien Miller5a3e6831999-12-27 09:48:56 +11004316)
Darren Tuckere1a790d2003-09-16 11:52:19 +10004317if test "x$external_path_file" != "x/etc/login.conf" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004318 AC_DEFINE_UNQUOTED([USER_PATH], ["$user_path"], [Specify default $PATH])
4319 AC_SUBST([user_path])
Tim Rice43a1c132002-04-17 21:19:14 -07004320fi
Damien Miller5a3e6831999-12-27 09:48:56 +11004321
Damien Millera18bbd32002-05-13 10:48:57 +10004322# Set superuser path separately to user path
Tim Rice648f8762011-01-26 12:38:57 -08004323AC_ARG_WITH([superuser-path],
Damien Millera18bbd32002-05-13 10:48:57 +10004324 [ --with-superuser-path= Specify different path for super-user],
4325 [
Tim Rice35cc69d2005-03-17 16:44:25 -08004326 if test -n "$withval" && test "x$withval" != "xno" && \
4327 test "x${withval}" != "xyes"; then
Tim Rice648f8762011-01-26 12:38:57 -08004328 AC_DEFINE_UNQUOTED([SUPERUSER_PATH], ["$withval"],
Tim Rice7df8d392005-09-19 09:33:39 -07004329 [Define if you want a different $PATH
4330 for the superuser])
Damien Millera18bbd32002-05-13 10:48:57 +10004331 superuser_path=$withval
4332 fi
4333 ]
4334)
4335
4336
Damien Miller61e50f12000-05-08 20:49:37 +10004337AC_MSG_CHECKING([if we need to convert IPv4 in IPv6-mapped addresses])
Damien Millera8e06ce2003-11-21 23:48:55 +11004338IPV4_IN6_HACK_MSG="no"
Damien Miller7bcb0892000-03-11 20:45:40 +11004339AC_ARG_WITH(4in6,
4340 [ --with-4in6 Check for and convert IPv4 in IPv6 mapped addresses],
4341 [
4342 if test "x$withval" != "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004343 AC_MSG_RESULT([yes])
4344 AC_DEFINE([IPV4_IN_IPV6], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07004345 [Detect IPv4 in IPv6 mapped addresses
4346 and treat as IPv4])
Damien Millera8e06ce2003-11-21 23:48:55 +11004347 IPV4_IN6_HACK_MSG="yes"
Damien Miller7bcb0892000-03-11 20:45:40 +11004348 else
Tim Rice648f8762011-01-26 12:38:57 -08004349 AC_MSG_RESULT([no])
Damien Miller7bcb0892000-03-11 20:45:40 +11004350 fi
Tim Rice648f8762011-01-26 12:38:57 -08004351 ], [
Damien Miller7bcb0892000-03-11 20:45:40 +11004352 if test "x$inet6_default_4in6" = "xyes"; then
4353 AC_MSG_RESULT([yes (default)])
Tim Rice648f8762011-01-26 12:38:57 -08004354 AC_DEFINE([IPV4_IN_IPV6])
Damien Millera8e06ce2003-11-21 23:48:55 +11004355 IPV4_IN6_HACK_MSG="yes"
Damien Miller7bcb0892000-03-11 20:45:40 +11004356 else
4357 AC_MSG_RESULT([no (default)])
4358 fi
4359 ]
4360)
4361
Damien Miller60396b02001-02-18 17:01:00 +11004362# Whether to enable BSD auth support
Damien Miller6c21c512002-01-22 21:57:53 +11004363BSD_AUTH_MSG=no
Tim Rice648f8762011-01-26 12:38:57 -08004364AC_ARG_WITH([bsd-auth],
Damien Miller60396b02001-02-18 17:01:00 +11004365 [ --with-bsd-auth Enable BSD auth support],
4366 [
Tim Riceeae17cc2005-03-17 16:52:20 -08004367 if test "x$withval" != "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004368 AC_DEFINE([BSD_AUTH], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07004369 [Define if you have BSD auth support])
Damien Miller6c21c512002-01-22 21:57:53 +11004370 BSD_AUTH_MSG=yes
Damien Miller60396b02001-02-18 17:01:00 +11004371 fi
4372 ]
4373)
4374
Damien Millera22ba012000-03-02 23:09:20 +11004375# Where to place sshd.pid
Damien Millerb13c73e2000-01-17 22:02:17 +11004376piddir=/var/run
Damien Miller78315eb2000-09-29 23:01:36 +11004377# make sure the directory exists
Tim Riceeae17cc2005-03-17 16:52:20 -08004378if test ! -d $piddir ; then
Damien Miller78315eb2000-09-29 23:01:36 +11004379 piddir=`eval echo ${sysconfdir}`
4380 case $piddir in
Damien Millera8e06ce2003-11-21 23:48:55 +11004381 NONE/*) piddir=`echo $piddir | sed "s~NONE~$ac_default_prefix~"` ;;
Damien Miller78315eb2000-09-29 23:01:36 +11004382 esac
4383fi
4384
Tim Rice648f8762011-01-26 12:38:57 -08004385AC_ARG_WITH([pid-dir],
Tim Rice88f2ab52002-03-17 12:17:34 -08004386 [ --with-pid-dir=PATH Specify location of ssh.pid file],
4387 [
Tim Rice35cc69d2005-03-17 16:44:25 -08004388 if test -n "$withval" && test "x$withval" != "xno" && \
4389 test "x${withval}" != "xyes"; then
Tim Rice88f2ab52002-03-17 12:17:34 -08004390 piddir=$withval
Tim Riceeae17cc2005-03-17 16:52:20 -08004391 if test ! -d $piddir ; then
Tim Rice88f2ab52002-03-17 12:17:34 -08004392 AC_MSG_WARN([** no $piddir directory on this system **])
4393 fi
4394 fi
4395 ]
4396)
4397
Tim Rice648f8762011-01-26 12:38:57 -08004398AC_DEFINE_UNQUOTED([_PATH_SSH_PIDDIR], ["$piddir"],
4399 [Specify location of ssh.pid])
4400AC_SUBST([piddir])
Damien Miller5eed6a22000-01-16 12:05:18 +11004401
andre2ff7b5d2000-06-03 14:57:40 +00004402dnl allow user to disable some login recording features
Tim Rice648f8762011-01-26 12:38:57 -08004403AC_ARG_ENABLE([lastlog],
andre43ca7e22000-06-19 08:23:46 +00004404 [ --disable-lastlog disable use of lastlog even if detected [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10004405 [
4406 if test "x$enableval" = "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004407 AC_DEFINE([DISABLE_LASTLOG])
Darren Tuckera3020db2003-06-28 12:54:33 +10004408 fi
4409 ]
andre2ff7b5d2000-06-03 14:57:40 +00004410)
Tim Rice648f8762011-01-26 12:38:57 -08004411AC_ARG_ENABLE([utmp],
andre43ca7e22000-06-19 08:23:46 +00004412 [ --disable-utmp disable use of utmp even if detected [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10004413 [
4414 if test "x$enableval" = "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004415 AC_DEFINE([DISABLE_UTMP])
Darren Tuckera3020db2003-06-28 12:54:33 +10004416 fi
4417 ]
andre2ff7b5d2000-06-03 14:57:40 +00004418)
Tim Rice648f8762011-01-26 12:38:57 -08004419AC_ARG_ENABLE([utmpx],
andre43ca7e22000-06-19 08:23:46 +00004420 [ --disable-utmpx disable use of utmpx even if detected [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10004421 [
4422 if test "x$enableval" = "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004423 AC_DEFINE([DISABLE_UTMPX], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07004424 [Define if you don't want to use utmpx])
Darren Tuckera3020db2003-06-28 12:54:33 +10004425 fi
4426 ]
andre2ff7b5d2000-06-03 14:57:40 +00004427)
Tim Rice648f8762011-01-26 12:38:57 -08004428AC_ARG_ENABLE([wtmp],
andre43ca7e22000-06-19 08:23:46 +00004429 [ --disable-wtmp disable use of wtmp even if detected [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10004430 [
4431 if test "x$enableval" = "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004432 AC_DEFINE([DISABLE_WTMP])
Darren Tuckera3020db2003-06-28 12:54:33 +10004433 fi
4434 ]
andre2ff7b5d2000-06-03 14:57:40 +00004435)
Tim Rice648f8762011-01-26 12:38:57 -08004436AC_ARG_ENABLE([wtmpx],
andre43ca7e22000-06-19 08:23:46 +00004437 [ --disable-wtmpx disable use of wtmpx even if detected [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10004438 [
4439 if test "x$enableval" = "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004440 AC_DEFINE([DISABLE_WTMPX], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07004441 [Define if you don't want to use wtmpx])
Darren Tuckera3020db2003-06-28 12:54:33 +10004442 fi
4443 ]
andre2ff7b5d2000-06-03 14:57:40 +00004444)
Tim Rice648f8762011-01-26 12:38:57 -08004445AC_ARG_ENABLE([libutil],
andre43ca7e22000-06-19 08:23:46 +00004446 [ --disable-libutil disable use of libutil (login() etc.) [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10004447 [
4448 if test "x$enableval" = "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004449 AC_DEFINE([DISABLE_LOGIN])
Darren Tuckera3020db2003-06-28 12:54:33 +10004450 fi
4451 ]
andre2ff7b5d2000-06-03 14:57:40 +00004452)
Tim Rice648f8762011-01-26 12:38:57 -08004453AC_ARG_ENABLE([pututline],
andre43ca7e22000-06-19 08:23:46 +00004454 [ --disable-pututline disable use of pututline() etc. ([uw]tmp) [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10004455 [
4456 if test "x$enableval" = "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004457 AC_DEFINE([DISABLE_PUTUTLINE], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07004458 [Define if you don't want to use pututline()
4459 etc. to write [uw]tmp])
Darren Tuckera3020db2003-06-28 12:54:33 +10004460 fi
4461 ]
andre2ff7b5d2000-06-03 14:57:40 +00004462)
Tim Rice648f8762011-01-26 12:38:57 -08004463AC_ARG_ENABLE([pututxline],
andre43ca7e22000-06-19 08:23:46 +00004464 [ --disable-pututxline disable use of pututxline() etc. ([uw]tmpx) [no]],
Darren Tuckera3020db2003-06-28 12:54:33 +10004465 [
4466 if test "x$enableval" = "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004467 AC_DEFINE([DISABLE_PUTUTXLINE], [1],
Tim Rice7df8d392005-09-19 09:33:39 -07004468 [Define if you don't want to use pututxline()
4469 etc. to write [uw]tmpx])
Darren Tuckera3020db2003-06-28 12:54:33 +10004470 fi
4471 ]
andre2ff7b5d2000-06-03 14:57:40 +00004472)
Tim Rice648f8762011-01-26 12:38:57 -08004473AC_ARG_WITH([lastlog],
andre43ca7e22000-06-19 08:23:46 +00004474 [ --with-lastlog=FILE|DIR specify lastlog location [common locations]],
Damien Miller709528a2001-01-31 09:57:55 +11004475 [
Tim Riceeae17cc2005-03-17 16:52:20 -08004476 if test "x$withval" = "xno" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004477 AC_DEFINE([DISABLE_LASTLOG])
Tim Rice35cc69d2005-03-17 16:44:25 -08004478 elif test -n "$withval" && test "x${withval}" != "xyes"; then
Damien Miller709528a2001-01-31 09:57:55 +11004479 conf_lastlog_location=$withval
4480 fi
4481 ]
4482)
andre2ff7b5d2000-06-03 14:57:40 +00004483
4484dnl lastlog, [uw]tmpx? detection
4485dnl NOTE: set the paths in the platform section to avoid the
4486dnl need for command-line parameters
4487dnl lastlog and [uw]tmp are subject to a file search if all else fails
4488
4489dnl lastlog detection
4490dnl NOTE: the code itself will detect if lastlog is a directory
4491AC_MSG_CHECKING([if your system defines LASTLOG_FILE])
Tim Rice648f8762011-01-26 12:38:57 -08004492AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
andre2ff7b5d2000-06-03 14:57:40 +00004493#include <sys/types.h>
4494#include <utmp.h>
4495#ifdef HAVE_LASTLOG_H
4496# include <lastlog.h>
4497#endif
Damien Miller2994e082000-06-04 15:51:47 +10004498#ifdef HAVE_PATHS_H
andre2ff7b5d2000-06-03 14:57:40 +00004499# include <paths.h>
4500#endif
Ben Lindstrom19d7b8d2001-08-16 00:09:49 +00004501#ifdef HAVE_LOGIN_H
4502# include <login.h>
4503#endif
Tim Rice648f8762011-01-26 12:38:57 -08004504 ]], [[ char *lastlog = LASTLOG_FILE; ]])],
4505 [ AC_MSG_RESULT([yes]) ],
4506 [
4507 AC_MSG_RESULT([no])
Damien Miller2994e082000-06-04 15:51:47 +10004508 AC_MSG_CHECKING([if your system defines _PATH_LASTLOG])
Tim Rice648f8762011-01-26 12:38:57 -08004509 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Damien Miller2994e082000-06-04 15:51:47 +10004510#include <sys/types.h>
4511#include <utmp.h>
4512#ifdef HAVE_LASTLOG_H
4513# include <lastlog.h>
4514#endif
4515#ifdef HAVE_PATHS_H
4516# include <paths.h>
4517#endif
Tim Rice648f8762011-01-26 12:38:57 -08004518 ]], [[ char *lastlog = _PATH_LASTLOG; ]])],
4519 [ AC_MSG_RESULT([yes]) ],
Damien Miller2994e082000-06-04 15:51:47 +10004520 [
Tim Rice648f8762011-01-26 12:38:57 -08004521 AC_MSG_RESULT([no])
Damien Miller2994e082000-06-04 15:51:47 +10004522 system_lastlog_path=no
4523 ])
Tim Rice648f8762011-01-26 12:38:57 -08004524])
Damien Miller2994e082000-06-04 15:51:47 +10004525
andre2ff7b5d2000-06-03 14:57:40 +00004526if test -z "$conf_lastlog_location"; then
4527 if test x"$system_lastlog_path" = x"no" ; then
4528 for f in /var/log/lastlog /usr/adm/lastlog /var/adm/lastlog /etc/security/lastlog ; do
Damien Milleredb82922000-06-20 13:25:52 +10004529 if (test -d "$f" || test -f "$f") ; then
andre2ff7b5d2000-06-03 14:57:40 +00004530 conf_lastlog_location=$f
4531 fi
4532 done
4533 if test -z "$conf_lastlog_location"; then
andre45cad512000-06-12 23:27:31 +00004534 AC_MSG_WARN([** Cannot find lastlog **])
4535 dnl Don't define DISABLE_LASTLOG - that means we don't try wtmp/wtmpx
andre2ff7b5d2000-06-03 14:57:40 +00004536 fi
4537 fi
4538fi
4539
4540if test -n "$conf_lastlog_location"; then
Tim Rice648f8762011-01-26 12:38:57 -08004541 AC_DEFINE_UNQUOTED([CONF_LASTLOG_FILE], ["$conf_lastlog_location"],
Tim Rice7df8d392005-09-19 09:33:39 -07004542 [Define if you want to specify the path to your lastlog file])
Tim Riceeae17cc2005-03-17 16:52:20 -08004543fi
andre2ff7b5d2000-06-03 14:57:40 +00004544
4545dnl utmp detection
4546AC_MSG_CHECKING([if your system defines UTMP_FILE])
Tim Rice648f8762011-01-26 12:38:57 -08004547AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
andre2ff7b5d2000-06-03 14:57:40 +00004548#include <sys/types.h>
4549#include <utmp.h>
Damien Miller2994e082000-06-04 15:51:47 +10004550#ifdef HAVE_PATHS_H
andre2ff7b5d2000-06-03 14:57:40 +00004551# include <paths.h>
4552#endif
Tim Rice648f8762011-01-26 12:38:57 -08004553 ]], [[ char *utmp = UTMP_FILE; ]])],
4554 [ AC_MSG_RESULT([yes]) ],
4555 [ AC_MSG_RESULT([no])
4556 system_utmp_path=no
4557])
andre2ff7b5d2000-06-03 14:57:40 +00004558if test -z "$conf_utmp_location"; then
4559 if test x"$system_utmp_path" = x"no" ; then
4560 for f in /etc/utmp /usr/adm/utmp /var/run/utmp; do
4561 if test -f $f ; then
4562 conf_utmp_location=$f
4563 fi
4564 done
4565 if test -z "$conf_utmp_location"; then
Tim Rice648f8762011-01-26 12:38:57 -08004566 AC_DEFINE([DISABLE_UTMP])
andre2ff7b5d2000-06-03 14:57:40 +00004567 fi
4568 fi
4569fi
4570if test -n "$conf_utmp_location"; then
Tim Rice648f8762011-01-26 12:38:57 -08004571 AC_DEFINE_UNQUOTED([CONF_UTMP_FILE], ["$conf_utmp_location"],
Tim Rice7df8d392005-09-19 09:33:39 -07004572 [Define if you want to specify the path to your utmp file])
Tim Riceeae17cc2005-03-17 16:52:20 -08004573fi
andre2ff7b5d2000-06-03 14:57:40 +00004574
4575dnl wtmp detection
4576AC_MSG_CHECKING([if your system defines WTMP_FILE])
Tim Rice648f8762011-01-26 12:38:57 -08004577AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
andre2ff7b5d2000-06-03 14:57:40 +00004578#include <sys/types.h>
4579#include <utmp.h>
Damien Miller2994e082000-06-04 15:51:47 +10004580#ifdef HAVE_PATHS_H
andre2ff7b5d2000-06-03 14:57:40 +00004581# include <paths.h>
4582#endif
Tim Rice648f8762011-01-26 12:38:57 -08004583 ]], [[ char *wtmp = WTMP_FILE; ]])],
4584 [ AC_MSG_RESULT([yes]) ],
4585 [ AC_MSG_RESULT([no])
4586 system_wtmp_path=no
4587])
andre2ff7b5d2000-06-03 14:57:40 +00004588if test -z "$conf_wtmp_location"; then
4589 if test x"$system_wtmp_path" = x"no" ; then
4590 for f in /usr/adm/wtmp /var/log/wtmp; do
4591 if test -f $f ; then
4592 conf_wtmp_location=$f
4593 fi
4594 done
4595 if test -z "$conf_wtmp_location"; then
Tim Rice648f8762011-01-26 12:38:57 -08004596 AC_DEFINE([DISABLE_WTMP])
andre2ff7b5d2000-06-03 14:57:40 +00004597 fi
4598 fi
4599fi
4600if test -n "$conf_wtmp_location"; then
Tim Rice648f8762011-01-26 12:38:57 -08004601 AC_DEFINE_UNQUOTED([CONF_WTMP_FILE], ["$conf_wtmp_location"],
Tim Rice7df8d392005-09-19 09:33:39 -07004602 [Define if you want to specify the path to your wtmp file])
Tim Riceeae17cc2005-03-17 16:52:20 -08004603fi
andre2ff7b5d2000-06-03 14:57:40 +00004604
andre2ff7b5d2000-06-03 14:57:40 +00004605dnl wtmpx detection
4606AC_MSG_CHECKING([if your system defines WTMPX_FILE])
Tim Rice648f8762011-01-26 12:38:57 -08004607AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
andre2ff7b5d2000-06-03 14:57:40 +00004608#include <sys/types.h>
4609#include <utmp.h>
4610#ifdef HAVE_UTMPX_H
4611#include <utmpx.h>
4612#endif
Damien Miller2994e082000-06-04 15:51:47 +10004613#ifdef HAVE_PATHS_H
andre2ff7b5d2000-06-03 14:57:40 +00004614# include <paths.h>
4615#endif
Tim Rice648f8762011-01-26 12:38:57 -08004616 ]], [[ char *wtmpx = WTMPX_FILE; ]])],
4617 [ AC_MSG_RESULT([yes]) ],
4618 [ AC_MSG_RESULT([no])
4619 system_wtmpx_path=no
4620])
andre2ff7b5d2000-06-03 14:57:40 +00004621if test -z "$conf_wtmpx_location"; then
4622 if test x"$system_wtmpx_path" = x"no" ; then
Tim Rice648f8762011-01-26 12:38:57 -08004623 AC_DEFINE([DISABLE_WTMPX])
andre2ff7b5d2000-06-03 14:57:40 +00004624 fi
4625else
Tim Rice648f8762011-01-26 12:38:57 -08004626 AC_DEFINE_UNQUOTED([CONF_WTMPX_FILE], ["$conf_wtmpx_location"],
Tim Rice7df8d392005-09-19 09:33:39 -07004627 [Define if you want to specify the path to your wtmpx file])
Tim Riceeae17cc2005-03-17 16:52:20 -08004628fi
andre2ff7b5d2000-06-03 14:57:40 +00004629
Damien Miller4018c192000-04-30 09:30:44 +10004630
Damien Miller29ea30d2000-03-17 10:54:15 +11004631if test ! -z "$blibpath" ; then
Damien Millereab4bae2003-04-29 23:22:40 +10004632 LDFLAGS="$LDFLAGS $blibflags$blibpath"
4633 AC_MSG_WARN([Please check and edit blibpath in LDFLAGS in Makefile])
Damien Miller29ea30d2000-03-17 10:54:15 +11004634fi
4635
Damien Millera2438bb2013-03-15 10:23:07 +11004636AC_CHECK_MEMBER([struct lastlog.ll_line], [], [
Tim Riceaa86c392013-03-16 20:55:46 -07004637 if test x$SKIP_DISABLE_LASTLOG_DEFINE != "xyes" ; then
Damien Millera2438bb2013-03-15 10:23:07 +11004638 AC_DEFINE([DISABLE_LASTLOG])
Tim Riceaa86c392013-03-16 20:55:46 -07004639 fi
Damien Millera2438bb2013-03-15 10:23:07 +11004640 ], [
4641#ifdef HAVE_SYS_TYPES_H
4642#include <sys/types.h>
4643#endif
4644#ifdef HAVE_UTMP_H
4645#include <utmp.h>
4646#endif
4647#ifdef HAVE_UTMPX_H
4648#include <utmpx.h>
4649#endif
4650#ifdef HAVE_LASTLOG_H
4651#include <lastlog.h>
4652#endif
4653 ])
4654
4655AC_CHECK_MEMBER([struct utmp.ut_line], [], [
4656 AC_DEFINE([DISABLE_UTMP])
4657 AC_DEFINE([DISABLE_WTMP])
4658 ], [
4659#ifdef HAVE_SYS_TYPES_H
4660#include <sys/types.h>
4661#endif
4662#ifdef HAVE_UTMP_H
4663#include <utmp.h>
4664#endif
4665#ifdef HAVE_UTMPX_H
4666#include <utmpx.h>
4667#endif
4668#ifdef HAVE_LASTLOG_H
4669#include <lastlog.h>
4670#endif
4671 ])
4672
Darren Tucker7da23cb2005-08-03 00:20:15 +10004673dnl Adding -Werror to CFLAGS early prevents configure tests from running.
4674dnl Add now.
4675CFLAGS="$CFLAGS $werror_flags"
4676
Darren Tucker627337d2010-04-10 22:58:01 +10004677if test "x$ac_cv_func_getaddrinfo" != "xyes" ; then
4678 TEST_SSH_IPV6=no
4679else
4680 TEST_SSH_IPV6=yes
4681fi
Tim Rice648f8762011-01-26 12:38:57 -08004682AC_CHECK_DECL([BROKEN_GETADDRINFO], [TEST_SSH_IPV6=no])
4683AC_SUBST([TEST_SSH_IPV6], [$TEST_SSH_IPV6])
Darren Tucker882abfd2013-11-09 00:17:41 +11004684AC_SUBST([TEST_MALLOC_OPTIONS], [$TEST_MALLOC_OPTIONS])
Darren Tucker6d8bd572013-06-11 11:26:10 +10004685AC_SUBST([UNSUPPORTED_ALGORITHMS], [$unsupported_algorithms])
Darren Tucker5d376902008-06-11 04:15:05 +10004686
Damien Millerbac2d8a2000-09-05 16:13:06 +11004687AC_EXEEXT
Damien Miller223897a2006-09-12 21:54:10 +10004688AC_CONFIG_FILES([Makefile buildpkg.sh opensshd.init openssh.xml \
4689 openbsd-compat/Makefile openbsd-compat/regress/Makefile \
Damien Millerf22019b2011-05-05 13:48:37 +10004690 survey.sh])
Tim Rice13aae5e2001-10-21 17:53:58 -07004691AC_OUTPUT
Damien Miller0437b332000-05-02 09:56:41 +10004692
Damien Miller7b22d652000-06-18 14:07:04 +10004693# Print summary of options
4694
Damien Miller7b22d652000-06-18 14:07:04 +10004695# Someone please show me a better way :)
4696A=`eval echo ${prefix}` ; A=`eval echo ${A}`
4697B=`eval echo ${bindir}` ; B=`eval echo ${B}`
4698C=`eval echo ${sbindir}` ; C=`eval echo ${C}`
4699D=`eval echo ${sysconfdir}` ; D=`eval echo ${D}`
Kevin Stevese0f49142000-10-14 17:51:48 +00004700E=`eval echo ${libexecdir}/ssh-askpass` ; E=`eval echo ${E}`
Ben Lindstrombc709922001-04-18 18:04:21 +00004701F=`eval echo ${mandir}/${mansubdir}X` ; F=`eval echo ${F}`
Damien Miller7b22d652000-06-18 14:07:04 +10004702G=`eval echo ${piddir}` ; G=`eval echo ${G}`
Damien Millerf58c6722002-05-13 13:15:42 +10004703H=`eval echo ${PRIVSEP_PATH}` ; H=`eval echo ${H}`
4704I=`eval echo ${user_path}` ; I=`eval echo ${I}`
4705J=`eval echo ${superuser_path}` ; J=`eval echo ${J}`
Damien Miller7b22d652000-06-18 14:07:04 +10004706
4707echo ""
Kevin Steves393d2f72001-04-08 22:50:43 +00004708echo "OpenSSH has been configured with the following options:"
Damien Millerf58c6722002-05-13 13:15:42 +10004709echo " User binaries: $B"
4710echo " System binaries: $C"
4711echo " Configuration files: $D"
4712echo " Askpass program: $E"
4713echo " Manual pages: $F"
4714echo " PID file: $G"
4715echo " Privilege separation chroot path: $H"
Darren Tuckere1a790d2003-09-16 11:52:19 +10004716if test "x$external_path_file" = "x/etc/login.conf" ; then
4717echo " At runtime, sshd will use the path defined in $external_path_file"
4718echo " Make sure the path to scp is present, otherwise scp will not work"
Tim Rice43a1c132002-04-17 21:19:14 -07004719else
Damien Millerf58c6722002-05-13 13:15:42 +10004720echo " sshd default user PATH: $I"
Tim Riceb925b4b2003-09-15 22:40:49 -07004721 if test ! -z "$external_path_file"; then
Darren Tuckere1a790d2003-09-16 11:52:19 +10004722echo " (If PATH is set in $external_path_file it will be used instead. If"
4723echo " used, ensure the path to scp is present, otherwise scp will not work.)"
4724 fi
Tim Rice43a1c132002-04-17 21:19:14 -07004725fi
Damien Millera18bbd32002-05-13 10:48:57 +10004726if test ! -z "$superuser_path" ; then
Damien Millerf58c6722002-05-13 13:15:42 +10004727echo " sshd superuser user PATH: $J"
Damien Millera18bbd32002-05-13 10:48:57 +10004728fi
Damien Millerf58c6722002-05-13 13:15:42 +10004729echo " Manpage format: $MANTYPE"
Damien Miller7abe09b2003-05-15 10:53:49 +10004730echo " PAM support: $PAM_MSG"
Damien Miller1b06dc32006-08-31 03:24:41 +10004731echo " OSF SIA support: $SIA_MSG"
Damien Millerf58c6722002-05-13 13:15:42 +10004732echo " KerberosV support: $KRB5_MSG"
Damien Miller73b42d22006-04-22 21:26:08 +10004733echo " SELinux support: $SELINUX_MSG"
Damien Millerf58c6722002-05-13 13:15:42 +10004734echo " Smartcard support: $SCARD_MSG"
Damien Millerf58c6722002-05-13 13:15:42 +10004735echo " S/KEY support: $SKEY_MSG"
4736echo " TCP Wrappers support: $TCPW_MSG"
4737echo " MD5 password support: $MD5_MSG"
Darren Tucker16bcc1c2004-11-07 20:14:34 +11004738echo " libedit support: $LIBEDIT_MSG"
Damien Miller1b06dc32006-08-31 03:24:41 +10004739echo " Solaris process contract support: $SPC_MSG"
Darren Tucker97528352010-11-05 12:03:05 +11004740echo " Solaris project support: $SP_MSG"
Damien Miller903e1152002-05-13 14:41:31 +10004741echo " IP address in \$DISPLAY hack: $DISPLAY_HACK_MSG"
Damien Millerf58c6722002-05-13 13:15:42 +10004742echo " Translate v4 in v6 hack: $IPV4_IN6_HACK_MSG"
4743echo " BSD Auth support: $BSD_AUTH_MSG"
4744echo " Random number source: $RAND_MSG"
Damien Miller69ff1df2011-06-23 08:30:03 +10004745echo " Privsep sandbox style: $SANDBOX_STYLE"
Damien Miller60396b02001-02-18 17:01:00 +11004746
Damien Miller7b22d652000-06-18 14:07:04 +10004747echo ""
4748
Ben Lindstrom28bfc0d2000-12-18 19:58:57 +00004749echo " Host: ${host}"
4750echo " Compiler: ${CC}"
4751echo " Compiler flags: ${CFLAGS}"
4752echo "Preprocessor flags: ${CPPFLAGS}"
4753echo " Linker flags: ${LDFLAGS}"
Darren Tucker20e9f972007-03-25 18:26:01 +10004754echo " Libraries: ${LIBS}"
4755if test ! -z "${SSHDLIBS}"; then
4756echo " +for sshd: ${SSHDLIBS}"
4757fi
Damien Miller71adf122011-01-25 12:16:15 +11004758if test ! -z "${SSHLIBS}"; then
4759echo " +for ssh: ${SSHLIBS}"
4760fi
Damien Miller7b22d652000-06-18 14:07:04 +10004761
4762echo ""
4763
Tim Rice6f1f7582004-05-30 21:38:51 -07004764if test "x$MAKE_PACKAGE_SUPPORTED" = "xyes" ; then
Darren Tuckercf59d312004-08-29 21:18:09 +10004765 echo "SVR4 style packages are supported with \"make package\""
4766 echo ""
Tim Rice6f1f7582004-05-30 21:38:51 -07004767fi
4768
Damien Miller82cf0ce2000-12-20 13:34:48 +11004769if test "x$PAM_MSG" = "xyes" ; then
Damien Miller6c21c512002-01-22 21:57:53 +11004770 echo "PAM is enabled. You may need to install a PAM control file "
4771 echo "for sshd, otherwise password authentication may fail. "
Damien Millera8e06ce2003-11-21 23:48:55 +11004772 echo "Example PAM control files can be found in the contrib/ "
Damien Miller6c21c512002-01-22 21:57:53 +11004773 echo "subdirectory"
Damien Miller6f9c3372000-10-25 10:06:04 +11004774 echo ""
4775fi
Ben Lindstrom3ad650a2001-01-03 06:02:51 +00004776
Damien Millerb4097182004-05-23 14:09:40 +10004777if test ! -z "$NO_PEERCHECK" ; then
Darren Tucker164aa302007-03-21 21:39:57 +11004778 echo "WARNING: the operating system that you are using does not"
4779 echo "appear to support getpeereid(), getpeerucred() or the"
4780 echo "SO_PEERCRED getsockopt() option. These facilities are used to"
4781 echo "enforce security checks to prevent unauthorised connections to"
4782 echo "ssh-agent. Their absence increases the risk that a malicious"
4783 echo "user can connect to your agent."
Damien Millerb4097182004-05-23 14:09:40 +10004784 echo ""
4785fi
4786
Darren Tuckerd9f88912005-02-20 21:01:48 +11004787if test "$AUDIT_MODULE" = "bsm" ; then
4788 echo "WARNING: BSM audit support is currently considered EXPERIMENTAL."
4789 echo "See the Solaris section in README.platform for details."
4790fi