r14631: Add {,un}installpammodules rule and add it to the install rule.
[tprouty/samba.git] / source3 / configure.in
index 9774479acbf8729de941f04569ac6335527b0af9..079376c6b7c5929729dfcb647fea48a9b412d6f3 100644 (file)
@@ -5,6 +5,9 @@ AC_PREREQ(2.53)
 AC_INIT(include/includes.h)
 AC_CONFIG_HEADER(include/config.h)
 
+AC_DISABLE_STATIC
+AC_ENABLE_SHARED
+
 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
 
@@ -13,64 +16,20 @@ if test -n "${SAMBA_VERSION_SVN_REVISION}";then
        echo "BUILD REVISION: ${SAMBA_VERSION_SVN_REVISION}"
 fi
 
-#################################################
-# Figure out what type of system we are building on.
-
-UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
-AC_MSG_CHECKING(uname -s)
-AC_MSG_RESULT(${UNAME_S})
-
-UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
-AC_MSG_CHECKING(uname -r)
-AC_MSG_RESULT(${UNAME_R})
-
-UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
-AC_MSG_CHECKING(uname -m)
-AC_MSG_RESULT(${UNAME_M})
-
-UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
-AC_MSG_CHECKING(uname -p)
-AC_MSG_RESULT(${UNAME_P})
-
-AC_CANONICAL_SYSTEM
-
-#################################################
-# Detect the compiler early so we know how to run
-# feature tests correctly.
-
-sinclude(compiler.m4)
-
-##
-## for some reason this macro resets the CFLAGS
-## so save and restore
-##
-OLD_CFLAGS=${CFLAGS}
-AC_PROG_CC
-CFLAGS=${OLD_CFLAGS}
-
-OLD_CFLAGS=${CFLAGS}
-AC_PROG_CPP
-CFLAGS=${OLD_CFLAGS}
-
-dnl Check if we use GNU ld
-LD=${LD-ld}
-AC_PROG_LD_GNU
-
-AC_DISABLE_STATIC
-AC_ENABLE_SHARED
-
 #################################################
 # Directory handling stuff to support both the
 # legacy SAMBA directories and FHS compliant
 # ones...
 AC_PREFIX_DEFAULT(/usr/local/samba)
 
+rootsbindir="\${SBINDIR}"
 lockdir="\${VARDIR}/locks"
 piddir="\${VARDIR}/locks"
-mandir="\${prefix}/man"
+test "${mandir}" || mandir="\${prefix}/man"
 logfilebase="\${VARDIR}"
 privatedir="\${prefix}/private"
-libdir="\${prefix}/lib"
+test "${libdir}" || libdir="\${prefix}/lib"
+pammodulesdir="\${LIBDIR}/security"
 configdir="\${LIBDIR}"
 swatdir="\${prefix}/swat"
 
@@ -105,6 +64,22 @@ AC_ARG_WITH(privatedir,
     ;;
   esac])
 
+#################################################
+# set root sbin directory location
+AC_ARG_WITH(rootsbindir,
+[  --with-rootsbindir=DIR  Which directory to use for root sbin ($ac_default_prefix/sbin)],
+[ case "$withval" in
+  yes|no)
+  #
+  # Just in case anybody calls it without argument
+  #
+    AC_MSG_WARN([--with-rootsbindir called without argument - will use default])
+  ;;
+  * )
+    rootsbindir="$withval"
+    ;;
+  esac])
+
 #################################################
 # set lock directory location
 AC_ARG_WITH(lockdir,
@@ -202,7 +177,23 @@ AC_ARG_WITH(libdir,
   esac])
 
 #################################################
