]> andersk Git - gssapi-openssh.git/blobdiff - openssh/configure.ac
merged OpenSSH 5.3p1 to trunk
[gssapi-openssh.git] / openssh / configure.ac
index bb82bc717b9859f65fcb91ddcabda2fe5a7eb89e..af183e54660605201fa7586cd65584a548c2e741 100644 (file)
@@ -19,6 +19,115 @@ AC_REVISION($Revision$)
 AC_CONFIG_SRCDIR([ssh.c])
 
 AC_CONFIG_HEADER(config.h)
+
+# Handle Globus configuration right away, because the Globus flavor
+# determines our compiler options.
+
+# Check whether the user wants GSI (Globus) support
+gsi_path="no"
+AC_ARG_WITH(gsi,
+       [  --with-gsi              Enable Globus GSI authentication support],
+       [
+               gsi_path="$withval"
+       ]
+)
+
+AC_ARG_WITH(globus,
+       [  --with-globus           Enable Globus GSI authentication support],
+       [
+               gsi_path="$withval"
+       ]
+)
+
+AC_ARG_WITH(globus-static,
+       [  --with-globus-static    Link statically with Globus GSI libraries],
+       [
+               gsi_static="-static"
+               if test "x$gsi_path" = "xno" ; then
+                       gsi_path="$withval"
+               fi
+       ]
+)
+
+# Check whether the user has a Globus flavor type
+globus_flavor_type="no"
+AC_ARG_WITH(globus-flavor,
+       [  --with-globus-flavor=TYPE  Specify Globus flavor type (ex: gcc32dbg)],
+       [
+               globus_flavor_type="$withval"
+               if test "x$gsi_path" = "xno" ; then
+                       gsi_path="yes"
+               fi
+       ]
+)
+
+if test "x$gsi_path" != "xno" ; then
+       # Globus GSSAPI configuration
+       AC_MSG_CHECKING(for Globus GSI)
+       AC_DEFINE(GSI, 1, [Define if you want GSI/Globus authentication support.])
+
+       if test "$GSSAPI" -a "$GSSAPI" != "mechglue"; then
+               AC_MSG_ERROR([Previously configured GSSAPI library conflicts with Globus GSI.])
+       fi
+       if test -z "$GSSAPI"; then
+               AC_DEFINE(GSSAPI)
+               GSSAPI="GSI"
+       fi
+
+       if test "x$gsi_path" = "xyes" ; then
+               if test -z "$GLOBUS_LOCATION" ; then
+                       AC_MSG_ERROR(GLOBUS_LOCATION environment variable must be set.)
+               else
+                       gsi_path="$GLOBUS_LOCATION"
+               fi
+       fi
+       GLOBUS_LOCATION="$gsi_path"
+       export GLOBUS_LOCATION
+       if test ! -d "$GLOBUS_LOCATION" ; then
+               AC_MSG_ERROR(Cannot find Globus installation.  Set GLOBUS_LOCATION environment variable.)
+       fi
+
+        if test "x$globus_flavor_type" = "xno" ; then
+                AC_MSG_ERROR(--with-globus-flavor=TYPE must be specified)
+       fi
+        if test "x$globus_flavor_type" = "xyes" ; then
+                AC_MSG_ERROR(--with-globus-flavor=TYPE must specify a flavor type)
+       fi
+
+       GLOBUS_INCLUDE="${gsi_path}/include/${globus_flavor_type}"
+       if test ! -d "$GLOBUS_INCLUDE" ; then
+               AC_MSG_ERROR(Cannot find Globus flavor-specific include directory: ${GLOBUS_INCLUDE})
+       fi
+       
+       if test -x ${gsi_path}/bin/globus-makefile-header ; then
+               ${gsi_path}/bin/globus-makefile-header --flavor=${globus_flavor_type} ${gsi_static} globus_gss_assist | sed 's/ = \(.*\)/="\1"/' > ./gpt_build_tmp.sh
+       elif test -x ${gsi_path}/sbin/globus-makefile-header ; then
+               ${gsi_path}/sbin/globus-makefile-header --flavor=${globus_flavor_type} ${gsi_static} globus_gss_assist | sed 's/ = \(.*\)/="\1"/' > ./gpt_build_tmp.sh
+       else
+               AC_MSG_ERROR(Cannot find globus-makefile-header: Globus installation is incomplete)
+       fi
+       . ./gpt_build_tmp.sh
+       if test -z "$GLOBUS_PKG_LIBS" ; then
+               AC_MSG_ERROR(globus-makefile-header failed)
+       fi
+
+    AC_MSG_RESULT($GLOBUS_LOCATION)
+       AC_DEFINE(HAVE_GSSAPI_H)
+
+    CC="$GLOBUS_CC"
+    CFLAGS="$GLOBUS_CFLAGS"
+    CPP="$GLOBUS_CPP"
+       CPPFLAGS="$GLOBUS_CPPFLAGS $GLOBUS_INCLUDES"
+       LIBS="$LIBS $GLOBUS_LIBS $GLOBUS_PKG_LIBS"
+    LD="$GLOBUS_LD"
+       LDFLAGS="$LDFLAGS $GLOBUS_LDFLAGS"
+
+       INSTALL_GSISSH="yes"
+else
+       INSTALL_GSISSH=""
+fi
+# End Globus/GSI section
+
 AC_PROG_CC
 AC_CANONICAL_HOST
 AC_C_BIGENDIAN
