]> andersk Git - gssapi-openssh.git/blobdiff - openssh/configure.ac
More tweaks to build across platforms.
[gssapi-openssh.git] / openssh / configure.ac
index 7ba06ddf8f9df4e6946dfa35e707405da07f39b1..8dfd0a4ddca93df1e2ce47d90be0785d529c7351 100644 (file)
@@ -19,6 +19,127 @@ 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_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"
+
+       # 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_PROG_CC
 AC_CANONICAL_HOST
 AC_C_BIGENDIAN
@@ -90,18 +211,66 @@ AC_C_INLINE
 
 AC_CHECK_DECL(LLONG_MAX, have_llong_max=1, , [#include <limits.h>])
 
+use_stack_protector=1
+AC_ARG_WITH(stackprotect,
+    [  --without-stackprotect  Don't use compiler's stack protection], [
+    if test "x$withval" = "xno"; then
+       use_stack_protector=0
+    fi ])
+
 if test "$GCC" = "yes" || test "$GCC" = "egcs"; then
        CFLAGS="$CFLAGS -Wall -Wpointer-arith -Wuninitialized"
        GCC_VER=`$CC -v 2>&1 | $AWK '/gcc version /{print $3}'`
        case $GCC_VER in
-               1.*) ;;
-               2.8* | 2.9*) CFLAGS="$CFLAGS -Wsign-compare" ;;
-               2.*) ;;
+               1.*) no_attrib_nonnull=1 ;;
+               2.8* | 2.9*)
+                    CFLAGS="$CFLAGS -Wsign-compare"
+                    no_attrib_nonnull=1
+                    ;;
+               2.*) no_attrib_nonnull=1 ;;
                3.*) CFLAGS="$CFLAGS -Wsign-compare" ;;
                4.*) CFLAGS="$CFLAGS -Wsign-compare -Wno-pointer-sign" ;;
                *) ;;
        esac
 
+       # -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.
+       if test "x$use_stack_protector" = "x1"; then
+           for t in -fstack-protector-all -fstack-protector; do
+               AC_MSG_CHECKING(if $CC supports $t)
+               saved_CFLAGS="$CFLAGS"
+               saved_LDFLAGS="$LDFLAGS"
+               CFLAGS="$CFLAGS $t -Werror"
+               LDFLAGS="$LDFLAGS $t -Werror"
+               AC_LINK_IFELSE(
+                       [AC_LANG_SOURCE([
+#include <stdlib.h>
+int main(void){return 0;}
+                        ])],
+                   [ AC_MSG_RESULT(yes)
+                     CFLAGS="$saved_CFLAGS $t"
+                     LDFLAGS="$saved_LDFLAGS $t"
+                     AC_MSG_CHECKING(if $t works)
+                     AC_RUN_IFELSE(
+                       [AC_LANG_SOURCE([
+#include <stdlib.h>
+int main(void){exit(0);}
+                       ])],
+                       [ AC_MSG_RESULT(yes)
+                         break ],
+                       [ AC_MSG_RESULT(no) ],
+                       [ AC_MSG_WARN([cross compiling: cannot test])
+                         break ]
+                     )
+                   ],
+                   [ AC_MSG_RESULT(no) ]
+               )
+               CFLAGS="$saved_CFLAGS"
+               LDFLAGS="$saved_LDFLAGS"
+           done
+       fi
+
        if test -z "$have_llong_max"; then
                # retry LLONG_MAX with -std=gnu99, needed on some Linuxes
                unset ac_cv_have_decl_LLONG_MAX
@@ -115,6 +284,10 @@ if test "$GCC" = "yes" || test "$GCC" = "egcs"; then
        fi
 fi
 