-# set lib directory location
+# set PAM modules directory location
+AC_ARG_WITH(pammodulesdir,
+[  --with-pammodulesdir=DIR  Which directory to use for PAM modules ($ac_default_prefix/$libdir/security)],
+[ case "$withval" in
+  yes|no)
+  #
+  # Just in case anybody calls it without argument
+  #
+    AC_MSG_WARN([--with-pammodulesdir called without argument - will use default])
+  ;;
+  * )
+    pammodulesdir="$withval"
+    ;;
+  esac])
+
+#################################################
+# set man directory location
 AC_ARG_WITH(mandir,
 [  --with-mandir=DIR       Where to put man pages ($mandir)],
 [ case "$withval" in
@@ -244,12 +235,14 @@ AC_SUBST(privatedir)
 AC_SUBST(swatdir)
 AC_SUBST(bindir)
 AC_SUBST(sbindir)
+AC_SUBST(rootsbindir)
+AC_SUBST(pammodulesdir)
 
 dnl Unique-to-Samba variables we'll be playing with.
 AC_SUBST(SHELL)
 AC_SUBST(LDSHFLAGS)
 AC_SUBST(SONAMEFLAG)
-AC_SUBST(SONAMEVERSIONSUFFIX)
+AC_SUBST(NSSSONAMEVERSIONSUFFIX)
 AC_SUBST(SHLD)
 AC_SUBST(HOST_OS)
 AC_SUBST(PICFLAGS)
@@ -260,10 +253,14 @@ AC_SUBST(PIE_LDFLAGS)
 AC_SUBST(SHLIBEXT)
 AC_SUBST(INSTALLLIBCMD_SH)
 AC_SUBST(INSTALLLIBCMD_A)
+AC_SUBST(UNINSTALLLIBCMD_SH)
+AC_SUBST(UNINSTALLLIBCMD_A)
 AC_SUBST(INSTALL_LIBMSRPC)
+AC_SUBST(UNINSTALL_LIBMSRPC)
 AC_SUBST(LIBMSRPC_SHARED)
 AC_SUBST(LIBMSRPC)
 AC_SUBST(INSTALL_LIBSMBCLIENT)
+AC_SUBST(UNINSTALL_LIBSMBCLIENT)
 AC_SUBST(LIBSMBCLIENT_SHARED)
 AC_SUBST(LIBSMBCLIENT)
 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
@@ -277,13 +274,18 @@ AC_SUBST(IDMAP_LIBS)
 AC_SUBST(KRB5_LIBS)
 AC_SUBST(LDAP_LIBS)
 AC_SUBST(SHLIB_PROGS)
+AC_SUBST(PAM_MODULES)
 AC_SUBST(SMBWRAPPER)
 AC_SUBST(SMBWRAP_OBJS)
 AC_SUBST(SMBWRAP_INC)
 AC_SUBST(EXTRA_BIN_PROGS)
+AC_SUBST(CIFSMOUNT_PROGS)
+AC_SUBST(INSTALL_CIFSMOUNT)
+AC_SUBST(UNINSTALL_CIFSMOUNT)
 AC_SUBST(EXTRA_SBIN_PROGS)
 AC_SUBST(EXTRA_ALL_TARGETS)
 AC_SUBST(CONFIG_LIBS)
+AC_SUBST(NSCD_LIBS)
 
 # Set defaults
 PIE_CFLAGS=""
@@ -324,50 +326,78 @@ AC_ARG_ENABLE(socket-wrapper,
        SOCKWRAP="\$(SOCKET_WRAPPER_OBJ)"
     fi])
 
+#################################################
+# set prefix for 'make test'
+selftest_prefix="./"
+AC_SUBST(selftest_prefix)
+AC_ARG_WITH(selftest-prefix,
+[  --with-selftest-prefix=DIR    The prefix where make test will be runned ($selftest_prefix)],
+[ case "$withval" in
+  yes|no)
+    AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
+  ;;
+  * )
+    selftest_prefix="$withval"
+    ;;
+  esac
+])
+
+#################################################
+# set path of samba4's smbtorture
+smbtorture4_path=""
+AC_SUBST(smbtorture4_path)
+AC_ARG_WITH(smbtorture4_path,
+[  --with-smbtorture4-path=PATH    The path to a samba4 smbtorture for make test (none)],
+[ case "$withval" in
+  yes|no)
+    AC_MSG_ERROR([--with-smbtorture4-path should take a path])
+  ;;
+  * )
+    smbtorture4_path="$withval"
+    if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
+       AC_MSG_ERROR(['$smbtorture_path' does not  exist!]) 
+    fi
+  ;;
+ esac
+])
+
 # compile with optimization and without debugging by default, but
 # allow people to set their own preference.
 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
 # if it has no value.  This prevent *very* large debug binaries from occurring
 # by default.
 if test "x$CFLAGS" = x; then
