Avoid a race condition in glibc between AIO and setresuid().
[samba.git] / source / configure.in
index d4fe277fb4444dc8d150837ed1d99444e7a519d9..dcdad47c3fd807961c1e2be1f81abec054c39f5d 100644 (file)
@@ -9,9 +9,20 @@ AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
 
-SAMBA_VERSION_SVN_REVISION=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_SVN_REVISION' | cut -d ' ' -f3-`
-if test -n "${SAMBA_VERSION_SVN_REVISION}";then
-       echo "BUILD REVISION: ${SAMBA_VERSION_SVN_REVISION}"
+SAMBA_VERSION_GIT_COMMIT_FULLREV=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_GIT_COMMIT_FULLREV' | cut -d ' ' -f3- | cut -d '"' -f2`
+if test -n "${SAMBA_VERSION_GIT_COMMIT_FULLREV}";then
+       echo "BUILD COMMIT REVISION: ${SAMBA_VERSION_GIT_COMMIT_FULLREV}"
+fi
+SAMBA_VERSION_GIT_COMMIT_DATE=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_GIT_COMMIT_DATE' | cut -d ' ' -f3-`
+if test -n "${SAMBA_VERSION_GIT_COMMIT_DATE}";then
+       echo "BUILD COMMIT DATE: ${SAMBA_VERSION_GIT_COMMIT_DATE}"
+fi
+SAMBA_VERSION_GIT_COMMIT_TIME=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_GIT_COMMIT_TIME' | cut -d ' ' -f3-`
+if test -n "${SAMBA_VERSION_GIT_COMMIT_TIME}";then
+       echo "BUILD COMMIT TIME: ${SAMBA_VERSION_GIT_COMMIT_TIME}"
+
+       # just to keep the build-farm gui happy for now...
+       echo "BUILD REVISION: ${SAMBA_VERSION_GIT_COMMIT_TIME}"
 fi
 
 AC_LIBREPLACE_LOCATION_CHECKS
@@ -233,7 +244,7 @@ done
 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include  -I. -I${srcdir-.}"
 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/talloc"
-SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/tdb/include"
+SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/tdb/include"
 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
 
@@ -259,7 +270,6 @@ dnl Unique-to-Samba variables we'll be playing with.
 AC_SUBST(SAMBA_CPPFLAGS)
 AC_SUBST(SHELL)
 AC_SUBST(LDSHFLAGS)
-AC_SUBST(MODULE_EXPORTS)
 AC_SUBST(SONAMEFLAG)
 AC_SUBST(SHLD)
 AC_SUBST(HOST_OS)
@@ -348,35 +358,6 @@ AC_ARG_WITH(selftest-prefix,
   esac
 ])
 
-AC_ARG_ENABLE(launchd,
-[  --enable-launchd        Support running under launchd (default=auto)])
-
-if test x"$enable_launchd" != x"no" ; then
-    AC_CACHE_CHECK([whether to include launchd support],
-       samba_cv_launchd_support,
-       [
-           AC_TRY_COMPILE(
-           [
-#include <launch.h>
-           ],
-           [
-               launchd_msg(NULL);
-               launchd_data_get_fd(NULL);
-           ],
-           samba_cv_launchd_support=yes,
-           samba_cv_launchd_support=no)
-       ])
-
-    if test x"$samba_cv_launchd_support" = x"yes" ; then
-       AC_DEFINE(WITH_LAUNCHD_SUPPORT, 1,
-                   [Whether launchd support should be enabled])
-    else
-       if test x"$enable_launchd" = x"yes" ; then
-           AC_ERROR(launchd support is not available)
-       fi
-    fi
-fi
-
 #################################################
 # set path of samba4's smbtorture
 smbtorture4_path=""
@@ -399,7 +380,7 @@ AC_ARG_WITH(smbtorture4_path,
 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
     [if eval "test x$enable_developer = xyes"; then
         developer=yes
-       DEVELOPER_CFLAGS="-gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
+       CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
        # Add -Wdeclaration-after-statement if compiler supports it
        AC_CACHE_CHECK(
           [that the C compiler understands -Wdeclaration-after-statement],
@@ -412,27 +393,9 @@ AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings a
            samba_cv_HAVE_Wdeclaration_after_statement=yes,
            samba_cv_HAVE_Wdeclaration_after_statement=no,
            samba_cv_HAVE_Wdeclaration_after_statement=cross)
-
        ])
        if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