@@ -107,14 +216,26 @@ if test "$GCC" = "yes" || test "$GCC" = "egcs"; then
                     no_attrib_nonnull=1
                     ;;
                2.*) no_attrib_nonnull=1 ;;
-               3.*) CFLAGS="$CFLAGS -Wsign-compare" ;;
-               4.*) CFLAGS="$CFLAGS -Wsign-compare -Wno-pointer-sign" ;;
+               3.*) CFLAGS="$CFLAGS -Wsign-compare -Wformat-security" ;;
+               4.*) CFLAGS="$CFLAGS -Wsign-compare -Wno-pointer-sign -Wformat-security" ;;
                *) ;;
        esac
 
+       AC_MSG_CHECKING(if $CC accepts -fno-builtin-memset)
+       saved_CFLAGS="$CFLAGS"
+       CFLAGS="$CFLAGS -fno-builtin-memset"
+       AC_LINK_IFELSE( [AC_LANG_SOURCE([[
+#include <string.h>
+int main(void){char b[10]; memset(b, 0, sizeof(b));}
+               ]])],
+               [ AC_MSG_RESULT(yes) ],
+               [ AC_MSG_RESULT(no)
+                 CFLAGS="$saved_CFLAGS" ]
+)
+
        # -fstack-protector-all doesn't always work for some GCC versions
        # and/or platforms, so we test if we can.  If it's not supported
-       # on a give platform gcc will emit a warning so we use -Werror.
+       # on a given platform gcc will emit a warning so we use -Werror.
        if test "x$use_stack_protector" = "x1"; then
            for t in -fstack-protector-all -fstack-protector; do
                AC_MSG_CHECKING(if $CC supports $t)