-    AX_CFLAGS_GCC_OPTION(-O2, CFLAGS)
-    AX_CFLAGS_IRIX_OPTION(-O2, CFLAGS)
-    # Make sure the MIPSPro compiler will never decide functions are too
-    # big to optimise
-    AX_CFLAGS_IRIX_OPTION(-OPT:Olimit=0, CFLAGS)
-    AX_CFLAGS_HPUX_OPTION(-O2, CFLAGS)
-    AX_CFLAGS_SUN_OPTION(-O2, CFLAGS)
-    AX_CFLAGS_AIX_OPTION(-O2, CFLAGS)
+  CFLAGS="-O"
 fi
 
-CPPFLAGS="${CPPFLAGS} -D_SAMBA_BUILD_"
+CFLAGS="${CFLAGS} -D_SAMBA_BUILD_"
 
 AC_ARG_ENABLE(developer, [  --enable-developer      Turn on developer warnings and debugging (default=no)],
     [if eval "test x$enable_developer = xyes"; then
         developer=yes
-       AX_CFLAGS_WARN_ALL(CFLAGS)
-       AX_CFLAGS_GCC_OPTION(-gstabs, CFLAGS)
-       AX_CFLAGS_GCC_OPTION(-Wshadow, CFLAGS)
-       AX_CFLAGS_GCC_OPTION(-Wstrict-prototypes, CFLAGS)
-       AX_CFLAGS_GCC_OPTION(-Wpointer-arith, CFLAGS)
-       AX_CFLAGS_GCC_OPTION(-Wcast-align, CFLAGS)
-       AX_CFLAGS_GCC_OPTION(-Wwrite-strings, CFLAGS)
-       AX_CFLAGS_GCC_OPTION(-Wdeclaration-after-statement, CFLAGS)
-       CPPFLAGS="${CPPFLAGS} -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],
+          samba_cv_HAVE_Wdeclaration_after_statement, [
+         AC_TRY_RUN_STRICT([
+           int main(void)
+           {
+               return 0;
+           }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
+           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
+           CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
+       fi
     fi])
 
 AC_ARG_ENABLE(krb5developer, [  --enable-krb5developer  Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
     [if eval "test x$enable_krb5developer = xyes"; then
         developer=yes
-       AX_CFLAGS_WARN_ALL(CFLAGS)
-       AX_CFLAGS_GCC_OPTION(-gstabs, CFLAGS)
-       AX_CFLAGS_GCC_OPTION(-Wshadow, CFLAGS)
-       AX_CFLAGS_GCC_OPTION(-Wpointer-arith, CFLAGS)
-       AX_CFLAGS_GCC_OPTION(-Wcast-align, CFLAGS)
-       AX_CFLAGS_GCC_OPTION(-Wcast-qual, CFLAGS)
-       AX_CFLAGS_GCC_OPTION(-Wwrite-strings, CFLAGS)
-       AX_CFLAGS_GCC_OPTION(-Wdeclaration-after-statement, CFLAGS)
-       CPPFLAGS="${CPPFLAGS} -DDEBUG_PASSWORD -DDEVELOPER"
+       CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
     fi])
 
 AC_ARG_ENABLE(dmalloc, [  --enable-dmalloc        Enable heap debugging [default=no]])
@@ -380,89 +410,19 @@ then
        LIBS="$LIBS -ldmalloc"  
 fi
 
-# Check for profile guided optimisation (PGO) support.
-
-AC_ARG_ENABLE(pgo,
-[  --enable-pgo=SCRIPT     Compile with PGO (default=no)],
-[
-    case $enableval in
-       yes|no)
-           AC_MSG_ERROR(the argument to --enable-pgo must be an executable script)
-    esac
-
-    samba_cv_have_pgo=no
-
-    # Test for IRIX PGO first. Unfortunately, some of the later GCC option
-    # tests can spuriously succeed with the MIPSPro compilers. Despite the
-    # test succeeding, the GCC options don't work.
-    if test "x$samba_cv_have_pgo" = "xno" ; then
-       samba_cv_have_pgo=yes
-       # The backslash below is horrible but necessary -- jpeach
-       AX_CFLAGS_IRIX_OPTION("-fb_create\ samba.feedback",
-               PGO_GENERATE_CFLAGS, [], [samba_cv_have_pgo=no])
-       AX_CFLAGS_IRIX_OPTION("-fb_opt\ samba.feedback",
-               PGO_USE_CFLAGS, [], [samba_cv_have_pgo=no])
-    fi
-
-    # Test GCC 4.x style profile flags.
-    if test "x$samba_cv_have_pgo" = "xno" ; then
-       samba_cv_have_pgo=yes
-       AX_CFLAGS_GCC_OPTION(-fprofile-generate, PGO_GENERATE_CFLAGS,
-               [], [samba_cv_have_pgo=no])
-       AX_CFLAGS_GCC_OPTION(-fprofile-use, PGO_USE_CFLAGS,
-               [], [samba_cv_have_pgo=no])
-    fi
-
-    # Test GCC 3.x style profile flags. This is rather more complicated so
-    # we only require a minimal set of options to enable PGO.
-    if test "x$samba_cv_have_pgo" = "xno" ; then
-       samba_cv_have_pgo=yes
-       AX_CFLAGS_GCC_OPTION(-fprofile-arcs, PGO_GENERATE_CFLAGS,
-               [], [samba_cv_have_pgo=no])
-       AX_CFLAGS_GCC_OPTION(-fvpt, PGO_GENERATE_CFLAGS, [], [])
-       AX_CFLAGS_GCC_OPTION(-fspeculative-prefetching, PGO_GENERATE_CFLAGS,
-               [], [])
-       AX_CFLAGS_GCC_OPTION(-fprofile-values, PGO_GENERATE_CFLAGS, [], [])
-       AX_CFLAGS_GCC_OPTION(-fbranch-probabilities, PGO_USE_CFLAGS,
-               [], [samba_cv_have_pgo=no])
-       AX_CFLAGS_GCC_OPTION(-fvpt, PGO_USE_CFLAGS, [], [])
-       AX_CFLAGS_GCC_OPTION(-freorder-functions, PGO_USE_CFLAGS, [], [])
-       AX_CFLAGS_GCC_OPTION(-fprofile-values, PGO_USE_CFLAGS, [], [])
-       AX_CFLAGS_GCC_OPTION(-fspeculative-prefetching, PGO_USE_CFLAGS, [], [])
-       AX_CFLAGS_GCC_OPTION(-funroll-loops, PGO_USE_CFLAGS, [], [])
-       AX_CFLAGS_GCC_OPTION(-fpeel-loops, PGO_USE_CFLAGS, [], [])
-       AX_CFLAGS_GCC_OPTION(-ftracer, PGO_USE_CFLAGS, [], [])
-    fi
-
-    if test -r "$enableval" ; then
-       PGO_EXPERIMENT_SCRIPT="$enableval"
-    else
-       AC_MSG_ERROR(cannot find PGO experiment script $enableval)
-    fi
-
-    if test "x$samba_cv_have_pgo" = "xno" ; then
-       ifPGO="#"
-    else
-       # Enable PGO targets in Makefile
-       ifPGO=""
-       # System-specific profiling tweaks
-       case "$host_os" in
-           *irix*) PGO_LIBS="$PGO_LIBS -linstr" ;;
-       esac
-    fi
-],
-[
-    ifPGO="#"
-]
-)
+dnl Checks for programs.
 
-AC_SUBST(ifPGO)
-AC_SUBST(PGO_GENERATE_CFLAGS)
-AC_SUBST(PGO_USE_CFLAGS)
-AC_SUBST(PGO_EXPERIMENT_SCRIPT)
-AC_SUBST(PGO_LIBS)
+##
+## for some reason this macro resets the CFLAGS
+## so save and restore
+##
+OLD_CFLAGS=${CFLAGS}
+AC_PROG_CC
+CFLAGS=${OLD_CFLAGS}
 
-dnl Checks for programs.
+OLD_CFLAGS=${CFLAGS}
+AC_PROG_CPP
+CFLAGS=${OLD_CFLAGS}
 
 AC_PROG_INSTALL
 AC_PROG_AWK
@@ -470,6 +430,10 @@ AC_PATH_PROG(PERL, perl)
 
 AC_CHECK_TOOL(AR, ar)
 
+dnl Check if we use GNU ld
+LD=ld
+AC_PROG_LD_GNU
+
 dnl Certain versions of GNU ld the default is not to have the 
 dnl --allow-shlib-undefined flag defined.  This causes a stackload of
 dnl warnings when building modules.
@@ -518,10 +482,28 @@ fi
 AC_SUBST(BROKEN_CC)
 
 dnl Check if the C compiler understands -Werror
-AX_CFLAGS_GCC_OPTION(-Werror, Werror_FLAGS)
-
+AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
+ AC_TRY_RUN_STRICT([
+  int main(void)
+  {
+       return 0;
+  }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
+  samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
+if test x"$samba_cv_HAVE_Werror" = x"yes"; then
+   Werror_FLAGS="-Werror"
+else 
 dnl Check if the C compiler understands -w2
-AX_CFLAGS_IRIX_OPTION(-w2, Werror_FLAGS)
+AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
+ AC_TRY_RUN_STRICT([
+  int main(void)
+  {
+       return 0;
+  }],[-w2],[$CPPFLAGS],[$LDFLAGS],
+  samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
+if test x"$samba_cv_HAVE_w2" = x"yes"; then
+   Werror_FLAGS="-w2"
+fi
+fi
 
 dnl Check if the C compiler understands volatile (it should, being ANSI).
 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
@@ -531,6 +513,24 @@ if test x"$samba_cv_volatile" = x"yes"; then
    AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
 fi
 
+UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
+AC_MSG_CHECKING(uname -s)
+AC_MSG_RESULT(${UNAME_S})
+
+UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
+AC_MSG_CHECKING(uname -r)
+AC_MSG_RESULT(${UNAME_R})
+
+UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
+AC_MSG_CHECKING(uname -m)
+AC_MSG_RESULT(${UNAME_M})
+
+UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
+AC_MSG_CHECKING(uname -p)
+AC_MSG_RESULT(${UNAME_P})
+
+AC_CANONICAL_SYSTEM
+
 dnl Add #include for broken IRIX header files
   case "$host_os" in
        *irix6*) AC_ADD_INCLUDE(<standards.h>)
@@ -562,11 +562,12 @@ case "$host_os" in
 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
     *hpux*)
     
-      AX_CFLAGS_HPUX_OPTION(Ae, CFLAGS,
-             [ac_cv_prog_cc_Ae=yes], [ac_cv_prog_cc_Ae=no])
+      AC_PROG_CC_FLAG(Ae)
       # mmap on HPUX is completely broken...
       AC_DEFINE(MMAP_BLACKLIST, 1, [Whether MMAP is broken])
-
+      if test $ac_cv_prog_cc_Ae = yes; then
+        CPPFLAGS="$CPPFLAGS -Ae"
+      fi
 #
 # Defines needed for HPUX support.
 # HPUX has bigcrypt but (sometimes?) doesn't use it for
@@ -874,8 +875,11 @@ esac
 AC_CHECK_HEADERS(shadow.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h security/pam_appl.h)
 AC_CHECK_HEADERS(stropts.h poll.h)
-AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
-AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h sys/proplist.h)
+AC_CHECK_HEADERS(syscall.h sys/syscall.h)
+
+AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
+AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
+
 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
 
 AC_CHECK_HEADERS(netinet/ip.h,,,[[
@@ -1474,6 +1478,8 @@ case "$host_os" in
   *)
        AC_SEARCH_LIBS(getxattr, [attr])
        AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
+       AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
+       AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
        AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
        AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
        AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
@@ -1501,7 +1507,7 @@ BLDSHARED="false"
 HOST_OS="$host_os"
 LDSHFLAGS="-shared"
 SONAMEFLAG="#"
-SONAMEVERSIONSUFFIX=""
+NSSSONAMEVERSIONSUFFIX=""
 SHLD="\${CC} \${CFLAGS}"
 PICFLAGS=""
 PICSUFFIX="po"
@@ -1526,7 +1532,7 @@ if test "$enable_shared" = "yes"; then
                        DYNEXP="-Wl,--export-dynamic"
                        PICFLAGS="-fPIC"
                        SONAMEFLAG="-Wl,-soname="
-                       SONAMEVERSIONSUFFIX=".2"
+                       NSSSONAMEVERSIONSUFFIX=".2"
                        AC_DEFINE(STAT_ST_BLOCKSIZE,512)
                        ;;
                *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
@@ -1535,6 +1541,8 @@ if test "$enable_shared" = "yes"; then
                        SONAMEFLAG="-h "
                        if test "${GCC}" = "yes"; then
                                PICFLAGS="-fPIC"
+                               SONAMEFLAG="-Wl,-soname="
+                               NSSSONAMEVERSIONSUFFIX=".1"
                                if test "${ac_cv_prog_gnu_ld}" = "yes"; then
                                        DYNEXP="-Wl,-E"
                                fi
@@ -1591,7 +1599,7 @@ if test "$enable_shared" = "yes"; then
                        ;;
                *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
                        BLDSHARED="true"
-                       LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-bnoentry,-berok"
+                       LDSHFLAGS="-Wl,-G,-bexpall"
                        DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
                        PICFLAGS="-O2"
                        if test "${GCC}" != "yes"; then
@@ -2320,6 +2328,11 @@ fi
 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
     AC_DEFINE(HAVE_FAM_CHANGE_NOTIFY, 1,
            [Whether FAM is file notifications are available])
+    AC_TRY_COMPILE([#include <fam.h>],
+               [FAMCodes code = FAMChanged;],
+               AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
+                   [Whether fam.h contains a typedef for enum FAMCodes]),
+               [])
 fi
 
 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
@@ -2351,22 +2364,46 @@ if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
     AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
 fi
 
-AC_CACHE_CHECK([for irix specific capabilities],samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES,[
-AC_TRY_RUN([#include <sys/types.h>
+#################################################
+# Check for POSIX capability support
+
+AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
+    AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
+    [], [])
+
+if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
+
+    ac_save_LIBS=$LIBS
+    AC_LIBTESTFUNC(cap, cap_get_proc)
+
+    AC_CACHE_CHECK([for POSIX capabilities],
+           samba_cv_HAVE_POSIX_CAPABILITIES,
+           [
+               AC_TRY_RUN([
+#include <sys/types.h>
 #include <sys/capability.h>
 main() {
  cap_t cap;
- if ((cap = cap_get_proc()) == NULL)
+ cap_value_t vals[1];
+ if (!(cap = cap_get_proc()))
    exit(1);
cap->cap_effective |= CAP_NETWORK_MGT;
- cap->cap_inheritable |= CAP_NETWORK_MGT;
vals[0] = CAP_CHOWN;
+ cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
  cap_set_proc(cap);
  exit(0);
-}
-],
-samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=yes,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=no,samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES=cross)])
-if test x"$samba_cv_HAVE_IRIX_SPECIFIC_CAPABILITIES" = x"yes"; then
-    AC_DEFINE(HAVE_IRIX_SPECIFIC_CAPABILITIES,1,[Whether IRIX specific capabilities are available])
+}],
+               samba_cv_HAVE_POSIX_CAPABILITIES=yes,
+               samba_cv_HAVE_POSIX_CAPABILITIES=no,
+               samba_cv_HAVE_POSIX_CAPABILITIES=cross)
+           ])
+
+if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
+    AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
+           [Whether POSIX capabilities are available])
+else
+    LIBS=$ac_save_LIBS
+fi
+
 fi
 
 #
@@ -3571,29 +3608,8 @@ if test x"$with_ads_support" != x"no"; then
 LIBS="$ac_save_LIBS"
 fi
 
-#################################################
-# check for KCM support
-
-with_kcm_support=no
-AC_MSG_CHECKING([for KCM support])
-
-AC_ARG_WITH(kcm,
-[  --with-kcm              KCM support (default no)],
-[ case "$withval" in
-    yes)
-       if test x$FOUND_KRB5 = x"no"; then
-               AC_MSG_ERROR(libkrb5 is needed for KCM support)
-       fi
-       with_kcm_support="$withval"
-       AC_DEFINE(WITH_KCM,1,[Whether to include KCM support])
-       ;;
-    *)
-       with_kcm_support="no"
-       AC_DEFINE(WITH_KCM,0,[Whether to include KCM support])
-       ;;
-  esac ])
+AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
 