+if test "x$no_attrib_nonnull" != "x1" ; then
+       AC_DEFINE(HAVE_ATTRIBUTE__NONNULL__, 1, [Have attribute nonnull])
+fi
+
 AC_ARG_WITH(rpath,
        [  --without-rpath         Disable auto-added -R linker paths],
        [
@@ -198,6 +371,7 @@ AC_CHECK_HEADERS( \
        netgroup.h \
        pam/pam_appl.h \
        paths.h \
+       poll.h \
        pty.h \
        readpassphrase.h \
        rpc/types.h \
@@ -215,6 +389,7 @@ AC_CHECK_HEADERS( \
        sys/dir.h \
        sys/mman.h \
        sys/ndir.h \
+       sys/poll.h \
        sys/prctl.h \
        sys/pstat.h \
        sys/select.h \
@@ -229,6 +404,7 @@ AC_CHECK_HEADERS( \
        time.h \
        tmpdir.h \
        ttyent.h \
+       ucred.h \
        unistd.h \
        usersec.h \
        util.h \
@@ -334,7 +510,7 @@ int main(void) { exit(0); }
                [],
                [#include <usersec.h>]
        )
-       AC_CHECK_FUNCS(setauthdb)
+       AC_CHECK_FUNCS(getgrset setauthdb)
        AC_CHECK_DECL(F_CLOSEM,
            AC_DEFINE(HAVE_FCNTL_CLOSEM, 1, [Use F_CLOSEM fcntl for closefrom]),
            [],
@@ -360,7 +536,7 @@ int main(void) { exit(0); }
        ;;
 *-*-cygwin*)
        check_for_libcrypt_later=1
-       LIBS="$LIBS /usr/lib/textmode.o"
+       LIBS="$LIBS /usr/lib/textreadmode.o"
        AC_DEFINE(HAVE_CYGWIN, 1, [Define if you are on Cygwin])
        AC_DEFINE(USE_PIPES, 1, [Use PIPES instead of a socketpair()])
        AC_DEFINE(DISABLE_SHADOW, 1,
@@ -383,10 +559,12 @@ int main(void) { exit(0); }
        AC_DEFINE(BROKEN_SETREGID)
        ;;
 *-*-darwin*)
-       AC_DEFINE(BROKEN_GETADDRINFO, 1, [getaddrinfo is broken (if present)])],
+       AC_DEFINE(BROKEN_GETADDRINFO, 1, [Define if getaddrinfo is broken)])
+       AC_DEFINE(BROKEN_GETADDRINFO)
        AC_DEFINE(SETEUID_BREAKS_SETUID)
        AC_DEFINE(BROKEN_SETREUID)
        AC_DEFINE(BROKEN_SETREGID)
+       AC_DEFINE(BROKEN_GLOB, 1, [OS X glob does not do what we expect])
        AC_DEFINE_UNQUOTED(BIND_8_COMPAT, 1,
                [Define if your resolver libs need this for getrrsetbyname])
        AC_DEFINE(SSH_TUN_FREEBSD, 1, [Open tunnel devices the FreeBSD way])
@@ -394,6 +572,11 @@ 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);],
@@ -418,7 +601,7 @@ int main(void) { exit(0); }
                fi],
                [AC_MSG_RESULT(no)]
        )
-       ;;
+       ;;
 *-*-dragonfly*)
        SSHDLIBS="$SSHDLIBS -lcrypt"
        ;;
@@ -555,6 +738,7 @@ mips-sony-bsd|mips-sony-newsos4)
        AC_DEFINE(SSH_TUN_FREEBSD, 1, [Open tunnel devices the FreeBSD way])
        AC_CHECK_HEADER([net/if_tap.h], ,
            AC_DEFINE(SSH_TUN_NO_L2, 1, [No layer 2 tunnel support]))
+       AC_DEFINE(BROKEN_GLOB, 1, [FreeBSD glob does not do what we need])
        ;;
 *-*-bsdi*)
        AC_DEFINE(SETEUID_BREAKS_SETUID)
@@ -791,7 +975,13 @@ mips-sony-bsd|mips-sony-newsos4)
        AC_DEFINE(MISSING_FD_MASK, 1, [Define on *nto-qnx systems])
        AC_DEFINE(DISABLE_LASTLOG)
        AC_DEFINE(SSHD_ACQUIRES_CTTY)
+       AC_DEFINE(BROKEN_SHADOW_EXPIRE, 1, [QNX shadow support is broken])
        enable_etc_default_login=no     # has incompatible /etc/default/login