@@ -124,8 +245,8 @@ if test "$GCC" = "yes" || test "$GCC" = "egcs"; then
                LDFLAGS="$LDFLAGS $t -Werror"
                AC_LINK_IFELSE(
                        [AC_LANG_SOURCE([
-#include <stdlib.h>
-int main(void){return 0;}
+#include <stdio.h>
+int main(void){char x[[256]]; snprintf(x, sizeof(x), "XXX"); return 0;}
                         ])],
                    [ AC_MSG_RESULT(yes)
                      CFLAGS="$saved_CFLAGS $t"
@@ -133,8 +254,8 @@ int main(void){return 0;}
                      AC_MSG_CHECKING(if $t works)
                      AC_RUN_IFELSE(
                        [AC_LANG_SOURCE([
-#include <stdlib.h>
-int main(void){exit(0);}
+#include <stdio.h>
+int main(void){char x[[256]]; snprintf(x, sizeof(x), "XXX"); return 0;}
                        ])],
                        [ AC_MSG_RESULT(yes)
                          break ],
@@ -276,6 +397,7 @@ AC_CHECK_HEADERS( \
        sys/stream.h \
        sys/stropts.h \
        sys/strtio.h \
+       sys/statvfs.h \
        sys/sysmacros.h \
        sys/time.h \
        sys/timers.h \
@@ -312,6 +434,11 @@ AC_CHECK_HEADERS(login_cap.h, [], [], [
 #include <sys/types.h>
 ])
 
+# older BSDs need sys/param.h before sys/mount.h
+AC_CHECK_HEADERS(sys/mount.h, [], [], [
+#include <sys/param.h>
+])
+
 # Messages for features tested for in target-specific section
 SIA_MSG="no"
 SPC_MSG="no"
@@ -420,8 +547,6 @@ int main(void) { exit(0); }
        AC_DEFINE(USE_PIPES, 1, [Use PIPES instead of a socketpair()])
        AC_DEFINE(DISABLE_SHADOW, 1,
                [Define if you want to disable shadow passwords])
-       AC_DEFINE(IP_TOS_IS_BROKEN, 1,
-               [Define if your system choked on IP TOS setting])
        AC_DEFINE(NO_X11_UNIX_SOCKETS, 1,
                [Define if X11 doesn't support AF_UNIX sockets on that system])
        AC_DEFINE(NO_IPPORT_RESERVED_CONCEPT, 1,
@@ -430,9 +555,11 @@ int main(void) { exit(0); }
        AC_DEFINE(DISABLE_FD_PASSING, 1,
                [Define if your platform needs to skip post auth
                file descriptor passing])
+       AC_DEFINE(SSH_IOBUFSZ, 65536, [Windows is sensitive to read buffer size])
        ;;
 *-*-dgux*)
-       AC_DEFINE(IP_TOS_IS_BROKEN)
+       AC_DEFINE(IP_TOS_IS_BROKEN, 1,
+               [Define if your system choked on IP TOS setting])
        AC_DEFINE(SETEUID_BREAKS_SETUID)
        AC_DEFINE(BROKEN_SETREUID)
        AC_DEFINE(BROKEN_SETREGID)
@@ -451,11 +578,6 @@ int main(void) { exit(0); }
            [Use tunnel device compatibility to OpenBSD])
        AC_DEFINE(SSH_TUN_PREPEND_AF, 1,
            [Prepend the address family to IP tunnel traffic])
-       m4_pattern_allow(AU_IPv)
-       AC_CHECK_DECL(AU_IPv4, [], 
-           AC_DEFINE(AU_IPv4, 0, [System only supports IPv4 audit records])
-           [#include <bsm/audit.h>]
-       )
        AC_MSG_CHECKING(if we have the Security Authorization Session API)
        AC_TRY_COMPILE([#include <Security/AuthSession.h>],
                [SessionCreate(0, 0);],
@@ -480,6 +602,13 @@ int main(void) { exit(0); }
                fi],
                [AC_MSG_RESULT(no)]
        )
+       m4_pattern_allow(AU_IPv)
+       AC_CHECK_DECL(AU_IPv4, [], 
+           AC_DEFINE(AU_IPv4, 0, [System only supports IPv4 audit records])
+           [#include <bsm/audit.h>]
+       AC_DEFINE(LASTLOG_WRITE_PUTUTXLINE, 1,
+           [Define if pututxline updates lastlog too])
+       )
        ;;
 *-*-dragonfly*)
        SSHDLIBS="$SSHDLIBS -lcrypt"
@@ -563,11 +692,18 @@ int main(void) { exit(0); }
        AC_DEFINE(WITH_ABBREV_NO_TTY)
        AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
        ;;
+*-*-k*bsd*-gnu | *-*-kopensolaris*-gnu)
+       check_for_libcrypt_later=1
+       AC_DEFINE(PAM_TTY_KLUDGE)
+       AC_DEFINE(LOCKED_PASSWD_PREFIX, "!")
+       AC_DEFINE(SPT_TYPE,SPT_REUSEARGV)
+       AC_DEFINE(_PATH_BTMP, "/var/log/btmp", [log for bad login attempts])
+       AC_DEFINE(USE_BTMP, 1, [Use btmp to log bad logins])
+       ;;
 *-*-linux*)
        no_dev_ptmx=1
        check_for_libcrypt_later=1
        check_for_openpty_ctty_bug=1
-       AC_DEFINE(DONT_TRY_OTHER_AF, 1, [Workaround more Linux IPv6 quirks])
        AC_DEFINE(PAM_TTY_KLUDGE, 1,
                [Work around problematic Linux PAM modules handling of PAM_TTY])
        AC_DEFINE(LOCKED_PASSWD_PREFIX, "!",
@@ -661,6 +797,7 @@ mips-sony-bsd|mips-sony-newsos4)
                after setsid()])
        AC_DEFINE(PASSWD_NEEDS_USERNAME, 1, [must supply username to passwd
                in case the name is longer than 8 chars])
+       AC_DEFINE(BROKEN_TCGETATTR_ICANON, 1, [tcgetattr with ICANON may hang])
        external_path_file=/etc/default/login
        # hardwire lastlog location (can't detect it on some versions)
        conf_lastlog_location="/var/adm/lastlog"
@@ -731,7 +868,6 @@ mips-sony-bsd|mips-sony-newsos4)
        ;;
 # UnixWare 7.x, OpenUNIX 8
 *-*-sysv5*)
