summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac690
1 files changed, 440 insertions, 250 deletions
diff --git a/configure.ac b/configure.ac
index 86f0f1c41..05ccc2f7e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
1# $Id: configure.ac,v 1.322.2.6 2006/02/08 11:11:06 dtucker Exp $ 1# $Id: configure.ac,v 1.372 2007/03/05 00:51:27 djm Exp $
2# 2#
3# Copyright (c) 1999-2004 Damien Miller 3# Copyright (c) 1999-2004 Damien Miller
4# 4#
@@ -15,7 +15,7 @@
15# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 16
17AC_INIT(OpenSSH, Portable, openssh-unix-dev@mindrot.org) 17AC_INIT(OpenSSH, Portable, openssh-unix-dev@mindrot.org)
18AC_REVISION($Revision: 1.322.2.6 $) 18AC_REVISION($Revision: 1.372 $)
19AC_CONFIG_SRCDIR([ssh.c]) 19AC_CONFIG_SRCDIR([ssh.c])
20 20
21AC_CONFIG_HEADER(config.h) 21AC_CONFIG_HEADER(config.h)
@@ -127,15 +127,175 @@ AC_ARG_WITH(rpath,
127 ] 127 ]
128) 128)
129 129
130# Allow user to specify flags
131AC_ARG_WITH(cflags,
132 [ --with-cflags Specify additional flags to pass to compiler],
133 [
134 if test -n "$withval" && test "x$withval" != "xno" && \
135 test "x${withval}" != "xyes"; then
136 CFLAGS="$CFLAGS $withval"
137 fi
138 ]
139)
140AC_ARG_WITH(cppflags,
141 [ --with-cppflags Specify additional flags to pass to preprocessor] ,
142 [
143 if test -n "$withval" && test "x$withval" != "xno" && \
144 test "x${withval}" != "xyes"; then
145 CPPFLAGS="$CPPFLAGS $withval"
146 fi
147 ]
148)
149AC_ARG_WITH(ldflags,
150 [ --with-ldflags Specify additional flags to pass to linker],
151 [
152 if test -n "$withval" && test "x$withval" != "xno" && \
153 test "x${withval}" != "xyes"; then
154 LDFLAGS="$LDFLAGS $withval"
155 fi
156 ]
157)
158AC_ARG_WITH(libs,
159 [ --with-libs Specify additional libraries to link with],
160 [
161 if test -n "$withval" && test "x$withval" != "xno" && \
162 test "x${withval}" != "xyes"; then
163 LIBS="$LIBS $withval"
164 fi
165 ]
166)
167AC_ARG_WITH(Werror,
168 [ --with-Werror Build main code with -Werror],
169 [
170 if test -n "$withval" && test "x$withval" != "xno"; then
171 werror_flags="-Werror"
172 if test "x${withval}" != "xyes"; then
173 werror_flags="$withval"
174 fi
175 fi
176 ]
177)
178
179AC_CHECK_HEADERS( \
180 bstring.h \
181 crypt.h \
182 crypto/sha2.h \
183 dirent.h \
184 endian.h \
185 features.h \
186 fcntl.h \
187 floatingpoint.h \
188 getopt.h \
189 glob.h \
190 ia.h \
191 iaf.h \
192 limits.h \
193 login.h \
194 maillock.h \
195 ndir.h \
196 net/if_tun.h \
197 netdb.h \
198 netgroup.h \
199 pam/pam_appl.h \
200 paths.h \
201 pty.h \
202 readpassphrase.h \
203 rpc/types.h \
204 security/pam_appl.h \
205 sha2.h \
206 shadow.h \
207 stddef.h \
208 stdint.h \
209 string.h \
210 strings.h \
211 sys/audit.h \
212 sys/bitypes.h \
213 sys/bsdtty.h \
214 sys/cdefs.h \
215 sys/dir.h \
216 sys/mman.h \
217 sys/ndir.h \
218 sys/prctl.h \
219 sys/pstat.h \
220 sys/select.h \
221 sys/stat.h \
222 sys/stream.h \
223 sys/stropts.h \
224 sys/strtio.h \
225 sys/sysmacros.h \
226 sys/time.h \
227 sys/timers.h \
228 sys/un.h \
229 time.h \
230 tmpdir.h \
231 ttyent.h \
232 unistd.h \
233 usersec.h \
234 util.h \
235 utime.h \
236 utmp.h \
237 utmpx.h \
238 vis.h \
239)
240
241# lastlog.h requires sys/time.h to be included first on Solaris
242AC_CHECK_HEADERS(lastlog.h, [], [], [
243#ifdef HAVE_SYS_TIME_H
244# include <sys/time.h>
245#endif
246])
247
248# sys/ptms.h requires sys/stream.h to be included first on Solaris
249AC_CHECK_HEADERS(sys/ptms.h, [], [], [
250#ifdef HAVE_SYS_STREAM_H
251# include <sys/stream.h>
252#endif
253])
254
255# login_cap.h requires sys/types.h on NetBSD
256AC_CHECK_HEADERS(login_cap.h, [], [], [
257#include <sys/types.h>
258])
259
260# Messages for features tested for in target-specific section
261SIA_MSG="no"
262SPC_MSG="no"
263
130# Check for some target-specific stuff 264# Check for some target-specific stuff
131case "$host" in 265case "$host" in
132*-*-aix*) 266*-*-aix*)
267 # Some versions of VAC won't allow macro redefinitions at
268 # -qlanglevel=ansi, and autoconf 2.60 sometimes insists on using that
269 # particularly with older versions of vac or xlc.
270 # It also throws errors about null macro argments, but these are
271 # not fatal.
272 AC_MSG_CHECKING(if compiler allows macro redefinitions)
273 AC_COMPILE_IFELSE(
274 [AC_LANG_SOURCE([[
275#define testmacro foo
276#define testmacro bar
277int main(void) { exit(0); }
278 ]])],
279 [ AC_MSG_RESULT(yes) ],
280 [ AC_MSG_RESULT(no)
281 CC="`echo $CC | sed 's/-qlanglvl\=ansi//g'`"
282 LD="`echo $LD | sed 's/-qlanglvl\=ansi//g'`"
283 CFLAGS="`echo $CFLAGS | sed 's/-qlanglvl\=ansi//g'`"
284 CPPFLAGS="`echo $CPPFLAGS | sed 's/-qlanglvl\=ansi//g'`"
285 ]
286 )
287
133 AC_MSG_CHECKING([how to specify blibpath for linker ($LD)]) 288 AC_MSG_CHECKING([how to specify blibpath for linker ($LD)])
134 if (test -z "$blibpath"); then 289 if (test -z "$blibpath"); then
135 blibpath="/usr/lib:/lib" 290 blibpath="/usr/lib:/lib"
136 fi 291 fi
137 saved_LDFLAGS="$LDFLAGS" 292 saved_LDFLAGS="$LDFLAGS"
138 for tryflags in -blibpath: -Wl,-blibpath: -Wl,-rpath, ;do 293 if test "$GCC" = "yes"; then
294 flags="-Wl,-blibpath: -Wl,-rpath, -blibpath:"
295 else
296 flags="-blibpath: -Wl,-blibpath: -Wl,-rpath,"
297 fi
298 for tryflags in $flags ;do
139 if (test -z "$blibflags"); then 299 if (test -z "$blibflags"); then
140 LDFLAGS="$saved_LDFLAGS $tryflags$blibpath" 300 LDFLAGS="$saved_LDFLAGS $tryflags$blibpath"
141 AC_TRY_LINK([], [], [blibflags=$tryflags]) 301 AC_TRY_LINK([], [], [blibflags=$tryflags])
@@ -175,6 +335,12 @@ case "$host" in
175 [#include <usersec.h>] 335 [#include <usersec.h>]
176 ) 336 )
177 AC_CHECK_FUNCS(setauthdb) 337 AC_CHECK_FUNCS(setauthdb)
338 AC_CHECK_DECL(F_CLOSEM,
339 AC_DEFINE(HAVE_FCNTL_CLOSEM, 1, [Use F_CLOSEM fcntl for closefrom]),
340 [],
341 [ #include <limits.h>
342 #include <fcntl.h> ]
343 )
178 check_for_aix_broken_getaddrinfo=1 344 check_for_aix_broken_getaddrinfo=1
179 AC_DEFINE(BROKEN_REALPATH, 1, [Define if you have a broken realpath.]) 345 AC_DEFINE(BROKEN_REALPATH, 1, [Define if you have a broken realpath.])
180 AC_DEFINE(SETEUID_BREAKS_SETUID, 1, 346 AC_DEFINE(SETEUID_BREAKS_SETUID, 1,
@@ -190,10 +356,11 @@ case "$host" in
190 supported by bsd-setproctitle.c]) 356 supported by bsd-setproctitle.c])
191 AC_DEFINE(SSHPAM_CHAUTHTOK_NEEDS_RUID, 1, 357 AC_DEFINE(SSHPAM_CHAUTHTOK_NEEDS_RUID, 1,
192 [AIX 5.2 and 5.3 (and presumably newer) require this]) 358 [AIX 5.2 and 5.3 (and presumably newer) require this])
359 AC_DEFINE(PTY_ZEROREAD, 1, [read(1) can return 0 for a non-closed fd])
193 ;; 360 ;;
194*-*-cygwin*) 361*-*-cygwin*)
195 check_for_libcrypt_later=1 362 check_for_libcrypt_later=1
196 LIBS="$LIBS /usr/lib/textmode.o" 363 LIBS="$LIBS /usr/lib/textreadmode.o"
197 AC_DEFINE(HAVE_CYGWIN, 1, [Define if you are on Cygwin]) 364 AC_DEFINE(HAVE_CYGWIN, 1, [Define if you are on Cygwin])
198 AC_DEFINE(USE_PIPES, 1, [Use PIPES instead of a socketpair()]) 365 AC_DEFINE(USE_PIPES, 1, [Use PIPES instead of a socketpair()])
199 AC_DEFINE(DISABLE_SHADOW, 1, 366 AC_DEFINE(DISABLE_SHADOW, 1,
@@ -231,30 +398,38 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
231 AC_DEFINE(BROKEN_SETREGID) 398 AC_DEFINE(BROKEN_SETREGID)
232 AC_DEFINE_UNQUOTED(BIND_8_COMPAT, 1, 399 AC_DEFINE_UNQUOTED(BIND_8_COMPAT, 1,
233 [Define if your resolver libs need this for getrrsetbyname]) 400 [Define if your resolver libs need this for getrrsetbyname])
234 AC_MSG_CHECKING(if we have the Security Authorization Session API) 401 AC_DEFINE(SSH_TUN_FREEBSD, 1, [Open tunnel devices the FreeBSD way])
235 AC_TRY_COMPILE([#include <Security/AuthSession.h>], 402 AC_DEFINE(SSH_TUN_COMPAT_AF, 1,
236 [SessionCreate(0, 0);], 403 [Use tunnel device compatibility to OpenBSD])
237 [ac_cv_use_security_session_api="yes" 404 AC_DEFINE(SSH_TUN_PREPEND_AF, 1,
238 AC_DEFINE(USE_SECURITY_SESSION_API, 1, 405 [Prepend the address family to IP tunnel traffic])
406 AC_MSG_CHECKING(if we have the Security Authorization Session API)
407 AC_TRY_COMPILE([#include <Security/AuthSession.h>],
408 [SessionCreate(0, 0);],
409 [ac_cv_use_security_session_api="yes"
410 AC_DEFINE(USE_SECURITY_SESSION_API, 1,
239 [platform has the Security Authorization Session API]) 411 [platform has the Security Authorization Session API])
240 LIBS="$LIBS -framework Security" 412 LIBS="$LIBS -framework Security"
241 AC_MSG_RESULT(yes)], 413 AC_MSG_RESULT(yes)],
242 [ac_cv_use_security_session_api="no" 414 [ac_cv_use_security_session_api="no"
243 AC_MSG_RESULT(no)]) 415 AC_MSG_RESULT(no)])
244 AC_MSG_CHECKING(if we have an in-memory credentials cache) 416 AC_MSG_CHECKING(if we have an in-memory credentials cache)
245 AC_TRY_COMPILE( 417 AC_TRY_COMPILE(
246 [#include <Kerberos/Kerberos.h>], 418 [#include <Kerberos/Kerberos.h>],
247 [cc_context_t c; 419 [cc_context_t c;
248 (void) cc_initialize (&c, 0, NULL, NULL);], 420 (void) cc_initialize (&c, 0, NULL, NULL);],
249 [AC_DEFINE(USE_CCAPI, 1, 421 [AC_DEFINE(USE_CCAPI, 1,
250 [platform uses an in-memory credentials cache]) 422 [platform uses an in-memory credentials cache])
251 LIBS="$LIBS -framework Security" 423 LIBS="$LIBS -framework Security"
252 AC_MSG_RESULT(yes) 424 AC_MSG_RESULT(yes)
253 if test "x$ac_cv_use_security_session_api" = "xno"; then 425 if test "x$ac_cv_use_security_session_api" = "xno"; then
254 AC_MSG_ERROR(*** Need a security framework to use the credentials cache API ***) 426 AC_MSG_ERROR(*** Need a security framework to use the credentials cache API ***)
255 fi], 427 fi],
256 [AC_MSG_RESULT(no)] 428 [AC_MSG_RESULT(no)]
257 ) 429 )
430 ;;
431*-*-dragonfly*)
432 SSHDLIBS="$SSHDLIBS -lcrypt"
258 ;; 433 ;;
259*-*-hpux*) 434*-*-hpux*)
260 # first we define all of the options common to all HP-UX releases 435 # first we define all of the options common to all HP-UX releases
@@ -417,6 +592,8 @@ mips-sony-bsd|mips-sony-newsos4)
417 AC_DEFINE(HAVE_ATTRIBUTE__SENTINEL__, 1, [OpenBSD's gcc has sentinel]) 592 AC_DEFINE(HAVE_ATTRIBUTE__SENTINEL__, 1, [OpenBSD's gcc has sentinel])
418 AC_DEFINE(HAVE_ATTRIBUTE__BOUNDED__, 1, [OpenBSD's gcc has bounded]) 593 AC_DEFINE(HAVE_ATTRIBUTE__BOUNDED__, 1, [OpenBSD's gcc has bounded])
419 AC_DEFINE(SSH_TUN_OPENBSD, 1, [Open tunnel devices the OpenBSD way]) 594 AC_DEFINE(SSH_TUN_OPENBSD, 1, [Open tunnel devices the OpenBSD way])
595 AC_DEFINE(SYSLOG_R_SAFE_IN_SIGHAND, 1,
596 [syslog_r function is safe to use in in a signal handler])
420 ;; 597 ;;
421*-*-solaris*) 598*-*-solaris*)
422 if test "x$withval" != "xno" ; then 599 if test "x$withval" != "xno" ; then
@@ -436,6 +613,8 @@ mips-sony-bsd|mips-sony-newsos4)
436 AC_DEFINE(SSHD_ACQUIRES_CTTY, 1, 613 AC_DEFINE(SSHD_ACQUIRES_CTTY, 1,
437 [Define if sshd somehow reacquires a controlling TTY 614 [Define if sshd somehow reacquires a controlling TTY
438 after setsid()]) 615 after setsid()])
616 AC_DEFINE(PASSWD_NEEDS_USERNAME, 1, [must supply username to passwd
617 in case the name is longer than 8 chars])
439 external_path_file=/etc/default/login 618 external_path_file=/etc/default/login
440 # hardwire lastlog location (can't detect it on some versions) 619 # hardwire lastlog location (can't detect it on some versions)
441 conf_lastlog_location="/var/adm/lastlog" 620 conf_lastlog_location="/var/adm/lastlog"
@@ -449,6 +628,17 @@ mips-sony-bsd|mips-sony-newsos4)
449 else 628 else
450 AC_MSG_RESULT(no) 629 AC_MSG_RESULT(no)
451 fi 630 fi
631 AC_ARG_WITH(solaris-contracts,
632 [ --with-solaris-contracts Enable Solaris process contracts (experimental)],
633 [
634 AC_CHECK_LIB(contract, ct_tmpl_activate,
635 [ AC_DEFINE(USE_SOLARIS_PROCESS_CONTRACTS, 1,
636 [Define if you have Solaris process contracts])
637 SSHDLIBS="$SSHDLIBS -lcontract"
638 AC_SUBST(SSHDLIBS)
639 SPC_MSG="yes" ], )
640 ],
641 )
452 ;; 642 ;;
453*-*-sunos4*) 643*-*-sunos4*)
454 CPPFLAGS="$CPPFLAGS -DSUNOS4" 644 CPPFLAGS="$CPPFLAGS -DSUNOS4"
@@ -486,7 +676,6 @@ mips-sony-bsd|mips-sony-newsos4)
486 ;; 676 ;;
487# UnixWare 1.x, UnixWare 2.x, and others based on code from Univel. 677# UnixWare 1.x, UnixWare 2.x, and others based on code from Univel.
488*-*-sysv4.2*) 678*-*-sysv4.2*)
489 CFLAGS="$CFLAGS -Dva_list=_VA_LIST"
490 AC_DEFINE(USE_PIPES) 679 AC_DEFINE(USE_PIPES)
491 AC_DEFINE(SETEUID_BREAKS_SETUID) 680 AC_DEFINE(SETEUID_BREAKS_SETUID)
492 AC_DEFINE(BROKEN_SETREUID) 681 AC_DEFINE(BROKEN_SETREUID)
@@ -508,6 +697,7 @@ mips-sony-bsd|mips-sony-newsos4)
508 TEST_SHELL=/u95/bin/sh 697 TEST_SHELL=/u95/bin/sh
509 AC_DEFINE(BROKEN_LIBIAF, 1, 698 AC_DEFINE(BROKEN_LIBIAF, 1,
510 [ia_uinfo routines not supported by OS yet]) 699 [ia_uinfo routines not supported by OS yet])
700 AC_DEFINE(BROKEN_UPDWTMPX)
511 ;; 701 ;;
512 *) AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*") 702 *) AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
513 ;; 703 ;;
@@ -597,6 +787,7 @@ mips-sony-bsd|mips-sony-newsos4)
597 system's login() call]) 787 system's login() call])
598 AC_DEFINE(DISABLE_FD_PASSING) 788 AC_DEFINE(DISABLE_FD_PASSING)
599 LIBS="$LIBS -lsecurity -ldb -lm -laud" 789 LIBS="$LIBS -lsecurity -ldb -lm -laud"
790 SIA_MSG="yes"
600 else 791 else
601 AC_MSG_RESULT(no) 792 AC_MSG_RESULT(no)
602 AC_DEFINE(LOCKED_PASSWD_SUBSTR, "Nologin", 793 AC_DEFINE(LOCKED_PASSWD_SUBSTR, "Nologin",
@@ -616,6 +807,8 @@ mips-sony-bsd|mips-sony-newsos4)
616 AC_DEFINE(MISSING_HOWMANY, 1, [Define on *nto-qnx systems]) 807 AC_DEFINE(MISSING_HOWMANY, 1, [Define on *nto-qnx systems])
617 AC_DEFINE(MISSING_FD_MASK, 1, [Define on *nto-qnx systems]) 808 AC_DEFINE(MISSING_FD_MASK, 1, [Define on *nto-qnx systems])
618 AC_DEFINE(DISABLE_LASTLOG) 809 AC_DEFINE(DISABLE_LASTLOG)
810 AC_DEFINE(SSHD_ACQUIRES_CTTY)
811 enable_etc_default_login=no # has incompatible /etc/default/login
619 ;; 812 ;;
620 813
621*-*-ultrix*) 814*-*-ultrix*)
@@ -632,55 +825,6 @@ mips-sony-bsd|mips-sony-newsos4)
632 ;; 825 ;;
633esac 826esac
634 827
635# Allow user to specify flags
636AC_ARG_WITH(cflags,
637 [ --with-cflags Specify additional flags to pass to compiler],
638 [
639 if test -n "$withval" && test "x$withval" != "xno" && \
640 test "x${withval}" != "xyes"; then
641 CFLAGS="$CFLAGS $withval"
642 fi
643 ]
644)
645AC_ARG_WITH(cppflags,
646 [ --with-cppflags Specify additional flags to pass to preprocessor] ,
647 [
648 if test -n "$withval" && test "x$withval" != "xno" && \
649 test "x${withval}" != "xyes"; then
650 CPPFLAGS="$CPPFLAGS $withval"
651 fi
652 ]
653)
654AC_ARG_WITH(ldflags,
655 [ --with-ldflags Specify additional flags to pass to linker],
656 [
657 if test -n "$withval" && test "x$withval" != "xno" && \
658 test "x${withval}" != "xyes"; then
659 LDFLAGS="$LDFLAGS $withval"
660 fi
661 ]
662)
663AC_ARG_WITH(libs,
664 [ --with-libs Specify additional libraries to link with],
665 [
666 if test -n "$withval" && test "x$withval" != "xno" && \
667 test "x${withval}" != "xyes"; then
668 LIBS="$LIBS $withval"
669 fi
670 ]
671)
672AC_ARG_WITH(Werror,
673 [ --with-Werror Build main code with -Werror],
674 [
675 if test -n "$withval" && test "x$withval" != "xno"; then
676 werror_flags="-Werror"
677 if test "x${withval}" != "xyes"; then
678 werror_flags="$withval"
679 fi
680 fi
681 ]
682)
683
684AC_MSG_CHECKING(compiler and flags for sanity) 828AC_MSG_CHECKING(compiler and flags for sanity)
685AC_RUN_IFELSE( 829AC_RUN_IFELSE(
686 [AC_LANG_SOURCE([ 830 [AC_LANG_SOURCE([
@@ -696,79 +840,6 @@ int main(){exit(0);}
696) 840)
697 841
698dnl Checks for header files. 842dnl Checks for header files.
699AC_CHECK_HEADERS( \
700 bstring.h \
701 crypt.h \
702 dirent.h \
703 endian.h \
704 features.h \
705 floatingpoint.h \
706 getopt.h \
707 glob.h \
708 ia.h \
709 iaf.h \
710 limits.h \
711 login.h \
712 login_cap.h \
713 maillock.h \
714 ndir.h \
715 netdb.h \
716 netgroup.h \
717 pam/pam_appl.h \
718 paths.h \
719 pty.h \
720 readpassphrase.h \
721 rpc/types.h \
722 security/pam_appl.h \
723 shadow.h \
724 stddef.h \
725 stdint.h \
726 string.h \
727 strings.h \
728 sys/audit.h \
729 sys/bitypes.h \
730 sys/bsdtty.h \
731 sys/cdefs.h \
732 sys/dir.h \
733 sys/mman.h \
734 sys/ndir.h \
735 sys/prctl.h \
736 sys/pstat.h \
737 sys/select.h \
738 sys/stat.h \
739 sys/stream.h \
740 sys/stropts.h \
741 sys/strtio.h \
742 sys/sysmacros.h \
743 sys/time.h \
744 sys/timers.h \
745 sys/un.h \
746 time.h \
747 tmpdir.h \
748 ttyent.h \
749 unistd.h \
750 usersec.h \
751 util.h \
752 utime.h \
753 utmp.h \
754 utmpx.h \
755 vis.h \
756)
757
758# lastlog.h requires sys/time.h to be included first on Solaris
759AC_CHECK_HEADERS(lastlog.h, [], [], [
760#ifdef HAVE_SYS_TIME_H
761# include <sys/time.h>
762#endif
763])
764
765# sys/ptms.h requires sys/stream.h to be included first on Solaris
766AC_CHECK_HEADERS(sys/ptms.h, [], [], [
767#ifdef HAVE_SYS_STREAM_H
768# include <sys/stream.h>
769#endif
770])
771
772# Checks for libraries. 843# Checks for libraries.
773AC_CHECK_FUNC(yp_match, , AC_CHECK_LIB(nsl, yp_match)) 844AC_CHECK_FUNC(yp_match, , AC_CHECK_LIB(nsl, yp_match))
774AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt)) 845AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt))
@@ -953,11 +1024,9 @@ AC_EGREP_CPP(FOUNDIT,
953 1024
954# Check for g.gl_matchc glob() extension 1025# Check for g.gl_matchc glob() extension
955AC_MSG_CHECKING(for gl_matchc field in glob_t) 1026AC_MSG_CHECKING(for gl_matchc field in glob_t)
956AC_EGREP_CPP(FOUNDIT, 1027AC_TRY_COMPILE(
957 [ 1028 [ #include <glob.h> ],
958 #include <glob.h> 1029 [glob_t g; g.gl_matchc = 1;],
959 int main(void){glob_t g; g.gl_matchc = 1;}
960 ],
961 [ 1030 [
962 AC_DEFINE(GLOB_HAS_GL_MATCHC, 1, 1031 AC_DEFINE(GLOB_HAS_GL_MATCHC, 1,
963 [Define if your system glob() function has 1032 [Define if your system glob() function has
@@ -969,6 +1038,8 @@ AC_EGREP_CPP(FOUNDIT,
969 ] 1038 ]
970) 1039)
971 1040
1041AC_CHECK_DECLS(GLOB_NOMATCH, , , [#include <glob.h>])
1042
972AC_MSG_CHECKING([whether struct dirent allocates space for d_name]) 1043AC_MSG_CHECKING([whether struct dirent allocates space for d_name])
973AC_RUN_IFELSE( 1044AC_RUN_IFELSE(
974 [AC_LANG_SOURCE([[ 1045 [AC_LANG_SOURCE([[
@@ -1150,7 +1221,13 @@ AC_ARG_WITH(audit,
1150 AUDIT_MODULE=bsm 1221 AUDIT_MODULE=bsm
1151 dnl Checks for headers, libs and functions 1222 dnl Checks for headers, libs and functions
1152 AC_CHECK_HEADERS(bsm/audit.h, [], 1223 AC_CHECK_HEADERS(bsm/audit.h, [],
1153 [AC_MSG_ERROR(BSM enabled and bsm/audit.h not found)]) 1224 [AC_MSG_ERROR(BSM enabled and bsm/audit.h not found)],
1225 [
1226#ifdef HAVE_TIME_H
1227# include <time.h>
1228#endif
1229 ]
1230)
1154 AC_CHECK_LIB(bsm, getaudit, [], 1231 AC_CHECK_LIB(bsm, getaudit, [],
1155 [AC_MSG_ERROR(BSM enabled and required library not found)]) 1232 [AC_MSG_ERROR(BSM enabled and required library not found)])
1156 AC_CHECK_FUNCS(getaudit, [], 1233 AC_CHECK_FUNCS(getaudit, [],
@@ -1296,6 +1373,29 @@ AC_CHECK_DECL(tcsendbreak,
1296 1373
1297AC_CHECK_DECLS(h_errno, , ,[#include <netdb.h>]) 1374AC_CHECK_DECLS(h_errno, , ,[#include <netdb.h>])
1298 1375
1376AC_CHECK_DECLS(SHUT_RD, , ,
1377 [
1378#include <sys/types.h>
1379#include <sys/socket.h>
1380 ])
1381
1382AC_CHECK_DECLS(O_NONBLOCK, , ,
1383 [
1384#include <sys/types.h>
1385#ifdef HAVE_SYS_STAT_H
1386# include <sys/stat.h>
1387#endif
1388#ifdef HAVE_FCNTL_H
1389# include <fcntl.h>
1390#endif
1391 ])
1392
1393AC_CHECK_DECLS(writev, , , [
1394#include <sys/types.h>
1395#include <sys/uio.h>
1396#include <unistd.h>
1397 ])
1398
1299AC_CHECK_FUNCS(setresuid, [ 1399AC_CHECK_FUNCS(setresuid, [
1300 dnl Some platorms have setresuid that isn't implemented, test for this 1400 dnl Some platorms have setresuid that isn't implemented, test for this
1301 AC_MSG_CHECKING(if setresuid seems to work) 1401 AC_MSG_CHECKING(if setresuid seems to work)
@@ -1666,61 +1766,6 @@ fi
1666 1766
1667AC_FUNC_GETPGRP 1767AC_FUNC_GETPGRP
1668 1768
1669# Check for PAM libs
1670PAM_MSG="no"
1671AC_ARG_WITH(pam,
1672 [ --with-pam Enable PAM support ],
1673 [
1674 if test "x$withval" != "xno" ; then
1675 if test "x$ac_cv_header_security_pam_appl_h" != "xyes" && \
1676 test "x$ac_cv_header_pam_pam_appl_h" != "xyes" ; then
1677 AC_MSG_ERROR([PAM headers not found])
1678 fi
1679
1680 AC_CHECK_LIB(dl, dlopen, , )
1681 AC_CHECK_LIB(pam, pam_set_item, , AC_MSG_ERROR([*** libpam missing]))
1682 AC_CHECK_FUNCS(pam_getenvlist)
1683 AC_CHECK_FUNCS(pam_putenv)
1684
1685 PAM_MSG="yes"
1686
1687 AC_DEFINE(USE_PAM, 1,
1688 [Define if you want to enable PAM support])
1689 if test $ac_cv_lib_dl_dlopen = yes; then
1690 LIBPAM="-lpam -ldl"
1691 else
1692 LIBPAM="-lpam"
1693 fi
1694 AC_SUBST(LIBPAM)
1695 fi
1696 ]
1697)
1698
1699# Check for older PAM
1700if test "x$PAM_MSG" = "xyes" ; then
1701 # Check PAM strerror arguments (old PAM)
1702 AC_MSG_CHECKING([whether pam_strerror takes only one argument])
1703 AC_TRY_COMPILE(
1704 [
1705#include <stdlib.h>
1706#if defined(HAVE_SECURITY_PAM_APPL_H)
1707#include <security/pam_appl.h>
1708#elif defined (HAVE_PAM_PAM_APPL_H)
1709#include <pam/pam_appl.h>
1710#endif
1711 ],
1712 [(void)pam_strerror((pam_handle_t *)NULL, -1);],
1713 [AC_MSG_RESULT(no)],
1714 [
1715 AC_DEFINE(HAVE_OLD_PAM, 1,
1716 [Define if you have an old version of PAM
1717 which takes only one argument to pam_strerror])
1718 AC_MSG_RESULT(yes)
1719 PAM_MSG="yes (old library)"
1720 ]
1721 )
1722fi
1723
1724# Search for OpenSSL 1769# Search for OpenSSL
1725saved_CPPFLAGS="$CPPFLAGS" 1770saved_CPPFLAGS="$CPPFLAGS"
1726saved_LDFLAGS="$LDFLAGS" 1771saved_LDFLAGS="$LDFLAGS"
@@ -1844,6 +1889,14 @@ int main(void) {
1844 ] 1889 ]
1845) 1890)
1846 1891
1892AC_ARG_WITH(openssl-header-check,
1893 [ --without-openssl-header-check Disable OpenSSL version consistency check],
1894 [ if test "x$withval" = "xno" ; then
1895 openssl_check_nonfatal=1
1896 fi
1897 ]
1898)
1899
1847# Sanity check OpenSSL headers 1900# Sanity check OpenSSL headers
1848AC_MSG_CHECKING([whether OpenSSL's headers match the library]) 1901AC_MSG_CHECKING([whether OpenSSL's headers match the library])
1849AC_RUN_IFELSE( 1902AC_RUN_IFELSE(
@@ -1857,18 +1910,75 @@ int main(void) { exit(SSLeay() == OPENSSL_VERSION_NUMBER ? 0 : 1); }
1857 ], 1910 ],
1858 [ 1911 [
1859 AC_MSG_RESULT(no) 1912 AC_MSG_RESULT(no)
1860 AC_MSG_ERROR([Your OpenSSL headers do not match your library. 1913 if test "x$openssl_check_nonfatal" = "x"; then
1861Check config.log for details. 1914 AC_MSG_ERROR([Your OpenSSL headers do not match your
1915library. Check config.log for details.
1916If you are sure your installation is consistent, you can disable the check
1917by running "./configure --without-openssl-header-check".
1918Also see contrib/findssl.sh for help identifying header/library mismatches.
1919])
1920 else
1921 AC_MSG_WARN([Your OpenSSL headers do not match your
1922library. Check config.log for details.
1862Also see contrib/findssl.sh for help identifying header/library mismatches.]) 1923Also see contrib/findssl.sh for help identifying header/library mismatches.])
1924 fi
1863 ], 1925 ],
1864 [ 1926 [
1865 AC_MSG_WARN([cross compiling: not checking]) 1927 AC_MSG_WARN([cross compiling: not checking])
1866 ] 1928 ]
1867) 1929)
1868 1930
1931AC_MSG_CHECKING([if programs using OpenSSL functions will link])
1932AC_LINK_IFELSE(
1933 [AC_LANG_SOURCE([[
1934#include <openssl/evp.h>
1935int main(void) { SSLeay_add_all_algorithms(); }
1936 ]])],
1937 [
1938 AC_MSG_RESULT(yes)
1939 ],
1940 [
1941 AC_MSG_RESULT(no)
1942 saved_LIBS="$LIBS"
1943 LIBS="$LIBS -ldl"
1944 AC_MSG_CHECKING([if programs using OpenSSL need -ldl])
1945 AC_LINK_IFELSE(
1946 [AC_LANG_SOURCE([[
1947#include <openssl/evp.h>
1948int main(void) { SSLeay_add_all_algorithms(); }
1949 ]])],
1950 [
1951 AC_MSG_RESULT(yes)
1952 ],
1953 [
1954 AC_MSG_RESULT(no)
1955 LIBS="$saved_LIBS"
1956 ]
1957 )
1958 ]
1959)
1960
1961AC_ARG_WITH(ssl-engine,
1962 [ --with-ssl-engine Enable OpenSSL (hardware) ENGINE support ],
1963 [ if test "x$withval" != "xno" ; then
1964 AC_MSG_CHECKING(for OpenSSL ENGINE support)
1965 AC_TRY_COMPILE(
1966 [ #include <openssl/engine.h>],
1967 [
1968ENGINE_load_builtin_engines();ENGINE_register_all_complete();
1969 ],
1970 [ AC_MSG_RESULT(yes)
1971 AC_DEFINE(USE_OPENSSL_ENGINE, 1,
1972 [Enable OpenSSL engine support])
1973 ],
1974 [ AC_MSG_ERROR(OpenSSL ENGINE support not found)]
1975 )
1976 fi ]
1977)
1978
1869# Check for OpenSSL without EVP_aes_{192,256}_cbc 1979# Check for OpenSSL without EVP_aes_{192,256}_cbc
1870AC_MSG_CHECKING([whether OpenSSL has crippled AES support]) 1980AC_MSG_CHECKING([whether OpenSSL has crippled AES support])
1871AC_COMPILE_IFELSE( 1981AC_LINK_IFELSE(
1872 [AC_LANG_SOURCE([[ 1982 [AC_LANG_SOURCE([[
1873#include <string.h> 1983#include <string.h>
1874#include <openssl/evp.h> 1984#include <openssl/evp.h>
@@ -1896,6 +2006,9 @@ if test "x$check_for_libcrypt_later" = "x1"; then
1896 AC_CHECK_LIB(crypt, crypt, LIBS="$LIBS -lcrypt") 2006 AC_CHECK_LIB(crypt, crypt, LIBS="$LIBS -lcrypt")
1897fi 2007fi
1898 2008
2009# Search for SHA256 support in libc and/or OpenSSL
2010AC_CHECK_FUNCS(SHA256_Update EVP_sha256)
2011
1899AC_CHECK_LIB(iaf, ia_openinfo) 2012AC_CHECK_LIB(iaf, ia_openinfo)
1900 2013
1901### Configure cryptographic random number support 2014### Configure cryptographic random number support
@@ -1926,6 +2039,69 @@ int main(void) { exit(RAND_status() == 1 ? 0 : 1); }
1926 ] 2039 ]
1927) 2040)
1928 2041
2042# Check for PAM libs
2043PAM_MSG="no"
2044AC_ARG_WITH(pam,
2045 [ --with-pam Enable PAM support ],
2046 [
2047 if test "x$withval" != "xno" ; then
2048 if test "x$ac_cv_header_security_pam_appl_h" != "xyes" && \
2049 test "x$ac_cv_header_pam_pam_appl_h" != "xyes" ; then
2050 AC_MSG_ERROR([PAM headers not found])
2051 fi
2052
2053 saved_LIBS="$LIBS"
2054 AC_CHECK_LIB(dl, dlopen, , )
2055 AC_CHECK_LIB(pam, pam_set_item, , AC_MSG_ERROR([*** libpam missing]))
2056 AC_CHECK_FUNCS(pam_getenvlist)
2057 AC_CHECK_FUNCS(pam_putenv)
2058 LIBS="$saved_LIBS"
2059
2060 PAM_MSG="yes"
2061
2062 LIBPAM="-lpam"
2063 AC_DEFINE(USE_PAM, 1,
2064 [Define if you want to enable PAM support])
2065
2066 if test $ac_cv_lib_dl_dlopen = yes; then
2067 case "$LIBS" in
2068 *-ldl*)
2069 # libdl already in LIBS
2070 ;;
2071 *)
2072 LIBPAM="$LIBPAM -ldl"
2073 ;;
2074 esac
2075 fi
2076 AC_SUBST(LIBPAM)
2077 fi
2078 ]
2079)
2080
2081# Check for older PAM
2082if test "x$PAM_MSG" = "xyes" ; then
2083 # Check PAM strerror arguments (old PAM)
2084 AC_MSG_CHECKING([whether pam_strerror takes only one argument])
2085 AC_TRY_COMPILE(
2086 [
2087#include <stdlib.h>
2088#if defined(HAVE_SECURITY_PAM_APPL_H)
2089#include <security/pam_appl.h>
2090#elif defined (HAVE_PAM_PAM_APPL_H)
2091#include <pam/pam_appl.h>
2092#endif
2093 ],
2094 [(void)pam_strerror((pam_handle_t *)NULL, -1);],
2095 [AC_MSG_RESULT(no)],
2096 [
2097 AC_DEFINE(HAVE_OLD_PAM, 1,
2098 [Define if you have an old version of PAM
2099 which takes only one argument to pam_strerror])
2100 AC_MSG_RESULT(yes)
2101 PAM_MSG="yes (old library)"
2102 ]
2103 )
2104fi
1929 2105
1930# Do we want to force the use of the rand helper? 2106# Do we want to force the use of the rand helper?
1931AC_ARG_WITH(rand-helper, 2107AC_ARG_WITH(rand-helper,
@@ -2145,6 +2321,34 @@ if test -z "$have_llong_max"; then
2145#define __USE_ISOC99 2321#define __USE_ISOC99
2146#include <limits.h> 2322#include <limits.h>
2147#define DATA "conftest.llminmax" 2323#define DATA "conftest.llminmax"
2324#define my_abs(a) ((a) < 0 ? ((a) * -1) : (a))
2325
2326/*
2327 * printf in libc on some platforms (eg old Tru64) does not understand %lld so
2328 * we do this the hard way.
2329 */
2330static int
2331fprint_ll(FILE *f, long long n)
2332{
2333 unsigned int i;
2334 int l[sizeof(long long) * 8];
2335
2336 if (n < 0)
2337 if (fprintf(f, "-") < 0)
2338 return -1;
2339 for (i = 0; n != 0; i++) {
2340 l[i] = my_abs(n % 10);
2341 n /= 10;
2342 }
2343 do {
2344 if (fprintf(f, "%d", l[--i]) < 0)
2345 return -1;
2346 } while (i != 0);
2347 if (fprintf(f, " ") < 0)
2348 return -1;
2349 return 0;
2350}
2351
2148int main(void) { 2352int main(void) {
2149 FILE *f; 2353 FILE *f;
2150 long long i, llmin, llmax = 0; 2354 long long i, llmin, llmax = 0;
@@ -2166,14 +2370,18 @@ int main(void) {
2166 2370
2167 /* Sanity check */ 2371 /* Sanity check */
2168 if (llmin + 1 < llmin || llmin - 1 < llmin || llmax + 1 > llmax 2372 if (llmin + 1 < llmin || llmin - 1 < llmin || llmax + 1 > llmax
2169 || llmax - 1 > llmax) { 2373 || llmax - 1 > llmax || llmin == llmax || llmin == 0
2374 || llmax == 0 || llmax < LONG_MAX || llmin > LONG_MIN) {
2170 fprintf(f, "unknown unknown\n"); 2375 fprintf(f, "unknown unknown\n");
2171 exit(2); 2376 exit(2);
2172 } 2377 }
2173 2378
2174 if (fprintf(f ,"%lld %lld", llmin, llmax) < 0) 2379 if (fprint_ll(f, llmin) < 0)
2175 exit(3); 2380 exit(3);
2176 2381 if (fprint_ll(f, llmax) < 0)
2382 exit(4);
2383 if (fclose(f) < 0)
2384 exit(5);
2177 exit(0); 2385 exit(0);
2178} 2386}
2179 ]])], 2387 ]])],
@@ -2181,17 +2389,6 @@ int main(void) {
2181 llong_min=`$AWK '{print $1}' conftest.llminmax` 2389 llong_min=`$AWK '{print $1}' conftest.llminmax`
2182 llong_max=`$AWK '{print $2}' conftest.llminmax` 2390 llong_max=`$AWK '{print $2}' conftest.llminmax`
2183 2391
2184 # snprintf on some Tru64s doesn't understand "%lld"
2185 case "$host" in
2186 alpha-dec-osf*)
2187 if test "x$ac_cv_sizeof_long_long_int" = "x8" &&
2188 test "x$llong_max" = "xld"; then
2189 llong_min="-9223372036854775808"
2190 llong_max="9223372036854775807"
2191 fi
2192 ;;
2193 esac
2194
2195 AC_MSG_RESULT($llong_max) 2392 AC_MSG_RESULT($llong_max)
2196 AC_DEFINE_UNQUOTED(LLONG_MAX, [${llong_max}LL], 2393 AC_DEFINE_UNQUOTED(LLONG_MAX, [${llong_max}LL],
2197 [max value of long long calculated by configure]) 2394 [max value of long long calculated by configure])
@@ -2937,7 +3134,7 @@ AC_ARG_WITH(opensc,
2937 LIBOPENSC_CFLAGS=`$OPENSC_CONFIG --cflags` 3134 LIBOPENSC_CFLAGS=`$OPENSC_CONFIG --cflags`
2938 LIBOPENSC_LIBS=`$OPENSC_CONFIG --libs` 3135 LIBOPENSC_LIBS=`$OPENSC_CONFIG --libs`
2939 CPPFLAGS="$CPPFLAGS $LIBOPENSC_CFLAGS" 3136 CPPFLAGS="$CPPFLAGS $LIBOPENSC_CFLAGS"
2940 LDFLAGS="$LDFLAGS $LIBOPENSC_LIBS" 3137 LIBS="$LIBS $LIBOPENSC_LIBS"
2941 AC_DEFINE(SMARTCARD) 3138 AC_DEFINE(SMARTCARD)
2942 AC_DEFINE(USE_OPENSC, 1, 3139 AC_DEFINE(USE_OPENSC, 1,
2943 [Define if you want smartcard support 3140 [Define if you want smartcard support
@@ -2989,22 +3186,20 @@ int main()
2989SELINUX_MSG="no" 3186SELINUX_MSG="no"
2990LIBSELINUX="" 3187LIBSELINUX=""
2991AC_ARG_WITH(selinux, 3188AC_ARG_WITH(selinux,
2992 [ --with-selinux[[=LIBSELINUX-PATH]] Enable SELinux support], 3189 [ --with-selinux Enable SELinux support],
2993 [ if test "x$withval" != "xno" ; then 3190 [ if test "x$withval" != "xno" ; then
2994 if test "x$withval" != "xyes"; then
2995 CPPFLAGS="$CPPFLAGS -I${withval}/include"
2996 if test -n "${need_dash_r}"; then
2997 LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}"
2998 else
2999 LDFLAGS="-L${withval}/lib ${LDFLAGS}"
3000 fi
3001 fi
3002 AC_DEFINE(WITH_SELINUX,1,[Define if you want SELinux support.]) 3191 AC_DEFINE(WITH_SELINUX,1,[Define if you want SELinux support.])
3003 SELINUX_MSG="yes" 3192 SELINUX_MSG="yes"
3004 AC_CHECK_HEADERS(selinux/selinux.h) 3193 AC_CHECK_HEADER([selinux/selinux.h], ,
3005 LIBSELINUX="-lselinux" 3194 AC_MSG_ERROR(SELinux support requires selinux.h header))
3006 fi 3195 AC_CHECK_LIB(selinux, setexeccon, [ LIBSELINUX="-lselinux" ],
3007 ]) 3196 AC_MSG_ERROR(SELinux support requires libselinux library))
3197 save_LIBS="$LIBS"
3198 LIBS="$LIBS $LIBSELINUX"
3199 AC_CHECK_FUNCS(getseuserbyname get_default_context_with_level)
3200 LIBS="$save_LIBS"
3201 fi ]
3202)
3008AC_SUBST(LIBSELINUX) 3203AC_SUBST(LIBSELINUX)
3009 3204
3010# Check whether user wants Kerberos 5 support 3205# Check whether user wants Kerberos 5 support
@@ -3769,20 +3964,13 @@ if test ! -z "$blibpath" ; then
3769 AC_MSG_WARN([Please check and edit blibpath in LDFLAGS in Makefile]) 3964 AC_MSG_WARN([Please check and edit blibpath in LDFLAGS in Makefile])
3770fi 3965fi
3771 3966
3772dnl remove pam and dl because they are in $LIBPAM
3773if test "$PAM_MSG" = yes ; then
3774 LIBS=`echo $LIBS | sed 's/-lpam //'`
3775fi
3776if test "$ac_cv_lib_pam_pam_set_item" = yes ; then
3777 LIBS=`echo $LIBS | sed 's/-ldl //'`
3778fi
3779
3780dnl Adding -Werror to CFLAGS early prevents configure tests from running. 3967dnl Adding -Werror to CFLAGS early prevents configure tests from running.
3781dnl Add now. 3968dnl Add now.
3782CFLAGS="$CFLAGS $werror_flags" 3969CFLAGS="$CFLAGS $werror_flags"
3783 3970
3784AC_EXEEXT 3971AC_EXEEXT
3785AC_CONFIG_FILES([Makefile buildpkg.sh opensshd.init openbsd-compat/Makefile \ 3972AC_CONFIG_FILES([Makefile buildpkg.sh opensshd.init openssh.xml \
3973 openbsd-compat/Makefile openbsd-compat/regress/Makefile \
3786 scard/Makefile ssh_prng_cmds survey.sh]) 3974 scard/Makefile ssh_prng_cmds survey.sh])
3787AC_OUTPUT 3975AC_OUTPUT
3788 3976
@@ -3824,6 +4012,7 @@ echo " sshd superuser user PATH: $J"
3824fi 4012fi
3825echo " Manpage format: $MANTYPE" 4013echo " Manpage format: $MANTYPE"
3826echo " PAM support: $PAM_MSG" 4014echo " PAM support: $PAM_MSG"
4015echo " OSF SIA support: $SIA_MSG"
3827echo " KerberosV support: $KRB5_MSG" 4016echo " KerberosV support: $KRB5_MSG"
3828echo " SELinux support: $SELINUX_MSG" 4017echo " SELinux support: $SELINUX_MSG"
3829echo " Smartcard support: $SCARD_MSG" 4018echo " Smartcard support: $SCARD_MSG"
@@ -3831,6 +4020,7 @@ echo " S/KEY support: $SKEY_MSG"
3831echo " TCP Wrappers support: $TCPW_MSG" 4020echo " TCP Wrappers support: $TCPW_MSG"
3832echo " MD5 password support: $MD5_MSG" 4021echo " MD5 password support: $MD5_MSG"
3833echo " libedit support: $LIBEDIT_MSG" 4022echo " libedit support: $LIBEDIT_MSG"
4023echo " Solaris process contract support: $SPC_MSG"
3834echo " IP address in \$DISPLAY hack: $DISPLAY_HACK_MSG" 4024echo " IP address in \$DISPLAY hack: $DISPLAY_HACK_MSG"
3835echo " Translate v4 in v6 hack: $IPV4_IN6_HACK_MSG" 4025echo " Translate v4 in v6 hack: $IPV4_IN6_HACK_MSG"
3836echo " BSD Auth support: $BSD_AUTH_MSG" 4026echo " BSD Auth support: $BSD_AUTH_MSG"