-           DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
-       fi
-       # here
-       #-Werror-implicit-function-declaration
-       AC_CACHE_CHECK(
-          [that the C compiler understands -Werror-implicit-function-declaration],
-          samba_cv_HAVE_Werror_implicit_function_declaration, [
-         AC_TRY_RUN_STRICT([
-           int main(void)
-           {
-               return 0;
-           }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
-           samba_cv_HAVE_Werror_implicit_function_declaration=yes,
-           samba_cv_HAVE_Werror_implicit_function_declaration=no,
-           samba_cv_HAVE_Werror_implicit_function_declaration=cross)
-       ])
-       if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
-           DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
+           CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
        fi
     fi])
 
@@ -591,35 +554,7 @@ if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
        PIDL_ARGS="$PIDL_ARGS --uint-enums"
 fi
 
-############################################
-# Check whether we can do automatic dependency tracking
-
-m4_include(m4/substnot.m4)
-m4_include(m4/cond.m4)
-m4_include(m4/make.m4)
-m4_include(m4/depout.m4)
-m4_include(m4/lead-dot.m4)
-m4_include(m4/check_gnu_make.m4)
-m4_include(m4/depend.m4)
-
-# Using the dependency files requires GNU make until someone adds support
-# for Makefile includes for other make implementations. Note that
-# CHECK_GNU_MAKE() can find a non-default make.
-CHECK_GNU_MAKE()
-if test "x$_cv_gnu_make_command" != "x" -a \
-    x`which make` = x`which "$_cv_gnu_make_command"` ; then
-    AC_SUBST(MAKE, $_cv_gnu_make_command)
-else
-    # If GNU make is not the default, don't enable GNU-isms because we can't
-    # guarantee that GNU make will actually be the make that is invoked.
-    ifGNUmake='#'
-fi
-
-AM_DEP_TRACK()
-_AM_DEPENDENCIES(CC)
-
-############################################
-# Figure out the flags to support named structure initializers
+dnl Figure out the flags to support named structure initializers
 
 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
 
@@ -665,7 +600,7 @@ AC_SUBST(DYNEXP)
 
 dnl Add modules that have to be built by default here
 dnl These have to be built static:
-default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_winreg rpc_initshutdown rpc_lsa_ds rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog rpc_unixinfo rpc_epmapper auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
+default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_reg rpc_shutdown rpc_lsa_ds rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog rpc_echo auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
 
 dnl These are preferably build shared, and static if dlopen() is not available
 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy charset_CP850 charset_CP437 auth_script vfs_readahead"
