X-Git-Url: http://git.samba.org/samba.git/?p=nivanova%2Fsamba-autobuild%2F.git;a=blobdiff_plain;f=source3%2Fconfigure.in;h=67cec3810964503fb26fbdb4d842abe39ce28d29;hp=a666b10f8c76c0fad8bd09ad5746ba3bb3984707;hb=28aa4bff8d6be031c6089fe5c7ab010f1cc48340;hpb=e1d4e31c440c08f8138ab16b3e0095aa371ca09e diff --git a/source3/configure.in b/source3/configure.in index a666b10f8c7..67cec381096 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -4,6 +4,13 @@ dnl We must use autotools 2.53 or above AC_PREREQ(2.53) AC_INIT(include/includes.h) AC_CONFIG_HEADER(include/config.h) +AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h]) + +case "$PATH" in + */usr/ucb*) + AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow]) + ;; +esac SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2` echo "SAMBA VERSION: ${SMB_VERSION_STRING}" @@ -35,7 +42,7 @@ pammodulesdir="\${LIBDIR}/security" configdir="\${LIBDIR}" swatdir="\${prefix}/swat" -AC_ARG_WITH(fhs, +AC_ARG_WITH(fhs, [ --with-fhs Use FHS-compliant paths (default=no)], [ case "$withval" in yes) @@ -45,7 +52,7 @@ AC_ARG_WITH(fhs, logfilebase="\${VARDIR}/log/samba" privatedir="\${CONFIGDIR}/private" libdir="\${prefix}/lib/samba" - configdir="${sysconfdir}/samba" + configdir="\${sysconfdir}/samba" swatdir="\${DATADIR}/samba/swat" ;; esac]) @@ -162,6 +169,20 @@ AC_ARG_WITH(logfilebase, ;; esac]) + +################################################# +# set ctdb source directory location +AC_ARG_WITH(ctdb, +[ --with-ctdb=DIR Where to find ctdb sources], +[ case "$withval" in + yes|no) + AC_MSG_WARN([--with-ctdb called without argument]) + ;; + * ) + ctdbdir="$withval" + ;; + esac]) + ################################################# # set lib directory location AC_ARG_WITH(libdir, @@ -232,7 +253,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-.}/tdb/include" +SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/tdb/include" SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns" SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc" @@ -247,6 +268,7 @@ AC_SUBST(configdir) AC_SUBST(lockdir) AC_SUBST(piddir) AC_SUBST(logfilebase) +AC_SUBST(ctdbdir) AC_SUBST(privatedir) AC_SUBST(swatdir) AC_SUBST(bindir) @@ -258,8 +280,10 @@ 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(DSO_EXPORTS) AC_SUBST(HOST_OS) AC_SUBST(PICFLAG) AC_SUBST(PIE_CFLAGS) @@ -293,14 +317,12 @@ AC_SUBST(IDMAP_LIBS) AC_SUBST(KRB5_LIBS) AC_SUBST(UUID_LIBS) AC_SUBST(LDAP_LIBS) -AC_SUBST(SHLIB_PROGS) AC_SUBST(PAM_MODULES) AC_SUBST(INSTALL_PAM_MODULES) AC_SUBST(UNINSTALL_PAM_MODULES) -AC_SUBST(SMBWRAPPER) -AC_SUBST(SMBWRAP_OBJS) -AC_SUBST(SMBWRAP_INC) +AC_SUBST(NSS_MODULES) AC_SUBST(EXTRA_BIN_PROGS) +AC_SUBST(SMBMOUNT_PROGS) AC_SUBST(CIFSMOUNT_PROGS) AC_SUBST(INSTALL_CIFSMOUNT) AC_SUBST(UNINSTALL_CIFSMOUNT) @@ -311,7 +333,7 @@ AC_SUBST(NSCD_LIBS) ## check for --enable-debug first before checking CFLAGS before ## so that we don't mix -O and -g -AC_ARG_ENABLE(debug, +AC_ARG_ENABLE(debug, [ --enable-debug Turn on compiler debugging information (default=no)], [if eval "test x$enable_debug = xyes"; then CFLAGS="${CFLAGS} -g" @@ -332,6 +354,23 @@ AC_LIBREPLACE_CC_CHECKS m4_include(lib/socket_wrapper/config.m4) +SWAT_SBIN_TARGETS='bin/swat$(EXEEXT)' +SWAT_INSTALL_TARGETS=installswat + +AC_ARG_ENABLE(swat, +[ --enable-swat Build the SWAT tool (default=yes)], +[ + case "$enable_swat" in + no) + SWAT_SBIN_TARGETS='' + SWAT_INSTALL_TARGETS='' + ;; + esac +]) + +AC_SUBST(SWAT_SBIN_TARGETS) +AC_SUBST(SWAT_INSTALL_TARGETS) + ################################################# # set prefix for 'make test' selftest_prefix="./" @@ -348,6 +387,35 @@ 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 + ], + [ + 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="" @@ -361,7 +429,7 @@ AC_ARG_WITH(smbtorture4_path, * ) smbtorture4_path="$withval" if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then - AC_MSG_ERROR(['$smbtorture_path' does not exist!]) + AC_MSG_ERROR(['$smbtorture_path' does not exist!]) fi ;; esac @@ -370,7 +438,19 @@ 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 - CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER" + 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 + krb5_developer=yes + fi]) + +# Probe the gcc version for extra CFLAGS. We always stash these in +# DEVELOPER_CFLAGS, so that you can turn them on and off with a simple +# Makefile edit, avoiding the need to re-run configure. +if test x"$ac_cv_prog_gcc" = x"yes" ; then + DEVELOPER_CFLAGS="-gstabs -Wall -Wshadow -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], @@ -384,23 +464,41 @@ AC_ARG_ENABLE(developer, [ --enable-developer Turn on developer warnings a 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" + + if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then + DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement" + fi + + #-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" 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 - CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER" - fi]) + # krb5developer is like developer, except we don't get + # -Wstrict-prototypes. + if test x"$krb5_developer" != x"$yes" ; then + DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes" + fi +fi AC_ARG_ENABLE(dmalloc, [ --enable-dmalloc Enable heap debugging [default=no]]) if test "x$enable_dmalloc" = xyes then AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging]) - AC_DEFINE(DMALLOC_FUNC_CHECK, 1, + AC_DEFINE(DMALLOC_FUNC_CHECK, 1, [Define to check invariants around some common functions]) LIBS="$LIBS -ldmalloc" fi @@ -436,7 +534,7 @@ 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 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. if test "$ac_cv_prog_gnu_ld" = "yes"; then @@ -450,6 +548,9 @@ if test "$ac_cv_prog_gnu_ld" = "yes"; then if test "$ac_cv_gnu_ld_date" -lt 20030217; then ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes fi + if test "$ac_cv_gnu_ld_date" -gt 20030101; then + ac_cv_gnu_ld_version_script=yes + fi else AC_MSG_CHECKING(GNU ld release version) changequote(,)dnl @@ -465,6 +566,9 @@ if test "$ac_cv_prog_gnu_ld" = "yes"; then if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes fi + if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_l= d_vernr_major"=2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then + ac_cv_gnu_ld_version_script=yes + fi fi fi @@ -490,7 +594,7 @@ AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [ 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 +else dnl Check if the C compiler understands -w2 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [ AC_TRY_RUN_STRICT([ @@ -544,7 +648,41 @@ if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then PIDL_ARGS="$PIDL_ARGS --uint-enums" fi -dnl Figure out the flags to support named structure initializers +############################################ +# 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) + +# As per vl, disable dependency tracking by default until we don't need +# to use "make proto' -- jpeach +if test "x$enable_dependency_tracking" != xyes; then + ifGNUmake='#' +fi + +############################################ +# Figure out the flags to support named structure initializers LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])]) @@ -590,10 +728,10 @@ 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 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default" +default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_winreg rpc_initshutdown rpc_lsa_ds rpc_wkssvc rpc_svcctl2 rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog2 rpc_unixinfo rpc_epmapper 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" +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" if test "x$developer" = xyes; then default_static_modules="$default_static_modules rpc_rpcecho" @@ -606,7 +744,6 @@ fi # case statement; its first reference must be unconditional. # case "$host_os" in -# Try to work out if this is the native HPUX compiler that uses the -Ae flag. *hpux*) # # Defines needed for HPUX support. @@ -630,7 +767,6 @@ case "$host_os" in AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support]) AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment]) AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment]) - AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Unix 98 sources -- needed for socklen_t in getsockopt on HP/UX 11]) ;; esac ;; @@ -650,7 +786,7 @@ case "$host_os" in AC_MSG_RESULT([enabling large file support]) CPPFLAGS="$CPPFLAGS -D_LARGE_FILES" AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support]) - ;; + ;; # # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit # to the existance of large files.. @@ -734,11 +870,11 @@ case "$host_os" in CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS" AC_TRY_RUN([ #include -main () { +int main () { #if _LFS64_LARGEFILE == 1 -exit(0); +return 0; #else -exit(1); +return 1; #endif }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross]) CPPFLAGS="$old_CPPFLAGS" @@ -753,6 +889,15 @@ exit(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*) @@ -764,7 +909,7 @@ exit(1); #include #include #include -main() { +int main() { #if _LFS64_LARGEFILE == 1 struct utsname uts; char *release; @@ -776,9 +921,9 @@ main() { int libc_minor = __GLIBC_MINOR__; if (libc_major < 2) - exit(1); + return 1; if (libc_minor < 2) - exit(1); + return 1; #endif /* Ensure this is kernel 2.4 or higher */ @@ -789,10 +934,10 @@ main() { minor = atoi(strsep(&release, ".")); if (major > 2 || (major == 2 && minor > 3)) - exit(0); - exit(1); + return 0; + return 1; #else - exit(1); + return 1; #endif } ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross]) @@ -825,9 +970,9 @@ main() { #include main () { #if _LFS64_LARGEFILE == 1 -exit(0); +return 0; #else -exit(1); +return 1; #endif }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross]) CPPFLAGS="$old_CPPFLAGS" @@ -851,6 +996,9 @@ for obj in ${LIBREPLACEOBJ}; do done AC_SUBST(LIBREPLACE_OBJS) +# add -ldl to the global LIBS +LIBS="${LIBS} ${LIBDL}" + AC_CHECK_HEADERS(aio.h arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h) AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h) AC_CHECK_HEADERS(limits.h float.h) @@ -913,14 +1061,14 @@ AC_CHECK_HEADERS(shadow.h) AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.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/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) # For experimental utmp support (lastlog on some BSD-like systems) AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h) - + AC_CHECK_SIZEOF(int,cross) AC_CHECK_SIZEOF(long,cross) AC_CHECK_SIZEOF(long long,cross) @@ -944,7 +1092,7 @@ AC_CHECK_TYPE(loff_t,off_t) AC_CHECK_TYPE(offset_t,loff_t) AC_CHECK_TYPE(ssize_t, int) AC_CHECK_TYPE(wchar_t, unsigned short) -AC_CHECK_TYPE(comparison_fn_t, +AC_CHECK_TYPE(comparison_fn_t, [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])]) ############################################ @@ -978,7 +1126,7 @@ if test x$enable_iprint != xno; then fi ############################################ -# check if the compiler can do immediate structures +# check if the compiler will optimize out function calls AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [ AC_TRY_LINK([ #include ], @@ -1005,7 +1153,7 @@ AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [ #include #include ], [ - struct sockaddr_un sunaddr; + struct sockaddr_un sunaddr; sunaddr.sun_family = AF_UNIX; ], samba_cv_unixsocket=yes,samba_cv_unixsocket=no)]) @@ -1014,19 +1162,6 @@ if test x"$samba_cv_unixsocket" = x"yes"; then fi -AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [ - AC_TRY_COMPILE([ -#include -#if STDC_HEADERS -#include -#include -#endif -#include ],[socklen_t i = 0], - samba_cv_socklen_t=yes,samba_cv_socklen_t=no)]) -if test x"$samba_cv_socklen_t" = x"yes"; then - AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t]) -fi - AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [ AC_TRY_COMPILE([ #include @@ -1076,7 +1211,7 @@ AC_HAVE_DECL(snprintf, [#include ]) # nothing until kernel 2.1.44! very dumb. AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[ AC_TRY_RUN([#include -main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}], +int main() { setresuid(1,1,1); setresuid(2,2,2); return 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]) @@ -1087,7 +1222,7 @@ fi AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[ AC_TRY_RUN([#include #include -main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}], +int main() { errno = 0; setresgid(1,1,1); return 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]) @@ -1161,7 +1296,7 @@ AC_SUBST(TERMLDFLAGS) # code will generate warnings on one of them unless we have a few # special cases. AC_CHECK_LIB(readline, rl_completion_matches, - [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, + [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1, [Do we have rl_completion_matches?])], [], [$TERMLIBS]) @@ -1199,7 +1334,7 @@ if test x"$ac_cv_func_connect" = x"no"; then esac dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value dnl has been cached. - if test x"$ac_cv_lib_socket_connect" = x"yes" || + if test x"$ac_cv_lib_socket_connect" = x"yes" || test x"$ac_cv_lib_inet_connect" = x"yes"; then # ac_cv_func_connect=yes # don't! it would cause AC_CHECK_FUNC to succeed next time configure is run @@ -1218,9 +1353,10 @@ if test x"$ac_cv_func_execl" = x"no"; then EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)" fi -AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown chmod fchmod chroot link mknod mknod64) +AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64) AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull) -AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync memset strlcpy strlcat setpgid) +AC_CHECK_FUNCS(fstat strchr utime utimes chflags) +AC_CHECK_FUNCS(getrlimit fsync memset strlcpy strlcat setpgid) AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid) AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent) AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath) @@ -1235,9 +1371,11 @@ AC_CHECK_FUNCS(syslog vsyslog timegm) AC_CHECK_FUNCS(setlocale nl_langinfo) AC_CHECK_FUNCS(nanosleep) AC_CHECK_FUNCS(mlock munlock mlockall munlockall) +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) @@ -1280,7 +1418,7 @@ AC_TRY_LINK( ], [ unw_context_t ctx; unw_cursor_t cur; - char buf[256]; unw_word_t off; + char buf[256]; unw_word_t off; unw_getcontext(&ctx); unw_init_local(&cur, &ctx); unw_get_proc_name(&cur, buf, sizeof(buf), &off); ], @@ -1367,28 +1505,38 @@ AC_TRY_COMPILE([ AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[]) # -# +# # case "$host_os" in - *linux*) + linux*-gnu* | gnu* | k*bsd*-gnu) # glibc <= 2.3.2 has a broken getgrouplist - AC_TRY_RUN([ + AC_CACHE_CHECK([for a broken Linux getgrouplist API], + linux_getgrouplist_ok, + [ + AC_TRY_RUN([ #include #include -main() { - /* glibc up to 2.3 has a broken getgrouplist */ + + int 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) - exit(1); - if ((libc_major == 2) && (libc_minor <= 3)) - exit(1); + if (libc_major < 2) + return 1; + if ((libc_major == 2) && (libc_minor <= 3)) + return 1; #endif - exit(0); -} -], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no]) + return 0; + } + + ], + [linux_getgrouplist_ok=yes], + [linux_getgrouplist_ok=no], + [linux_getgrouplist_ok=cross]) + ]) + if test x"$linux_getgrouplist_ok" = x"yes"; then AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist]) fi @@ -1409,7 +1557,7 @@ if test x$ac_cv_func_stat64 = xno ; then #include #endif #include -], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes]) +], [struct stat64 st64; return 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]) @@ -1423,7 +1571,7 @@ if test x$ac_cv_func_lstat64 = xno ; then #include #endif #include -], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes]) +], [struct stat64 st64; return 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]) @@ -1437,7 +1585,7 @@ if test x$ac_cv_func_fstat64 = xno ; then #include #endif #include -], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes]) +], [struct stat64 st64; return 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]) @@ -1448,7 +1596,7 @@ fi # Check whether struct stat has timestamps with sub-second resolution. # At least IRIX and Solaris have these. # -# We check that +# We check that # all of st_mtim, st_atim and st_ctim exist # all of the members are in fact of type struct timespec # @@ -1587,6 +1735,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 @@ -1652,16 +1808,41 @@ EOF fi fi +#Check if we can enable relro as well +if test x"${samba_cv_fpie}" = x"yes" +then + AC_CACHE_CHECK(for relro, samba_cv_fpie_relro, + [ + cat > conftest.c <&AS_MESSAGE_LOG_FD]) + then + samba_cv_fpie_relro=yes + else + samba_cv_fpie_relro=no + fi + rm -f conftest* + ]) + if test x"${samba_cv_fpie_relro}" = x"yes" + then + PIE_LDFLAGS="-pie -Wl,-z,relro" + fi +fi + # Assume non-shared by default and override below 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" +DSO_EXPORTS="" # this bit needs to be modified for each OS that supports share libs # You need to specify how to create a shared library and @@ -1671,12 +1852,15 @@ AC_MSG_CHECKING([ability to build shared libraries]) # and these are for particular systems case "$host_os" in - *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) + linux*-gnu* | gnu* | k*bsd*-gnu) + case "$host_os" in + linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux]) ;; + esac BLDSHARED="true" if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then - LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" + LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined" else - LDSHFLAGS="-shared -Wl,-Bsymbolic" + LDSHFLAGS="-shared -Wl,-Bsymbolic" fi DYNEXP="-Wl,--export-dynamic" PICFLAG="-fPIC" @@ -1695,7 +1879,7 @@ case "$host_os" in fi else PICFLAG="-KPIC" - ## ${CFLAGS} added for building 64-bit shared + ## ${CFLAGS} added for building 64-bit shared ## libs using Sun's Compiler LDSHFLAGS="-G \${CFLAGS}" fi @@ -1710,7 +1894,7 @@ case "$host_os" in AC_DEFINE(STAT_ST_BLOCKSIZE,512) AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly]) ;; - *netbsd* | *freebsd* | *dragonfly* ) + *netbsd* | *freebsd* | *dragonfly* ) BLDSHARED="true" LDSHFLAGS="-shared" DYNEXP="-Wl,--export-dynamic" @@ -1738,7 +1922,7 @@ case "$host_os" in SHLD="\${LD}" if test "${GCC}" = "yes"; then PICFLAG="-fPIC" - else + else PICFLAG="-KPIC" fi AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block]) @@ -1761,17 +1945,19 @@ case "$host_os" in ;; *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX]) # Use special PIC flags for the native HP-UX compiler. - if test $ac_cv_prog_cc_Ae = yes; then BLDSHARED="true" SHLD="cc" LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z" SONAMEFLAG="-Wl,+h " PICFLAG="+z" - elif test "${GCC}" = "yes"; then + if test "${GCC}" = "yes"; then PICFLAG="-fPIC" + else + PICFLAG="+z +ESnolit" fi if test "$host_cpu" = "ia64"; then SHLIBEXT="so" + PICFLAG="+z" DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32" else SHLIBEXT="sl" @@ -1835,6 +2021,7 @@ 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 @@ -1853,6 +2040,10 @@ if test "$enable_shared" != "yes"; then BLDSHARED=false fi +if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then + DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\) +fi + AC_MSG_RESULT($BLDSHARED) AC_MSG_CHECKING([LDFLAGS]) @@ -1880,7 +2071,7 @@ AC_MSG_RESULT([$PICFLAG]) AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX]) AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX]) -AC_CACHE_CHECK([whether building shared libraries actually works], +AC_CACHE_CHECK([whether building shared libraries actually works], [ac_cv_shlib_works],[ # try building a trivial shared library ac_cv_shlib_works=no @@ -1916,7 +2107,7 @@ AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension]) AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[ AC_TRY_RUN([#include -main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }], +int main() { long long x = 1000000; x *= x; return ((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]) @@ -1936,11 +2127,19 @@ if test x"$samba_cv_compiler_supports_ll" = x"yes"; then AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers]) fi - + +AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[ +AC_TRY_RUN([#include +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 #include -main() { exit((sizeof(off_t) == 8) ? 0 : 1); }], +int main() { return (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]) @@ -1953,7 +2152,7 @@ AC_TRY_RUN([ #endif #include #include -main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }], +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; }], 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]) @@ -1966,7 +2165,7 @@ AC_TRY_RUN([ #endif #include #include -main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }], +int main() { return (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]) @@ -1979,7 +2178,7 @@ AC_TRY_RUN([ #endif #include #include -main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }], +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; }], 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]) @@ -1992,7 +2191,7 @@ AC_TRY_RUN([ #endif #include #include -main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }], +int main() { return (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]) @@ -2005,7 +2204,7 @@ AC_TRY_RUN([ #endif #include #include -main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }], +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; }], 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]) @@ -2043,7 +2242,7 @@ AC_TRY_RUN([ #include #endif #include -main() { dev_t dev; int i = major(dev); return 0; }], +int 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]) @@ -2055,7 +2254,7 @@ AC_TRY_RUN([ #include #endif #include -main() { dev_t dev; int i = minor(dev); return 0; }], +int 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]) @@ -2067,7 +2266,7 @@ AC_TRY_RUN([ #include #endif #include -main() { dev_t dev = makedev(1,2); return 0; }], +int 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]) @@ -2075,7 +2274,7 @@ fi AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[ AC_TRY_RUN([#include -main() { char c; c=250; exit((c > 0)?0:1); }], +int main() { char c; c=250; return (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]) @@ -2108,13 +2307,13 @@ if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then fi AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[ -AC_TRY_RUN([ +AC_TRY_LINK([ #include -#include -main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}], - samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)]) +#include ], [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 @@ -2157,7 +2356,7 @@ AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[ AC_TRY_RUN([ #include #include -void foo(const char *format, ...) { +void foo(const char *format, ...) { va_list ap; int len; char buf[5]; @@ -2165,18 +2364,18 @@ void foo(const char *format, ...) { va_start(ap, format); len = vsnprintf(buf, 0, format, ap); va_end(ap); - if (len != 5) exit(1); + if (len != 5) return 1; va_start(ap, format); len = vsnprintf(0, 0, format, ap); va_end(ap); - if (len != 5) exit(1); + if (len != 5) return 1; - if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1); + if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) return 1; - exit(0); + return 0; } -main() { foo("hello"); } +int 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 @@ -2186,9 +2385,9 @@ fi AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[ AC_TRY_RUN([#include #include -main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d); +int 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) exit(0); exit(1);} ], +di->d_name[0] == 0) return 0; return 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]) @@ -2197,7 +2396,7 @@ fi AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[ AC_TRY_COMPILE([#include #include ], -[struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));], +[struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; return 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]) @@ -2220,7 +2419,7 @@ AC_TRY_COMPILE([#include samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)]) if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name]) -fi +fi AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[ AC_TRY_COMPILE([#include @@ -2229,7 +2428,7 @@ AC_TRY_COMPILE([#include samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)]) if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user]) -fi +fi AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[ AC_TRY_COMPILE([#include @@ -2238,7 +2437,7 @@ AC_TRY_COMPILE([#include samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)]) if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id]) -fi +fi AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[ AC_TRY_COMPILE([#include @@ -2247,7 +2446,7 @@ AC_TRY_COMPILE([#include samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)]) if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host]) -fi +fi AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[ AC_TRY_COMPILE([#include @@ -2256,7 +2455,7 @@ AC_TRY_COMPILE([#include samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)]) if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time]) -fi +fi AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[ AC_TRY_COMPILE([#include @@ -2265,7 +2464,7 @@ AC_TRY_COMPILE([#include samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)]) if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv]) -fi +fi AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[ AC_TRY_COMPILE([#include @@ -2274,7 +2473,7 @@ AC_TRY_COMPILE([#include samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)]) if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type]) -fi +fi AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[ AC_TRY_COMPILE([#include @@ -2283,7 +2482,7 @@ AC_TRY_COMPILE([#include samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)]) if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid]) -fi +fi AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[ AC_TRY_COMPILE([#include @@ -2292,7 +2491,7 @@ AC_TRY_COMPILE([#include samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)]) if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit]) -fi +fi AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[ AC_TRY_COMPILE([#include @@ -2301,7 +2500,7 @@ AC_TRY_COMPILE([#include samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)]) if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr]) -fi +fi if test x$ac_cv_func_pututline = xyes ; then AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[ @@ -2321,14 +2520,13 @@ AC_TRY_COMPILE([#include samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)]) if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen]) -fi +fi fi # end utmp details -ICONV_LOCATION=standard -LOOK_DIRS="/usr /usr/local /sw /opt" +ICONV_LOOK_DIRS="/usr /usr/local /sw /opt" AC_ARG_WITH(libiconv, [ --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ], [ @@ -2337,62 +2535,69 @@ AC_ARG_WITH(libiconv, else if test "$withval" != "yes" ; then ICONV_PATH_SPEC=yes - LOOK_DIRS="$withval" + ICONV_LOOK_DIRS="$withval" fi fi ]) -for i in $LOOK_DIRS ; do - save_LIBS=$LIBS - save_LDFLAGS=$LDFLAGS - save_CPPFLAGS=$CPPFLAGS +for i in $ICONV_LOOK_DIRS ; do + + save_LIBS="$LIBS" + save_LDFLAGS="$LDFLAGS" + save_CPPFLAGS="$CPPFLAGS" + + iconv_current_LIBS="" + iconv_current_LDFLAGS="" + iconv_current_CPPFLAGS="" + ICONV_FOUND="no" unset libext - CPPFLAGS="$CPPFLAGS -I$i/include" -dnl This is here to handle -withval stuff for --with-libiconv -dnl Perhaps we should always add a -L - -dnl Check lib and lib32 library variants to cater for IRIX ABI-specific -dnl installation paths. This gets a little tricky since we might have iconv -dnl in both libiconv and in libc. In this case the jm_ICONV test will always -dnl succeed when the header is found. To counter this, make sure the -dnl library directory is there and check the ABI directory first (which -dnl should be harmless on other systems. -dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib. + + # This is here to handle -withval stuff for --with-libiconv + # Perhaps we should always add a -L + CPPFLAGS="$save_CPPFLAGS -I$i/include" + + # Check lib and lib32 library variants to cater for IRIX ABI-specific + # installation paths. This gets a little tricky since we might have iconv + # in both libiconv and in libc. In this case the jm_ICONV test will always + # succeed when the header is found. To counter this, make sure the + # library directory is there and check the ABI directory first (which + # should be harmless on other systems. + # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib. for l in "lib32" "lib" "lib/hpux32"; do if test -d "$i/$l" ; then LDFLAGS="$save_LDFLAGS -L$i/$l" - LIBS= - export LDFLAGS LIBS CPPFLAGS -dnl Try to find iconv(3) + LIBS= + export LDFLAGS LIBS CPPFLAGS + # Try to find iconv(3) jm_ICONV($i/$l) if test x"$ICONV_FOUND" = "xyes" ; then - libext="$l" - break; - fi + libext="$l" + break + fi fi done if test x"$ICONV_FOUND" = "xyes" ; then - LDFLAGS=$save_LDFLAGS - LIB_ADD_DIR(LDFLAGS, "$i/$libext") - CFLAGS_ADD_DIR(CPPFLAGS, "$i/include") - LIBS="$save_LIBS" - ICONV_LOCATION=$i - export LDFLAGS LIBS CPPFLAGS -dnl Now, check for a working iconv ... we want to do it here because -dnl there might be a working iconv further down the list of LOOK_DIRS - - ############ - # check for iconv in libc - ic_save_LIBS="$LIBS" - if test x"$ICONV_PATH_SPEC" = "xyes" ; then - LIBS="$LIBS -L$ICONV_LOCATION/$libext" - fi + iconv_current_LDFLAGS="-L$i/$libext" + iconv_current_CPPFLAGS="-I$i/include" + if test x"$jm_cv_lib_iconv" != x; then - LIBS="$LIBS -l$jm_cv_lib_iconv" + iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv" + else + # We found iconv in libc. + iconv_current_LIBS="" fi -dnl AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[ + + fi + + if test x"$ICONV_FOUND" = "xyes" ; then + + LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS" + CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS" + LIBS="$save_LIBS $iconv_current_LIBS" + export LDFLAGS LIBS CPPFLAGS + default_dos_charset=no default_display_charset=no default_unix_charset=no @@ -2400,68 +2605,95 @@ dnl AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[ # check for default dos charset name for j in CP850 IBM850 ; do rjs_CHARSET($j) - if test x"$ICONV_CHARSET" = x"$j"; then - default_dos_charset="\"$j\"" + default_dos_charset="$ICONV_CHARSET" + if test x"$default_dos_charset" = x"$j"; then break fi done + # check for default display charset name for j in ASCII 646 ; do rjs_CHARSET($j) - if test x"$ICONV_CHARSET" = x"$j"; then - default_display_charset="\"$j\"" + default_display_charset="$ICONV_CHARSET" + if test x"$default_display_charset" = x"$j"; then break fi done + # check for default unix charset name for j in UTF-8 UTF8 ; do rjs_CHARSET($j) - if test x"$ICONV_CHARSET" = x"$j"; then - default_unix_charset="\"$j\"" + default_unix_charset="$ICONV_CHARSET" + if test x"$default_unix_charset" = x"$j"; then break fi done - + if test "$default_dos_charset" != "no" -a \ "$default_dos_charset" != "cross" -a \ - "$default_display_charset" != "no" -a \ + "$default_display_charset" != "no" -a \ "$default_display_charset" != "cross" -a \ "$default_unix_charset" != "no" -a \ "$default_unix_charset" != "cross" then samba_cv_HAVE_NATIVE_ICONV=yes - else if test "$default_dos_charset" = "cross" -o \ + else + if test "$default_dos_charset" = "cross" -o \ "$default_display_charset" = "cross" -o \ "$default_unix_charset" = "cross" - then - samba_cv_HAVE_NATIVE_ICONV=cross - else - samba_cv_HAVE_NATIVE_ICONV=no + then + samba_cv_HAVE_NATIVE_ICONV=cross + else + samba_cv_HAVE_NATIVE_ICONV=no + fi fi + + # At this point, we have a libiconv candidate. We know that + # we have the right headers and libraries, but we don't know + # whether it does the conversions we want. We can't test this + # because we are cross-compiling. This is not necessarily a big + # deal, since we can't guarantee that the results we get now will + # match the results we get at runtime anyway. + if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then + default_dos_charset="CP850" + default_display_charset="ASCII" + default_unix_charset="UTF-8" + samba_cv_HAVE_NATIVE_ICONV=yes + AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert) + AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE]) fi -dnl ]) - - LIBS="$ic_save_LIBS" - if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - if test x"$jm_cv_lib_iconv" != x; then - LIBS="$LIBS -l$jm_cv_lib_iconv" - fi - dnl Add the flags we need to CPPFLAGS and LDFLAGS - CFLAGS_ADD_DIR(CPPFLAGS, "$i/include") - LIB_ADD_DIR(LDFLAGS, "$i/$libext") - export CPPFLAGS - AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv]) - AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name]) - AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name]) - AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name]) + + if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + + if test x"$iconv_current_LIBS" != x; then + LIBS="$LIBS $iconv_current_LIBS" + fi + + # Add the flags we need to CPPFLAGS and LDFLAGS + CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS" + LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS" + + # Turn the #defines into string literals + default_dos_charset="\"$default_dos_charset\"" + default_display_charset="\"$default_display_charset\"" + default_unix_charset="\"$default_unix_charset\"" + + AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv]) + AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name]) + AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name]) + AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name]) + break fi -dnl We didn't find a working iconv, so keep going + + # We didn't find a working iconv, so keep going fi -dnl We only need to clean these up here for the next pass through the loop + + # We only need to clean these up here for the next pass through the loop CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS @@ -2471,7 +2703,7 @@ unset libext if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then - AC_MSG_WARN([Sufficient support for iconv function was not found. + AC_MSG_WARN([Sufficient support for iconv function was not found. Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!]) AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name]) AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name]) @@ -2486,7 +2718,7 @@ AC_TRY_RUN([ #ifndef F_GETLEASE #define F_GETLEASE 1025 #endif -main() { +int main() { int fd = open("/dev/null", O_RDONLY); return fcntl(fd, F_GETLEASE, 0) == -1; } @@ -2504,8 +2736,8 @@ AC_TRY_RUN([ #ifndef F_NOTIFY #define F_NOTIFY 1026 #endif -main() { - exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0); +int main() { + return 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)]) @@ -2513,6 +2745,19 @@ if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes]) 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_HAVE_DECL(__NR_inotify_init, [#include ]) +], +samba_cv_HAVE_INOTIFY=yes, +samba_cv_HAVE_INOTIFY=no, +samba_cv_HAVE_INOTIFY=cross) + +if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then + AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support]) +fi + ################################################# # Check if FAM notifications are available. For FAM info, see # http://oss.sgi.com/projects/fam/ @@ -2526,21 +2771,20 @@ if test x$enable_fam != xno; then # On IRIX, libfam requires libC, but other FAM implementations # might not need it. AC_CHECK_LIB(fam, FAMOpen2, - [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam"], + [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"], [samba_cv_HAVE_LIBFAM=no]) if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then samba_fam_xtra=-lC AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2, - [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam -lC"], + [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"], [samba_cv_HAVE_LIBFAM=no]) unset samba_fam_xtra fi fi if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then - AC_DEFINE(HAVE_FAM_CHANGE_NOTIFY, 1, - [Whether FAM file notifications are available]) + default_shared_modules="$default_shared_modules vfs_notify_fam" AC_TRY_COMPILE([#include ], [FAMCodes code = FAMChanged;], AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1, @@ -2553,6 +2797,8 @@ if test x$enable_fam != xno; then fi fi +AC_SUBST(SMB_FAM_LIBS) + ################################################# # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm @@ -2568,8 +2814,8 @@ AC_TRY_RUN([ #define LOCK_MAND 32 #define LOCK_READ 64 #endif -main() { - exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0); +int main() { + return 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)]) @@ -2605,15 +2851,15 @@ if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then AC_TRY_RUN([ #include #include -main() { +int main() { cap_t cap; cap_value_t vals[1]; if (!(cap = cap_get_proc())) - exit(1); + return 1; vals[0] = CAP_CHOWN; cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR); cap_set_proc(cap); - exit(0); + return 0; }], samba_cv_HAVE_POSIX_CAPABILITIES=yes, samba_cv_HAVE_POSIX_CAPABILITIES=no, @@ -2735,15 +2981,15 @@ AC_TRY_RUN([#include #include #include #include -main() { +int main() { struct stat st; - char tpl[20]="/tmp/test.XXXXXX"; - int fd = mkstemp(tpl); - if (fd == -1) exit(1); + char tpl[20]="/tmp/test.XXXXXX"; + int fd = mkstemp(tpl); + if (fd == -1) return 1; unlink(tpl); - if (fstat(fd, &st) != 0) exit(1); - if ((st.st_mode & 0777) != 0600) exit(1); - exit(0); + if (fstat(fd, &st) != 0) return 1; + if ((st.st_mode & 0777) != 0600) return 1; + return 0; }], samba_cv_HAVE_SECURE_MKSTEMP=yes, samba_cv_HAVE_SECURE_MKSTEMP=no, @@ -2753,7 +2999,12 @@ 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-.}/tests/os2_delete.c"], + AC_TRY_RUN([ +#include "${srcdir-.}/lib/replace/test/os2_delete.c" +int main(void) { + return test_readdir_os2_delete(); +} +], [samba_cv_HAVE_BROKEN_READDIR=no], [samba_cv_HAVE_BROKEN_READDIR=yes], [samba_cv_HAVE_BROKEN_READDIR="assuming not"])]) @@ -2762,7 +3013,10 @@ 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-.}/tests/os2_delete.c"], +#include "${srcdir-.}/lib/replace/test/os2_delete.c" +int main(void) { + return test_readdir_os2_delete(); +], samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)]) fi @@ -2880,6 +3134,21 @@ if test x"$samba_cv_USE_SETUIDX" = x"yes"; then fi fi +AC_CACHE_CHECK([for the Darwin initgroups system call], + samba_cv_DARWIN_INITGROUPS, + AC_TRY_LINK([ +#include +#include + ], + [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ], + samba_cv_DARWIN_INITGROUPS=yes, + samba_cv_DARWIN_INITGROUPS=no) +) + +if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then + AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1, + [Whether to use the Darwin-specific initgroups system call]) +fi AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[ AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"], @@ -2906,7 +3175,7 @@ else dnl dnl Don't check for 64 bit fcntl locking if we know that the dnl glibc2.1 broken check has succeeded. -dnl +dnl AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[ AC_TRY_RUN([ @@ -2923,11 +3192,11 @@ dnl #ifdef HAVE_SYS_FCNTL_H #include #endif -main() { struct flock64 fl64; +int main() { struct flock64 fl64; #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64) -exit(0); +return 0; #else -exit(1); +return 1; #endif }], samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)]) @@ -2945,7 +3214,7 @@ AC_TRY_COMPILE([#include samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)]) if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property]) -fi +fi AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[ AC_TRY_COMPILE([#include @@ -2957,6 +3226,23 @@ if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property]) fi +AC_CACHE_CHECK([for st_flags in struct stat], + samba_cv_HAVE_STAT_ST_FLAGS, + [ + AC_TRY_COMPILE([#include +#include +#include ], + [struct stat st; st.st_flags = 0;], + samba_cv_HAVE_STAT_ST_FLAGS=yes, + samba_cv_HAVE_STAT_ST_FLAGS=no, + samba_cv_HAVE_STAT_ST_FLAGS=cross) + ]) + +if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then + AC_DEFINE(HAVE_STAT_ST_FLAGS, 1, + [Whether the stat struct has a st_flags member]) +fi + case "$host_os" in *linux*) AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[ @@ -2991,10 +3277,11 @@ fi AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[ AC_TRY_RUN([ #include +#include #include -main() { +int main() { char *newpath = realpath("/tmp", NULL); - exit ((newpath != NULL) ? 0 : 1); + return (newpath != NULL) ? 0 : 1; } ], samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)]) @@ -3052,7 +3339,7 @@ if test x"$samba_cv_WITH_AFS" != x"no" || else AC_MSG_RESULT(no) fi - + # check for afs.h have_afs_headers=no AC_CHECK_HEADERS(afs.h afs/afs.h) @@ -3144,7 +3431,7 @@ if test x"$with_ldap_support" != x"no"; then # first test for ldap.h and lber.h # (ldap.h is required for this test) AC_CHECK_HEADERS(ldap.h lber.h) - + if test x"$ac_cv_header_ldap_h" != x"yes"; then if test x"$with_ldap_support" = x"yes"; then AC_MSG_ERROR(ldap.h is needed for LDAP support) @@ -3156,16 +3443,26 @@ if test x"$with_ldap_support" != x"no"; then fi ################################################################## - # HP/UX does not have ber_tag_t, disable LDAP there - AC_CHECK_TYPE(ber_tag_t,,,[#include ]) - if test x"$ac_cv_type_ber_tag_t" != x"yes"; then - if test x"$with_ldap_support" = x"yes"; then - AC_MSG_ERROR(ber_tag_t is needed for LDAP support) - else + # HP/UX does not have ber_tag_t in lber.h - it must be configured as + # unsigned int in include/includes.h + case $host_os in + *hpux*) AC_MSG_WARN(ber_tag_t is needed for LDAP support) - fi - with_ldap_support=no - fi + AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux) + with_ldap_support=yes + ;; + *) + AC_CHECK_TYPE(ber_tag_t,,,[#include ]) + if test x"$ac_cv_type_ber_tag_t" != x"yes"; then + if test x"$with_ldap_support" = x"yes"; then + AC_MSG_ERROR(ber_tag_t is needed for LDAP support) + else + AC_MSG_WARN(ber_tag_t is needed for LDAP support) + fi + with_ldap_support=no + fi + ;; + esac fi if test x"$with_ldap_support" != x"no"; then @@ -3176,6 +3473,22 @@ 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 ber_sockbuf_add_io() is available we can add + # SASL wrapping hooks + AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS) + + AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[ + AC_TRY_COMPILE([#include ], + [int val = LDAP_OPT_SOCKBUF;], + samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes, + samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)]) + + if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \ + x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then + AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping]) + fi + ######################################################## # now see if we can find the ldap libs in standard paths AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init) @@ -3189,18 +3502,17 @@ if test x"$with_ldap_support" != x"no"; then AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [ AC_TRY_COMPILE([ #include - #include ], - [ldap_set_rebind_proc(0, 0, 0);], - [smb_ldap_cv_ldap_set_rebind_proc=3], + #include ], + [ldap_set_rebind_proc(0, 0, 0);], + [smb_ldap_cv_ldap_set_rebind_proc=3], [smb_ldap_cv_ldap_set_rebind_proc=2] - ) + ) ]) - + AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc]) - AC_CHECK_FUNC_EXT(ldap_dn2ad_canonical,$LDAP_LIBS) AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) - + if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available]) CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED" @@ -3223,7 +3535,7 @@ if test x"$with_ldap_support" != x"no"; then else AC_MSG_WARN(libldap is needed for LDAP support) fi - + LDAP_LIBS="" with_ldap_support=no fi @@ -3264,6 +3576,21 @@ else # Check to see whether there is enough LDAP functionality to be able # to build AD support. +# HPUX only has ldap_init; ok, we take care of this in smbldap.c +case "$host_os" in + *hpux*) + AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS) + + if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then + if test x"$with_ads_support" = x"yes"; then + AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init) + elif test x"$with_ads_support" = x"auto"; then + AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX)) + with_ads_support=no + fi + fi + ;; + *) AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS) if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then @@ -3274,6 +3601,9 @@ else with_ads_support=no fi fi + ;; +esac + AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS) @@ -3292,7 +3622,7 @@ if test x"$with_ads_support" != x"no"; then # Do no harm to the values of CFLAGS and LIBS while testing for # Kerberos support. - + if test x$FOUND_KRB5 = x"no"; then ################################################# # check for location of Kerberos 5 install @@ -3333,7 +3663,7 @@ if test x"$with_ads_support" != x"no"; then LDFLAGS="";export LDFLAGS KRB5_LIBS="`$KRB5CONFIG --libs gssapi`" KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`" - KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" + KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`" CFLAGS=$ac_save_CFLAGS;export CFLAGS LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS @@ -3342,7 +3672,7 @@ if test x"$with_ads_support" != x"no"; then else AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy) fi - + if test x$FOUND_KRB5 = x"no"; then ################################################# # see if this box has the SuSE location for the heimdal krb implementation @@ -3406,11 +3736,16 @@ if test x"$with_ads_support" != x"no"; then # Turn off AD support and restore CFLAGS and LIBS variables with_ads_support="no" - + CFLAGS=$ac_save_CFLAGS CPPFLAGS=$ac_save_CPPFLAGS LDFLAGS=$ac_save_LDFLAGS fi + AC_CHECK_HEADERS(krb5/locate_plugin.h) + if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then + SMB_KRB5_LOCATOR="bin/smb_krb5_locator.$SHLIBEXT" + EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $SMB_KRB5_LOCATOR" + fi fi # Now we have determined whether we really want ADS support @@ -3455,14 +3790,14 @@ if test x"$with_ads_support" != x"no"; then AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS) AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS) AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS) - AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) + AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS) AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS) - AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) + AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS) AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS) - AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) + AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS) AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS) - AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) - AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) + AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS) + AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS) AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS) AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS) AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS) @@ -3476,6 +3811,7 @@ if test x"$with_ads_support" != x"no"; then AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS) AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS) AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS) + AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS) AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS) AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS) AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS) @@ -3485,6 +3821,10 @@ if test x"$with_ads_support" != x"no"; then AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS) AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS) 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" @@ -3512,13 +3852,33 @@ if test x"$with_ads_support" != x"no"; then [Whether the krb5_ticket structure contains the kvno and enctype]) fi + AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument, + smb_krb5_creds_opt_free_context, + [ + AC_TRY_COMPILE([ + #include ], + [ + krb5_context ctx; + krb5_get_init_creds_opt *opt = NULL; + krb5_get_init_creds_opt_free(ctx, opt); + ], + [smb_krb5_creds_opt_free_context=yes], + [smb_krb5_creds_opt_free_context=no] + ) + ]) + + if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then + AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1, + [Whether krb5_get_init_creds_opt_free takes a context argument]) + fi + AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [ AC_TRY_COMPILE([ - #include ], - [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);], - [smb_krb5_verify_checksum=7], - [smb_krb5_verify_checksum=6], - ) + #include ], + [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);], + [smb_krb5_verify_checksum=7], + [smb_krb5_verify_checksum=6], + ) ]) AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum]) @@ -3618,7 +3978,7 @@ if test x"$with_ads_support" != x"no"; then [Whether the krb5_address struct has a addr_type property]) fi - AC_CACHE_CHECK([for enc_part2 in krb5_ticket], + AC_CACHE_CHECK([for enc_part2 in krb5_ticket], samba_cv_HAVE_KRB5_TKT_ENC_PART2, [AC_TRY_COMPILE([#include ], [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;], @@ -3720,7 +4080,7 @@ if test x"$with_ads_support" != x"no"; then AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1, [Whether KRB5_KU_OTHER_CKSUM is available]) fi - + AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM], samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[ AC_TRY_COMPILE([#include ], @@ -3785,7 +4145,7 @@ if test x"$with_ads_support" != x"no"; then samba_cv_HAVE_WRFILE_KEYTAB,[ AC_TRY_RUN([ #include - main() + int main() { krb5_context context; krb5_keytab keytab; @@ -3828,10 +4188,63 @@ if test x"$with_ads_support" != x"no"; then [Whether the type krb5_addresses type exists]) fi + AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal], + samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [ + AC_TRY_COMPILE([#include ], + [ + krb5_mk_error(0,0,0);], + samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes, + samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)]) + + if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then + AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1, + [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 + int main(void) { + krb5_context context = NULL; + 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_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 + 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"$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 + fi + # # # Now the decisions whether we can support krb5 - # + # # NOTE: all tests should be done before this block! # # @@ -3904,7 +4317,7 @@ if test x"$with_ads_support" != x"no"; then AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H) AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H) KRB5_LIBS="" - with_ads_support=no + with_ads_support=no fi AC_MSG_CHECKING(whether Active Directory and krb5 support is used) AC_MSG_RESULT([$use_ads]) @@ -3944,7 +4357,7 @@ if test x"$with_dnsupdate_support" != x"no"; then # then test for uuid.h (necessary to generate unique DNS keynames # (uuid.h is required for this test) AC_CHECK_HEADERS(uuid/uuid.h) - + if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then if test x"$with_dnsupdate_support" = x"yes"; then AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support) @@ -3956,29 +4369,33 @@ if test x"$with_dnsupdate_support" != x"no"; then fi if test x"$with_dnsupdate_support" != x"no"; then - ac_save_LIBS=$LIBS ######################################################## - # now see if we can find the uuid libs in standard paths - AC_CHECK_LIB_EXT(uuid, UUID_LIBS, uuid_generate) - - LIBS="$LIBS $UUID_LIBS" - - if test x"$ac_cv_lib_ext_uuid_uuid_generate" = x"yes"; then - with_dnsupdate_support=yes - AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support]) - AC_MSG_CHECKING(whether UUID support is used) - AC_MSG_RESULT(yes) - else - if test x"$with_dnsupdate_support" = x"yes"; then - AC_MSG_ERROR(libuuid is needed to enable DNS Updates support) - else - AC_MSG_WARN(libuuid is needed to enable DNS Updates support) - fi - UUID_LIBS="" - with_dnsupdate_support=no - fi - LIBS=$ac_save_LIBS + # Now see if we can find the uuid libs in standard paths + # On some systems, the uuid API is in libc, so we have to + # be careful not to insert a spurious -luuid. + + UUID_LIBS="" + AC_LIBTESTFUNC(uuid, uuid_generate, + [ + case " $LIBS " in + *\ -luuid\ *) + UUID_LIBS="-luuid" + SMB_REMOVE_LIB(uuid) + ;; + esac + + with_dnsupdate_support=yes + AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support]) + ], + [ + if test x"$with_dnsupdate_support" = x"yes"; then + AC_MSG_ERROR(libuuid is needed to enable DNS Updates support) + else + AC_MSG_WARN(libuuid is needed to enable DNS Updates support) + fi + with_dnsupdate_support=no + ]) fi ################################################# @@ -4009,7 +4426,7 @@ AC_ARG_WITH(smbmount, *linux*) AC_MSG_RESULT(yes) AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount]) - EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount" + SMBMOUNT_PROGS="bin/smbmount bin/smbmnt bin/smbumount" ;; *) AC_MSG_ERROR(not on a linux system!) @@ -4066,7 +4483,11 @@ AC_ARG_WITH(cifsmount, ################################################# -# check for a PAM clear-text auth, accounts, password and session support +# Check for a PAM clear-text auth, accounts, password +# and session support. Most PAM implementations keep their +# headers in /usr/include/security. Darwin keeps its in +# /usr/include/pam. + with_pam_for_crypt=no try_pam=no AC_MSG_CHECKING(whether to try PAM support) @@ -4086,10 +4507,13 @@ if test x"${try_pam}" != x"no";then use_pam=yes create_pam_modules=yes - AC_CHECK_HEADERS(security/pam_appl.h) - if test x"$ac_cv_header_security_pam_appl_h" != x"yes"; then + # Most systems have PAM headers in /usr/include/security, but Darwin + # has them in /usr/include/pam. + AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h) + if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \ + x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then if test x"${try_pam}" = x"yes";then - AC_MSG_ERROR([--with-pam=yes but security/pam_appl.h not found]) + AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found]) fi use_pam=no create_pam_modules=no @@ -4104,14 +4528,18 @@ if test x"${try_pam}" != x"no";then create_pam_modules=no fi - AC_CHECK_HEADERS(security/pam_modules.h,,,[[ + AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[ #if HAVE_SECURITY_PAM_APPL_H #include #endif + #if HAVE_PAM_PAM_APPL_H + #include + #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" -a \ + x"$ac_cv_header_pam_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]) + AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found]) fi create_pam_modules=no fi @@ -4127,6 +4555,7 @@ if test x"${try_pam}" != x"no";then # this checks are optional, # we don't care about the results here AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h) + AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h) AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS) else AC_MSG_WARN([PAM support detected but PAM MODULES support is missing]) @@ -4196,7 +4625,7 @@ fi fi ################################################# -# check for a NISPLUS_HOME support +# check for a NISPLUS_HOME support AC_MSG_CHECKING(whether to use NISPLUS_HOME) AC_ARG_WITH(nisplus-home, [ --with-nisplus-home Include NISPLUS_HOME support (default=no)], @@ -4350,6 +4779,9 @@ AC_CHECK_HEADER(asm/types.h,[ # For quotas on Veritas VxFS filesystems AC_CHECK_HEADERS(sys/fs/vx_quota.h) +# For quotas on Linux XFS filesystems +AC_CHECK_HEADERS(linux/dqblk_xfs.h) + # For sys/quota.h and linux/quota.h AC_CHECK_HEADERS(sys/quota.h) @@ -4372,7 +4804,7 @@ if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then fi fi -# if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX +# if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [ AC_TRY_COMPILE([ #include "confdefs.h" @@ -4453,13 +4885,13 @@ AC_CHECK_FUNCS(devnm) if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then - # if --with-sys-quotas=yes then build it + # if --with-sys-quotas=yes then build it # you have can use the get/set quota command smb.conf # options then samba_cv_SYSQUOTA_FOUND=auto fi if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then - # if --with-sys-quotas=yes then build it + # if --with-sys-quotas=yes then build it # you have can use the get/set quota command smb.conf # options then samba_cv_TRY_SYS_QUOTAS=auto @@ -4482,7 +4914,7 @@ CPPFLAGS="$SAVE_CPPFLAGS" ]) if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface) - if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then + if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support]) AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used]) samba_cv_WE_USE_SYS_QUOTAS=yes @@ -4599,12 +5031,12 @@ LIBMSRPC_SHARED= LIBMSRPC= AC_MSG_CHECKING(whether to build the libmsrpc shared library) AC_ARG_WITH(libmsrpc, -[ --with-libmsrpc Build the libmsrpc shared library (default=yes if shared libs supported)], +[ --with-libmsrpc Build the libmsrpc shared library (default=no unmaintained)], [ case "$withval" in - no) + *) AC_MSG_RESULT(no) ;; - *) + yes) if test $BLDSHARED = true; then LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT LIBMSRPC=libmsrpc @@ -4619,22 +5051,7 @@ AC_ARG_WITH(libmsrpc, INSTALL_LIBMSRPC=installlibmsrpc UNINSTALL_LIBMSRPC=uninstalllibmsrpc ;; - esac ], -[ -# if unspecified, default is to built it if possible. - if test $BLDSHARED = true; then - LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT - LIBMSRPC=libmsrpc - AC_MSG_RESULT(yes) - else - enable_static=yes - AC_MSG_RESULT(no shared library support -- will supply static library) - fi - if test $enable_static = yes; then - LIBMSRPC=libmsrpc - fi] - INSTALL_LIBMSRPC=installlibmsrpc - UNINSTALL_LIBMSRPC=uninstalllibmsrpc + esac ] ) @@ -4646,12 +5063,12 @@ LIBADDNS_SHARED= LIBADDNS= AC_MSG_CHECKING(whether to build the libaddns shared library) AC_ARG_WITH(libaddns, -[ --with-libaddns Build the libaddns shared library (default=yes if shared libs supported)], +[ --with-libaddns Build the libaddns shared library (default=no undefined API)], [ case "$withval" in - no) + *) AC_MSG_RESULT(no) ;; - *) + yes) if test $BLDSHARED = true; then LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT LIBADDNS=libaddns @@ -4666,22 +5083,7 @@ AC_ARG_WITH(libaddns, INSTALL_LIBADDNS=installlibaddns UNINSTALL_LIBADDNS=uninstalllibaddns ;; - esac ], -[ -# if unspecified, default is to built it if possible. - if test $BLDSHARED = true; then - LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT - LIBADDNS=libaddns - AC_MSG_RESULT(yes) - else - enable_static=yes - AC_MSG_RESULT(no shared library support -- will supply static library) - fi - if test $enable_static = yes; then - LIBADDNS=libaddns - fi] - INSTALL_LIBADDNS=installlibaddns - UNINSTALL_LIBADDNS=uninstalllibaddns + esac ] ) ################################################# @@ -4694,7 +5096,7 @@ AC_MSG_CHECKING(whether to build the libsmbclient shared library) AC_ARG_WITH(libsmbclient, [ --with-libsmbclient Build the libsmbclient shared library (default=yes if shared libs supported)], [ case "$withval" in - no) + no) AC_MSG_RESULT(no) ;; *) @@ -4790,7 +5192,7 @@ if test $space = no; then main () { struct statvfs64 fsd; - exit (statvfs64 (".", &fsd)); + return statvfs64 (".", &fsd); }], fu_cv_sys_stat_statvfs64=yes, fu_cv_sys_stat_statvfs64=no, @@ -4843,7 +5245,7 @@ if test $space = no; then { struct statfs fsd; fsd.f_fsize = 0; - exit (statfs (".", &fsd, sizeof (struct statfs))); + return statfs (".", &fsd, sizeof (struct statfs)); }], fu_cv_sys_stat_statfs3_osf1=yes, fu_cv_sys_stat_statfs3_osf1=no, @@ -4874,7 +5276,7 @@ member (AIX, 4.3BSD)]) { struct statfs fsd; fsd.f_bsize = 0; - exit (statfs (".", &fsd)); + return statfs (".", &fsd); }], fu_cv_sys_stat_statfs2_bsize=yes, fu_cv_sys_stat_statfs2_bsize=no, @@ -4895,7 +5297,7 @@ if test $space = no; then main () { struct statfs fsd; - exit (statfs (".", &fsd, sizeof fsd, 0)); + return statfs (".", &fsd, sizeof fsd, 0); }], fu_cv_sys_stat_statfs4=yes, fu_cv_sys_stat_statfs4=no, @@ -4923,7 +5325,7 @@ member (4.4BSD and NetBSD)]) { struct statfs fsd; fsd.f_fsize = 0; - exit (statfs (".", &fsd)); + return statfs (".", &fsd); }], fu_cv_sys_stat_statfs2_fsize=yes, fu_cv_sys_stat_statfs2_fsize=no, @@ -4954,7 +5356,7 @@ if test $space = no; then struct fs_data fsd; /* Ultrix's statfs returns 1 for success, 0 for not mounted, -1 for failure. */ - exit (statfs (".", &fsd) != 1); + return statfs (".", &fsd) != 1; }], fu_cv_sys_stat_fs_data=yes, fu_cv_sys_stat_fs_data=no, @@ -4993,7 +5395,7 @@ AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT]) # check for cluster extensions AC_MSG_CHECKING(whether to include cluster support) -AC_ARG_WITH(cluster-support, +AC_ARG_WITH(cluster-support, [ --with-cluster-support Enable cluster extensions (default=no)]) if test "x$with_cluster_support" = "xyes"; then AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions]) @@ -5008,54 +5410,71 @@ fi AC_MSG_CHECKING(whether to support ACLs) AC_ARG_WITH(acl-support, -[ --with-acl-support Include ACL support (default=no)], +[ --with-acl-support Include ACL support (default=auto)], [ case "$withval" in - yes) + yes|no) + with_acl_support="$withval" + ;; + esac ]) +if test x"$with_acl_support" = x ; then + with_acl_support="auto" +fi + +AC_MSG_RESULT($with_acl_support) + +if test x"$with_acl_support" = x"no"; then + AC_MSG_RESULT(Disabling ACL support) + AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in]) +else + AC_MSG_NOTICE(checking whether ACL support is available:) case "$host_os" in *sysv5*) - AC_MSG_RESULT(Using UnixWare ACLs) + AC_MSG_NOTICE(Using UnixWare ACLs) AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available]) default_static_modules="$default_static_modules vfs_solarisacl" ;; *solaris*) - AC_MSG_RESULT(Using solaris ACLs) + AC_MSG_NOTICE(Using solaris ACLs) AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available]) ACL_LIBS="$ACL_LIBS -lsec" default_static_modules="$default_static_modules vfs_solarisacl" ;; *hpux*) - AC_MSG_RESULT(Using HPUX ACLs) + AC_MSG_NOTICE(Using HPUX ACLs) AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available]) default_static_modules="$default_static_modules vfs_hpuxacl" ;; *irix*) - AC_MSG_RESULT(Using IRIX ACLs) + AC_MSG_NOTICE(Using IRIX ACLs) AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available]) default_static_modules="$default_static_modules vfs_irixacl" ;; *aix*) - AC_MSG_RESULT(Using AIX ACLs) + AC_MSG_NOTICE(Using AIX ACLs) AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available]) default_static_modules="$default_static_modules vfs_aixacl" ;; *osf*) - AC_MSG_RESULT(Using Tru64 ACLs) + AC_MSG_NOTICE(Using Tru64 ACLs) AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available]) ACL_LIBS="$ACL_LIBS -lpacl" default_static_modules="$default_static_modules vfs_tru64acl" ;; - *freebsd[[5-9]]*) - AC_MSG_RESULT(Using FreeBSD posix ACLs) - AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available]) - AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available]) + *darwin*) + AC_MSG_NOTICE(ACLs on Darwin currently not supported) + AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available]) ;; - *linux*) - AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"]) - AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"]) - AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[ + *) + AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"]) + case "$host_os" in + *linux*) + AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"]) + ;; + esac + AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[ acl_LIBS=$LIBS - LIBS="$LIBS -lacl" + LIBS="$LIBS $ACL_LIBS" AC_TRY_LINK([ #include #include @@ -5070,11 +5489,11 @@ AC_ARG_WITH(acl-support, LIBS=$acl_LIBS ]) if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then - AC_MSG_RESULT(Using posix ACLs) + AC_MSG_NOTICE(Using posix ACLs) AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available]) AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[ acl_LIBS=$LIBS - LIBS="$LIBS -lacl" + LIBS="$LIBS $ACL_LIBS" AC_TRY_LINK([ #include #include @@ -5090,63 +5509,16 @@ AC_ARG_WITH(acl-support, if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available]) fi + default_static_modules="$default_static_modules vfs_posixacl" + else + AC_MSG_NOTICE(ACL support is not avaliable) + AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available]) fi - ;; - *) - AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"]) - AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[ - acl_LIBS=$LIBS - LIBS="$LIBS -lacl" - AC_TRY_LINK([ - #include - #include - ],[ - acl_t acl; - int entry_id; - acl_entry_t *entry_p; - return acl_get_entry( acl, entry_id, entry_p); - ], - [samba_cv_HAVE_POSIX_ACLS=yes], - [samba_cv_HAVE_POSIX_ACLS=no]) - LIBS=$acl_LIBS - ]) - if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then - AC_MSG_RESULT(Using posix ACLs) - AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available]) - AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[ - acl_LIBS=$LIBS - LIBS="$LIBS -lacl" - AC_TRY_LINK([ - #include - #include - ],[ - acl_permset_t permset_d; - acl_perm_t perm; - return acl_get_perm_np( permset_d, perm); - ], - [samba_cv_HAVE_ACL_GET_PERM_NP=yes], - [samba_cv_HAVE_ACL_GET_PERM_NP=no]) - LIBS=$acl_LIBS - ]) - if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then - AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available]) - fi - fi - ;; + ;; esac - ;; - *) - AC_MSG_RESULT(no) - AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available]) - ;; - esac ], - AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in]) - AC_MSG_RESULT(no) -) +fi # with_acl_support + -if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then - default_static_modules="$default_static_modules vfs_posixacl" -fi ################################################# # check for AIO support @@ -5300,7 +5672,7 @@ AC_ARG_WITH(sendfile-support, AC_MSG_RESULT(yes); case "$host_os" in - *linux*) + linux*-gnu* | gnu* | k*bsd*-gnu) AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[ AC_TRY_LINK([#include ], [\ @@ -5544,6 +5916,48 @@ samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)]) AC_MSG_RESULT(yes) ) +############################################ +# See if we have the Linux readahead syscall. + +AC_CACHE_CHECK([for Linux readahead], + samba_cv_HAVE_LINUX_READAHEAD,[ + + AC_TRY_LINK([ +#if defined(HAVE_UNISTD_H) +#include +#endif +#include ], + [ssize_t err = readahead(0,0,0x80000);], + samba_cv_HAVE_LINUX_READAHEAD=yes, + samba_cv_HAVE_LINUX_READAHEAD=no)]) + +if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then + AC_DEFINE(HAVE_LINUX_READAHEAD,1, + [Whether Linux readahead is available]) +fi + +AC_HAVE_DECL(readahead, [#include ]) + +############################################ +# See if we have the posix_fadvise syscall. + +AC_CACHE_CHECK([for posix_fadvise], + samba_cv_HAVE_POSIX_FADVISE,[ + AC_TRY_LINK([ +#if defined(HAVE_UNISTD_H) +#include +#endif +#include ], + [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);], + samba_cv_HAVE_POSIX_FADVISE=yes, + samba_cv_HAVE_POSIX_FADVISE=no)]) + +if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then + AC_DEFINE(HAVE_POSIX_FADVISE,1, + [Whether posix_fadvise is available]) +fi + + ################################################# # Check whether winbind is supported on this platform. If so we need to @@ -5564,11 +5978,11 @@ WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS NSSSONAMEVERSIONSUFFIX="" case "$host_os" in - *linux*) + linux*-gnu* | gnu* | k*bsd*-gnu) NSSSONAMEVERSIONSUFFIX=".2" WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o" ;; - *freebsd[[5-9]]*) + freebsd5*|*freebsd[[6-9]]*) # FreeBSD winbind client is implemented as a wrapper around # the Linux version. NSSSONAMEVERSIONSUFFIX=".1" @@ -5632,11 +6046,13 @@ AC_SUBST(WINBIND_NSS_EXTRA_OBJS) AC_SUBST(WINBIND_NSS_EXTRA_LIBS) AC_SUBST(NSSSONAMEVERSIONSUFFIX) +AC_SUBST(SMB_KRB5_LOCATOR) + # Check the setting of --with-winbind AC_ARG_WITH(winbind, [ --with-winbind Build winbind (default, if supported by OS)], -[ +[ case "$withval" in yes) HAVE_WINBIND=yes @@ -5664,20 +6080,20 @@ if test x"$HAVE_WINBIND" = x"no"; then WINBIND_WINS_NSS="" fi +if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes"; then + NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}" +fi + if test x"$HAVE_WINBIND" = x"yes"; then AC_MSG_RESULT(yes) AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind]) EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)" EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)" - if test $BLDSHARED = true; then - SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS" - - if test x"$create_pam_modules" = x"yes"; then - PAM_MODULES="$PAM_MODULES pam_winbind" - INSTALL_PAM_MODULES="installpammodules" - UNINSTALL_PAM_MODULES="uninstallpammodules" - fi + if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then + PAM_MODULES="$PAM_MODULES pam_winbind" + INSTALL_PAM_MODULES="installpammodules" + UNINSTALL_PAM_MODULES="uninstallpammodules" fi else AC_MSG_RESULT(no$winbind_no_reason) @@ -5689,8 +6105,8 @@ AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family, [#include ]) # Solaris has some extra fields in struct passwd that need to be -# initialised otherwise nscd crashes. - +# initialised otherwise nscd crashes. + AC_CHECK_MEMBER(struct passwd.pw_comment, AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),, [#include ]) @@ -5718,13 +6134,12 @@ 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 +# Check to see if we should use the included popt AC_ARG_WITH(included-popt, [ --with-included-popt use bundled popt library, not from system], -[ +[ case "$withval" in yes) INCLUDED_POPT=yes @@ -5755,11 +6170,11 @@ AC_SUBST(POPTLIBS) AC_SUBST(FLAGS1) ################################################# -# Check to see if we should use the included iniparser +# Check to see if we should use the included iniparser AC_ARG_WITH(included-iniparser, [ --with-included-iniparser use bundled iniparser library, not from system], -[ +[ case "$withval" in yes) INCLUDED_INIPARSER=yes @@ -5819,6 +6234,38 @@ AC_ARG_WITH(python, esac ]) AC_SUBST(PYTHON) + +# Checks for the vfs_fileid module +# Start +AC_CHECK_FUNC(getmntent) + +AC_CHECK_HEADERS(sys/statfs.h) + +AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)]) +AC_CACHE_VAL(vfsfileid_cv_statfs,[ + AC_TRY_RUN([ + #include + #include + int main(void) + { + struct statfs fsd; + fsid_t fsid = fsd.f_fsid; + return statfs (".", &fsd); + }], + vfsfileid_cv_statfs=yes, + vfsfileid_cv_statfs=no, + vfsfileid_cv_statfs=cross) +]) +AC_MSG_RESULT($vfsfileid_cv_statfs) + +if test x"$ac_cv_func_getmntent" = x"yes" -a \ + x"$vfsfileid_cv_statfs" = x"yes"; then + default_shared_modules="$default_shared_modules vfs_fileid" +fi +# End +# Checks for the vfs_fileid module + + for i in `echo $default_static_modules | sed -e 's/,/ /g'` do eval MODULE_DEFAULT_$i=STATIC @@ -5841,8 +6288,10 @@ MODULE_idmap_tdb=STATIC MODULE_idmap_passdb=STATIC MODULE_idmap_nss=STATIC +MODULE_nss_info_template=STATIC + AC_ARG_WITH(static-modules, -[ --with-static-modules=MODULES Comma-seperated list of names of modules to statically link in], +[ --with-static-modules=MODULES Comma-separated list of names of modules to statically link in], [ if test $withval; then for i in `echo $withval | sed -e 's/,/ /g'` do @@ -5851,7 +6300,7 @@ AC_ARG_WITH(static-modules, fi ]) AC_ARG_WITH(shared-modules, -[ --with-shared-modules=MODULES Comma-seperated list of names of modules to build shared], +[ --with-shared-modules=MODULES Comma-separated list of names of modules to build shared], [ if test $withval; then for i in `echo $withval | sed -e 's/,/ /g'` do @@ -5859,7 +6308,7 @@ AC_ARG_WITH(shared-modules, done fi ]) -SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB, +SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB, [ 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) @@ -5871,25 +6320,29 @@ 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_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_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$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_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC) -SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC) +SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$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_SUBSYSTEM(RPC,smbd/server.o) -SMB_MODULE(idmap_ldap, nsswitch/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP) -SMB_MODULE(idmap_tdb, nsswitch/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP) -SMB_MODULE(idmap_passdb, nsswitch/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP) -SMB_MODULE(idmap_nss, nsswitch/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP) -SMB_MODULE(idmap_rid, nsswitch/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP) -SMB_MODULE(idmap_ad, nsswitch/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP) -SMB_SUBSYSTEM(IDMAP, nsswitch/idmap.o) +SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP) +SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP) +SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP) +SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP) +SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP) +SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP) +SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o) + +SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO) +SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o) SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET) SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET) @@ -5931,6 +6384,9 @@ 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_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS) SMB_SUBSYSTEM(VFS,smbd/vfs.o) @@ -6041,13 +6497,13 @@ CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS) AC_MSG_RESULT([Using libraries:]) AC_MSG_RESULT([ LIBS = $LIBS]) if test x"$with_ads_support" != x"no"; then - AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS]) + AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS]) fi if test x"$with_ldap_support" != x"no"; then - AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS]) + AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS]) fi if test x"$with_dnsupdate_support" != x"no"; then - AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS]) + AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS]) fi AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS]) @@ -6060,15 +6516,21 @@ 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 +AC_SUBST(DEVELOPER_CFLAGS) +if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then + CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)" +fi + builddir=`pwd` AC_SUBST(builddir) # Stuff the smbd-only libraries at the end of the smbd link # path (if we have them). -SMBD_LIBS="$samba_fam_libs $samba_dmapi_libs" +SMBD_LIBS="$samba_dmapi_libs" AC_SUBST(SMBD_LIBS) -AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh) +AC_OUTPUT(Makefile library-versions script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh) ################################################# # Print very concise instructions on building/use