-       check_for_libcrypt_later=1
        AC_DEFINE(UNIXWARE_LONG_PASSWORDS, 1, [Support passwords > 8 chars])
        AC_DEFINE(USE_PIPES)
        AC_DEFINE(SETEUID_BREAKS_SETUID)
@@ -744,8 +880,14 @@ mips-sony-bsd|mips-sony-newsos4)
                AC_DEFINE(BROKEN_LIBIAF, 1,
                        [ia_uinfo routines not supported by OS yet])
                AC_DEFINE(BROKEN_UPDWTMPX)
+               AC_CHECK_LIB(prot, getluid,[ LIBS="$LIBS -lprot"
+                       AC_CHECK_FUNCS(getluid setluid,,,-lprot)
+                       AC_DEFINE(HAVE_SECUREWARE)
+                       AC_DEFINE(DISABLE_SHADOW)
+                       ],,)
                ;;
        *)      AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
+               check_for_libcrypt_later=1
                ;;
        esac
        ;;
@@ -844,6 +986,7 @@ mips-sony-bsd|mips-sony-newsos4)
        AC_DEFINE(SETEUID_BREAKS_SETUID)
        AC_DEFINE(BROKEN_SETREUID)
        AC_DEFINE(BROKEN_SETREGID)
+       AC_DEFINE(BROKEN_READV_COMPARISON, 1, [Can't do comparisons on readv])
        ;;
 
 *-*-nto-qnx*)
@@ -966,6 +1109,7 @@ AC_ARG_WITH(zlib,
        fi ]
 )
 
+AC_CHECK_HEADER([zlib.h], ,AC_MSG_ERROR([*** zlib.h missing - please install first or check config.log ***]))
 AC_CHECK_LIB(z, deflate, ,
        [
                saved_CPPFLAGS="$CPPFLAGS"
@@ -986,7 +1130,6 @@ AC_CHECK_LIB(z, deflate, ,
                )
        ]
 )
-AC_CHECK_HEADER([zlib.h], ,AC_MSG_ERROR([*** zlib.h missing - please install first or check config.log ***]))
 
 AC_ARG_WITH(zlib-version-check,
        [  --without-zlib-version-check Disable zlib version check],
@@ -1050,7 +1193,7 @@ dnl    Checks for libutil functions
 AC_CHECK_HEADERS(libutil.h)
 AC_SEARCH_LIBS(login, util bsd, [AC_DEFINE(HAVE_LOGIN, 1,
        [Define if your libraries define login()])])
-AC_CHECK_FUNCS(logout updwtmp logwtmp)
+AC_CHECK_FUNCS(fmt_scaled logout updwtmp logwtmp)
 
 AC_FUNC_STRFTIME
 
@@ -1112,154 +1255,6 @@ int main(void){struct dirent d;exit(sizeof(d.d_name)<=sizeof(char));}
        ]
 )
 