@@ -808,11 +743,11 @@ case "$host_os" in
         CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
         AC_TRY_RUN([
 #include <unistd.h>
-int main () {
+main () {
 #if _LFS64_LARGEFILE == 1
-return 0;
+exit(0);
 #else
-return 1;
+exit(1);
 #endif
 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
         CPPFLAGS="$old_CPPFLAGS"
@@ -827,15 +762,6 @@ return 1;
       fi
     ;;
 
-# Systems with LFS support.
-#
-    gnu* | k*bsd*-gnu)
-       CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
-       AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
-       AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
-       AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
-       ;;
-
 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
 #
     *linux*)
@@ -847,7 +773,7 @@ return 1;
 #include <sys/utsname.h>
 #include <string.h>
 #include <stdlib.h>
-int main() {
+main() {
 #if _LFS64_LARGEFILE == 1
        struct utsname uts;
        char *release;
@@ -859,9 +785,9 @@ int main() {
        int libc_minor = __GLIBC_MINOR__;
 
        if (libc_major < 2)
-              return 1;
+              exit(1);
        if (libc_minor < 2)
-              return 1;
+              exit(1);
 #endif
 
        /* Ensure this is kernel 2.4 or higher */
@@ -872,10 +798,10 @@ int main() {
        minor = atoi(strsep(&release, "."));
 
        if (major > 2 || (major == 2 && minor > 3))
-               return 0;
-       return 1;
+               exit(0);
+       exit(1);
 #else
-       return 1;
+       exit(1);
 #endif
 }
 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
@@ -896,7 +822,7 @@ int main() {
     *darwin*)
        AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
 
-       # Add a system specific charset module.
+# Add a system specific charset module.
        default_shared_modules="$default_shared_modules charset_macosxfs"
 
        ;;
@@ -908,9 +834,9 @@ int main() {
 #include <unistd.h>
 main () {
 #if _LFS64_LARGEFILE == 1
-return 0;
+exit(0);
 #else
-return 1;
+exit(1);
 #endif
 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
         CPPFLAGS="$old_CPPFLAGS"
@@ -1162,7 +1088,7 @@ AC_HAVE_DECL(snprintf, [#include <stdio.h>])
 # nothing until kernel 2.1.44! very dumb.
 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
     AC_TRY_RUN([#include <errno.h>
-int main() { setresuid(1,1,1); setresuid(2,2,2); return errno==EPERM?0:1;}],
+main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
        samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
 if test x"$samba_cv_have_setresuid" = x"yes"; then
     AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
@@ -1173,7 +1099,7 @@ fi
 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
     AC_TRY_RUN([#include <unistd.h>
 #include <errno.h>
-int main() { errno = 0; setresgid(1,1,1); return errno != 0 ? (errno==EPERM ? 0 : 1) : 0;}],
+main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
        samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
 if test x"$samba_cv_have_setresgid" = x"yes"; then
     AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
@@ -1326,7 +1252,6 @@ AC_CHECK_FUNCS(memalign posix_memalign)
 AC_CHECK_HEADERS(sys/mman.h)
 # setbuffer, shmget, shm_open are needed for smbtorture
 AC_CHECK_FUNCS(setbuffer shmget shm_open)
-AC_CHECK_FUNCS(makecontext getcontext setcontext swapcontext)
 
 # Find a method of generating a stack trace
 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
@@ -1459,35 +1384,25 @@ AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
 #
 #
 case "$host_os" in
-    linux*-gnu* | gnu* | k*bsd*-gnu)
+    *linux*)
        # glibc <= 2.3.2 has a broken getgrouplist
-    AC_CACHE_CHECK([for a broken Linux getgrouplist API],
-           linux_getgrouplist_ok,
-           [
-               AC_TRY_RUN([
+       AC_TRY_RUN([
 #include <unistd.h>
 #include <sys/utsname.h>
-
-                   int main() {
-                          /* glibc up to 2.3 has a broken getgrouplist */
+main() {
+       /* glibc up to 2.3 has a broken getgrouplist */
 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
-                          int libc_major = __GLIBC__;
-                          int libc_minor = __GLIBC_MINOR__;
+       int libc_major = __GLIBC__;
+       int libc_minor = __GLIBC_MINOR__;
 
-                          if (libc_major < 2)
-                                 return 1;
-                          if ((libc_major == 2) && (libc_minor <= 3))
-                                 return 1;
+       if (libc_major < 2)
+              exit(1);
+       if ((libc_major == 2) && (libc_minor <= 3))
+              exit(1);
 #endif
-                          return 0;
-                   }
-
-               ],
-               [linux_getgrouplist_ok=yes],
-               [linux_getgrouplist_ok=no],
-               [linux_getgrouplist_ok=cross])
-       ])
-
+       exit(0);
+}
+], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
        if test x"$linux_getgrouplist_ok" = x"yes"; then
           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
        fi
@@ -1508,7 +1423,7 @@ if test x$ac_cv_func_stat64 = xno ; then
 #include <unistd.h>
 #endif
 #include <sys/stat.h>
-], [struct stat64 st64; return stat64(".",&st64);], [ac_cv_func_stat64=yes])
+], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
   AC_MSG_RESULT([$ac_cv_func_stat64])
   if test x$ac_cv_func_stat64 = xyes ; then
     AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
@@ -1522,7 +1437,7 @@ if test x$ac_cv_func_lstat64 = xno ; then
 #include <unistd.h>
 #endif
 #include <sys/stat.h>
-], [struct stat64 st64; return lstat64(".",&st64);], [ac_cv_func_lstat64=yes])
+], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
   AC_MSG_RESULT([$ac_cv_func_lstat64])
   if test x$ac_cv_func_lstat64 = xyes ; then
     AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
@@ -1536,7 +1451,7 @@ if test x$ac_cv_func_fstat64 = xno ; then
 #include <unistd.h>
 #endif
 #include <sys/stat.h>
-], [struct stat64 st64; return fstat64(0,&st64);], [ac_cv_func_fstat64=yes])
+], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
   AC_MSG_RESULT([$ac_cv_func_fstat64])
   if test x$ac_cv_func_fstat64 = xyes ; then
     AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
@@ -1686,6 +1601,14 @@ case "$host_os" in
   ;;
 esac
 
+########################################################
+# Check if attropen() is present if this is Solaris
+case "$host_os" in
+  *solaris*)
+       AC_CHECK_FUNCS(attropen)
+  ;;
+esac
+
 ########################################################
 # Do xattr functions take additional options like on Darwin?
 if test x"$ac_cv_func_getxattr" = x"yes" ; then
@@ -1757,25 +1680,20 @@ BLDSHARED="false"
 # these are the defaults, good for lots of systems
 HOST_OS="$host_os"
 LDSHFLAGS="-shared"
-MODULE_EXPORTS=""
 SONAMEFLAG="#"
 SHLD="\${CC} \${CFLAGS}"
 PICFLAG="${PIE_CFLAGS}"
 SHLIBEXT="so"
 
-
 # this bit needs to be modified for each OS that supports share libs
 # You need to specify how to create a shared library and