-AC_MSG_RESULT($with_kcm_support)
 #################################################
 # check for automount support
 AC_MSG_CHECKING(whether to use automount)
@@ -3636,6 +3652,46 @@ AC_ARG_WITH(smbmount,
   AC_MSG_RESULT(no)
 )
 
+#################################################
+# check for mount- and umount.cifs support
+CIFSMOUNT_PROGS=""
+INSTALL_CIFSMOUNT=""
+UNINSTALL_CIFSMOUNT=""
+AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
+AC_ARG_WITH(cifsmount,
+[  --with-cifsmount        Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
+[ case "$withval" in
+  no)
+       AC_MSG_RESULT(no)
+       ;;
+  *)
+       case "$host_os" in
+       *linux*)
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
+               CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
+               INSTALL_CIFSMOUNT="installcifsmount"
+               UNINSTALL_CIFSMOUNT="uninstallcifsmount"
+               ;;
+       *)
+               AC_MSG_ERROR(not on a linux system!)
+               ;;
+       esac
+    ;;
+  esac ],
+[ case "$host_os" in
+  *linux*)
+       AC_MSG_RESULT(yes)
+       AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
+       CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
+       INSTALL_CIFSMOUNT="installcifsmount"
+       UNINSTALL_CIFSMOUNT="uninstallcifsmount"
+       ;;
+  *)
+       AC_MSG_RESULT(no)
+       ;;
+  esac ]
+)
 
 
 #################################################