-# Check whether the user wants GSSAPI mechglue support
-AC_ARG_WITH(mechglue,
-       [  --with-mechglue=PATH    Build with GSSAPI mechglue library],
-       [
-               AC_MSG_CHECKING(for mechglue library)
-
-               if test -e ${withval}/libgssapi.a ; then
-                   mechglue_lib=${withval}/libgssapi.a
-               elif test -e ${withval}/lib/libgssapi.a ; then
-                   mechglue_lib=${withval}/lib/libgssapi.a
-               else
-                   AC_MSG_ERROR("Can't find libgssapi in ${withval}");
-               fi
-               LIBS="$LIBS ${mechglue_lib}"
-               AC_MSG_RESULT(${mechglue_lib})
-
-               AC_CHECK_LIB(dl, dlopen, , )
-               if test $ac_cv_lib_dl_dlopen = yes; then
-                  LDFLAGS="$LDFLAGS -ldl -Wl,-Bsymbolic"
-               fi
-
-               AC_DEFINE(GSSAPI)
-               AC_DEFINE(MECHGLUE, 1, [Define this if you're building with GSSAPI MechGlue.])
-               GSSAPI="mechglue"
-
-       ]
-)
-
-
-# Check whether the user wants GSI (Globus) support
-gsi_path="no"
-AC_ARG_WITH(gsi,
-       [  --with-gsi              Enable Globus GSI authentication support],
-       [
-               gsi_path="$withval"
-       ]
-)
-
-AC_ARG_WITH(globus,
-       [  --with-globus           Enable Globus GSI authentication support],
-       [
-               gsi_path="$withval"
-       ]
-)
-
-AC_ARG_WITH(globus-static,
-       [  --with-globus-static    Link statically with Globus GSI libraries],
-       [
-               gsi_static="-static"
-               if test "x$gsi_path" = "xno" ; then
-                       gsi_path="$withval"
-               fi
-       ]
-)
-
-# Check whether the user has a Globus flavor type
-globus_flavor_type="no"
-AC_ARG_WITH(globus-flavor,
-       [  --with-globus-flavor=TYPE  Specify Globus flavor type (ex: gcc32dbg)],
-       [
-               globus_flavor_type="$withval"
-               if test "x$gsi_path" = "xno" ; then
-                       gsi_path="yes"
-               fi
-       ]
-)
-
-if test "x$gsi_path" != "xno" ; then
-       # Globus GSSAPI configuration
-       AC_MSG_CHECKING(for Globus GSI)
-       AC_DEFINE(GSI, 1, [Define if you want GSI/Globus authentication support.])
-
-       if test "$GSSAPI" -a "$GSSAPI" != "mechglue"; then
-               AC_MSG_ERROR([Previously configured GSSAPI library conflicts with Globus GSI.])
-       fi
-       if test -z "$GSSAPI"; then
-               AC_DEFINE(GSSAPI)
-               GSSAPI="GSI"
-       fi
-
-       if test "x$gsi_path" = "xyes" ; then
-               if test -z "$GLOBUS_LOCATION" ; then
-                       AC_MSG_ERROR(GLOBUS_LOCATION environment variable must be set.)
-               else
-                       gsi_path="$GLOBUS_LOCATION"
-               fi
-       fi
-       GLOBUS_LOCATION="$gsi_path"
-       export GLOBUS_LOCATION
-       if test ! -d "$GLOBUS_LOCATION" ; then
-               AC_MSG_ERROR(Cannot find Globus installation.  Set GLOBUS_LOCATION environment variable.)
-       fi
-
-        if test "x$globus_flavor_type" = "xno" ; then
-                AC_MSG_ERROR(--with-globus-flavor=TYPE must be specified)
-       fi
-        if test "x$globus_flavor_type" = "xyes" ; then
-                AC_MSG_ERROR(--with-globus-flavor=TYPE must specify a flavor type)
-       fi
-
-       GLOBUS_INCLUDE="${gsi_path}/include/${globus_flavor_type}"
-       if test ! -d "$GLOBUS_INCLUDE" ; then
-               AC_MSG_ERROR(Cannot find Globus flavor-specific include directory: ${GLOBUS_INCLUDE})
-       fi
-       GSI_CPPFLAGS="-I${GLOBUS_INCLUDE}"
-       
-       if test -x ${gsi_path}/bin/globus-makefile-header ; then
-               ${gsi_path}/bin/globus-makefile-header --flavor=${globus_flavor_type} ${gsi_static} globus_gss_assist | sed 's/ = \(.*\)/="\1"/' > ./gpt_build_tmp.sh
-       elif test -x ${gsi_path}/sbin/globus-makefile-header ; then
-               ${gsi_path}/sbin/globus-makefile-header --flavor=${globus_flavor_type} ${gsi_static} globus_gss_assist | sed 's/ = \(.*\)/="\1"/' > ./gpt_build_tmp.sh
-       else
-               AC_MSG_ERROR(Cannot find globus-makefile-header: Globus installation is incomplete)
-       fi
-       . ./gpt_build_tmp.sh
-       if test -n "${need_dash_r}"; then
-               GSI_LDFLAGS="-L${gsi_path}/lib -R${gsi_path}/lib"
-       else
-               GSI_LDFLAGS="-L${gsi_path}/lib"
-       fi
-       if test -z "$GLOBUS_PKG_LIBS" ; then
-               AC_MSG_ERROR(globus-makefile-header failed)
-       fi
-
-       AC_DEFINE(HAVE_GSSAPI_H)
-
-       LIBS="$LIBS $GLOBUS_LIBS $GLOBUS_PKG_LIBS"
-       LDFLAGS="$LDFLAGS $GSI_LDFLAGS"
-       CPPFLAGS="$CPPFLAGS $GSI_CPPFLAGS"
-
-       # test that we got the libraries OK
-       AC_TRY_LINK(
-               [],
-               [],
-               [
-                       AC_MSG_RESULT(yes)
-               ],
-               [
-                       AC_MSG_ERROR(link with Globus libraries failed)
-               ]
-       )
-    AC_CHECK_FUNCS(globus_gss_assist_map_and_authorize)
-       INSTALL_GSISSH="yes"
-else
-       INSTALL_GSISSH=""
-fi
-AC_SUBST(INSTALL_GSISSH)
-# End Globus/GSI section
-
 AC_MSG_CHECKING([for /proc/pid/fd directory])
 if test -d "/proc/$$/fd" ; then
        AC_DEFINE(HAVE_PROC_PID, 1, [Define if you have /proc/$pid/fd])
@@ -1452,6 +1447,8 @@ AC_ARG_WITH(audit,
 dnl    Checks for library functions. Please keep in alphabetical order
 AC_CHECK_FUNCS( \
        arc4random \
+       arc4random_buf \
+       arc4random_uniform \
        asprintf \
        b64_ntop \
        __b64_ntop \
@@ -1465,6 +1462,7 @@ AC_CHECK_FUNCS( \
        fchmod \
        fchown \
        freeaddrinfo \
+       fstatvfs \
        futimes \
        getaddrinfo \
        getcwd \
@@ -1516,6 +1514,8 @@ AC_CHECK_FUNCS( \
        sigvec \
        snprintf \
        socketpair \
+       statfs \
+       statvfs \
        strdup \
        strerror \
        strlcat \
@@ -1648,6 +1648,8 @@ AC_CHECK_FUNCS(utmpname)
 dnl    Checks for utmpx functions
 AC_CHECK_FUNCS(endutxent getutxent getutxid getutxline pututxline )
 AC_CHECK_FUNCS(setutxent utmpxname)
+dnl    Checks for lastlog functions
+AC_CHECK_FUNCS(getlastlogxbyname)
 
 AC_CHECK_FUNC(daemon,
        [AC_DEFINE(HAVE_DAEMON, 1, [Define if your libraries define daemon()])],
@@ -2008,7 +2010,7 @@ AC_ARG_WITH(ssl-dir,
                fi
        ]
 )
-if test -z "$GSI_LDFLAGS" ; then
+if test -z "$GLOBUS_LDFLAGS" ; then
 LIBS="-lcrypto $LIBS"
 fi
 AC_TRY_LINK_FUNC(RAND_add, AC_DEFINE(HAVE_OPENSSL, 1,
@@ -2022,6 +2024,8 @@ AC_TRY_LINK_FUNC(RAND_add, AC_DEFINE(HAVE_OPENSSL, 1,
                        LDFLAGS="-L/usr/local/ssl/lib ${saved_LDFLAGS}"
                fi
                CPPFLAGS="-I/usr/local/ssl/include ${saved_CPPFLAGS}"
+               AC_CHECK_HEADER([openssl/opensslv.h], ,
+                   AC_MSG_ERROR([*** OpenSSL headers missing - please install first or check config.log ***]))
                AC_TRY_LINK_FUNC(RAND_add, AC_DEFINE(HAVE_OPENSSL),
                        [
                                AC_MSG_ERROR([*** Can't find recent OpenSSL libcrypto (see config.log for details) ***])
@@ -2206,6 +2210,23 @@ int main(void) { exit(EVP_aes_192_cbc() == NULL || EVP_aes_256_cbc() == NULL);}
        ]
 )
 
+AC_MSG_CHECKING([if EVP_DigestUpdate returns an int])
+AC_LINK_IFELSE(
+       [AC_LANG_SOURCE([[
+#include <string.h>
+#include <openssl/evp.h>
+int main(void) { if(EVP_DigestUpdate(NULL, NULL,0)) exit(0); }
+       ]])],
+       [
+               AC_MSG_RESULT(yes)
+       ],
+       [
+               AC_MSG_RESULT(no)
+               AC_DEFINE(OPENSSL_EVP_DIGESTUPDATE_VOID, 1,
+                   [Define if EVP_DigestUpdate returns void])
+       ]
+)
+
 # Some systems want crypt() from libcrypt, *not* the version in OpenSSL,
 # because the system crypt() is more featureful.
 if test "x$check_for_libcrypt_before" = "x1"; then
@@ -2811,8 +2832,20 @@ fi
 TYPE_SOCKLEN_T
 
 AC_CHECK_TYPES(sig_atomic_t,,,[#include <signal.h>])
+AC_CHECK_TYPES([fsblkcnt_t, fsfilcnt_t],,,[
+#include <sys/types.h>
+#ifdef HAVE_SYS_BITYPES_H
+#include <sys/bitypes.h>
+#endif
+#ifdef HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#ifdef HAVE_SYS_STATVFS_H
+#include <sys/statvfs.h>
+#endif
+])
 
-AC_CHECK_TYPES(in_addr_t,,,
+AC_CHECK_TYPES([in_addr_t, in_port_t],,,
 [#include <sys/types.h>
 #include <netinet/in.h>])
 
@@ -2959,6 +2992,15 @@ AC_CACHE_CHECK([for struct in6_addr], ac_cv_have_struct_in6_addr, [
 if test "x$ac_cv_have_struct_in6_addr" = "xyes" ; then
        AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1,
                [define if you have struct in6_addr data type])
+
+dnl Now check for sin6_scope_id
+       AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,,
+               [
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+#include <netinet/in.h>
+               ])
 fi
 
 AC_CACHE_CHECK([for struct addrinfo], ac_cv_have_struct_addrinfo, [
@@ -3173,6 +3215,42 @@ if test "x$ac_cv_have_accrights_in_msghdr" = "xyes" ; then
                file descriptor passing])
 fi
 
+AC_MSG_CHECKING(if struct statvfs.f_fsid is integral type)
+AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifdef HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+#ifdef HAVE_SYS_STATVFS_H
+#include <sys/statvfs.h>
+#endif
+], [struct statvfs s; s.f_fsid = 0;],
+[ AC_MSG_RESULT(yes) ],
+[ AC_MSG_RESULT(no)
+
+       AC_MSG_CHECKING(if fsid_t has member val)
+       AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/statvfs.h>],
+       [fsid_t t; t.val[0] = 0;],
+       [ AC_MSG_RESULT(yes)
+         AC_DEFINE(FSID_HAS_VAL, 1, fsid_t has member val) ],
+       [ AC_MSG_RESULT(no) ])
+
+       AC_MSG_CHECKING(if f_fsid has member __val)
+       AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/statvfs.h>],
+       [fsid_t t; t.__val[0] = 0;],
+       [ AC_MSG_RESULT(yes)
+         AC_DEFINE(FSID_HAS___VAL, 1, fsid_t has member __val) ],
+       [ AC_MSG_RESULT(no) ])
+])
+
 AC_CACHE_CHECK([for msg_control field in struct msghdr],
                ac_cv_have_control_in_msghdr, [
        AC_COMPILE_IFELSE(
@@ -3373,12 +3451,30 @@ AC_SEARCH_LIBS(getrrsetbyname, resolv,
                AC_SEARCH_LIBS(res_query, resolv)
                AC_SEARCH_LIBS(dn_expand, resolv)
                AC_MSG_CHECKING(if res_query will link)
-               AC_TRY_LINK_FUNC(res_query, AC_MSG_RESULT(yes),
+               AC_LINK_IFELSE([
+#include "confdefs.h"
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <netdb.h>
+#include <resolv.h>
+int main()
+{
+       res_query (0, 0, 0, 0, 0);
+       return 0;
+}
+                  ],
+                   AC_MSG_RESULT(yes),
                   [AC_MSG_RESULT(no)
                    saved_LIBS="$LIBS"
                    LIBS="$LIBS -lresolv"
                    AC_MSG_CHECKING(for res_query in -lresolv)
                    AC_LINK_IFELSE([
+#include "confdefs.h"
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <netdb.h>
 #include <resolv.h>
 int main()
 {
@@ -3386,8 +3482,7 @@ int main()
        return 0;
 }
                        ],
-                       [LIBS="$LIBS -lresolv"
-                        AC_MSG_RESULT(yes)],
+                       [AC_MSG_RESULT(yes)],
                        [LIBS="$saved_LIBS"
                         AC_MSG_RESULT(no)])
                    ])
@@ -3439,6 +3534,55 @@ AC_ARG_WITH(selinux,
        fi ]
 )
 
+# Finish configuring Globus GSSAPI
+if test "x$gsi_path" != "xno" ; then
+       if test ! -z "$need_dash_r" ; then
+               LDFLAGS="$LDFLAGS -R${gsi_path}/lib"
+       fi
+       if test ! -z "$blibpath" ; then
+               blibpath="$blibpath:${gsi_path}/lib"
+       fi
+       # test that we got the libraries OK
+       AC_TRY_LINK(
+               [],
+               [],
+               [],
+               [
+                       AC_MSG_ERROR(link with Globus libraries failed)
+               ]
+       )
+    AC_CHECK_FUNCS(globus_gss_assist_map_and_authorize)
+fi
+AC_SUBST(INSTALL_GSISSH)
+
+# Check whether the user wants GSSAPI mechglue support
+AC_ARG_WITH(mechglue,
+       [  --with-mechglue=PATH    Build with GSSAPI mechglue library],
+       [
+               AC_MSG_CHECKING(for mechglue library)
+
+               if test -e ${withval}/libgssapi.a ; then
+                   mechglue_lib=${withval}/libgssapi.a
+               elif test -e ${withval}/lib/libgssapi.a ; then
+                   mechglue_lib=${withval}/lib/libgssapi.a
+               else
+                   AC_MSG_ERROR("Can't find libgssapi in ${withval}");
+               fi
+               LIBS="${mechglue_lib} $LIBS"
+               AC_MSG_RESULT(${mechglue_lib})
+
+               AC_CHECK_LIB(dl, dlopen, , )
+               if test $ac_cv_lib_dl_dlopen = yes; then
+                  LDFLAGS="$LDFLAGS -ldl -Wl,-Bsymbolic"
+               fi
+
+               AC_DEFINE(GSSAPI)
+               AC_DEFINE(MECHGLUE, 1, [Define this if you're building with GSSAPI MechGlue.])
+               GSSAPI="mechglue"
+       ]
+)
+
+
 # Check whether user wants Kerberos 5 support
 KRB5_MSG="no"
 AC_ARG_WITH(kerberos5,
@@ -3453,10 +3597,10 @@ AC_ARG_WITH(kerberos5,
                AC_DEFINE(KRB5, 1, [Define if you want Kerberos 5 support])
                KRB5_MSG="yes"
 
-               AC_MSG_CHECKING(for krb5-config)
-               if test -x  $KRB5ROOT/bin/krb5-config ; then
-                       KRB5CONF=$KRB5ROOT/bin/krb5-config
-                       AC_MSG_RESULT($KRB5CONF)
+               AC_PATH_PROG([KRB5CONF],[krb5-config],
+                            [$KRB5ROOT/bin/krb5-config],
+                            [$KRB5ROOT/bin:$PATH])
+               if test -x $KRB5CONF ; then
 
                        AC_MSG_CHECKING(for gssapi support)
                        if $KRB5CONF | grep gssapi >/dev/null ; then
@@ -3482,7 +3626,6 @@ AC_ARG_WITH(kerberos5,
                                         AC_MSG_RESULT(no)
                        )
                else
-                       AC_MSG_RESULT(no)
                        CPPFLAGS="$CPPFLAGS -I${KRB5ROOT}/include"
                        LDFLAGS="$LDFLAGS -L${KRB5ROOT}/lib"
                        AC_MSG_CHECKING(whether we are using Heimdal)
@@ -3501,12 +3644,12 @@ AC_ARG_WITH(kerberos5,
                        )
                        AC_SEARCH_LIBS(dn_expand, resolv)
 
-                       AC_CHECK_LIB(gssapi,gss_init_sec_context,
+                       AC_CHECK_LIB(gssapi_krb5, gss_init_sec_context,
                                [ AC_DEFINE(GSSAPI)
-                                 K5LIBS="-lgssapi $K5LIBS" ],
-                               [ AC_CHECK_LIB(gssapi_krb5,gss_init_sec_context,
+                                 K5LIBS="-lgssapi_krb5 $K5LIBS" ],
+                               [ AC_CHECK_LIB(gssapigss_init_sec_context,
                                        [ AC_DEFINE(GSSAPI)
-                                         K5LIBS="-lgssapi_krb5 $K5LIBS" ],
+                                         K5LIBS="-lgssapi $K5LIBS" ],
                                        AC_MSG_WARN([Cannot find any suitable gss-api library - build may fail]),
                                        $K5LIBS)
                                ],
@@ -3630,7 +3773,10 @@ AC_ARG_WITH(xauth,
        ]
 )
 
+# strip causes problems with GSI libraries...
+if test -z "$GLOBUS_LDFLAGS" ; then
 STRIP_OPT=-s
+fi
 AC_ARG_ENABLE(strip,
        [  --disable-strip         Disable calling strip(1) on install],
        [
@@ -4255,6 +4401,13 @@ dnl Adding -Werror to CFLAGS early prevents configure tests from running.
 dnl Add now.
 CFLAGS="$CFLAGS $werror_flags"
 
+if grep "#define BROKEN_GETADDRINFO 1" confdefs.h >/dev/null || \
+    test "x$ac_cv_func_getaddrinfo" != "xyes" ; then
+       AC_SUBST(TEST_SSH_IPV6, no)
+else
+       AC_SUBST(TEST_SSH_IPV6, yes)
+fi
+
 AC_EXEEXT
 AC_CONFIG_FILES([Makefile buildpkg.sh opensshd.init openssh.xml \
        openbsd-compat/Makefile openbsd-compat/regress/Makefile \
This page took 0.144557 seconds and 4 git commands to generate.