-# how to compile C code to produce PIC object files
+  # how to compile C code to produce PIC object files
 
-AC_MSG_CHECKING([ability to build shared libraries])
+  AC_MSG_CHECKING([ability to build shared libraries])
 
-# and these are for particular systems
-case "$host_os" in
-               linux*-gnu* | gnu* | k*bsd*-gnu)
-                       case "$host_os" in 
-                               linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;;
-                       esac
+  # and these are for particular systems
+  case "$host_os" in
+               *linux*)   AC_DEFINE(LINUX,1,[Whether the host os is linux])
                        BLDSHARED="true"
                        if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
                                LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
@@ -1849,8 +1767,10 @@ case "$host_os" in
                        ;;
                *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
                        BLDSHARED="true"
-                       LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
-                       DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
+                       # use expfull to export underscored symbols
+                       # add rtl to LDSHFLAGS to fix /lib/crt0.o warning
+                       LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
+                       DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
                        PICFLAG="-O2"
                        # as AIX code is always position independent...
                        # .po will just create compile warnings, use po.o:
@@ -1940,26 +1860,20 @@ case "$host_os" in
                *darwin*)   AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
                        BLDSHARED="true"
                        LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
-                       MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/modules/exports.darwin"
                        SHLIBEXT="dylib"
-                       # Since gcc doesn't fail on unrecognised options, the
-                       # PIE test incorrectly succeeds. Darwin gcc does not
-                       # actually support the PIE stuff.
-                       PIE_LDFLAGS=
-                       PIE_CFLAGS=
                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
                        ;;
 
                *)
                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
                        ;;
-esac
+  esac
 
 if test "$enable_shared" != "yes"; then
        BLDSHARED=false
 fi
 
-AC_MSG_RESULT($BLDSHARED)
+  AC_MSG_RESULT($BLDSHARED)
 
 AC_MSG_CHECKING([LDFLAGS])
 AC_MSG_RESULT([$LDFLAGS])
@@ -2022,7 +1936,7 @@ AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
 
 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
 AC_TRY_RUN([#include <stdio.h>
-int main() { long long x = 1000000; x *= x; return ((x/1000000) == 1000000)? 0: 1; }],
+main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
 if test x"$samba_cv_have_longlong" = x"yes"; then
     AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
@@ -2043,10 +1957,18 @@ if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
 fi
 
 
+AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
+AC_TRY_RUN([#include <time.h>
+main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
+samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
+if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
+    AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
+fi
+
 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
 AC_TRY_RUN([#include <stdio.h>
 #include <sys/stat.h>
-int main() { return (sizeof(off_t) == 8) ? 0 : 1; }],
+main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
     AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
@@ -2059,7 +1981,7 @@ AC_TRY_RUN([
 #endif
 #include <stdio.h>
 #include <sys/stat.h>
-int main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) return 1; return (lstat64("/dev/null", &st)==0)?0:1; }],
+main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
     AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
@@ -2072,7 +1994,7 @@ AC_TRY_RUN([
 #endif
 #include <stdio.h>
 #include <sys/stat.h>
-int main() { return (sizeof(ino_t) == 8) ? 0 : 1; }],
+main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
     AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
@@ -2085,7 +2007,7 @@ AC_TRY_RUN([
 #endif
 #include <stdio.h>
 #include <sys/stat.h>
-int main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) return 1; return (lstat64("/dev/null", &st)==0)?0:1; }],
+main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
     AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
@@ -2098,7 +2020,7 @@ AC_TRY_RUN([
 #endif
 #include <stdio.h>
 #include <sys/stat.h>
-int main() { return (sizeof(dev_t) == 8) ? 0 : 1; }],
+main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
     AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
@@ -2111,7 +2033,7 @@ AC_TRY_RUN([
 #endif
 #include <stdio.h>
 #include <sys/stat.h>
-int main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) return 1; return (lstat64("/dev/null", &st)==0)?0:1; }],
+main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
     AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
@@ -2149,7 +2071,7 @@ AC_TRY_RUN([
 #include <unistd.h>
 #endif
 #include <sys/types.h>
-int main() { dev_t dev; int i = major(dev); return 0; }],
+main() { dev_t dev; int i = major(dev); return 0; }],
 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
     AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
@@ -2161,7 +2083,7 @@ AC_TRY_RUN([
 #include <unistd.h>
 #endif
 #include <sys/types.h>
-int main() { dev_t dev; int i = minor(dev); return 0; }],
+main() { dev_t dev; int i = minor(dev); return 0; }],
 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
     AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
@@ -2173,7 +2095,7 @@ AC_TRY_RUN([
 #include <unistd.h>
 #endif
 #include <sys/types.h>
-int main() { dev_t dev = makedev(1,2); return 0; }],
+main() { dev_t dev = makedev(1,2); return 0; }],
 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
     AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
@@ -2181,7 +2103,7 @@ fi
 
 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
 AC_TRY_RUN([#include <stdio.h>
-int main() { char c; c=250; return (c > 0)?0:1; }],
+main() { char c; c=250; exit((c > 0)?0:1); }],
 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
     AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
@@ -2216,12 +2138,11 @@ fi
 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
 AC_TRY_LINK([
 #include <sys/time.h>
-#include <unistd.h>], [
-int main() { struct timeval tv; return gettimeofday(&tv, NULL);}],
+#include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
            samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
           samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
-    AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
+    AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
 fi
 
 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
@@ -2233,12 +2154,12 @@ if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
 
     AC_LIBTESTFUNC(rt, clock_gettime,
            [
-               AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
-                   [Whether clock_gettime is available])
-               SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
-               SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
-               SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
-           ])
+                           AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
+                               [Whether clock_gettime is available])
+                           SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
+                           SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
+                           SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
+                       ])
 
 fi
 