+       case "$host" in
+       *-*-nto-qnx6*)
+               AC_DEFINE(DISABLE_FD_PASSING)
+               ;;
+       esac
        ;;
 
 *-*-ultrix*)
@@ -1043,153 +1233,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_LIBS=`${gsi_path}/bin/globus-makefile-header --flavor=${globus_flavor_type} ${gsi_static} globus_gss_assist | perl -n -e 'if (/GLOBUS_PKG_LIBS = (.*)/){print $1;}'`
-       elif test -x ${gsi_path}/sbin/globus-makefile-header ; then
-               GSI_LIBS=`${gsi_path}/sbin/globus-makefile-header --flavor=${globus_flavor_type} ${gsi_static} globus_gss_assist | perl -n -e 'if (/GLOBUS_PKG_LIBS = (.*)/){print $1;}'`
-       else
-               AC_MSG_ERROR(Cannot find globus-makefile-header: Globus installation is incomplete)
-       fi
-       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 "$GSI_LIBS" ; then
-               AC_MSG_ERROR(globus-makefile-header failed)
-       fi
-
-       AC_DEFINE(HAVE_GSSAPI_H)
-
-       LIBS="$LIBS $GSI_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])
@@ -1271,8 +1314,7 @@ AC_ARG_WITH(tcp-wrappers,
                                        CPPFLAGS="-I${withval} ${CPPFLAGS}"
                                fi
                        fi
-                       LIBWRAP="-lwrap"
-                       LIBS="$LIBWRAP $LIBS"
+                       LIBS="-lwrap $LIBS"
                        AC_MSG_CHECKING(for libwrap)
                        AC_TRY_LINK(
                                [
@@ -1288,7 +1330,7 @@ AC_ARG_WITH(tcp-wrappers,
                                        AC_DEFINE(LIBWRAP, 1,
                                                [Define if you want
                                                TCP Wrappers support])
-                                       AC_SUBST(LIBWRAP)
+                                       SSHDLIBS="$SSHDLIBS -lwrap"
                                        TCPW_MSG="yes"
                                ],
                                [
@@ -1363,7 +1405,7 @@ AC_ARG_WITH(audit,
                AC_CHECK_FUNCS(getaudit, [],
                    [AC_MSG_ERROR(BSM enabled and required function not found)])
                # These are optional
-               AC_CHECK_FUNCS(getaudit_addr)
+               AC_CHECK_FUNCS(getaudit_addr aug_get_machine)
                AC_DEFINE(USE_BSM_AUDIT, 1, [Use BSM audit module])
                ;;
          debug)
@@ -1403,6 +1445,7 @@ AC_CHECK_FUNCS( \
        getnameinfo \
        getopt \
        getpeereid \
+       getpeerucred \
        _getpty \
        getrlimit \
        getttyent \
@@ -1421,6 +1464,7 @@ AC_CHECK_FUNCS( \
        ogetaddrinfo \
        openlog_r \
        openpty \
+       poll \
        prctl \
        pstat \
        readpassphrase \
@@ -1454,6 +1498,7 @@ AC_CHECK_FUNCS( \
        strtonum \
        strtoll \
        strtoul \
+       swap32 \
        sysconf \
        tcgetpgrp \
        truncate \
@@ -1526,6 +1571,14 @@ AC_CHECK_DECLS(writev, , , [
 #include <unistd.h>
        ])
 
+AC_CHECK_DECLS(MAXSYMLINKS, , , [
+#include <sys/param.h>
+       ])
+
+AC_CHECK_DECLS(offsetof, , , [
+#include <stddef.h>
+       ])
+
 AC_CHECK_FUNCS(setresuid, [
        dnl Some platorms have setresuid that isn't implemented, test for this
        AC_MSG_CHECKING(if setresuid seems to work)
@@ -1651,7 +1704,7 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
 
 # Check for missing getpeereid (or equiv) support
 NO_PEERCHECK=""
-if test "x$ac_cv_func_getpeereid" != "xyes" ; then
+if test "x$ac_cv_func_getpeereid" != "xyes" -a "x$ac_cv_func_getpeerucred" != "xyes"; then
        AC_MSG_CHECKING([whether system supports SO_PEERCRED getsockopt])
        AC_TRY_COMPILE(
                [#include <sys/types.h>
@@ -1928,7 +1981,7 @@ AC_ARG_WITH(ssl-dir,
                fi
        ]
 )
-if test -z "$GSI_LIBS" ; then
+if test -z "$GLOBUS_LDFLAGS" ; then
 LIBS="-lcrypto $LIBS"
 fi
 AC_TRY_LINK_FUNC(RAND_add, AC_DEFINE(HAVE_OPENSSL, 1,
@@ -2021,6 +2074,14 @@ int main(void) {
        ]
 )
 
+AC_ARG_WITH(openssl-header-check,
+       [  --without-openssl-header-check Disable OpenSSL version consistency check],
+       [  if test "x$withval" = "xno" ; then
+               openssl_check_nonfatal=1
+          fi
+       ]
+)
+
 # Sanity check OpenSSL headers
 AC_MSG_CHECKING([whether OpenSSL's headers match the library])
 AC_RUN_IFELSE(
@@ -2034,9 +2095,18 @@ int main(void) { exit(SSLeay() == OPENSSL_VERSION_NUMBER ? 0 : 1); }
        ],
        [
                AC_MSG_RESULT(no)
-               AC_MSG_ERROR([Your OpenSSL headers do not match your library.
-Check config.log for details.
+               if test "x$openssl_check_nonfatal" = "x"; then
+                       AC_MSG_ERROR([Your OpenSSL headers do not match your
+library. Check config.log for details.
+If you are sure your installation is consistent, you can disable the check
+by running "./configure --without-openssl-header-check".
+Also see contrib/findssl.sh for help identifying header/library mismatches.
+])
+               else
+                       AC_MSG_WARN([Your OpenSSL headers do not match your
+library. Check config.log for details.
 Also see contrib/findssl.sh for help identifying header/library mismatches.])
+               fi
        ],
        [
                AC_MSG_WARN([cross compiling: not checking])
@@ -2124,7 +2194,15 @@ fi
 # Search for SHA256 support in libc and/or OpenSSL
 AC_CHECK_FUNCS(SHA256_Update EVP_sha256)
 
-AC_CHECK_LIB(iaf, ia_openinfo)
+saved_LIBS="$LIBS"
+AC_CHECK_LIB(iaf, ia_openinfo, [
+       LIBS="$LIBS -liaf"
+       AC_CHECK_FUNCS(set_id, [SSHDLIBS="$SSHDLIBS -liaf"
+                               AC_DEFINE(HAVE_LIBIAF, 1,
+                       [Define if system has libiaf that supports set_id])
+                               ])
+])
+LIBS="$saved_LIBS"
 
 ### Configure cryptographic random number support
 
@@ -2174,7 +2252,7 @@ AC_ARG_WITH(pam,
 
                        PAM_MSG="yes"
 
-                       LIBPAM="-lpam"
+                       SSHDLIBS="$SSHDLIBS -lpam"
                        AC_DEFINE(USE_PAM, 1,
                                [Define if you want to enable PAM support])
 
@@ -2184,11 +2262,10 @@ AC_ARG_WITH(pam,
                                        # libdl already in LIBS
                                        ;;
                                *)
-                                       LIBPAM="$LIBPAM -ldl"
+                                       SSHDLIBS="$SSHDLIBS -ldl"
                                        ;;
                                esac
                        fi
-                       AC_SUBST(LIBPAM)
                fi
        ]
 )
@@ -3297,25 +3374,81 @@ int main()
                        [#include <arpa/nameser.h>])
        ])
 
+AC_MSG_CHECKING(if struct __res_state _res is an extern)
+AC_LINK_IFELSE([
+#include <stdio.h>
+#if HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+extern struct __res_state _res;
+int main() { return 0; }
+               ],
+               [AC_MSG_RESULT(yes)
+                AC_DEFINE(HAVE__RES_EXTERN, 1,
+                   [Define if you have struct __res_state _res as an extern])
+               ],
+               [ AC_MSG_RESULT(no) ]
+)
+
 # Check whether user wants SELinux support
 SELINUX_MSG="no"
 LIBSELINUX=""
 AC_ARG_WITH(selinux,
-       [  --with-selinux   Enable SELinux support],
+       [  --with-selinux          Enable SELinux support],
        [ if test "x$withval" != "xno" ; then
+               save_LIBS="$LIBS"
                AC_DEFINE(WITH_SELINUX,1,[Define if you want SELinux support.])
                SELINUX_MSG="yes"
                AC_CHECK_HEADER([selinux/selinux.h], ,
                    AC_MSG_ERROR(SELinux support requires selinux.h header))
                AC_CHECK_LIB(selinux, setexeccon, [ LIBSELINUX="-lselinux" ],
                    AC_MSG_ERROR(SELinux support requires libselinux library))
-               save_LIBS="$LIBS"
-               LIBS="$LIBS $LIBSELINUX"
+               SSHDLIBS="$SSHDLIBS $LIBSELINUX"
                AC_CHECK_FUNCS(getseuserbyname get_default_context_with_level)
                LIBS="$save_LIBS"
        fi ]
 )
-AC_SUBST(LIBSELINUX)
+
+# 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
+fi
+
+# 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"
@@ -3529,32 +3662,6 @@ else
        AC_SUBST(XAUTH_PATH)
 fi
 
-AC_CHECK_DECL(_PATH_BSHELL, ,
- AC_DEFINE_UNQUOTED(_PATH_BSHELL, "/bin/sh",
- [Define to your C shell if not defined in paths.h])
- [ #include <paths.h> ]
-)
-
-AC_CHECK_DECL(_PATH_CSHELL, ,
- AC_DEFINE_UNQUOTED(_PATH_CSHELL, "/bin/csh",
- [Define to your Bourne shell if not defined in paths.h])
- [ #include <paths.h> ]
-)
-
-AC_CHECK_DECL(_PATH_SHELLS, ,
- AC_DEFINE_UNQUOTED(_PATH_BSHELL, "/etc/shells",
- [Define to your shells file if not defined in paths.h])
- [ #include <paths.h> ]
-)
-
-# if _PATH_MAILDIR is in paths.h then we won't go hunting for it.
-AC_CHECK_DECL(_PATH_MAILDIR,
- AC_DEFINE(PATH_MAILDIR_IN_PATHS_H, 1,
- [Define if _PATH_MAILDIR is in paths.h]),
- ,
- [ #include <paths.h> ]
-)
-
 # Check for mail directory (last resort if we cannot get it from headers)
 if test ! -z "$MAIL" ; then
        maildir=`dirname $MAIL`
@@ -4227,7 +4334,10 @@ echo "          Compiler: ${CC}"
 echo "    Compiler flags: ${CFLAGS}"
 echo "Preprocessor flags: ${CPPFLAGS}"
 echo "      Linker flags: ${LDFLAGS}"
-echo "         Libraries: ${LIBWRAP} ${LIBPAM} ${LIBS}"
+echo "         Libraries: ${LIBS}"
+if test ! -z "${SSHDLIBS}"; then
+echo "         +for sshd: ${SSHDLIBS}"
+fi
 
 echo ""
 
@@ -4253,12 +4363,12 @@ if test ! -z "$RAND_HELPER_CMDHASH" ; then
 fi
 
 if test ! -z "$NO_PEERCHECK" ; then
-       echo "WARNING: the operating system that you are using does not "
-       echo "appear to support either the getpeereid() API nor the "
-       echo "SO_PEERCRED getsockopt() option. These facilities are used to "
-       echo "enforce security checks to prevent unauthorised connections to "
-       echo "ssh-agent. Their absence increases the risk that a malicious "
-       echo "user can connect to your agent. "
+       echo "WARNING: the operating system that you are using does not"
+       echo "appear to support getpeereid(), getpeerucred() or the"
+       echo "SO_PEERCRED getsockopt() option. These facilities are used to"
+       echo "enforce security checks to prevent unauthorised connections to"
+       echo "ssh-agent. Their absence increases the risk that a malicious"
+       echo "user can connect to your agent."
        echo ""
 fi
 
This page took 0.195087 seconds and 4 git commands to generate.