@@ -3670,6 +3726,7 @@ AC_CHECK_LIB(pam, pam_get_data, [AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is avai
 
 #################################################
 # check for pam_smbpass support
+PAM_MODULES=""
 AC_MSG_CHECKING(whether to use pam_smbpass)
 AC_ARG_WITH(pam_smbpass,
 [  --with-pam_smbpass      Build PAM module for authenticating against passdb backends (default=no)],
@@ -3687,7 +3744,7 @@ AC_ARG_WITH(pam_smbpass,
           AC_MSG_ERROR([No libpam found])
        else
          AUTH_LIBS="$AUTH_LIBS -lpam"
-          SHLIB_PROGS="$SHLIB_PROGS bin/pam_smbpass.$SHLIBEXT"
+          PAM_MODULES="pam_smbpass"
        fi
     ;;
   *)
@@ -4154,17 +4211,22 @@ fi
 
 INSTALLLIBCMD_SH=:
 INSTALLLIBCMD_A=:
+UNINSTALLLIBCMD_SH=:
+UNINSTALLLIBCMD_A=:
 
 if test $BLDSHARED = true; then
        INSTALLLIBCMD_SH="\$(INSTALLCMD)"
+       UNINSTALLLIBCMD_SH="rm -f"
 fi
 if test $enable_static = yes; then
        INSTALLLIBCMD_A="\$(INSTALLCMD)"
+       UNINSTALLLIBCMD_A="rm -f"
 fi
 
 #################################################
 # should we build libmsrpc?
 INSTALL_LIBMSRPC=
+UNINSTALL_LIBMSRPC=
 LIBMSRPC_SHARED=
 LIBMSRPC=
 AC_MSG_CHECKING(whether to build the libmsrpc shared library)
@@ -4187,6 +4249,7 @@ AC_ARG_WITH(libmsrpc,
         LIBMSRPC=libmsrpc
      fi
      INSTALL_LIBMSRPC=installlibmsrpc
+     UNINSTALL_LIBMSRPC=uninstalllibmsrpc
      ;;
   esac ],
 [
@@ -4203,11 +4266,13 @@ AC_ARG_WITH(libmsrpc,
      LIBMSRPC=libmsrpc
   fi]
   INSTALL_LIBMSRPC=installlibmsrpc
+  UNINSTALL_LIBMSRPC=uninstalllibmsrpc
 )
 
 #################################################
 # should we build libsmbclient?
 INSTALL_LIBSMBCLIENT=
+UNINSTALL_LIBSMBCLIENT=
 LIBSMBCLIENT_SHARED=
 LIBSMBCLIENT=
 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
@@ -4230,6 +4295,7 @@ AC_ARG_WITH(libsmbclient,
         LIBSMBCLIENT=libsmbclient
      fi
      INSTALL_LIBSMBCLIENT=installclientlib
+     UNINSTALL_LIBSMBCLIENT=uninstallclientlib
      ;;
   esac ],
 [
@@ -4246,6 +4312,7 @@ AC_ARG_WITH(libsmbclient,
      LIBSMBCLIENT=libsmbclient
   fi]
   INSTALL_LIBSMBCLIENT=installclientlib
+  UNINSTALL_LIBSMBCLIENT=uninstallclientlib
 )
 
 INSTALL_LIBSMBSHAREMODES=
@@ -5123,7 +5190,7 @@ if test x"$HAVE_WINBIND" = x"yes"; then
                SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
 
                if test x"$with_pam" = x"yes"; then
-                       SHLIB_PROGS="$SHLIB_PROGS nsswitch/pam_winbind.$SHLIBEXT"
+                       PAM_MODULES="$PAM_MODULES pam_winbind"
                fi
        fi
 else
@@ -5233,7 +5300,6 @@ do
 done
 
 dnl Always built these modules static
-MODULE_pdb_guest=STATIC
 MODULE_rpc_spoolss=STATIC
 MODULE_rpc_srv=STATIC
 MODULE_idmap_tdb=STATIC
@@ -5260,7 +5326,6 @@ SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT"
                   [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
-SMB_MODULE(pdb_guest, passdb/pdb_guest.o, "bin/guest.$SHLIBEXT", PDB)
 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
 
 
@@ -5362,7 +5427,7 @@ dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
 
-AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh)
+AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh)
 
 #################################################
 # Print very concise instructions on building/use