@@ -2272,18 +2193,18 @@ void foo(const char *format, ...) {
        va_start(ap, format);
        len = vsnprintf(buf, 0, format, ap);
        va_end(ap);
-       if (len != 5) return 1;
+       if (len != 5) exit(1);
 
        va_start(ap, format);
        len = vsnprintf(0, 0, format, ap);
        va_end(ap);
-       if (len != 5) return 1;
+       if (len != 5) exit(1);
 
-       if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) return 1;
+       if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
 
-       return 0;
+       exit(0);
 }
-int main() { foo("hello"); }
+main() { foo("hello"); }
 ],
 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
@@ -2293,9 +2214,9 @@ fi
 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
 AC_TRY_RUN([#include <sys/types.h>
 #include <dirent.h>
-int main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
+main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
-di->d_name[0] == 0) return 0; return 1;} ],
+di->d_name[0] == 0) exit(0); exit(1);} ],
 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
     AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
@@ -2304,7 +2225,7 @@ fi
 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
 AC_TRY_COMPILE([#include <sys/types.h>
 #include <utime.h>],
-[struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; return utime("foo.c",&tbuf);],
+[struct utimbuf tbuf;  tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
     AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
@@ -2593,7 +2514,7 @@ AC_TRY_RUN([
 #ifndef F_GETLEASE
 #define F_GETLEASE     1025
 #endif
-int main() {
+main() {
        int fd = open("/dev/null", O_RDONLY);
        return fcntl(fd, F_GETLEASE, 0) == -1;
 }
@@ -2611,8 +2532,8 @@ AC_TRY_RUN([
 #ifndef F_NOTIFY
 #define F_NOTIFY 1026
 #endif
-int main() {
-               return fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0;
+main() {
+               exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ?  1 : 0);
 }
 ],
 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
@@ -2622,7 +2543,7 @@ fi
 
 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
-AC_CHECK_FUNC(inotify_init)
+AC_CHECK_FUNCS(inotify_init)
 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
 ],
 samba_cv_HAVE_INOTIFY=yes,
@@ -2689,8 +2610,8 @@ AC_TRY_RUN([
 #define LOCK_MAND      32
 #define LOCK_READ      64
 #endif
-int main() {
-               return flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0;
+main() {
+               exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
 }
 ],
 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
@@ -2726,15 +2647,15 @@ if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
                AC_TRY_RUN([
 #include <sys/types.h>
 #include <sys/capability.h>
-int main() {
+main() {
  cap_t cap;
  cap_value_t vals[1];
  if (!(cap = cap_get_proc()))
-   return 1;
+   exit(1);
  vals[0] = CAP_CHOWN;
  cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
  cap_set_proc(cap);
return 0;
exit(0);
 }],
                samba_cv_HAVE_POSIX_CAPABILITIES=yes,
                samba_cv_HAVE_POSIX_CAPABILITIES=no,
@@ -2856,15 +2777,15 @@ AC_TRY_RUN([#include <stdlib.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
-int main() {
+main() {
   struct stat st;
   char tpl[20]="/tmp/test.XXXXXX";
   int fd = mkstemp(tpl);
-  if (fd == -1) return 1;
+  if (fd == -1) exit(1);
   unlink(tpl);
-  if (fstat(fd, &st) != 0) return 1;
-  if ((st.st_mode & 0777) != 0600) return 1;
-  return 0;
+  if (fstat(fd, &st) != 0) exit(1);
+  if ((st.st_mode & 0777) != 0600) exit(1);
+  exit(0);
 }],
 samba_cv_HAVE_SECURE_MKSTEMP=yes,
 samba_cv_HAVE_SECURE_MKSTEMP=no,
@@ -2874,12 +2795,7 @@ if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
 fi
 
 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
-       AC_TRY_RUN([
-#include "${srcdir-.}/lib/replace/test/os2_delete.c"
-int main(void) {
-    return test_readdir_os2_delete();
-}
-],
+       AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
                [samba_cv_HAVE_BROKEN_READDIR=no],
                        [samba_cv_HAVE_BROKEN_READDIR=yes],
                        [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
@@ -2888,10 +2804,7 @@ if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
        AC_TRY_RUN([
 #include "${srcdir-.}/lib/repdir.c"
-#include "${srcdir-.}/lib/replace/test/os2_delete.c"
-int main(void) {
-    return test_readdir_os2_delete();
-],
+#include "${srcdir-.}/tests/os2_delete.c"],
        samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
 fi
 
@@ -2956,30 +2869,32 @@ fi
 ################################################
 # look for a method of setting the effective uid
 seteuid=no;
+
 if test $seteuid = no; then
-AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
+AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
 AC_TRY_RUN([
 #define AUTOCONF_TEST 1
-#define USE_SETRESUID 1
+#define USE_SETREUID 1
 #include "confdefs.h"
 #include "${srcdir-.}/lib/util_sec.c"],
-           samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
-if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
-    seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
+           samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
+if test x"$samba_cv_USE_SETREUID" = x"yes"; then
+    seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
 fi
 fi
 
-
+# we check for setresuid second as it conflicts with AIO on Linux. 
+# see http://samba.org/~tridge/junkcode/aio_uid.c
 if test $seteuid = no; then
-AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
+AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
 AC_TRY_RUN([
 #define AUTOCONF_TEST 1
-#define USE_SETREUID 1
+#define USE_SETRESUID 1
 #include "confdefs.h"
 #include "${srcdir-.}/lib/util_sec.c"],
-           samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
-if test x"$samba_cv_USE_SETREUID" = x"yes"; then
-    seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
+           samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
+if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
+    seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
 fi
 fi
 
@@ -3052,11 +2967,11 @@ dnl
 #ifdef HAVE_SYS_FCNTL_H
 #include <sys/fcntl.h>
 #endif
-int main() { struct flock64 fl64;
+main() { struct flock64 fl64;
 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
-return 0;
+exit(0);
 #else
-return 1;
+exit(1);
 #endif
 }],
        samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
@@ -3137,11 +3052,10 @@ fi
 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
 AC_TRY_RUN([
 #include <stdio.h>
-#include <stdlib.h>
 #include <limits.h>
-int main() {
+main() {
        char *newpath = realpath("/tmp", NULL);
-       return (newpath != NULL) ? 0 : 1;
+       exit ((newpath != NULL) ? 0 : 1);
 }
 ],
 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
@@ -3333,6 +3247,21 @@ if test x"$with_ldap_support" != x"no"; then
   # this test must be before the libldap test
   AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
 
+  #######################################################
+  # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
+  # ldap logging and print it out in the samba logs
+  AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
+                samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
+                [AC_TRY_COMPILE([#include <lber.h>],
+                                [int val = LBER_OPT_LOG_PRINT_FN;],
+                                samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
+                                samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
+
+  if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
+       AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
+                 [Support for LDAP/LBER logging interception])
+  fi
+
   ########################################################
   # now see if we can find the ldap libs in standard paths
   AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
@@ -3364,12 +3293,6 @@ if test x"$with_ldap_support" != x"no"; then
     default_shared_modules="$default_shared_modules";
     SMBLDAP="lib/smbldap.o"
     SMBLDAPUTIL="lib/smbldap_util.o"
-    if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
-      AC_MSG_WARN(Disabling ldb_ldap support (requires ldap_initialize))
-    else
-      AC_DEFINE(HAVE_LDB_LDAP,1,[Whether ldb_ldap is available])
-      LDBLDAP="lib/ldb/ldb_ldap/ldb_ldap.o"
-    fi
     with_ldap_support=yes
     AC_MSG_CHECKING(whether LDAP support is used)
     AC_MSG_RESULT(yes)
@@ -3663,8 +3586,6 @@ if test x"$with_ads_support" != x"no"; then
   AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
   AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
-  AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
-  AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
 
   LIBS="$KRB5_LIBS $LIBS"
 
@@ -3985,7 +3906,7 @@ if test x"$with_ads_support" != x"no"; then
                 samba_cv_HAVE_WRFILE_KEYTAB,[
     AC_TRY_RUN([
 #include<krb5.h>
-  int main()
+  main()
   {
     krb5_context context;
     krb5_keytab keytab;
@@ -4041,44 +3962,29 @@ if test x"$with_ads_support" != x"no"; then
               [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
   fi
 
-  if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
-    AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
-        smb_krb5_enctype_to_string_takes_krb5_context_arg,[
-       AC_TRY_RUN_STRICT([
-               #include <krb5.h>
-               int main(void) {
-                       krb5_context context;
-                       char *str = NULL;
-                       krb5_enctype_to_string(context, 1, &str);
-                       if (str) free (str); 
-                       return 0;
-               }
-               ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
-               smb_krb5_enctype_to_string_takes_krb5_context_arg=yes,
-               smb_krb5_enctype_to_string_takes_krb5_context_arg=no)])
 
-    if test x"$smb_krb5_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
-      AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
-                [whether krb5_enctype_to_string takes krb5_context argument])
-    fi
+  AC_CACHE_CHECK([for krb5_principal_get_realm],
+                samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
+    AC_TRY_LINK([#include <krb5.h>],
+      [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
+      samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
+      samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
 
-    AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
-        smb_krb5_enctype_to_string_takes_size_t_arg,[
-       AC_TRY_RUN_STRICT([
-               #include <krb5.h>
-               int main(void) {
-                       char buf[256];
-                       krb5_enctype_to_string(1, buf, 256);
-                       return 0;
-               }
-               ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
-               smb_krb5_enctype_to_string_takes_size_t_arg=yes,
-               smb_krb5_enctype_to_string_takes_size_t_arg=no)])
+  if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
+    AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
+               [Whether the function krb5_principal_get_realm is defined])
+  fi
 
-    if test x"$smb_krb5_enctype_to_string_takes_size_t_arg" = x"yes"; then
-      AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
-                [whether krb5_enctype_to_string takes size_t argument])
-    fi
+  AC_CACHE_CHECK([for krb5_princ_realm],
+                samba_cv_HAVE_KRB5_PRINC_REALM,[
+    AC_TRY_LINK([#include <krb5.h>],
+      [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
+      samba_cv_HAVE_KRB5_PRINC_REALM=yes,
+      samba_cv_HAVE_KRB5_PRINC_REALM=no)])
+
+  if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
+    AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
+               [Whether the macro krb5_princ_realm is defined])
   fi
 
   #
@@ -4366,18 +4272,18 @@ if test x"${try_pam}" != x"no";then
                #include <security/pam_appl.h>
                #endif
        ]])
-       if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
+       if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
                if test x"${try_pam}" = x"yes";then
                        AC_MSG_ERROR([--with-pam=yes but security/pam_modules.h not found])
-               fi
+       fi
                create_pam_modules=no
-       fi
+    fi
 
        if test x"$use_pam" = x"yes"; then
-               AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
+    AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
                AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
                AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
-               with_pam_for_crypt=yes
+    with_pam_for_crypt=yes
 
                if test x"$create_pam_modules" = x"yes"; then
                        AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
@@ -5047,7 +4953,7 @@ if test $space = no; then
   main ()
   {
     struct statvfs64 fsd;
-    return statvfs64 (".", &fsd);
+    exit (statvfs64 (".", &fsd));
   }],
   fu_cv_sys_stat_statvfs64=yes,
   fu_cv_sys_stat_statvfs64=no,
@@ -5100,7 +5006,7 @@ if test $space = no; then
   {
     struct statfs fsd;
     fsd.f_fsize = 0;
-    return statfs (".", &fsd, sizeof (struct statfs));
+    exit (statfs (".", &fsd, sizeof (struct statfs)));
   }],
   fu_cv_sys_stat_statfs3_osf1=yes,
   fu_cv_sys_stat_statfs3_osf1=no,
@@ -5131,7 +5037,7 @@ member (AIX, 4.3BSD)])
   {
   struct statfs fsd;
   fsd.f_bsize = 0;
-  return statfs (".", &fsd);
+  exit (statfs (".", &fsd));
   }],
   fu_cv_sys_stat_statfs2_bsize=yes,
   fu_cv_sys_stat_statfs2_bsize=no,
@@ -5152,7 +5058,7 @@ if test $space = no; then
   main ()
   {
   struct statfs fsd;
-  return statfs (".", &fsd, sizeof fsd, 0);
+  exit (statfs (".", &fsd, sizeof fsd, 0));
   }],
     fu_cv_sys_stat_statfs4=yes,
     fu_cv_sys_stat_statfs4=no,
@@ -5180,7 +5086,7 @@ member (4.4BSD and NetBSD)])
   {
   struct statfs fsd;
   fsd.f_fsize = 0;
-  return statfs (".", &fsd);
+  exit (statfs (".", &fsd));
   }],
   fu_cv_sys_stat_statfs2_fsize=yes,
   fu_cv_sys_stat_statfs2_fsize=no,
@@ -5211,7 +5117,7 @@ if test $space = no; then
   struct fs_data fsd;
   /* Ultrix's statfs returns 1 for success,
      0 for not mounted, -1 for failure.  */
-  return statfs (".", &fsd) != 1;
+  exit (statfs (".", &fsd) != 1);
   }],
   fu_cv_sys_stat_fs_data=yes,
   fu_cv_sys_stat_fs_data=no,
@@ -5558,7 +5464,7 @@ AC_ARG_WITH(sendfile-support,
        AC_MSG_RESULT(yes);
 
        case "$host_os" in
-       linux*-gnu* | gnu* | k*bsd*-gnu)
+       *linux*)
                AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
                AC_TRY_LINK([#include <sys/sendfile.h>],
 [\
@@ -5807,7 +5713,6 @@ samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
 
 AC_CACHE_CHECK([for Linux readahead],
                 samba_cv_HAVE_LINUX_READAHEAD,[
-
     AC_TRY_LINK([
 #if defined(HAVE_UNISTD_H)
 #include <unistd.h>
@@ -5864,11 +5769,11 @@ NSSSONAMEVERSIONSUFFIX=""
 SMB_KRB5_LOCATOR="bin/smb_krb5_locator.$SHLIBEXT"
 
 case "$host_os" in
-       linux*-gnu* | gnu* | k*bsd*-gnu)
+       *linux*)
                NSSSONAMEVERSIONSUFFIX=".2"
                WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
                ;;
-       freebsd5*|*freebsd[[6-9]]*)
+       *freebsd[[5-9]]*)
                # FreeBSD winbind client is implemented as a wrapper around
                # the Linux version.
                NSSSONAMEVERSIONSUFFIX=".1"
@@ -5907,6 +5812,7 @@ case "$host_os" in
                WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
                    nsswitch/winbind_nss_linux.o"
                WINBIND_NSS_EXTRA_LIBS="-lsocket"
+               PAM_WINBIND_EXTRA_LIBS="-lsocket"
                ;;
        *hpux11*)
                WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
@@ -5931,6 +5837,7 @@ AC_SUBST(WINBIND_NSS_LDSHFLAGS)
 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
+AC_SUBST(PAM_WINBIND_EXTRA_LIBS)
 
 AC_SUBST(SMB_KRB5_LOCATOR)
 
@@ -6020,6 +5927,7 @@ if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
     AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
 fi
 
+
 #################################################
 # Check to see if we should use the included popt
 
@@ -6048,7 +5956,7 @@ if test x"$INCLUDED_POPT" = x"yes"; then
     FLAGS1="-I\$(srcdir)/popt"
 else
     AC_MSG_RESULT(no)
-    BUILD_POPT=""
+       BUILD_POPT=""
     POPTLIBS="-lpopt"
 fi
 AC_SUBST(BUILD_POPT)
@@ -6137,7 +6045,7 @@ done
 
 dnl Always built these modules static
 MODULE_rpc_spoolss=STATIC
-MODULE_rpc_srvsvc=STATIC
+MODULE_rpc_srv=STATIC
 MODULE_idmap_tdb=STATIC
 MODULE_idmap_passdb=STATIC
 MODULE_idmap_nss=STATIC
@@ -6170,21 +6078,18 @@ SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
 
 
 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
+SMB_MODULE(rpc_reg, \$(RPC_REG_OBJ), "bin/librpc_reg.$SHLIBEXT", RPC)
 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
+SMB_MODULE(rpc_srv, \$(RPC_SVC_OBJ), "bin/librpc_svc.$SHLIBEXT", RPC)
 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_unixinfo, \$(RPC_UNIXINFO_OBJ), "bin/librpc_unixinfo.$SHLIBEXT", RPC)
-SMB_MODULE(rpc_epmapper, \$(RPC_EPMAPPER_OBJ), "bin/librpc_epmapper.$SHLIBEXT", RPC)
+SMB_MODULE(rpc_echo, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
 SMB_SUBSYSTEM(RPC,smbd/server.o)
 
 SMB_MODULE(idmap_ldap, nsswitch/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
@@ -6238,8 +6143,8 @@ SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", V
 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
-SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
+SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
 
 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
 
@@ -6369,11 +6274,6 @@ AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
           AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
           AC_MSG_WARN([cannot run when cross-compiling]))
 
-dnl Merge in developer cflags from now on
-if test x"$developer" = x"yes"; then
-    CFLAGS="${CFLAGS} ${DEVELOPER_CFLAGS}"
-fi
-
 builddir=`pwd`
 AC_SUBST(builddir)