1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.54 or above
6 AC_INIT([Samba],[3],[samba-technical@samba.org])
8 AC_CONFIG_SRCDIR([include/includes.h])
9 AC_CONFIG_HEADER(include/config.h)
10 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
14 AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
21 m4_include(m4/samba_version.m4)
22 m4_include(m4/check_path.m4)
24 AC_LIBREPLACE_CC_CHECKS
26 m4_include(../lib/talloc/libtalloc.m4)
29 for obj in ${TALLOC_OBJ}; do
30 LIBTALLOC_OBJ0="${LIBTALLOC_OBJ0} ${tallocdir}/${obj}"
32 AC_SUBST(LIBTALLOC_OBJ0)
34 # TODO: These should come from m4_include(lib/tdb/libtdb.m4)
35 # but currently this fails: things have to get merged from s4.
38 TDB_CFLAGS="-I${srcdir-.}/$tdbdir/include"
42 for o in common/tdb.o common/dump.o common/transaction.o common/error.o \
43 common/traverse.o common/freelist.o common/freelistcheck.o \
44 common/io.o common/lock.o common/open.o;
46 LIBTDB_OBJ0="$LIBTDB_OBJ0 $tdbdir/$o"
50 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
51 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/replace"
52 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
53 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TDB_CFLAGS}"
54 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
55 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
57 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/../lib/popt"
59 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
60 if test "x${srcdir-.}" != "x."; then
61 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
64 dnl Unique-to-Samba variables we'll be playing with.
65 AC_SUBST(SAMBA_CPPFLAGS)
70 AC_SUBST(MODULE_EXPORTS)
76 AC_SUBST(RELRO_LDFLAGS)
78 AC_SUBST(INSTALLLIBCMD_SH)
79 AC_SUBST(INSTALLLIBCMD_A)
80 AC_SUBST(UNINSTALLLIBCMD_SH)
81 AC_SUBST(UNINSTALLLIBCMD_A)
83 AC_SUBST(INSTALL_LIBWBCLIENT)
84 AC_SUBST(UNINSTALL_LIBWBCLIENT)
85 AC_SUBST(LIBWBCLIENT_SHARED_TARGET)
86 AC_SUBST(LIBWBCLIENT_SHARED)
87 AC_SUBST(LIBWBCLIENT_STATIC_TARGET)
88 AC_SUBST(LIBWBCLIENT_STATIC)
89 AC_SUBST(LIBWBCLIENT_SOVER)
91 AC_SUBST(WINBIND_LIBS)
93 AC_SUBST(LIBSAMBAUTIL_SHARED)
104 AC_SUBST(PAM_MODULES)
105 AC_SUBST(INSTALL_PAM_MODULES)
106 AC_SUBST(UNINSTALL_PAM_MODULES)
107 AC_SUBST(NSS_MODULES)
108 AC_SUBST(EXTRA_BIN_PROGS)
109 AC_SUBST(CIFSMOUNT_PROGS)
110 AC_SUBST(INSTALL_CIFSMOUNT)
111 AC_SUBST(UNINSTALL_CIFSMOUNT)
112 AC_SUBST(CIFSUPCALL_PROGS)
113 AC_SUBST(INSTALL_CIFSUPCALL)
114 AC_SUBST(UNINSTALL_CIFSUPCALL)
115 AC_SUBST(EXTRA_SBIN_PROGS)
116 AC_SUBST(EXTRA_ALL_TARGETS)
117 AC_SUBST(CONFIG_LIBS)
120 # compile with optimization and without debugging by default, but
121 # allow people to set their own preference.
122 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
123 # if it has no value. This prevent *very* large debug binaries from occurring
125 if test "x$CFLAGS" = x; then
128 if test "x$debug" = "xyes" ; then
129 CFLAGS="${CFLAGS} -g"
131 CFLAGS="${CFLAGS} -O"
134 m4_include(../lib/socket_wrapper/config.m4)
135 m4_include(../lib/nss_wrapper/config.m4)
137 m4_include(m4/swat.m4)
139 # Probe the gcc version for extra CFLAGS. We always stash these in
140 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
141 # Makefile edit, avoiding the need to re-run configure.
142 if test x"$ac_cv_prog_gcc" = x"yes" ; then
143 DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
144 # Add -Wdeclaration-after-statement if compiler supports it
146 [that the C compiler understands -Wdeclaration-after-statement],
147 samba_cv_HAVE_Wdeclaration_after_statement, [
152 }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
153 samba_cv_HAVE_Wdeclaration_after_statement=yes,
154 samba_cv_HAVE_Wdeclaration_after_statement=no,
155 samba_cv_HAVE_Wdeclaration_after_statement=cross)
158 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
159 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
162 #-Werror-implicit-function-declaration
164 [that the C compiler understands -Werror-implicit-function-declaration],
165 samba_cv_HAVE_Werror_implicit_function_declaration, [
170 }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
171 samba_cv_HAVE_Werror_implicit_function_declaration=yes,
172 samba_cv_HAVE_Werror_implicit_function_declaration=no,
173 samba_cv_HAVE_Werror_implicit_function_declaration=cross)
175 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
176 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
179 # krb5developer is like developer, except we don't get
180 # -Wstrict-prototypes.
181 if test x"$krb5_developer" != x"$yes" ; then
182 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
185 if test x"$picky_developer" = x"yes"; then
186 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Werror"
190 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
192 if test "x$enable_dmalloc" = xyes
194 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
195 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
196 [Define to check invariants around some common functions])
197 LIBS="$LIBS -ldmalloc"
200 #################################################
201 # check for a shared memory profiling support
202 AC_MSG_CHECKING(whether to use profiling)
203 AC_ARG_WITH(profiling-data,
204 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
208 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
209 samba_cv_WITH_PROFILE=yes
213 samba_cv_WITH_PROFILE=no
219 dnl Checks for programs.
223 AC_PATH_PROG(PERL, perl)
225 AC_CHECK_TOOL(AR, ar)
227 dnl Check if we use GNU ld
231 dnl Certain versions of GNU ld the default is not to have the
232 dnl --allow-shlib-undefined flag defined. This causes a stackload of
233 dnl warnings when building modules.
234 if test "$ac_cv_prog_gnu_ld" = "yes"; then
235 ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
236 AC_MSG_CHECKING(GNU ld release date)
238 ac_cv_gnu_ld_date=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
240 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
241 if test -n "$ac_cv_gnu_ld_date"; then
242 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
243 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
245 if test "$ac_cv_gnu_ld_date" -gt 20030101; then
246 ac_cv_gnu_ld_version_script=yes
249 AC_MSG_CHECKING(GNU ld release version)
251 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
252 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
253 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
255 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
256 AC_MSG_CHECKING(GNU ld release version major)
257 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
258 AC_MSG_CHECKING(GNU ld release version minor)
259 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
260 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
261 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
263 if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_ld_vernr_major"=2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then
264 ac_cv_gnu_ld_version_script=yes
269 dnl look for executable suffix
272 dnl Check if C compiler understands -c and -o at the same time
274 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
281 dnl Check if the C compiler understands -Werror
282 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
287 }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
288 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
289 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
290 Werror_FLAGS="-Werror"
292 dnl Check if the C compiler understands -w2
293 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
298 }],[-w2],[$CPPFLAGS],[$LDFLAGS],
299 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
300 if test x"$samba_cv_HAVE_w2" = x"yes"; then
303 dnl Check if the C compiler understands -errwarn
304 AC_CACHE_CHECK([that the C compiler understands -errwarn],samba_cv_HAVE_errwarn, [
309 }],[-errwarn=%all],[$CPPFLAGS],[$LDFLAGS],
310 samba_cv_HAVE_errwarn=yes,samba_cv_HAVE_errwarn=no,samba_cv_HAVE_errwarn=cross)])
311 if test x"$samba_cv_HAVE_errwarn" = x"yes"; then
312 Werror_FLAGS="-errwarn=%all"
317 ############################################
318 # check if the compiler can handle negative enum values
319 # and don't truncate the values to INT_MAX
320 # a runtime test is needed here
322 AC_CACHE_CHECK([that the C compiler understands negative enum values],samba_cv_CC_NEGATIVE_ENUM_VALUES, [
326 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
328 enum negative_values v1 = NEGATIVE_VALUE;
329 unsigned v2 = NEGATIVE_VALUE;
331 if (v1 != 0xFFFFFFFF) {
332 printf("%u != 0xFFFFFFFF\n", v1);
335 if (v2 != 0xFFFFFFFF) {
336 printf("%u != 0xFFFFFFFF\n", v2);
343 samba_cv_CC_NEGATIVE_ENUM_VALUES=yes,samba_cv__CC_NEGATIVE_ENUM_VALUES=no)])
344 if test x"$samba_cv_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
345 AC_MSG_WARN([using --uint-enums for pidl])
346 PIDL_ARGS="$PIDL_ARGS --uint-enums"
349 dnl Figure out the flags to support named structure initializers
351 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
353 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
354 AC_MSG_CHECKING(uname -s)
355 AC_MSG_RESULT(${UNAME_S})
357 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
358 AC_MSG_CHECKING(uname -r)
359 AC_MSG_RESULT(${UNAME_R})
361 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
362 AC_MSG_CHECKING(uname -m)
363 AC_MSG_RESULT(${UNAME_M})
365 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
366 AC_MSG_CHECKING(uname -p)
367 AC_MSG_RESULT(${UNAME_P})
369 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
370 AC_MSG_CHECKING(uname -i)
371 AC_MSG_RESULT(${UNAME_I})
373 dnl Add #include for broken IRIX header files
376 #TODO add to libreplace
377 if test x"$ac_cv_prog_gcc" != x"yes" ; then
378 dnl Fix sensible defaults for MIPSPro compilers. The
379 dnl error numbers are valid for the 7.3 compilers,
380 dnl hopefully also valid for the 7.4 series.
382 dnl Bugzilla 3801. Force an error on warning 1035
383 dnl so we don't incorrectly detect stdint.h. This
384 dnl warning is emitted for #error directives.
385 CFLAGS="$CFLAGS -diag_error 1035"
386 dnl 1209: Controlling expression is constant
387 dnl 1174: Function foo declared but never referenced
388 dnl 3201: Parameter foo was never referenced
389 CFLAGS="$CFLAGS -woff 1209,1174,3201"
397 dnl Add modules that have to be built by default here
398 dnl These have to be built static:
399 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsarpc rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl2 rpc_ntsvcs2 rpc_netlogon rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog2 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin auth_netlogond vfs_default nss_info_template"
401 dnl These are preferably build shared, and static if dlopen() is not available
402 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 vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_xattr_tdb vfs_streams_xattr vfs_acl_xattr vfs_acl_tdb vfs_smb_traffic_analyzer"
404 if test "x$developer" = xyes; then
405 default_static_modules="$default_static_modules rpc_rpcecho"
406 default_shared_modules="$default_shared_modules charset_weird"
410 # Config CPPFLAG settings for strange OS's that must be set
411 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
412 # case statement; its first reference must be unconditional.
417 # Defines needed for HPUX support.
418 # HPUX has bigcrypt but (sometimes?) doesn't use it for
419 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
423 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
429 # CRAY Unicos has broken const handling
431 AC_MSG_RESULT([disabling const])
432 CPPFLAGS="$CPPFLAGS -Dconst="
436 # AIX4.x doesn't even admit to having large
437 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
440 AC_MSG_RESULT([enabling large file support])
441 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
442 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
445 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
446 # to the existance of large files..
447 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
448 # recommendations on large file support, however it makes the
449 # compile work using gcc 2.7 and 2.8, whereas using the Sun
450 # recommendation makes the compile fail on gcc2.7. JRA.
452 # Solaris uses SYSV printing. Make sure to set that here. --jerry
455 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
457 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
458 AC_MSG_RESULT([no large file support])
461 AC_MSG_RESULT([enabling large file support])
462 if test "$ac_cv_prog_gcc" = yes; then
463 ${CC-cc} -v >conftest.c 2>&1
464 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
466 case "$ac_cv_gcc_compiler_version_number" in
467 *"gcc version 2.6"*|*"gcc version 2.7"*)
468 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
469 LDFLAGS="$LDFLAGS -lthread"
470 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
473 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
474 LDFLAGS="$LDFLAGS -lthread"
475 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
476 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
480 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
481 LDFLAGS="$LDFLAGS -lthread"
482 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
483 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
489 # IRIX uses SYSV printing. Make sure to set that here
492 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
494 *freebsd*|*dragonfly*)
495 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
498 # VOS may need to have POSIX support and System V compatibility enabled.
505 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
506 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
510 *-D_SYSV*|*-D_SVID_SOURCE*)
513 CPPFLAGS="$CPPFLAGS -D_SYSV"
514 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
518 # Tests needed for SINIX large file support.
521 if test $host = mips-sni-sysv4 ; then
522 AC_MSG_CHECKING([for LFS support])
523 old_CPPFLAGS="$CPPFLAGS"
524 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
528 #if _LFS64_LARGEFILE == 1
533 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
534 CPPFLAGS="$old_CPPFLAGS"
535 if test x$SINIX_LFS_SUPPORT = xyes ; then
536 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
537 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
538 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
539 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
540 LIBS="`getconf LFS64_LIBS` $LIBS"
542 AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
546 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
549 AC_MSG_CHECKING([for LFS support])
550 old_CPPFLAGS="$CPPFLAGS"
551 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
554 #include <sys/utsname.h>
558 #if _LFS64_LARGEFILE == 1
563 /* Ensure this is glibc 2.2 or higher */
564 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
565 int libc_major = __GLIBC__;
566 int libc_minor = __GLIBC_MINOR__;
574 /* Ensure this is kernel 2.4 or higher */
577 release = strdup(uts.release);
578 major = atoi(strsep(&release, "."));
579 minor = atoi(strsep(&release, "."));
581 if (major > 2 || (major == 2 && minor > 3))
588 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
589 CPPFLAGS="$old_CPPFLAGS"
590 if test x$LINUX_LFS_SUPPORT = xyes ; then
591 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
592 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
593 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
594 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
596 AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
600 # MacOS X is the *only* system that uses compose character in utf8. This
601 # is so horribly broken....
604 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
606 # Add a system specific charset module.
607 default_shared_modules="$default_shared_modules charset_macosxfs"
611 AC_MSG_CHECKING([for LFS support])
612 old_CPPFLAGS="$CPPFLAGS"
613 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
617 #if _LFS64_LARGEFILE == 1
622 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
623 CPPFLAGS="$old_CPPFLAGS"
624 if test x$GLIBC_LFS_SUPPORT = xyes ; then
625 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
626 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
627 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
629 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
634 SAVE_CPPFLAGS="${CPPFLAGS}"
635 CPPFLAGS="${CPPFLAGS} ${SAMBA_CONFIGURE_CPPFLAGS}"
637 AC_LIBREPLACE_BROKEN_CHECKS
638 AC_LIBREPLACE_NETWORK_CHECKS
640 CPPFLAGS="${SAVE_CPPFLAGS}"
642 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
645 for obj in ${LIBREPLACEOBJ}; do
646 LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
648 AC_SUBST(LIBREPLACE_OBJS)
650 # add -ldl to the global LIBS
651 LIBS="${LIBS} ${LIBDL} ${LIBREPLACE_NETWORK_LIBS}"
652 AUTH_LIBS="${AUTH_LIBS} ${CRYPT_LIBS}"
655 AC_CHECK_HEADERS(aio.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
656 AC_CHECK_HEADERS(unistd.h grp.h sys/id.h memory.h alloca.h)
657 AC_CHECK_HEADERS(limits.h float.h pthread.h libintl.h)
658 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
659 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
660 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h)
661 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
662 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h)
663 AC_CHECK_HEADERS(sys/sysmacros.h)
664 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
665 AC_CHECK_HEADERS(langinfo.h locale.h)
666 AC_CHECK_HEADERS(xfs/libxfs.h)
667 AC_CHECK_HEADERS(netgroup.h)
669 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
675 ## These fail to compile on IRIX so just check for their presence
676 AC_CHECK_HEADERS(sys/mode.h,,,)
678 # Look for Darwin headers
679 old_CPPFLAGS="$CPPFLAGS"
680 CPPFLAGS="-Iinclude $CPPFLAGS"
681 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
682 CPPFLAGS="$old_CPPFLAGS"
684 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
685 # subdirectory of headers.
686 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
688 # check for linux on amd64 since valgrind is not quite there yet
693 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
701 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
702 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
706 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
707 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
708 if test x"$ac_cv_header_shadow_h" = x"yes"; then
709 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
713 AC_CHECK_HEADERS(shadow.h)
714 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
715 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
717 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
718 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
720 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
722 # For experimental utmp support (lastlog on some BSD-like systems)
723 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
725 AC_CHECK_SIZEOF(int,cross)
726 AC_CHECK_SIZEOF(long,cross)
727 AC_CHECK_SIZEOF(long long,cross)
728 AC_CHECK_SIZEOF(short,cross)
743 AC_CHECK_TYPE(ssize_t, int)
744 AC_CHECK_TYPE(wchar_t, unsigned short)
746 ############################################
747 # for cups support we need libcups, and a handful of header files
750 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
752 if test x$enable_cups != xno; then
753 AC_PATH_PROG(CUPS_CONFIG, cups-config)
755 if test "x$CUPS_CONFIG" != x; then
757 ac_save_CFLAGS=$CFLAGS
758 ac_save_LDFLAGS=$LDFLAGS
759 ac_save_PRINT_LIBS=$PRINT_LIBS
760 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
761 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
762 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
763 AC_CHECK_HEADERS(cups/cups.h cups/language.h)
764 if test x"$ac_cv_header_cups_cups_h" = xyes -a \
765 x"$ac_cv_header_cups_language_h" = xyes; then
766 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
767 samba_cv_HAVE_CUPS=yes
769 AC_MSG_WARN([cups-config around but cups-devel not installed])
770 CFLAGS=$ac_save_CFLAGS
771 LDFLAGS=$ac_save_LDFLAGS
772 PRINT_LIBS=$ac_save_PRINT_LIBS
775 elif test x"$enable_cups" = x"yes"; then
776 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
780 AC_ARG_ENABLE(iprint,
781 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
783 if test x$enable_iprint != xno; then
784 if test x"$samba_cv_HAVE_CUPS" = xyes; then
785 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
786 elif test x"$enable_iprint" = x"yes"; then
787 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
791 ############################################
792 # check if the compiler will optimize out function calls
793 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
798 this_function_does_not_exist();
804 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
805 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
806 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
809 #############################################
810 # check for fd passing struct via msg_control
811 AC_CACHE_CHECK([for fd passing via msg_control],samba_cv_msghdr_msg_control, [
813 #include <sys/types.h>
816 #include <sys/socket.h>
817 #include <sys/un.h>],
822 char control[CMSG_SPACE(sizeof(int))];
824 msg.msg_control = control_un.control;
825 msg.msg_controllen = sizeof(control_un.control);
827 samba_cv_msghdr_msg_control=yes,samba_cv_msghdr_msg_control=no)])
828 if test x"$samba_cv_msghdr_msg_control" = x"yes"; then
829 AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL,1,
830 [If we can use msg_control for passing file descriptors])
833 #############################################
834 # check for fd passing struct via msg_acctrights
835 AC_CACHE_CHECK([for fd passing via msg_acctrights],
836 samba_cv_msghdr_msg_acctrights, [
838 #include <sys/types.h>
841 #include <sys/socket.h>
842 #include <sys/un.h>],
846 msg.msg_acctrights = (caddr_t) &fd;
847 msg.msg_acctrightslen = sizeof(fd);
849 samba_cv_msghdr_msg_acctrights=yes,samba_cv_msghdr_msg_acctrights=no)])
850 if test x"$samba_cv_msghdr_msg_acctrights" = x"yes"; then
851 AC_DEFINE(HAVE_MSGHDR_MSG_ACCTRIGHTS,1,
852 [If we can use msg_acctrights for passing file descriptors])
855 AC_CHECK_FUNCS(dirfd)
856 if test x"$ac_cv_func_dirfd" = x"yes"; then
857 default_shared_modules="$default_shared_modules vfs_syncops"
860 AC_CACHE_CHECK([for struct sigevent type],samba_cv_struct_sigevent, [
862 #include <sys/types.h>
867 #include <signal.h>],[struct sigevent s;],
868 samba_cv_struct_sigevent=yes,samba_cv_struct_sigevent=no)])
869 if test x"$samba_cv_struct_sigevent" = x"yes"; then
870 AC_DEFINE(HAVE_STRUCT_SIGEVENT,1,[Whether we have the struct sigevent])
871 AC_CHECK_MEMBERS([struct sigevent.sigev_value.sival_ptr,struct sigevent.sigev_value.sigval_ptr], , ,
872 [#include <signal.h>])
875 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
877 #include <sys/types.h>
882 #if TIME_WITH_SYS_TIME
883 # include <sys/time.h>
887 # include <sys/time.h>
892 ],[struct timespec ts;],
893 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
894 if test x"$samba_cv_struct_timespec" = x"yes"; then
895 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
898 # and glibc has setresuid under linux but the function does
899 # nothing until kernel 2.1.44! very dumb.
900 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
901 AC_TRY_RUN([#include <errno.h>
902 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
903 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
904 if test x"$samba_cv_have_setresuid" = x"yes"; then
905 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
908 # Do the same check for setresguid...
910 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
911 AC_TRY_RUN([#include <unistd.h>
913 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
914 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
915 if test x"$samba_cv_have_setresgid" = x"yes"; then
916 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
921 ###############################################
922 # Readline included by default unless explicitly asked not to
923 test "${with_readline+set}" != "set" && with_readline=yes
925 # test for where we get readline() from
926 AC_MSG_CHECKING(whether to use readline)
927 AC_ARG_WITH(readline,
928 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
929 [ case "$with_readline" in
933 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
934 AC_CHECK_HEADERS(readline/history.h)
936 AC_CHECK_HEADERS(readline.h readline/readline.h,[
937 for termlib in ncurses curses termcap terminfo termlib tinfo; do
938 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
940 AC_CHECK_LIB(readline, rl_callback_handler_install,
941 [TERMLIBS="-lreadline $TERMLIBS"
942 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
943 break], [TERMLIBS=], $TERMLIBS)])
951 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
952 # alternate readline path
954 _cppflags=${CPPFLAGS}
956 # Add additional search path
957 LDFLAGS="-L$with_readline/lib $LDFLAGS"
958 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
960 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
961 AC_CHECK_HEADERS(readline/history.h)
963 AC_CHECK_HEADERS(readline.h readline/readline.h,[
964 for termlib in ncurses curses termcap terminfo termlib; do
965 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
967 AC_CHECK_LIB(readline, rl_callback_handler_install,
968 [TERMLDFLAGS="-L$with_readline/lib"
969 TERMCPPFLAGS="-I$with_readline/include"
970 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
971 TERMLIBS="-lreadline $TERMLIBS"
972 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
973 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
981 AC_SUBST(TERMLDFLAGS)
983 # The readline API changed slightly from readline3 to readline4, so
984 # code will generate warnings on one of them unless we have a few
986 AC_CHECK_LIB(readline, rl_completion_matches,
987 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
988 [Do we have rl_completion_matches?])],
992 # not all readline libs have rl_event_hook or history_list
993 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
994 AC_CHECK_LIB(readline, history_list,
995 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
999 ###############################################
1000 # test for where we get yp_get_default_domain() from
1001 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1002 AC_CHECK_FUNCS(yp_get_default_domain)
1004 # Check if we have execl, if not we need to compile smbrun.
1005 AC_CHECK_FUNCS(execl)
1006 if test x"$ac_cv_func_execl" = x"no"; then
1007 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1010 AC_CHECK_FUNCS(getcwd fchown chmod fchmod mknod mknod64)
1011 AC_CHECK_FUNCS(strtol)
1012 AC_CHECK_FUNCS(fstat strchr chflags)
1013 AC_CHECK_FUNCS(getrlimit fsync fdatasync setpgid)
1014 AC_CHECK_FUNCS(setsid glob strpbrk crypt16 getauthuid)
1015 AC_CHECK_FUNCS(sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1016 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf)
1017 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf stat64 fstat64)
1018 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64)
1019 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam)
1020 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1021 AC_CHECK_FUNCS(getpwent_r)
1022 AC_CHECK_FUNCS(getdents64)
1023 AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl)
1024 AC_CHECK_FUNCS(syslog vsyslog timegm)
1025 AC_CHECK_FUNCS(setlocale nl_langinfo)
1026 AC_CHECK_FUNCS(nanosleep)
1027 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1028 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1029 AC_CHECK_HEADERS(sys/mman.h)
1030 # setbuffer, shmget, shm_open are needed for smbtorture
1031 AC_CHECK_FUNCS(shmget shm_open)
1032 AC_CHECK_FUNCS(gettext dgettext)
1034 # Find a method of generating a stack trace
1035 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1036 AC_CHECK_FUNCS(backtrace_symbols)
1037 AC_CHECK_LIB(exc, trace_back_stack)
1039 printf "%s" "checking for GPFS GPL libs... "
1041 LIBS="$LIBS -lgpfs_gpl"
1042 AC_TRY_LINK([#include <gpfs_gpl.h>],
1043 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1044 samba_cv_HAVE_GPFS=yes,
1045 samba_cv_HAVE_GPFS=no)
1046 echo $samba_cv_HAVE_GPFS
1047 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1048 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1049 default_shared_modules="$default_shared_modules vfs_gpfs"
1053 # Note that all the libunwind symbols in the API are defined to internal
1054 # platform-specific version, so we must include libunwind.h before checking
1056 AC_MSG_CHECKING([for libunwind])
1059 UNWIND_ARCH="unknown"
1060 if test x"$UNAME_I" != x"unknown"; then
1061 UNWIND_ARCH="$UNAME_I"
1062 elif test x"$UNAME_M" != x"unknown"; then
1063 UNWIND_ARCH="$UNAME_M"
1064 elif test x"$UNAME_P" != x"unknown"; then
1065 UNWIND_ARCH="$UNAME_P"
1068 case "$UNWIND_ARCH" in
1070 # This probably won't link without
1071 # the platform-specific libunwind.
1072 LIBS="$LIBS -lunwind"
1075 # Add the platform-specific libunwind module.
1076 LIBS="$LIBS -lunwind -lunwind-x86"
1079 # Add the platform-specific libunwind module.
1080 # based on uname -i, uname -m or uname -p
1081 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1087 #ifdef HAVE_LIBUNWIND_H
1088 #include <libunwind.h>
1092 unw_context_t ctx; unw_cursor_t cur;
1093 char buf[256]; unw_word_t off;
1094 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1095 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1099 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1101 # If we have libunwind, test whether we also have libunwind-ptrace
1102 # which would let us unwind arbitrary processes.
1104 AC_CHECK_HEADERS(libunwind-ptrace.h)
1105 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1107 LIBUNWIND_PTRACE="-lunwind-ptrace";
1108 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1109 [Whether libunwind-ptrace.a is available.])
1111 [ LIBUNWIND_PTRACE="" ])
1120 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1121 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1122 AC_CHECK_HEADERS(sys/ptrace.h)
1123 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1126 #if HAVE_SYS_TYPES_H
1127 #include <sys/types.h>
1129 #if HAVE_SYS_PTRACE_H
1130 #include <sys/ptrace.h>
1134 int main(int argc, const char ** argv)
1136 pid_t me = (pid_t)-1;
1137 ptrace(PTRACE_ATTACH, me, 0, 0);
1138 ptrace(PTRACE_DETACH, me, 0, 0);
1144 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1145 [Whether the Linux ptrace(2) interface is available.])
1153 AC_SUBST(LIBUNWIND_PTRACE)
1155 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1156 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1157 AC_CHECK_FUNCS(__getcwd _getcwd)
1158 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1159 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1160 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1161 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1162 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1163 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1164 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1165 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1166 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1167 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1168 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1169 AC_CHECK_FUNCS(prctl)
1172 #ifdef HAVE_SYS_PRCTL_H
1173 #include <sys/prctl.h>
1176 [int i; i = prtcl(0); ],
1177 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1184 # glibc <= 2.3.2 has a broken getgrouplist
1187 #include <sys/utsname.h>
1189 /* glibc up to 2.3 has a broken getgrouplist */
1190 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1191 int libc_major = __GLIBC__;
1192 int libc_minor = __GLIBC_MINOR__;
1196 if ((libc_major == 2) && (libc_minor <= 3))
1201 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1202 if test x"$linux_getgrouplist_ok" = x"yes"; then
1203 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1207 AC_CHECK_FUNCS(getgrouplist)
1212 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1215 if test x$ac_cv_func_stat64 = xno ; then
1216 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1218 #if defined(HAVE_UNISTD_H)
1221 #include <sys/stat.h>
1222 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1223 AC_MSG_RESULT([$ac_cv_func_stat64])
1224 if test x$ac_cv_func_stat64 = xyes ; then
1225 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1229 if test x$ac_cv_func_lstat64 = xno ; then
1230 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1232 #if defined(HAVE_UNISTD_H)
1235 #include <sys/stat.h>
1236 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1237 AC_MSG_RESULT([$ac_cv_func_lstat64])
1238 if test x$ac_cv_func_lstat64 = xyes ; then
1239 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1243 if test x$ac_cv_func_fstat64 = xno ; then
1244 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1246 #if defined(HAVE_UNISTD_H)
1249 #include <sys/stat.h>
1250 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1251 AC_MSG_RESULT([$ac_cv_func_fstat64])
1252 if test x$ac_cv_func_fstat64 = xyes ; then
1253 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1257 #################################################
1258 # Check whether struct stat has timestamps with sub-second resolution.
1259 # At least IRIX and Solaris have these.
1262 # all of st_mtim, st_atim and st_ctim exist
1263 # all of the members are in fact of type struct timespec
1265 # There is some conflicting standards weirdness about whether we should use
1266 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1267 # prefer struct timespec.
1269 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_cv_stat_hires,
1273 #if TIME_WITH_SYS_TIME
1274 # include <sys/time.h>
1277 # if HAVE_SYS_TIME_H
1278 # include <sys/time.h>
1283 #ifdef HAVE_SYS_STAT_H
1284 #include <sys/stat.h>
1289 struct stat s = {0};
1290 t.tv_sec = s.st_mtim.tv_sec;
1291 t.tv_nsec = s.st_mtim.tv_nsec;
1292 t.tv_sec = s.st_ctim.tv_sec;
1293 t.tv_nsec = s.st_ctim.tv_nsec;
1294 t.tv_sec = s.st_atim.tv_sec;
1295 t.tv_nsec = s.st_atim.tv_nsec;
1297 samba_cv_stat_hires=yes, samba_cv_stat_hires=no)
1300 if test x"$samba_cv_stat_hires" = x"yes" ; then
1301 AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1302 AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1303 AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1304 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1305 [whether struct stat has sub-second timestamps])
1308 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_cv_stat_hires_notimespec,
1312 #if TIME_WITH_SYS_TIME
1313 # include <sys/time.h>
1316 # if HAVE_SYS_TIME_H
1317 # include <sys/time.h>
1322 #ifdef HAVE_SYS_STAT_H
1323 #include <sys/stat.h>
1328 struct stat s = {0};
1329 t.tv_sec = s.st_mtime;
1330 t.tv_nsec = s.st_mtimensec;
1331 t.tv_sec = s.st_ctime;
1332 t.tv_nsec = s.st_ctimensec;
1333 t.tv_sec = s.st_atime;
1334 t.tv_nsec = s.st_atimensec;
1336 samba_cv_stat_hires=yes, samba_cv_stat_hires=no)
1339 if test x"$samba_cv_stat_hires_notimespec" = x"yes" ; then
1340 AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1341 AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1342 AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1343 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1344 [whether struct stat has sub-second timestamps without struct timespec])
1347 AC_CACHE_CHECK([whether struct stat has st_birthtimespec], samba_cv_stat_st_birthtimespec,
1351 #if TIME_WITH_SYS_TIME
1352 # include <sys/time.h>
1355 # if HAVE_SYS_TIME_H
1356 # include <sys/time.h>
1361 #ifdef HAVE_SYS_STAT_H
1362 #include <sys/stat.h>
1367 struct stat s = {0};
1368 t = s.st_birthtimespec;
1370 samba_cv_stat_st_birthtimespec=yes, samba_cv_stat_birthtimespec=no)
1373 if test x"$samba_cv_stat_st_birthtimespec" = x"yes" ; then
1374 AC_DEFINE(HAVE_STAT_ST_BIRTHTIMESPEC, 1, [whether struct stat contains st_birthtimespec])
1377 AC_CACHE_CHECK([whether struct stat has st_birthtimensec], samba_cv_stat_st_birthtimensec,
1381 #if TIME_WITH_SYS_TIME
1382 # include <sys/time.h>
1385 # if HAVE_SYS_TIME_H
1386 # include <sys/time.h>
1391 #ifdef HAVE_SYS_STAT_H
1392 #include <sys/stat.h>
1397 struct stat s = {0};
1398 t.tv_nsec = s.st_birthtimensec;
1400 samba_cv_stat_st_birthtimensec=yes, samba_cv_stat_birthtimensec=no)
1403 if test x"$samba_cv_stat_st_birthtimensec" = x"yes" ; then
1404 AC_DEFINE(HAVE_STAT_ST_BIRTHTIMENSEC, 1, [whether struct stat contains st_birthtimensec])
1407 AC_CACHE_CHECK([whether struct stat has st_birthtime], samba_cv_stat_st_birthtime,
1411 #if TIME_WITH_SYS_TIME
1412 # include <sys/time.h>
1415 # if HAVE_SYS_TIME_H
1416 # include <sys/time.h>
1421 #ifdef HAVE_SYS_STAT_H
1422 #include <sys/stat.h>
1427 struct stat s = {0};
1430 samba_cv_stat_st_birthtime=yes, samba_cv_stat_birthtime=no)
1433 if test x"$samba_cv_stat_st_birthtime" = x"yes" ; then
1434 AC_DEFINE(HAVE_STAT_ST_BIRTHTIME, 1, [whether struct stat contains st_birthtime])
1437 AC_CACHE_CHECK([whether there is DOS flags support in the stat struct], samba_cv_stat_dos_flags,
1440 [#include <sys/stat.h>],
1442 int a = UF_DOS_ARCHIVE;
1443 int h = UF_DOS_HIDDEN;
1445 int s = UF_DOS_SYSTEM;
1446 int i = UF_DOS_NOINDEX;
1447 int f = UF_DOS_FLAGS;
1449 samba_cv_stat_dos_flags=yes, samba_cv_stat_dos_flags=no)
1452 if test x"$samba_cv_stat_dos_flags" = x"yes" ; then
1453 AC_DEFINE(HAVE_STAT_DOS_FLAGS, 1, [whether there is DOS flags support in the stat struct])
1456 #####################################
1457 # needed for SRV lookups
1458 AC_CHECK_LIB(resolv, dn_expand)
1459 AC_CHECK_LIB(resolv, _dn_expand)
1460 AC_CHECK_LIB(resolv, __dn_expand)
1463 # Check for the functions putprpwnam, set_auth_parameters,
1464 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1465 # Needed for OSF1 and HPUX.
1468 AC_LIBTESTFUNC(security, putprpwnam)
1469 AC_LIBTESTFUNC(sec, putprpwnam)
1471 AC_LIBTESTFUNC(security, set_auth_parameters)
1472 AC_LIBTESTFUNC(sec, set_auth_parameters)
1474 # UnixWare 7.x has its getspnam in -lgen
1475 AC_LIBTESTFUNC(gen, getspnam)
1477 AC_LIBTESTFUNC(security, getspnam)
1478 AC_LIBTESTFUNC(sec, getspnam)
1480 AC_LIBTESTFUNC(security, bigcrypt)
1481 AC_LIBTESTFUNC(sec, bigcrypt)
1483 AC_LIBTESTFUNC(security, getprpwnam)
1484 AC_LIBTESTFUNC(sec, getprpwnam)
1486 AC_CHECK_FUNCS(strsignal)
1488 ############################################
1489 # Check if we have libattr
1492 AC_SEARCH_LIBS(getproplist, [proplist])
1493 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1494 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1495 AC_CHECK_FUNCS(sizeof_proplist_entry)
1498 AC_SEARCH_LIBS(getxattr, [attr])
1499 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1500 AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1501 AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1502 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1503 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1504 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1505 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1509 ########################################################
1510 # Check if attropen() is present if this is Solaris
1513 AC_CHECK_FUNCS(attropen)
1517 ########################################################
1518 # Do xattr functions take additional options like on Darwin?
1519 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1520 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1522 LIBS="$LIBS $ACL_LIBS"
1524 #include <sys/types.h>
1525 #if HAVE_ATTR_XATTR_H
1526 #include <attr/xattr.h>
1527 #elif HAVE_SYS_XATTR_H
1528 #include <sys/xattr.h>
1531 getxattr(0, 0, 0, 0, 0, 0);
1533 [smb_attr_cv_xattr_add_opt=yes],
1534 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1536 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1537 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1541 # Check if we have extattr
1543 *freebsd4* | *dragonfly* )
1544 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1547 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1548 AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1549 AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1550 AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1560 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1562 if test "x$enable_pie" != xno
1564 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1566 cat > conftest.c <<EOF
1568 main () { return 0;}
1570 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1578 if test x"${samba_cv_fpie}" = x"yes"
1587 AC_ARG_ENABLE(relro, [AS_HELP_STRING([--enable-relro], [Turn on Relocations Read-Only (relro) support if available (default=yes)])])
1589 if test "x$enable_relro" != xno
1591 AC_CACHE_CHECK([for -Wl,-z,relro], samba_cv_relro,
1593 cat > conftest.c <<EOF
1595 main () { return 0;}
1597 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-z,relro -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1605 if test x"${samba_cv_relro}" = x"yes"
1607 RELRO_LDFLAGS="-Wl,-z,relro"
1615 # Assume non-shared by default and override below
1618 # these are the defaults, good for lots of systems
1623 SHLD="\${CC} \${CFLAGS}"
1624 PICFLAG="${PIE_CFLAGS}"
1628 # this bit needs to be modified for each OS that supports share libs
1629 # You need to specify how to create a shared library and
1630 # how to compile C code to produce PIC object files
1632 AC_MSG_CHECKING([ability to build shared libraries])
1634 # and these are for particular systems
1636 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux])
1638 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1639 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1641 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1643 DYNEXP="-Wl,--export-dynamic"
1645 SONAMEFLAG="-Wl,-soname="
1646 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1648 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1652 if test "${GCC}" = "yes"; then
1654 SONAMEFLAG="-Wl,-soname="
1655 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1660 ## ${CFLAGS} added for building 64-bit shared
1661 ## libs using Sun's Compiler
1662 LDSHFLAGS="-G \${CFLAGS}"
1664 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1665 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1667 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1670 SONAMEFLAG="-Wl,-h,"
1671 PICFLAG="-KPIC" # Is this correct for SunOS
1672 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1673 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1675 *netbsd* | *freebsd* | *dragonfly* )
1678 DYNEXP="-Wl,--export-dynamic"
1679 SONAMEFLAG="-Wl,-soname,"
1680 PICFLAG="-fPIC -DPIC"
1681 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1682 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1684 *openbsd*) BLDSHARED="true"
1686 DYNEXP="-Wl,-Bdynamic"
1687 SONAMEFLAG="-Wl,-soname,"
1689 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1690 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1692 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1694 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1698 LDSHFLAGS="-set_version sgi1.0 -shared"
1699 SONAMEFLAG="-soname "
1701 if test "${GCC}" = "yes"; then
1706 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1708 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1710 # use expfull to export underscored symbols
1711 # add rtl to remove /lib/crt0.o warning
1712 LDSHFLAGS="-Wl,-G,-bexpfull,-bbigtoc,-brtl"
1713 DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1715 # as AIX code is always position independent...
1716 # .po will just create compile warnings, use po.o:
1717 if test "${GCC}" != "yes"; then
1718 ## for funky AIX compiler using strncpy()
1719 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1722 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1723 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1724 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1726 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1727 # Use special PIC flags for the native HP-UX compiler.
1730 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1731 SONAMEFLAG="-Wl,+h "
1733 if test "${GCC}" = "yes"; then
1736 PICFLAG="+z +ESnolit"
1738 if test "$host_cpu" = "ia64"; then
1741 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1744 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1746 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1747 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1749 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1750 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1752 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1755 SONAMEFLAG="-Wl,-soname,"
1757 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1758 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1760 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1761 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1763 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1766 SONAMEFLAG="-Wl,-soname,"
1768 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1770 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1771 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1773 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1774 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1776 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1778 *-univel-*) if [ test "$GCC" != yes ]; then
1779 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1784 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1786 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1789 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1790 if [ test "$GCC" != yes ]; then
1791 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1794 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1796 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1801 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1803 LDSHFLAGS="-dynamiclib -flat_namespace -undefined suppress"
1804 CFLAGS="$CFLAGS -fno-common"
1807 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1809 # Since gcc doesn't fail on unrecognised options, the
1810 # PIE test incorrectly succeeds. Darwin gcc does not
1811 # actually support the PIE stuff.
1814 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1818 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1822 if test "$enable_shared" != "yes"; then
1826 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1827 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1830 if test x"$BLDSHARED" = x"true" ; then
1831 LDFLAGS="$LDFLAGS -L./bin"
1834 AC_MSG_RESULT($BLDSHARED)
1836 AC_MSG_CHECKING([LDFLAGS])
1837 AC_MSG_RESULT([$LDFLAGS])
1838 AC_MSG_CHECKING([DYNEXP])
1839 AC_MSG_RESULT([$DYNEXP])
1841 #######################################################
1842 # test whether building a shared library actually works
1843 if test $BLDSHARED = true; then
1845 AC_MSG_CHECKING([SHLD])
1846 AC_MSG_RESULT([$SHLD])
1847 AC_MSG_CHECKING([LDSHFLAGS])
1848 AC_MSG_RESULT([$LDSHFLAGS])
1850 AC_MSG_CHECKING([SHLIBEXT])
1851 AC_MSG_RESULT([$SHLIBEXT])
1852 AC_MSG_CHECKING([SONAMEFLAG])
1853 AC_MSG_RESULT([$SONAMEFLAG])
1855 AC_MSG_CHECKING([PICFLAG])
1856 AC_MSG_RESULT([$PICFLAG])
1858 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1859 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1861 AC_CACHE_CHECK([whether building shared libraries actually works],
1862 [ac_cv_shlib_works],[
1863 # try building a trivial shared library
1864 ac_cv_shlib_works=no
1865 # The $SHLD and $LDSHFLAGS variables may contain references to other
1866 # variables so they need to be eval'ed.
1867 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1868 shlib.o ${srcdir-.}/tests/shlib.c && \
1869 `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1870 shlib.o && ac_cv_shlib_works=yes
1871 rm -f "shlib.$SHLIBEXT" shlib.o
1874 if test $ac_cv_shlib_works = no; then
1879 if test x"$BLDSHARED" != x"true"; then
1880 LDSHFLAGS="shared-libraries-disabled"
1881 SONAMEFLAG="shared-libraries-disabled"
1882 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1883 SHLD="shared-libraries-disabled"
1884 PICFLAG="${PIE_CFLAGS}"
1885 SHLIBEXT="shared_libraries_disabled"
1888 AC_MSG_CHECKING([used PICFLAG])
1889 AC_MSG_RESULT([$PICFLAG])
1891 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1893 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
1897 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1898 AC_TRY_RUN([#include <stdio.h>
1899 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1900 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1901 if test x"$samba_cv_have_longlong" = x"yes"; then
1902 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1903 AC_CHECK_TYPE(intptr_t, unsigned long long)
1905 AC_CHECK_TYPE(intptr_t, unsigned long)
1909 # Check if the compiler supports the LL prefix on long long integers.
1912 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1913 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1914 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1915 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1916 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1920 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
1921 AC_TRY_RUN([#include <time.h>
1922 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
1923 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
1924 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
1925 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
1928 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1929 AC_TRY_RUN([#include <stdio.h>
1930 #include <sys/stat.h>
1931 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1932 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1933 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1934 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1937 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1939 #if defined(HAVE_UNISTD_H)
1943 #include <sys/stat.h>
1944 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1945 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1946 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1947 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1950 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1952 #if defined(HAVE_UNISTD_H)
1956 #include <sys/stat.h>
1957 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1958 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1959 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1960 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1963 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1965 #if defined(HAVE_UNISTD_H)
1969 #include <sys/stat.h>
1970 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1971 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1972 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1973 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1976 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1978 #if defined(HAVE_UNISTD_H)
1982 #include <sys/stat.h>
1983 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
1984 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
1985 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
1986 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
1989 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
1991 #if defined(HAVE_UNISTD_H)
1995 #include <sys/stat.h>
1996 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1997 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
1998 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
1999 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2002 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2004 #if defined(HAVE_UNISTD_H)
2007 #include <sys/types.h>
2008 #include <dirent.h>],
2010 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2011 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2012 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2015 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2017 #if defined(HAVE_UNISTD_H)
2020 #include <sys/types.h>
2021 #include <dirent.h>],
2022 [struct dirent64 de;],
2023 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2024 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2025 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2028 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2030 #if defined(HAVE_UNISTD_H)
2033 #include <sys/types.h>
2034 main() { dev_t dev; int i = major(dev); return 0; }],
2035 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2036 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2037 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2040 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2042 #if defined(HAVE_UNISTD_H)
2045 #include <sys/types.h>
2046 main() { dev_t dev; int i = minor(dev); return 0; }],
2047 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2048 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2049 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2052 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2054 #if defined(HAVE_UNISTD_H)
2057 #include <sys/types.h>
2058 main() { dev_t dev = makedev(1,2); return 0; }],
2059 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2060 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2061 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2064 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2065 AC_TRY_RUN([#include <stdio.h>
2066 main() { char c; c=250; exit((c > 0)?0:1); }],
2067 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2068 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2069 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2072 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2073 AC_TRY_COMPILE([#include <sys/types.h>
2075 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2076 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2077 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2078 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2081 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2082 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2083 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2084 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2085 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2088 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2090 #include <sys/time.h>
2091 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2092 samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2093 samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2094 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2095 AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2098 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2100 # On some systems (eg. Linux) librt can pull in libpthread. We
2101 # don't want this to happen because libpthreads changes signal delivery
2102 # semantics in ways we are not prepared for. This breaks Linux oplocks
2103 # which rely on signals.
2105 AC_LIBTESTFUNC(rt, clock_gettime,
2107 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2108 [Whether clock_gettime is available])
2109 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2110 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2111 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2116 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2117 AC_TRY_RUN([#include <sys/types.h>
2119 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2120 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2121 di->d_name[0] == 0) exit(0); exit(1);} ],
2122 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2123 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2124 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2127 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2128 AC_TRY_COMPILE([#include <sys/types.h>
2129 #include <utime.h>],
2130 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2131 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2132 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2133 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2137 # Check utmp details, but only if our OS offers utmp.h
2138 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2139 dnl utmp and utmpx come in many flavours
2140 dnl We need to check for many of them
2141 dnl But we don't need to do each and every one, because our code uses
2142 dnl mostly just the utmp (not utmpx) fields.
2144 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2146 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2147 AC_TRY_COMPILE([#include <sys/types.h>
2149 [struct utmp ut; ut.ut_name[0] = 'a';],
2150 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2151 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2152 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2155 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2156 AC_TRY_COMPILE([#include <sys/types.h>
2158 [struct utmp ut; ut.ut_user[0] = 'a';],
2159 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2160 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2161 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2164 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2165 AC_TRY_COMPILE([#include <sys/types.h>
2167 [struct utmp ut; ut.ut_id[0] = 'a';],
2168 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2169 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2170 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2173 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2174 AC_TRY_COMPILE([#include <sys/types.h>
2176 [struct utmp ut; ut.ut_host[0] = 'a';],
2177 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2178 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2179 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2182 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2183 AC_TRY_COMPILE([#include <sys/types.h>
2185 [struct utmp ut; time_t t; ut.ut_time = t;],
2186 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2187 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2188 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2191 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2192 AC_TRY_COMPILE([#include <sys/types.h>
2194 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2195 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2196 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2197 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2200 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2201 AC_TRY_COMPILE([#include <sys/types.h>
2203 [struct utmp ut; ut.ut_type = 0;],
2204 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2205 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2206 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2209 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2210 AC_TRY_COMPILE([#include <sys/types.h>
2212 [struct utmp ut; ut.ut_pid = 0;],
2213 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2214 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2215 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2218 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2219 AC_TRY_COMPILE([#include <sys/types.h>
2221 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2222 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2223 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2224 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2227 dnl Look for the IPv6 varient by preference. Many systems have both.
2228 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2229 AC_TRY_COMPILE([#include <sys/types.h>
2231 [struct utmp ut; ut.ut_addr_v6[0] = 0;],
2232 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2233 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2234 AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2237 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2238 AC_TRY_COMPILE([#include <sys/types.h>
2240 [struct utmp ut; ut.ut_addr = 0;],
2241 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2242 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2243 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2246 if test x$ac_cv_func_pututline = xyes ; then
2247 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2248 AC_TRY_COMPILE([#include <sys/types.h>
2250 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2251 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2252 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2253 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2257 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2258 AC_TRY_COMPILE([#include <sys/types.h>
2259 #include <utmpx.h>],
2260 [struct utmpx ux; ux.ut_syslen = 0;],
2261 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2262 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2263 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2270 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2271 AC_ARG_WITH(libiconv,
2272 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2274 if test "$withval" = "no" ; then
2275 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2277 if test "$withval" != "yes" ; then
2279 ICONV_LOOK_DIRS="$withval"
2284 for i in $ICONV_LOOK_DIRS ; do
2287 save_LDFLAGS="$LDFLAGS"
2288 save_CPPFLAGS="$CPPFLAGS"
2290 iconv_current_LIBS=""
2291 iconv_current_LDFLAGS=""
2292 iconv_current_CPPFLAGS=""
2297 # This is here to handle -withval stuff for --with-libiconv
2298 # Perhaps we should always add a -L
2299 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2301 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2302 # installation paths. This gets a little tricky since we might have iconv
2303 # in both libiconv and in libc. In this case the jm_ICONV test will always
2304 # succeed when the header is found. To counter this, make sure the
2305 # library directory is there and check the ABI directory first (which
2306 # should be harmless on other systems, but causes tons of linker warnings on
2307 # 64bit Ubuntu systems).
2308 # As the build farm doesn't seem to have any IRIX machines with iconv.h
2309 # installed, I've decided to fix the linker warnings.
2311 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2312 for l in "lib" "lib32" "lib/hpux32"; do
2313 if test -d "$i/$l" ; then
2314 LDFLAGS="$save_LDFLAGS -L$i/$l"
2316 export LDFLAGS LIBS CPPFLAGS
2317 # Try to find iconv(3)
2319 if test x"$ICONV_FOUND" = "xyes" ; then
2326 if test x"$ICONV_FOUND" = "xyes" ; then
2327 iconv_current_LDFLAGS="-L$i/$libext"
2328 iconv_current_CPPFLAGS="-I$i/include"
2330 if test x"$jm_cv_lib_iconv" != x; then
2331 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2333 # We found iconv in libc.
2334 iconv_current_LIBS=""
2339 if test x"$ICONV_FOUND" = "xyes" ; then
2341 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2342 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2343 LIBS="$save_LIBS $iconv_current_LIBS"
2344 export LDFLAGS LIBS CPPFLAGS
2346 default_dos_charset=no
2347 default_display_charset=no
2348 default_unix_charset=no
2350 # check for default dos charset name
2351 for j in CP850 IBM850 ; do
2353 default_dos_charset="$ICONV_CHARSET"
2354 if test x"$default_dos_charset" = x"$j"; then
2359 # check for default display charset name
2360 for j in ASCII 646 ; do
2362 default_display_charset="$ICONV_CHARSET"
2363 if test x"$default_display_charset" = x"$j"; then
2368 # check for default unix charset name
2369 for j in UTF-8 UTF8 ; do
2371 default_unix_charset="$ICONV_CHARSET"
2372 if test x"$default_unix_charset" = x"$j"; then
2377 if test "$default_dos_charset" != "no" -a \
2378 "$default_dos_charset" != "cross" -a \
2379 "$default_display_charset" != "no" -a \
2380 "$default_display_charset" != "cross" -a \
2381 "$default_unix_charset" != "no" -a \
2382 "$default_unix_charset" != "cross"
2384 samba_cv_HAVE_NATIVE_ICONV=yes
2386 if test "$default_dos_charset" = "cross" -o \
2387 "$default_display_charset" = "cross" -o \
2388 "$default_unix_charset" = "cross"
2390 samba_cv_HAVE_NATIVE_ICONV=cross
2392 samba_cv_HAVE_NATIVE_ICONV=no
2396 # At this point, we have a libiconv candidate. We know that
2397 # we have the right headers and libraries, but we don't know
2398 # whether it does the conversions we want. We can't test this
2399 # because we are cross-compiling. This is not necessarily a big
2400 # deal, since we can't guarantee that the results we get now will
2401 # match the results we get at runtime anyway.
2402 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2403 default_dos_charset="CP850"
2404 default_display_charset="ASCII"
2405 default_unix_charset="UTF-8"
2406 samba_cv_HAVE_NATIVE_ICONV=yes
2407 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2408 AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2411 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2413 CPPFLAGS=$save_CPPFLAGS
2414 LDFLAGS=$save_LDFLAGS
2417 if test x"$iconv_current_LIBS" != x; then
2418 LIBS="$LIBS $iconv_current_LIBS"
2421 # Add the flags we need to CPPFLAGS and LDFLAGS
2422 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2423 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2425 # Turn the #defines into string literals
2426 default_dos_charset="\"$default_dos_charset\""
2427 default_display_charset="\"$default_display_charset\""
2428 default_unix_charset="\"$default_unix_charset\""
2430 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2431 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2432 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2433 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2438 # We didn't find a working iconv, so keep going
2441 # We only need to clean these up here for the next pass through the loop
2442 CPPFLAGS=$save_CPPFLAGS
2443 LDFLAGS=$save_LDFLAGS
2445 export LDFLAGS LIBS CPPFLAGS
2450 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2451 AC_MSG_WARN([Sufficient support for iconv function was not found.
2452 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2453 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2454 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2455 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2459 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2461 #include <sys/types.h>
2464 #define F_GETLEASE 1025
2467 int fd = open("/dev/null", O_RDONLY);
2468 return fcntl(fd, F_GETLEASE, 0) == -1;
2471 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2472 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2473 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2476 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2478 #include <sys/types.h>
2482 #define F_NOTIFY 1026
2485 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2488 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2489 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2490 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2493 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2494 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h sys/inotify.h)
2495 AC_CHECK_FUNCS(inotify_init)
2496 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2498 samba_cv_HAVE_INOTIFY=yes,
2499 samba_cv_HAVE_INOTIFY=no,
2500 samba_cv_HAVE_INOTIFY=cross)
2502 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2503 AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2506 #################################################
2507 # Check if FAM notifications are available. For FAM info, see
2508 # http://oss.sgi.com/projects/fam/
2509 # http://savannah.nongnu.org/projects/fam/
2511 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2513 if test x$enable_fam != xno; then
2514 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2515 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2516 # On IRIX, libfam requires libC, but other FAM implementations
2517 # might not need it.
2518 AC_CHECK_LIB(fam, FAMOpen2,
2519 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2520 [samba_cv_HAVE_LIBFAM=no])
2522 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2524 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2525 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2526 [samba_cv_HAVE_LIBFAM=no])
2527 unset samba_fam_xtra
2531 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2532 default_shared_modules="$default_shared_modules vfs_notify_fam"
2533 AC_TRY_COMPILE([#include <fam.h>],
2534 [FAMCodes code = FAMChanged;],
2535 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2536 [Whether fam.h contains a typedef for enum FAMCodes]),
2540 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2541 AC_MSG_ERROR(FAM support requested but FAM library not available )
2545 AC_SUBST(SMB_FAM_LIBS)
2547 #################################################
2548 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2550 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2552 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2553 # Theoretically it should work with AIX JFS2 too but this needs testing
2554 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2555 default_shared_modules="$default_shared_modules vfs_tsmsm"
2558 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2560 #include <sys/types.h>
2563 #include <sys/file.h>
2565 #define LOCK_MAND 32
2566 #define LOCK_READ 64
2569 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2572 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2573 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2574 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2578 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2579 AC_TRY_COMPILE([#include <sys/types.h>
2580 #include <fcntl.h>],
2581 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2582 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2583 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2584 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2587 #################################################
2588 # Check for POSIX capability support
2590 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2591 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2594 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2597 AC_LIBTESTFUNC(cap, cap_get_proc)
2599 AC_CACHE_CHECK([for POSIX capabilities],
2600 samba_cv_HAVE_POSIX_CAPABILITIES,
2603 #include <sys/types.h>
2604 #include <sys/capability.h>
2607 cap_value_t vals[1];
2608 if (!(cap = cap_get_proc()))
2610 vals[0] = CAP_CHOWN;
2611 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2615 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2616 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2617 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2620 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2621 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2622 [Whether POSIX capabilities are available])
2630 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2631 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2634 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2635 AC_TRY_COMPILE([#include <sys/types.h>
2636 #if defined(HAVE_RPC_RPC_H)
2637 #include <rpc/rpc.h>
2640 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2641 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2642 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2645 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2646 AC_TRY_COMPILE([#include <sys/types.h>
2647 #if defined(HAVE_RPC_RPC_H)
2648 #include <rpc/rpc.h>
2651 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2652 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2653 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2656 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2657 AC_TRY_COMPILE([#include <sys/types.h>
2658 #if defined(HAVE_RPC_RPC_H)
2659 #include <rpc/rpc.h>
2662 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2663 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2664 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2667 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2668 AC_TRY_COMPILE([#include <sys/types.h>
2669 #if defined(HAVE_RPC_RPC_H)
2670 #include <rpc/rpc.h>
2673 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2674 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2675 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2679 dnl Some systems (SCO) have a problem including
2680 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2681 dnl as a #define in <prot.h> and as part of an enum
2685 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2686 AC_TRY_COMPILE([#include <sys/types.h>
2687 #ifdef HAVE_SYS_SECURITY_H
2688 #include <sys/security.h>
2690 #endif /* HAVE_SYS_SECURITY_H */
2691 #if defined(HAVE_RPC_RPC_H)
2692 #include <rpc/rpc.h>
2695 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2696 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2697 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2700 AC_MSG_CHECKING([for test routines])
2701 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2703 AC_MSG_ERROR([cant find test code. Aborting config]),
2704 AC_MSG_WARN([cannot run when cross-compiling]))
2706 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2707 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2708 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2709 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2710 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2713 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2714 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2715 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2716 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2717 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2720 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2721 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2722 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2723 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2724 AC_CHECK_FUNCS(getpagesize)
2726 ################################################
2727 # look for a method of setting the effective uid
2730 if test $seteuid = no; then
2731 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2733 #define AUTOCONF_TEST 1
2734 #define USE_SETREUID 1
2735 #include "confdefs.h"
2736 #include "${srcdir-.}/lib/util_sec.c"],
2737 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2738 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2739 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2743 # we check for setresuid second as it conflicts with AIO on Linux.
2744 # see http://samba.org/~tridge/junkcode/aio_uid.c
2745 if test $seteuid = no; then
2746 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2748 #define AUTOCONF_TEST 1
2749 #define USE_SETRESUID 1
2750 #include "confdefs.h"
2751 #include "${srcdir-.}/lib/util_sec.c"],
2752 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2753 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2754 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2758 if test $seteuid = no; then
2759 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2761 #define AUTOCONF_TEST 1
2762 #define USE_SETEUID 1
2763 #include "confdefs.h"
2764 #include "${srcdir-.}/lib/util_sec.c"],
2765 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2766 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2767 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2771 if test $seteuid = no; then
2772 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2774 #define AUTOCONF_TEST 1
2775 #define USE_SETUIDX 1
2776 #include "confdefs.h"
2777 #include "${srcdir-.}/lib/util_sec.c"],
2778 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2779 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2780 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2784 AC_CACHE_CHECK([for the Darwin initgroups system call],
2785 samba_cv_DARWIN_INITGROUPS,
2787 #include <sys/syscall.h>
2790 [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
2791 samba_cv_DARWIN_INITGROUPS=yes,
2792 samba_cv_DARWIN_INITGROUPS=no)
2795 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
2796 AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
2797 [Whether to use the Darwin-specific initgroups system call])
2800 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2801 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2802 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2803 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2804 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2807 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2808 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2809 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2810 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2811 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2816 dnl Don't check for 64 bit fcntl locking if we know that the
2817 dnl glibc2.1 broken check has succeeded.
2820 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2822 #if defined(HAVE_UNISTD_H)
2832 #ifdef HAVE_SYS_FCNTL_H
2833 #include <sys/fcntl.h>
2835 main() { struct flock64 fl64;
2836 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2842 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2844 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2845 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2849 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2850 AC_TRY_COMPILE([#include <sys/types.h>
2851 #include <sys/stat.h>
2852 #include <unistd.h>],
2853 [struct stat st; st.st_blocks = 0;],
2854 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2855 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2856 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2859 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2860 AC_TRY_COMPILE([#include <sys/types.h>
2861 #include <sys/stat.h>
2862 #include <unistd.h>],
2863 [struct stat st; st.st_blksize = 0;],
2864 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2865 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2866 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2869 AC_CACHE_CHECK([for st_flags in struct stat],
2870 samba_cv_HAVE_STAT_ST_FLAGS,
2872 AC_TRY_COMPILE([#include <sys/types.h>
2873 #include <sys/stat.h>
2874 #include <unistd.h>],
2875 [struct stat st; st.st_flags = 0;],
2876 samba_cv_HAVE_STAT_ST_FLAGS=yes,
2877 samba_cv_HAVE_STAT_ST_FLAGS=no,
2878 samba_cv_HAVE_STAT_ST_FLAGS=cross)
2881 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
2882 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
2883 [Whether the stat struct has a st_flags member])
2886 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2888 #include <sys/types.h>
2889 #include <sys/acl.h>
2890 #if defined(HAVE_RPCSVC_NIS_H)
2891 #include <rpcsvc/nis.h>
2894 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2895 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2896 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2899 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2905 void exit_on_core(int ignored) {
2911 signal(SIGSEGV, exit_on_core);
2912 newpath = realpath("/tmp", NULL);
2913 exit((newpath != NULL) ? 0 : 1);
2916 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
2917 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
2918 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
2921 #################################################
2922 # check for AFS clear-text auth support
2923 samba_cv_WITH_AFS=no
2924 AC_MSG_CHECKING(whether to use AFS clear-text auth)
2926 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
2927 [ case "$withval" in
2929 AC_MSG_RESULT($withval)
2930 samba_cv_WITH_AFS=$withval
2939 ####################################################
2940 # check for Linux-specific AFS fake-kaserver support
2941 samba_cv_WITH_FAKE_KASERVER=no
2942 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
2943 AC_ARG_WITH(fake-kaserver,
2944 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
2945 [ case "$withval" in
2947 AC_MSG_RESULT($withval)
2948 samba_cv_WITH_FAKE_KASERVER=$withval
2957 #################################################
2958 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
2959 if test x"$samba_cv_WITH_AFS" != x"no" ||
2960 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
2962 # see if this box has the afs-headers in /usr/include/afs
2963 AC_MSG_CHECKING(for /usr/include/afs)
2964 if test -d /usr/include/afs; then
2965 CFLAGS="$CFLAGS -I/usr/include/afs"
2966 CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
2974 AC_CHECK_HEADERS(afs.h afs/afs.h)
2975 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
2976 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
2977 test x"$samba_cv_WITH_AFS" = x"auto"; then
2978 AC_MSG_WARN([AFS cannot be supported without afs.h])
2980 AC_MSG_ERROR([AFS cannot be supported without afs.h])
2983 have_afs_headers=yes
2987 FAKE_KASERVER_OBJ=""
2988 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
2989 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
2990 FAKE_KASERVER_OBJ="utils/net_afs.o"
2992 AC_SUBST(FAKE_KASERVER_OBJ)
2994 #################################################
2995 # check whether to compile AFS/NT ACL mapping module
2996 samba_cv_WITH_VFS_AFSACL=no
2997 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
2998 AC_ARG_WITH(vfs-afsacl,
2999 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3000 [ case "$withval" in
3002 AC_MSG_RESULT($withval)
3003 samba_cv_WITH_VFS_AFSACL=yes
3012 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3013 default_shared_modules="$default_shared_modules vfs_afsacl"
3016 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3017 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3020 #################################################
3021 # check for the DFS clear-text auth system
3022 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3024 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3025 [ case "$withval" in
3028 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3037 ########################################################
3038 # Compile with LDAP support?
3040 with_ldap_support=auto
3041 AC_MSG_CHECKING([for LDAP support])
3044 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
3045 [ case "$withval" in
3047 with_ldap_support=$withval
3051 AC_MSG_RESULT($with_ldap_support)
3056 AC_SUBST(SMBLDAPUTIL)
3060 if test x"$with_ldap_support" != x"no"; then
3062 ##################################################################
3063 # first test for ldap.h and lber.h
3064 # (ldap.h is required for this test)
3065 AC_CHECK_HEADERS(ldap.h lber.h)
3067 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3068 if test x"$with_ldap_support" = x"yes"; then
3069 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3071 AC_MSG_WARN(ldap.h is needed for LDAP support)
3074 with_ldap_support=no
3077 ##################################################################
3078 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3079 # unsigned int in include/includes.h
3082 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3083 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3084 with_ldap_support=yes
3087 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3088 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3089 if test x"$with_ldap_support" = x"yes"; then
3090 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3092 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3094 with_ldap_support=no
3100 if test x"$with_ldap_support" != x"no"; then
3103 ##################################################################
3104 # we might need the lber lib on some systems. To avoid link errors
3105 # this test must be before the libldap test
3106 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3108 ########################################################
3109 # If ber_sockbuf_add_io() is available we can add
3110 # SASL wrapping hooks
3111 AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3113 AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3114 AC_TRY_COMPILE([#include <ldap.h>],
3115 [int val = LDAP_OPT_SOCKBUF;],
3116 samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3117 samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3119 if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3120 x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3121 AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3124 #######################################################
3125 # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3126 # ldap logging and print it out in the samba logs
3127 AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3128 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3129 [AC_TRY_COMPILE([#include <lber.h>],
3130 [int val = LBER_OPT_LOG_PRINT_FN;],
3131 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3132 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3134 if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3135 AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3136 [Support for LDAP/LBER logging interception])
3139 ########################################################
3140 # now see if we can find the ldap libs in standard paths
3141 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3143 ########################################################
3144 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3145 # Check found in pam_ldap 145.
3146 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3148 LIBS="$LIBS $LDAP_LIBS"
3149 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3153 [ldap_set_rebind_proc(0, 0, 0);],
3154 [smb_ldap_cv_ldap_set_rebind_proc=3],
3155 [smb_ldap_cv_ldap_set_rebind_proc=2]
3159 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3161 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3163 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3164 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3165 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3166 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3167 default_shared_modules="$default_shared_modules";
3168 SMBLDAP="lib/smbldap.o"
3169 SMBLDAPUTIL="lib/smbldap_util.o"
3170 with_ldap_support=yes
3171 AC_MSG_CHECKING(whether LDAP support is used)
3174 if test x"$with_ldap_support" = x"yes"; then
3175 AC_MSG_ERROR(libldap is needed for LDAP support)
3177 AC_MSG_WARN(libldap is needed for LDAP support)
3181 with_ldap_support=no
3187 #################################################
3188 # active directory support
3190 with_ads_support=auto
3191 AC_MSG_CHECKING([for Active Directory and krb5 support])
3194 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3195 [ case "$withval" in
3197 with_ads_support="$withval"
3201 AC_MSG_RESULT($with_ads_support)
3206 if test x"$with_ldap_support" != x"yes"; then
3208 if test x"$with_ads_support" = x"yes"; then
3209 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3210 elif test x"$with_ads_support" = x"auto"; then
3211 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3217 # Check to see whether there is enough LDAP functionality to be able
3218 # to build AD support.
3220 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3223 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3225 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3226 if test x"$with_ads_support" = x"yes"; then
3227 AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3228 elif test x"$with_ads_support" = x"auto"; then
3229 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3235 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3237 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3238 if test x"$with_ads_support" = x"yes"; then
3239 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3240 elif test x"$with_ads_support" = x"auto"; then
3241 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3249 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3251 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3252 if test x"$with_ads_support" = x"yes"; then
3253 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3254 elif test x"$with_ads_support" = x"auto"; then
3255 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3262 if test x"$with_ads_support" != x"no"; then
3264 # Do no harm to the values of CFLAGS and LIBS while testing for
3267 if test x$FOUND_KRB5 = x"no"; then
3268 #################################################
3269 # check for location of Kerberos 5 install
3270 AC_MSG_CHECKING(for kerberos 5 install path)
3272 [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3273 [ case "$withval" in
3275 AC_MSG_RESULT(no krb5-path given)
3282 AC_MSG_RESULT($withval)
3283 KRB5_CFLAGS="-I$withval/include"
3284 KRB5_CPPFLAGS="-I$withval/include"
3285 KRB5_LDFLAGS="-L$withval/lib"
3287 if test -x "$withval/bin/krb5-config"; then
3288 KRB5CONFIG=$withval/bin/krb5-config
3292 AC_MSG_RESULT(no krb5-path given)
3296 #################################################
3297 # check for krb5-config from recent MIT and Heimdal kerberos 5
3298 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3299 AC_MSG_CHECKING(for working krb5-config)
3300 if test -x "$KRB5CONFIG"; then
3301 ac_save_CFLAGS=$CFLAGS
3302 CFLAGS="";export CFLAGS
3303 ac_save_LDFLAGS=$LDFLAGS
3304 LDFLAGS="";export LDFLAGS
3305 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3306 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3307 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3308 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3309 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3310 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3314 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3317 if test x$FOUND_KRB5 = x"no"; then
3318 #################################################
3319 # see if this box has the SuSE location for the heimdal krb implementation
3320 AC_MSG_CHECKING(for /usr/include/heimdal)
3321 if test -d /usr/include/heimdal; then
3322 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3323 KRB5_CFLAGS="-I/usr/include/heimdal"
3324 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3325 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3329 KRB5_CFLAGS="-I/usr/include/heimdal"
3330 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3339 if test x$FOUND_KRB5 = x"no"; then
3340 #################################################
3341 # see if this box has the RedHat location for kerberos
3342 AC_MSG_CHECKING(for /usr/kerberos)
3343 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3344 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3345 KRB5_CFLAGS="-I/usr/kerberos/include"
3346 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3354 if test x$FOUND_KRB5 = x"no"; then
3355 #################################################
3356 # see if this box has the OpenBSD location for heimdal krb5
3357 AC_MSG_CHECKING(for /usr/include/kerberosV)
3358 if test -d /usr/include/kerberosV; then
3359 KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3360 KRB5_LIBS="-lcrypto"
3368 ac_save_CFLAGS=$CFLAGS
3369 ac_save_CPPFLAGS=$CPPFLAGS
3370 ac_save_LDFLAGS=$LDFLAGS
3372 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3373 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3374 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3376 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3378 # now check for krb5.h. Some systems have the libraries without the headers!
3379 # note that this check is done here to allow for different kerberos
3381 AC_CHECK_HEADERS(krb5.h)
3383 if test x"$ac_cv_header_krb5_h" = x"no"; then
3385 # Give a warning if AD support was not explicitly requested,
3386 # i.e with_ads_support = auto, otherwise die with an error.
3388 if test x"$with_ads_support" = x"yes"; then
3389 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3391 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3394 # Turn off AD support and restore CFLAGS and LIBS variables
3396 with_ads_support="no"
3398 CFLAGS=$ac_save_CFLAGS
3399 CPPFLAGS=$ac_save_CPPFLAGS
3400 LDFLAGS=$ac_save_LDFLAGS
3402 AC_CHECK_HEADERS(krb5/locate_plugin.h)
3403 if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3404 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3405 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3409 # Now we have determined whether we really want ADS support
3411 if test x"$with_ads_support" != x"no"; then
3416 # now check for gssapi headers. This is also done here to allow for
3417 # different kerberos include paths
3418 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3420 ##################################################################
3421 # we might need the k5crypto and com_err libraries on some systems
3422 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3423 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3426 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3427 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3428 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3430 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3431 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3433 ########################################################
3434 # now see if we can find the krb5 libs in standard paths
3435 # or as specified above
3436 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3437 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3439 ########################################################
3440 # now see if we can find the gssapi libs in standard paths
3441 if test x"$have_gssapi" != x"yes"; then
3442 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3445 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3446 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3447 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3448 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3449 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3450 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3451 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3452 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3453 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3454 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3455 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3456 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3457 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3458 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3459 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3460 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3461 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3462 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3463 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3464 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3465 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3466 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3467 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3468 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3469 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3470 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3471 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3472 AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3473 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3474 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3475 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3476 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3477 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3478 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3479 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3480 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3481 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3482 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3483 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3484 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3485 AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3486 AC_CHECK_FUNC_EXT(krb5_fwd_tgt_creds, $KRB5_LIBS)
3487 AC_CHECK_FUNC_EXT(krb5_auth_con_set_req_cksumtype, $KRB5_LIBS)
3489 LIBS="$KRB5_LIBS $LIBS"
3491 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3492 smb_krb5_cv_ticket_has_keyinfo,
3501 krb5_enctype enctype;
3503 enctype = ticket.enc_part.enctype;
3504 kvno = ticket.enc_part.kvno;
3506 [ smb_krb5_cv_ticket_has_keyinfo=yes ],
3507 [ smb_krb5_cv_ticket_has_keyinfo=no ])
3510 if test x"$smb_krb5_cv_ticket_has_keyinfo" = x"yes" ; then
3511 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3512 [Whether the krb5_ticket structure contains the kvno and enctype])
3515 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3516 smb_krb5_cv_creds_opt_free_context,
3522 krb5_get_init_creds_opt *opt = NULL;
3523 krb5_get_init_creds_opt_free(ctx, opt);
3525 [smb_krb5_cv_creds_opt_free_context=yes],
3526 [smb_krb5_cv_creds_opt_free_context=no]
3530 if test x"$smb_krb5_cv_creds_opt_free_context" = x"yes" ; then
3531 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3532 [Whether krb5_get_init_creds_opt_free takes a context argument])
3535 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_cv_verify_checksum, [
3538 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3539 [smb_krb5_cv_verify_checksum=7],
3540 [smb_krb5_cv_verify_checksum=6],
3543 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_cv_verify_checksum, [Number of arguments to krb5_verify_checksum])
3545 AC_CACHE_CHECK([for checksum in krb5_checksum],
3546 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3547 AC_TRY_COMPILE([#include <krb5.h>],
3548 [krb5_checksum cksum; cksum.checksum.length = 0;],
3549 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3550 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3552 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3553 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3554 [Whether the krb5_checksum struct has a checksum property])
3557 AC_CACHE_CHECK([for etype in EncryptedData],
3558 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3559 AC_TRY_COMPILE([#include <krb5.h>],
3560 [EncryptedData edata; edata.etype = 0;],
3561 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3562 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3564 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3565 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3566 [Whether the EncryptedData struct has a etype property])
3569 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3570 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3571 AC_TRY_COMPILE([#include <krb5.h>],
3572 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3573 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3574 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3576 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3577 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3578 [Whether the krb5_ap_req struct has a ticket pointer])
3581 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3582 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3583 AC_TRY_COMPILE([#include <krb5.h>],
3584 [krb5_error err; err.e_data = NULL;],
3585 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3586 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3588 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3589 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3590 [Whether the krb5_error struct has a e_data pointer])
3593 AC_CACHE_CHECK([for krb5_crypto type],
3594 samba_cv_HAVE_KRB5_CRYPTO,[
3595 AC_TRY_COMPILE([#include <krb5.h>],
3596 [krb5_crypto crypto;],
3597 samba_cv_HAVE_KRB5_CRYPTO=yes,
3598 samba_cv_HAVE_KRB5_CRYPTO=no)])
3600 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3601 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3602 [Whether the type krb5_crypto exists])
3605 AC_CACHE_CHECK([for krb5_encrypt_block type],
3606 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3607 AC_TRY_COMPILE([#include <krb5.h>],
3608 [krb5_encrypt_block block;],
3609 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3610 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3612 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3613 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3614 [Whether the type krb5_encrypt_block exists])
3617 AC_CACHE_CHECK([for addrtype in krb5_address],
3618 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3619 AC_TRY_COMPILE([#include <krb5.h>],
3620 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3621 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3622 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3624 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3625 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3626 [Whether the krb5_address struct has a addrtype property])
3629 AC_CACHE_CHECK([for addr_type in krb5_address],
3630 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3631 AC_TRY_COMPILE([#include <krb5.h>],
3632 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3633 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3634 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3636 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3637 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3638 [Whether the krb5_address struct has a addr_type property])
3641 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3642 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3643 [AC_TRY_COMPILE([#include <krb5.h>],
3644 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3645 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3647 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3648 AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3649 [Whether the krb5_ticket struct has a enc_part2 property])
3652 AC_CACHE_CHECK([for keyblock in krb5_creds],
3653 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3654 AC_TRY_COMPILE([#include <krb5.h>],
3655 [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3656 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3657 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3659 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3660 AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3661 [Whether the krb5_creds struct has a keyblock property])
3664 AC_CACHE_CHECK([for session in krb5_creds],
3665 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3666 AC_TRY_COMPILE([#include <krb5.h>],
3667 [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3668 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3669 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3671 if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3672 AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3673 [Whether the krb5_creds struct has a session property])
3676 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3677 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3678 AC_TRY_COMPILE([#include <krb5.h>],
3679 [krb5_keyblock key; key.keyvalue.data = NULL;],
3680 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3681 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3683 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3684 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3685 [Whether the krb5_keyblock struct has a keyvalue property])
3688 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3689 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3690 AC_TRY_COMPILE([#include <krb5.h>],
3691 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3692 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3693 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3694 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3695 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3696 AC_TRY_COMPILE([#include <krb5.h>],
3697 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3698 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3699 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3700 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3701 # w.r.t. arcfour and windows, so we must not enable it here
3702 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3703 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3704 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3705 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3708 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3709 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3710 AC_TRY_COMPILE([#include <krb5.h>],
3711 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3712 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3713 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3715 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3716 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3717 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3720 AC_CACHE_CHECK([for KV5M_KEYTAB],
3721 samba_cv_HAVE_KV5M_KEYTAB,[
3722 AC_TRY_COMPILE([#include <krb5.h>],
3723 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3724 samba_cv_HAVE_KV5M_KEYTAB=yes,
3725 samba_cv_HAVE_KV5M_KEYTAB=no)])
3727 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3728 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3729 [Whether the KV5M_KEYTAB option is available])
3732 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3733 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3734 AC_TRY_COMPILE([#include <krb5.h>],
3735 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3736 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3737 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3739 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3740 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3741 [Whether KRB5_KU_OTHER_CKSUM is available])
3744 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3745 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3746 AC_TRY_COMPILE([#include <krb5.h>],
3747 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3748 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3749 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3751 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3752 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3753 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3756 AC_CACHE_CHECK([for the krb5_princ_component macro],
3757 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3758 AC_TRY_LINK([#include <krb5.h>],
3759 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3760 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3761 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3763 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3764 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3765 [Whether krb5_princ_component is available])
3768 AC_CACHE_CHECK([for key in krb5_keytab_entry],
3769 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3770 AC_TRY_COMPILE([#include <krb5.h>],
3771 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3772 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3773 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3775 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3776 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3777 [Whether krb5_keytab_entry has key member])
3780 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3781 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3782 AC_TRY_COMPILE([#include <krb5.h>],
3783 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3784 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3785 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3787 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3788 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3789 [Whether krb5_keytab_entry has keyblock member])
3792 AC_CACHE_CHECK([for magic in krb5_address],
3793 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3794 AC_TRY_COMPILE([#include <krb5.h>],
3795 [krb5_address addr; addr.magic = 0;],
3796 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3797 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3799 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3800 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3801 [Whether the krb5_address struct has a magic property])
3804 AC_CACHE_CHECK([for WRFILE: keytab support],
3805 samba_cv_HAVE_WRFILE_KEYTAB,[
3810 krb5_context context;
3813 krb5_init_context(&context);
3814 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3816 samba_cv_HAVE_WRFILE_KEYTAB=yes,
3817 samba_cv_HAVE_WRFILE_KEYTAB=no)])
3819 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3820 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3821 [Whether the WRFILE:-keytab is supported])
3824 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3825 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3826 AC_TRY_COMPILE([#include <krb5.h>],
3828 krb5_context context;
3829 krb5_principal principal;
3830 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3831 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3832 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3834 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3835 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3836 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3839 AC_CACHE_CHECK([for krb5_addresses type],
3840 samba_cv_HAVE_KRB5_ADDRESSES,[
3841 AC_TRY_COMPILE([#include <krb5.h>],
3842 [krb5_addresses addr;],
3843 samba_cv_HAVE_KRB5_ADDRESSES=yes,
3844 samba_cv_HAVE_KRB5_ADDRESSES=no)])
3846 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3847 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3848 [Whether the type krb5_addresses type exists])
3851 AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3852 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3853 AC_TRY_COMPILE([#include <krb5.h>],
3855 krb5_mk_error(0,0,0);],
3856 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3857 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3859 if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3860 AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3861 [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3864 if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
3865 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
3866 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg,[
3871 krb5_context context = NULL;
3873 krb5_enctype_to_string(context, 1, &str);
3874 if (str) free (str);
3877 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3878 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=yes,
3879 smb_krb5_cv_enctype_to_string_takes_krb5_context_arg=no)])
3881 if test x"$smb_krb5_cv_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
3882 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
3883 [whether krb5_enctype_to_string takes krb5_context argument])
3886 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
3887 smb_krb5_cv_enctype_to_string_takes_size_t_arg,[
3892 krb5_enctype_to_string(1, buf, 256);
3895 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
3896 smb_krb5_cv_enctype_to_string_takes_size_t_arg=yes,
3897 smb_krb5_cv_enctype_to_string_takes_size_t_arg=no)])
3899 if test x"$smb_krb5_cv_enctype_to_string_takes_size_t_arg" = x"yes"; then
3900 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
3901 [whether krb5_enctype_to_string takes size_t argument])
3905 AC_CACHE_CHECK([for krb5_principal_get_realm],
3906 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
3907 AC_TRY_LINK([#include <krb5.h>],
3908 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
3909 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
3910 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
3912 if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
3913 AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
3914 [Whether the function krb5_principal_get_realm is defined])
3917 AC_CACHE_CHECK([for krb5_princ_realm],
3918 samba_cv_HAVE_KRB5_PRINC_REALM,[
3919 AC_TRY_LINK([#include <krb5.h>],
3920 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
3921 samba_cv_HAVE_KRB5_PRINC_REALM=yes,
3922 samba_cv_HAVE_KRB5_PRINC_REALM=no)])
3924 if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
3925 AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
3926 [Whether the macro krb5_princ_realm is defined])
3931 # Now the decisions whether we can support krb5
3933 # NOTE: all tests should be done before this block!
3936 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
3937 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
3941 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
3942 x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
3944 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
3948 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
3949 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
3951 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
3955 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
3956 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
3958 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
3962 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
3963 x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
3965 AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
3969 if test x"$smb_krb5_cv_ticket_has_keyinfo" != x"yes" ; then
3971 # We only need the following functions if we can't get the enctype
3972 # and kvno out of the ticket directly (ie. on Heimdal).
3974 if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
3976 AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
3980 if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
3982 AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
3988 if test x"$use_ads" = x"yes"; then
3989 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3990 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3991 if test x"$have_gssapi" = x"yes"; then
3992 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
3995 if test x"$with_ads_support" = x"yes"; then
3996 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
3998 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4000 AC_REMOVE_DEFINE(HAVE_KRB5_H)
4001 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4002 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4003 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4007 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4008 AC_MSG_RESULT([$use_ads])
4010 LIBS="$ac_save_LIBS"
4013 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4014 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4017 ########################################################
4018 # Compile with DNS Updates support?
4020 with_dnsupdate_support=no
4021 AC_MSG_CHECKING([whether to enable DNS Updates support])
4023 AC_ARG_WITH(dnsupdate,
4024 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default no)])],
4025 [ case "$withval" in
4027 with_dnsupdate_support=$withval
4031 AC_MSG_RESULT($with_dnsupdate_support)
4033 if test x"$with_dnsupdate_support" != x"no"; then
4035 ################################################################
4036 # first test for Active Directory support being enabled
4037 #if test x"$with_ads_support" = x"no"; then
4038 # AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4039 # with_dnsupdate_support=no
4041 ##################################################################
4042 # then test for uuid.h (necessary to generate unique DNS keynames
4043 # (uuid.h is required for this test)
4044 AC_CHECK_HEADERS(uuid/uuid.h)
4046 if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4047 if test x"$with_dnsupdate_support" = x"yes"; then
4048 AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4050 AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4052 with_dnsupdate_support=no
4056 if test x"$with_dnsupdate_support" != x"no"; then
4058 ########################################################
4059 # Now see if we can find the uuid libs in standard paths
4060 # On some systems, the uuid API is in libc, so we have to
4061 # be careful not to insert a spurious -luuid.
4064 AC_LIBTESTFUNC(uuid, uuid_generate,
4069 SMB_REMOVE_LIB(uuid)
4073 with_dnsupdate_support=yes
4074 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4077 if test x"$with_dnsupdate_support" = x"yes"; then
4078 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4080 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4082 with_dnsupdate_support=no
4086 #################################################
4087 # check for automount support
4088 AC_MSG_CHECKING(whether to use automount)
4089 AC_ARG_WITH(automount,
4090 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4091 [ case "$withval" in
4094 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4103 #################################################
4104 # check for mount- and umount.cifs support
4106 INSTALL_CIFSMOUNT=""
4107 UNINSTALL_CIFSMOUNT=""
4108 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4109 AC_ARG_WITH(cifsmount,
4110 [AS_HELP_STRING([--with-cifsmount], [Include mount.cifs and umount.cifs (Linux only) support (default=yes)])],
4111 [ case "$withval" in
4119 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4120 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4121 INSTALL_CIFSMOUNT="installcifsmount"
4122 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4125 AC_MSG_ERROR(not on a linux system!)
4130 [ case "$host_os" in
4133 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4134 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4135 INSTALL_CIFSMOUNT="installcifsmount"
4136 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4144 #################################################
4145 # check for cifs.upcall support
4146 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4148 INSTALL_CIFSUPCALL=""
4149 UNINSTALL_CIFSUPCALL=""
4150 AC_MSG_CHECKING(whether to build cifs.upcall)
4151 AC_ARG_WITH(cifsupcall,
4152 [AS_HELP_STRING([--with-cifsupcall], [Include cifs.upcall (Linux only) support (default=yes)])],
4153 [ case "$withval" in
4160 if test x"$use_ads" != x"yes"; then
4161 AC_MSG_ERROR(ADS support should be enabled for building cifs.upcall)
4162 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4163 AC_MSG_ERROR(keyutils package is required for cifs.upcall)
4166 AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4167 CIFSUPCALL_PROGS="bin/cifs.upcall"
4168 INSTALL_CIFSUPCALL="installcifsupcall"
4169 UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4173 AC_MSG_ERROR(not on a linux system!)
4178 [ case "$host_os" in
4180 if test x"$use_ads" != x"yes"; then
4181 AC_MSG_WARN(ADS support should be enabled for building cifs.upcall)
4182 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4183 AC_MSG_WARN(keyutils package is required for cifs.upcall)
4186 AC_DEFINE(WITH_CIFSUPCALL,1,[whether to build cifs.upcall])
4187 CIFSUPCALL_PROGS="bin/cifs.upcall"
4188 INSTALL_CIFSUPCALL="installcifsupcall"
4189 UNINSTALL_CIFSUPCALL="uninstallcifsupcall"
4199 #################################################
4200 # Check for a PAM clear-text auth, accounts, password
4201 # and session support. Most PAM implementations keep their
4202 # headers in /usr/include/security. Darwin keeps its in
4205 with_pam_for_crypt=no
4207 AC_MSG_CHECKING(whether to try PAM support)
4209 [AS_HELP_STRING([--with-pam], [Include PAM support (default=no)])],
4210 [ case "$withval" in
4216 AC_MSG_RESULT([$try_pam])
4219 create_pam_modules=no
4220 if test x"${try_pam}" != x"no";then
4222 create_pam_modules=yes
4224 # Most systems have PAM headers in /usr/include/security, but Darwin
4225 # has them in /usr/include/pam.
4226 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4227 if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4228 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4229 if test x"${try_pam}" = x"yes";then
4230 AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4233 create_pam_modules=no
4236 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4237 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4238 if test x"${try_pam}" = x"yes";then
4239 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4242 create_pam_modules=no
4245 AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4246 #if HAVE_SECURITY_PAM_APPL_H
4247 #include <security/pam_appl.h>
4249 #if HAVE_PAM_PAM_APPL_H
4250 #include <pam/pam_appl.h>
4253 if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4254 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4255 if test x"${try_pam}" = x"yes";then
4256 AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4258 create_pam_modules=no
4261 if test x"$use_pam" = x"yes"; then
4262 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4263 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4264 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4265 with_pam_for_crypt=yes
4267 if test x"$create_pam_modules" = x"yes"; then
4268 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4269 # this checks are optional,
4270 # we don't care about the results here
4271 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4272 AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4273 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4275 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4278 AC_MSG_CHECKING(whether to use PAM support)
4279 AC_MSG_RESULT([$use_pam])
4281 AC_MSG_CHECKING(whether to have PAM MODULES support)
4282 AC_MSG_RESULT([$create_pam_modules])
4285 #################################################
4286 # check for pam_smbpass support
4288 INSTALL_PAM_MODULES=""
4289 UNINSTALL_PAM_MODULES=""
4290 AC_MSG_CHECKING(whether to use pam_smbpass)
4291 AC_ARG_WITH(pam_smbpass,
4292 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=no)])],
4293 [ case "$withval" in
4297 # Conditions under which pam_smbpass should not be built.
4299 if test x"$BLDSHARED" != x"true"; then
4300 AC_MSG_ERROR([No support for shared modules])
4301 elif test x"$create_pam_modules" != x"yes"; then
4302 AC_MSG_ERROR([No support for PAM MODULES])
4304 PAM_MODULES="pam_smbpass"
4305 INSTALL_PAM_MODULES="installpammodules"
4306 UNINSTALL_PAM_MODULES="uninstallpammodules"
4318 ## moved after the check for -lcrypt in order to
4319 ## ensure that the necessary libraries are included
4320 ## check checking for truncated salt. Wrapped by the
4321 ## $with_pam_for_crypt variable as above --jerry
4323 if test $with_pam_for_crypt = no; then
4324 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4326 LIBS="$AUTH_LIBS $LIBS"
4327 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4328 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4329 LIBS="$crypt_LIBS"])
4330 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4331 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4335 #################################################
4336 # check for a NISPLUS_HOME support
4337 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4338 AC_ARG_WITH(nisplus-home,
4339 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4340 [ case "$withval" in
4343 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4352 #################################################
4353 # check for syslog logging
4354 AC_MSG_CHECKING(whether to use syslog logging)
4356 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4357 [ case "$withval" in
4360 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4369 #################################################
4370 # check for experimental disk-quotas support
4372 samba_cv_WITH_QUOTAS=auto
4373 samba_cv_TRY_QUOTAS=no
4374 samba_cv_RUN_QUOTA_TESTS=auto
4375 samba_cv_WITH_SYS_QUOTAS=auto
4376 samba_cv_TRY_SYS_QUOTAS=auto
4377 samba_cv_SYSQUOTA_FOUND=no
4379 AC_MSG_CHECKING(whether to try disk-quotas support)
4381 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4382 [ case "$withval" in
4385 samba_cv_WITH_QUOTAS=yes
4386 samba_cv_TRY_QUOTAS=yes
4387 samba_cv_RUN_QUOTA_TESTS=yes
4388 #set sys quotas to auto in this case
4389 samba_cv_TRY_SYS_QUOTAS=auto
4393 samba_cv_WITH_QUOTAS=auto
4394 samba_cv_TRY_QUOTAS=auto
4395 samba_cv_RUN_QUOTA_TESTS=auto
4396 #set sys quotas to auto in this case
4397 samba_cv_TRY_SYS_QUOTAS=auto
4401 samba_cv_WITH_QUOTAS=no
4402 samba_cv_TRY_QUOTAS=no
4403 samba_cv_RUN_QUOTA_TESTS=no
4406 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4409 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4412 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4413 AC_ARG_WITH(sys-quotas,
4414 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4415 [ case "$withval" in
4418 samba_cv_WITH_SYS_QUOTAS=yes
4419 samba_cv_TRY_SYS_QUOTAS=yes
4420 samba_cv_RUN_QUOTA_TESTS=yes
4424 samba_cv_WITH_SYS_QUOTAS=auto
4425 samba_cv_TRY_SYS_QUOTAS=auto
4426 samba_cv_RUN_QUOTA_TESTS=auto
4430 samba_cv_WITH_SYS_QUOTAS=no
4431 samba_cv_TRY_SYS_QUOTAS=no
4434 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4437 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4440 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4441 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4445 samba_cv_TRY_SYS_QUOTAS=yes
4446 samba_cv_RUN_QUOTA_TESTS=yes
4450 samba_cv_TRY_SYS_QUOTAS=no
4455 #############################################
4456 # only check for quota stuff if --with-quotas
4457 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4460 # on linux we didn't need to test we have builtin support
4462 samba_cv_SYSQUOTA_FOUND=yes
4463 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4464 samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4465 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4468 AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4469 samba_cv_found_xfs_header=yes
4470 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4474 # need to set this define when using static linking (BUG 1473)
4475 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4481 # some broken header files need this
4482 AC_CHECK_HEADER(asm/types.h,[
4483 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4484 AC_ADD_INCLUDE(<asm/types.h>)
4487 # For quotas on Veritas VxFS filesystems
4488 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4490 # For quotas on Linux XFS filesystems
4491 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4493 # For sys/quota.h and linux/quota.h
4494 AC_CHECK_HEADERS(sys/quota.h)
4496 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4497 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4498 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4500 #include "confdefs.h"
4501 #ifdef HAVE_SYS_TYPES_H
4502 #include <sys/types.h>
4504 #ifdef HAVE_ASM_TYPES_H
4505 #include <asm/types.h>
4507 #include <sys/quota.h>
4508 ],[int i = Q_XGETQUOTA;],
4509 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4510 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4511 samba_cv_found_xfs_header=yes
4515 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4516 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4518 #include "confdefs.h"
4519 #ifdef HAVE_SYS_QUOTA_H
4520 #include <sys/quota.h>
4524 D.dqb_fsoftlimit = 0;],
4525 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4526 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4527 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4531 # look for a working quota system
4533 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4534 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4536 #define HAVE_QUOTACTL_4A 1
4537 #define AUTOCONF_TEST 1
4538 #include "confdefs.h"
4539 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4540 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4541 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4542 samba_cv_SYSQUOTA_FOUND=yes;
4543 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4544 samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4548 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4549 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4551 #define HAVE_QUOTACTL_4B 1
4552 #define AUTOCONF_TEST 1
4553 #include "confdefs.h"
4554 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4555 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4556 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4557 echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4558 samba_cv_SYSQUOTA_FOUND=yes;
4559 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4560 samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4564 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4565 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4567 #define HAVE_QUOTACTL_3 1
4568 #define AUTOCONF_TEST 1
4569 #include "confdefs.h"
4570 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4571 samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4572 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4573 echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4574 samba_cv_SYSQUOTA_FOUND=yes;
4575 AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4576 samba_cv_sysquotas_file="lib/sysquotas_3.c"
4580 #################################################
4581 # check for mntent.h and struct mntent
4582 AC_CHECK_HEADERS(mntent.h)
4583 #################################################
4584 # check for setmntent,getmntent,endmntent
4585 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4587 #################################################
4588 # check for devnm.h and struct mntent
4589 AC_CHECK_HEADERS(devnm.h)
4590 #################################################
4592 AC_CHECK_FUNCS(devnm)
4594 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4595 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4596 # if --with-sys-quotas=yes then build it
4597 # you have can use the get/set quota command smb.conf
4599 samba_cv_SYSQUOTA_FOUND=auto
4601 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4602 # if --with-sys-quotas=yes then build it
4603 # you have can use the get/set quota command smb.conf
4605 samba_cv_TRY_SYS_QUOTAS=auto
4609 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4610 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4611 SAVE_CPPFLAGS="$CPPFLAGS"
4612 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4614 #include "confdefs.h"
4615 #define NO_PROTO_H 1
4616 #define NO_CONFIG_H 1
4617 #define HAVE_SYS_QUOTAS 1
4618 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4619 #include "${srcdir-.}/lib/sysquotas.c"
4620 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4621 CPPFLAGS="$SAVE_CPPFLAGS"
4623 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4624 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4625 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4626 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4627 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4628 samba_cv_WE_USE_SYS_QUOTAS=yes
4636 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4637 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4638 SAVE_CPPFLAGS="$CPPFLAGS"
4639 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4641 #include "confdefs.h"
4642 #define NO_PROTO_H 1
4643 #define NO_CONFIG_H 1
4644 #define HAVE_SYS_QUOTAS 1
4645 #define HAVE_XFS_QUOTAS 1
4646 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4647 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4648 CPPFLAGS="$SAVE_CPPFLAGS"
4650 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4651 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4652 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4657 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4658 SAVE_CPPFLAGS="$CPPFLAGS"
4659 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4661 #include "confdefs.h"
4662 #define NO_PROTO_H 1
4663 #define NO_CONFIG_H 1
4664 #include "${srcdir-.}/smbd/quotas.c"
4665 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4666 CPPFLAGS="$SAVE_CPPFLAGS"
4668 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4669 AC_MSG_CHECKING(whether to use the old quota support)
4670 if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4671 if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4672 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4682 ####################
4683 # End of quota check samba_cv_RUN_QUOTA_TESTS
4686 #################################################
4687 # check for experimental utmp accounting
4689 AC_MSG_CHECKING(whether to support utmp accounting)
4692 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
4693 [ case "$withval" in
4703 # utmp requires utmp.h
4704 # Note similar check earlier, when checking utmp details.
4706 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4707 utmp_no_reason=", no utmp.h on $host_os"
4711 # Display test results
4713 if test x"$WITH_UTMP" = x"yes"; then
4715 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4717 AC_MSG_RESULT(no$utmp_no_reason)
4722 UNINSTALLLIBCMD_SH=:
4725 if test $BLDSHARED = true; then
4726 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4727 UNINSTALLLIBCMD_SH="rm -f"
4729 if test $enable_static = yes; then
4730 INSTALLLIBCMD_A="\$(INSTALLCMD)"
4731 UNINSTALLLIBCMD_A="rm -f"
4734 #################################################
4735 # --disable-shared-libs
4736 # can be used to disable the internal use of shared libs altogether
4737 # (this only has an effect when building shared libs is enabled)
4742 AC_MSG_CHECKING(whether to use shared libraries internally)
4743 AC_ARG_ENABLE([shared-libs],
4744 AS_HELP_STRING([--enable-shared-libs],
4745 [Use shared libraries internally (default=yes)]),
4746 [enable_shared_libs=$enableval],
4747 [enable_shared_libs=yes])
4749 if test x"$enable_shared_libs" != x"no" ; then
4750 USESHARED=$BLDSHARED
4753 AC_MSG_RESULT([$USESHARED])
4755 if test x"$enable_shared_libs" = x"yes" -a x"$BLDSHARED" != x"true" ; then
4756 AC_MSG_WARN([--enable-shared-libs: no support for shared libraries])
4759 #################################################
4760 # --with-static-libs=LIBS:
4761 # link (internal) libs dynamically or statically?
4763 # If a subsystem is built as a library then this controls whether they are
4764 # linked into Samba targets statically or dynamically:
4766 # * If we build the shared library at all, we link dynamically by default.
4768 # * We only link statically if we don't build shared or if the library
4769 # appears in the --with-static-libs configure option.
4772 # --with-static-libs=libtalloc makes use of libtalloc.a instead
4773 # of linking the dynamic variant with -ltalloc.
4775 # NOTE: This option only affects libraries that we do not only build
4776 # but that samba also links against as libraries (as opposed to linking
4777 # the plain object files. - This has to be configured in Makefile.in.
4778 # So in particular it does not harm to give invalid or unknown names here.
4781 AC_ARG_WITH([static-libs],
4782 [AS_HELP_STRING([--with-static-libs=LIBS],
4783 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
4784 [AS_IF([test $withval],
4785 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
4786 [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
4787 eval LINK_$lib=STATIC
4793 # until we have organized other internal subsystems (as util, registry
4794 # and smbconf) into shared libraries, we CAN NOT link libnetapi
4795 # dynamically to samba programs.
4797 LINK_LIBNETAPI=STATIC
4799 LINK_LIBSMBCLIENT=STATIC
4802 # The library versions are hardcoded here
4803 # and filled into the LIBFOO_SOVER variable.
4805 # TODO: for talloc and tdb (at least), these should
4806 # be extracted from their respective source directories
4808 SMB_LIBRARY(talloc, 1)
4810 SMB_LIBRARY(netapi, 0)
4811 SMB_LIBRARY(smbclient, 0)
4812 SMB_LIBRARY(smbsharemodes, 0)
4813 SMB_LIBRARY(addns, 0, no, [undefined API])
4817 #################################################
4818 # these tests are taken from the GNU fileutils package
4819 AC_CHECKING(how to get filesystem space usage)
4822 # Test for statvfs64.
4823 if test $space = no; then
4825 AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4827 #if defined(HAVE_UNISTD_H)
4830 #include <sys/types.h>
4831 #include <sys/statvfs.h>
4834 struct statvfs64 fsd;
4835 exit (statvfs64 (".", &fsd));
4837 fu_cv_sys_stat_statvfs64=yes,
4838 fu_cv_sys_stat_statvfs64=no,
4839 fu_cv_sys_stat_statvfs64=cross)])
4840 if test $fu_cv_sys_stat_statvfs64 = yes; then
4842 AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4846 # Perform only the link test since it seems there are no variants of the
4847 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
4848 # because that got a false positive on SCO OSR5. Adding the declaration
4849 # of a `struct statvfs' causes this test to fail (as it should) on such
4850 # systems. That system is reported to work fine with STAT_STATFS4 which
4851 # is what it gets when this test fails.
4852 if test $space = no; then
4854 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4855 [AC_TRY_LINK([#include <sys/types.h>
4856 #include <sys/statvfs.h>],
4857 [struct statvfs fsd; statvfs (0, &fsd);],
4858 fu_cv_sys_stat_statvfs=yes,
4859 fu_cv_sys_stat_statvfs=no)])
4860 if test $fu_cv_sys_stat_statvfs = yes; then
4862 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4866 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4867 # This is not the case on ancient Linux systems.
4869 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4870 AC_TRY_COMPILE([#include <sys/types.h>
4871 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4872 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4873 if test x"$samba_cv_fsid_int" = x"yes"; then
4874 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4877 # fsusage.c assumes that statvfs has an f_frsize entry. Some weird
4878 # systems use f_bsize.
4879 AC_CACHE_CHECK([that statvfs.f_frsize works],samba_cv_frsize, [
4880 AC_TRY_COMPILE([#include <sys/types.h>
4881 #include <sys/statvfs.h>],[struct statvfs buf; buf.f_frsize = 0],
4882 samba_cv_frsize=yes,samba_cv_frsize=no)])
4883 if test x"$samba_cv_frsize" = x"yes"; then
4884 AC_DEFINE(HAVE_FRSIZE, 1, [Whether statvfs.f_frsize exists])
4887 if test $space = no; then
4888 # DEC Alpha running OSF/1
4889 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4890 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4892 #include <sys/param.h>
4893 #include <sys/types.h>
4894 #include <sys/mount.h>
4899 exit (statfs (".", &fsd, sizeof (struct statfs)));
4901 fu_cv_sys_stat_statfs3_osf1=yes,
4902 fu_cv_sys_stat_statfs3_osf1=no,
4903 fu_cv_sys_stat_statfs3_osf1=no)])
4904 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4905 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4907 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4911 if test $space = no; then
4913 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4914 member (AIX, 4.3BSD)])
4915 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4917 #ifdef HAVE_SYS_PARAM_H
4918 #include <sys/param.h>
4920 #ifdef HAVE_SYS_MOUNT_H
4921 #include <sys/mount.h>
4923 #ifdef HAVE_SYS_VFS_H
4924 #include <sys/vfs.h>
4930 exit (statfs (".", &fsd));
4932 fu_cv_sys_stat_statfs2_bsize=yes,
4933 fu_cv_sys_stat_statfs2_bsize=no,
4934 fu_cv_sys_stat_statfs2_bsize=no)])
4935 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4936 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4938 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4942 if test $space = no; then
4944 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4945 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4946 [AC_TRY_RUN([#include <sys/types.h>
4947 #include <sys/statfs.h>
4951 exit (statfs (".", &fsd, sizeof fsd, 0));
4953 fu_cv_sys_stat_statfs4=yes,
4954 fu_cv_sys_stat_statfs4=no,
4955 fu_cv_sys_stat_statfs4=no)])
4956 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4957 if test $fu_cv_sys_stat_statfs4 = yes; then
4959 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4963 if test $space = no; then
4965 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4966 member (4.4BSD and NetBSD)])
4967 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4968 [AC_TRY_RUN([#include <sys/types.h>
4969 #ifdef HAVE_SYS_PARAM_H
4970 #include <sys/param.h>
4972 #ifdef HAVE_SYS_MOUNT_H
4973 #include <sys/mount.h>
4979 exit (statfs (".", &fsd));
4981 fu_cv_sys_stat_statfs2_fsize=yes,
4982 fu_cv_sys_stat_statfs2_fsize=no,
4983 fu_cv_sys_stat_statfs2_fsize=no)])
4984 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4985 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4987 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4991 if test $space = no; then
4993 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4994 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4995 [AC_TRY_RUN([#include <sys/types.h>
4996 #ifdef HAVE_SYS_PARAM_H
4997 #include <sys/param.h>
4999 #ifdef HAVE_SYS_MOUNT_H
5000 #include <sys/mount.h>
5002 #ifdef HAVE_SYS_FS_TYPES_H
5003 #include <sys/fs_types.h>
5008 /* Ultrix's statfs returns 1 for success,
5009 0 for not mounted, -1 for failure. */
5010 exit (statfs (".", &fsd) != 1);
5012 fu_cv_sys_stat_fs_data=yes,
5013 fu_cv_sys_stat_fs_data=no,
5014 fu_cv_sys_stat_fs_data=no)])
5015 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5016 if test $fu_cv_sys_stat_fs_data = yes; then
5018 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5023 # As a gating factor for large file support, in order to
5024 # use <4GB files we must have the following minimal support
5026 # long long, and a 64 bit off_t or off64_t.
5027 # If we don't have all of these then disable large
5030 AC_MSG_CHECKING([if large file support can be enabled])
5032 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5033 #include <sys/types.h>
5039 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5040 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5041 AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5043 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5045 #################################################
5046 # check for cluster extensions
5048 AC_MSG_CHECKING(whether to include cluster support)
5049 AC_ARG_WITH(cluster-support,
5050 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=no)])])
5051 if test "x$with_cluster_support" = "xyes"; then
5052 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5059 #################################################
5060 # check for ACL support
5062 AC_MSG_CHECKING(whether to support ACLs)
5063 AC_ARG_WITH(acl-support,
5064 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5065 [ case "$withval" in
5067 with_acl_support="$withval"
5071 if test x"$with_acl_support" = x ; then
5072 with_acl_support="auto"
5075 AC_MSG_RESULT($with_acl_support)
5077 if test x"$with_acl_support" = x"no"; then
5078 AC_MSG_RESULT(Disabling ACL support)
5079 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5081 AC_MSG_NOTICE(checking whether ACL support is available:)
5084 AC_MSG_NOTICE(Using UnixWare ACLs)
5085 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5086 default_static_modules="$default_static_modules vfs_solarisacl"
5089 AC_MSG_NOTICE(Using solaris ACLs)
5090 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5091 ACL_LIBS="$ACL_LIBS -lsec"
5092 default_static_modules="$default_static_modules vfs_solarisacl"
5095 AC_MSG_NOTICE(Using HPUX ACLs)
5096 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5097 default_static_modules="$default_static_modules vfs_hpuxacl"
5100 AC_MSG_NOTICE(Using IRIX ACLs)
5101 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5102 default_static_modules="$default_static_modules vfs_irixacl"
5105 AC_MSG_NOTICE(Using AIX ACLs)
5106 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5107 default_static_modules="$default_static_modules vfs_aixacl"
5110 AC_MSG_NOTICE(Using Tru64 ACLs)
5111 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5112 ACL_LIBS="$ACL_LIBS -lpacl"
5113 default_static_modules="$default_static_modules vfs_tru64acl"
5116 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5117 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5120 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5123 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5126 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5128 LIBS="$LIBS $ACL_LIBS"
5130 #include <sys/types.h>
5131 #include <sys/acl.h>
5135 acl_entry_t *entry_p;
5136 return acl_get_entry(acl, entry_id, entry_p);
5138 [samba_cv_HAVE_POSIX_ACLS=yes],
5139 [samba_cv_HAVE_POSIX_ACLS=no])
5142 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5143 AC_MSG_NOTICE(Using posix ACLs)
5144 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5145 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5147 LIBS="$LIBS $ACL_LIBS"
5149 #include <sys/types.h>
5150 #include <sys/acl.h>
5152 acl_permset_t permset_d;
5154 return acl_get_perm_np(permset_d, perm);
5156 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5157 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5160 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5161 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5163 default_static_modules="$default_static_modules vfs_posixacl"
5165 AC_MSG_NOTICE(ACL support is not avaliable)
5166 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5170 fi # with_acl_support
5174 #################################################
5175 # check for AIO support
5177 AC_MSG_CHECKING(whether to support asynchronous io)
5178 AC_ARG_WITH(aio-support,
5179 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5180 [ case "$withval" in
5187 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5188 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5189 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5192 AC_TRY_LINK([#include <sys/types.h>
5194 [ struct aiocb a; return aio_read(&a);],
5195 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5197 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5200 AC_TRY_LINK([#include <sys/types.h>
5202 [ struct aiocb64 a; return aio_read64(&a);],
5203 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5205 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5206 AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5207 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5209 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5210 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5214 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5215 AC_MSG_CHECKING(for aio_read)
5216 AC_LINK_IFELSE([#include <aio.h>
5217 int main() { struct aiocb a; return aio_read(&a); }],
5218 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5219 [AC_MSG_RESULT(no)])
5221 AC_MSG_CHECKING(for aio_write)
5222 AC_LINK_IFELSE([#include <aio.h>
5223 int main() { struct aiocb a; return aio_write(&a); }],
5224 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5225 [AC_MSG_RESULT(no)])
5227 AC_MSG_CHECKING(for aio_fsync)
5228 AC_LINK_IFELSE([#include <aio.h>
5229 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5230 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5231 [AC_MSG_RESULT(no)])
5233 AC_MSG_CHECKING(for aio_return)
5234 AC_LINK_IFELSE([#include <aio.h>
5235 int main() { struct aiocb a; return aio_return(&a); }],
5236 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5237 [AC_MSG_RESULT(no)])
5239 AC_MSG_CHECKING(for aio_error)
5240 AC_LINK_IFELSE([#include <aio.h>
5241 int main() { struct aiocb a; return aio_error(&a); }],
5242 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5243 [AC_MSG_RESULT(no)])
5245 AC_MSG_CHECKING(for aio_cancel)
5246 AC_LINK_IFELSE([#include <aio.h>
5247 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5248 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5249 [AC_MSG_RESULT(no)])
5251 AC_MSG_CHECKING(for aio_suspend)
5252 AC_LINK_IFELSE([#include <aio.h>
5253 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5254 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5255 [AC_MSG_RESULT(no)])
5258 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5259 AC_MSG_CHECKING(for aio_read64)
5260 AC_LINK_IFELSE([#include <aio.h>
5261 int main() { struct aiocb a; return aio_read64(&a); }],
5262 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5263 [AC_MSG_RESULT(no)])
5265 AC_MSG_CHECKING(for aio_write64)
5266 AC_LINK_IFELSE([#include <aio.h>
5267 int main() { struct aiocb a; return aio_write64(&a); }],
5268 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5269 [AC_MSG_RESULT(no)])
5271 AC_MSG_CHECKING(for aio_fsync64)
5272 AC_LINK_IFELSE([#include <aio.h>
5273 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5274 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5275 [AC_MSG_RESULT(no)])
5277 AC_MSG_CHECKING(for aio_return64)
5278 AC_LINK_IFELSE([#include <aio.h>
5279 int main() { struct aiocb a; return aio_return64(&a); }],
5280 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5281 [AC_MSG_RESULT(no)])
5283 AC_MSG_CHECKING(for aio_error64)
5284 AC_LINK_IFELSE([#include <aio.h>
5285 int main() { struct aiocb a; return aio_error64(&a); }],
5286 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5287 [AC_MSG_RESULT(no)])
5289 AC_MSG_CHECKING(for aio_cancel64)
5290 AC_LINK_IFELSE([#include <aio.h>
5291 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5292 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5293 [AC_MSG_RESULT(no)])
5295 AC_MSG_CHECKING(for aio_suspend64)
5296 AC_LINK_IFELSE([#include <aio.h>
5297 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5298 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5299 [AC_MSG_RESULT(no)])
5306 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5309 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5313 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5314 if test x"$samba_cv_msghdr_msg_control" = x"yes" -o \
5315 x"$samba_cv_msghdr_msg_acctright" = x"yes"; then
5316 default_shared_modules="$default_shared_modules vfs_aio_fork"
5320 #################################################
5321 # check for sendfile support
5323 with_sendfile_support=yes
5324 AC_MSG_CHECKING(whether to check to support sendfile)
5325 AC_ARG_WITH(sendfile-support,
5326 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5327 [ case "$withval" in
5334 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5335 AC_TRY_LINK([#include <sys/sendfile.h>],
5340 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5342 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5344 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5345 AC_TRY_LINK([#include <sys/sendfile.h>],
5350 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5352 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5354 # Try and cope with broken Linux sendfile....
5355 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5357 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5358 #undef _FILE_OFFSET_BITS
5360 #include <sys/sendfile.h>],
5365 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5367 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5369 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5370 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5371 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5372 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5373 elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5374 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5375 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5376 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5377 elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5378 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5379 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5385 *freebsd* | *dragonfly* )
5386 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5388 #include <sys/types.h>
5390 #include <sys/socket.h>
5391 #include <sys/uio.h>],
5393 int fromfd, tofd, ret, total=0;
5394 off_t offset, nwritten;
5397 hdr.headers = &hdtrl;
5399 hdr.trailers = NULL;
5401 hdtrl.iov_base = NULL;
5403 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5405 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5407 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5408 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5409 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5410 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5417 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5419 #include <sys/socket.h>
5420 #include <sys/uio.h>],
5424 struct iovec hdtrl[2];
5428 hdtrl[0].iov_base = 0;
5429 hdtrl[0].iov_len = 0;
5431 nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5433 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5434 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5435 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5436 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5437 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5442 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5444 #include <sys/socket.h>
5445 #include <sys/uio.h>],
5449 struct iovec hdtrl[2];
5453 hdtrl[0].iov_base = 0;
5454 hdtrl[0].iov_len = 0;
5456 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5458 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5459 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5460 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5461 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5462 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5469 AC_CHECK_LIB(sendfile,sendfilev)
5470 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5472 #include <sys/sendfile.h>],
5476 struct sendfilevec vec[2];
5482 vec[0].sfv_fd = SFV_FD_SELF;
5483 vec[0].sfv_flag = 0;
5488 vec[1].sfv_flag = 0;
5491 nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5493 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5495 if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5496 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5497 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5498 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5503 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5505 #include <sys/sendfile.h>],
5509 struct sendfilevec vec[2];
5515 vec[0].sfv_fd = SFV_FD_SELF;
5516 vec[0].sfv_flag = 0;
5521 vec[1].sfv_flag = 0;
5524 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5526 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5528 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5529 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5530 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5531 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5537 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5539 #include <sys/socket.h>],
5543 struct sf_parms hdtrl;
5547 hdtrl.header_data = 0;
5548 hdtrl.header_length = 0;
5549 hdtrl.file_descriptor = fromfd;
5550 hdtrl.file_offset = 0;
5551 hdtrl.file_bytes = 0;
5552 hdtrl.trailer_data = 0;
5553 hdtrl.trailer_length = 0;
5555 nwritten = send_file(&tofd, &hdtrl, 0);
5557 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5558 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5559 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5560 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5561 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5577 ############################################
5578 # See if we have the Linux readahead syscall.
5580 AC_CACHE_CHECK([for Linux readahead],
5581 samba_cv_HAVE_LINUX_READAHEAD,[
5583 #if defined(HAVE_UNISTD_H)
5586 #include <fcntl.h>],
5587 [ssize_t err = readahead(0,0,0x80000);],
5588 samba_cv_HAVE_LINUX_READAHEAD=yes,
5589 samba_cv_HAVE_LINUX_READAHEAD=no)])
5591 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5592 AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5593 [Whether Linux readahead is available])
5596 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
5598 ############################################
5599 # See if we have the posix_fadvise syscall.
5601 AC_CACHE_CHECK([for posix_fadvise],
5602 samba_cv_HAVE_POSIX_FADVISE,[
5604 #if defined(HAVE_UNISTD_H)
5607 #include <fcntl.h>],
5608 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5609 samba_cv_HAVE_POSIX_FADVISE=yes,
5610 samba_cv_HAVE_POSIX_FADVISE=no)])
5612 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5613 AC_DEFINE(HAVE_POSIX_FADVISE,1,
5614 [Whether posix_fadvise is available])
5617 ############################################
5618 # See if we have the Linux splice syscall.
5620 AC_CACHE_CHECK([for Linux splice],
5621 samba_cv_HAVE_LINUX_SPLICE,[
5623 #if defined(HAVE_UNISTD_H)
5626 #include <fcntl.h>],
5627 [long ret = splice(0,0,1,0,400,0);],
5628 samba_cv_HAVE_LINUX_SPLICE=yes,
5629 samba_cv_HAVE_LINUX_SPLICE=no)])
5631 if test x"$samba_cv_HAVE_LINUX_SPLICE" = x"yes"; then
5632 AC_DEFINE(HAVE_LINUX_SPLICE,1,
5633 [Whether Linux splice is available])
5636 AC_HAVE_DECL(splice, [#include <fcntl.h>])
5639 #################################################
5640 # Check whether winbind is supported on this platform. If so we need to
5641 # build and install client programs, sbin programs and shared libraries
5643 AC_MSG_CHECKING(whether to build winbind)
5645 # Initially, the value of $host_os decides whether winbind is supported
5649 # Define the winbind shared library name and any specific linker flags
5650 # it needs to be built with.
5652 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5653 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5654 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5655 NSSSONAMEVERSIONSUFFIX=""
5656 WINBIND_NSS_PTHREAD=""
5660 NSSSONAMEVERSIONSUFFIX=".2"
5661 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5664 # FreeBSD winbind client is implemented as a wrapper around
5665 # the Linux version.
5666 NSSSONAMEVERSIONSUFFIX=".1"
5667 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5668 nsswitch/winbind_nss_linux.o"
5669 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5670 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5674 # NetBSD winbind client is implemented as a wrapper
5675 # around the Linux version. It needs getpwent_r() to
5676 # indicate libc's use of the correct nsdispatch API.
5678 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5679 WINBIND_NSS_EXTRA_OBJS="\
5680 nsswitch/winbind_nss_netbsd.o \
5681 nsswitch/winbind_nss_linux.o"
5682 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5683 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5686 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5690 # IRIX has differently named shared libraries
5691 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5692 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5693 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5696 # Solaris winbind client is implemented as a wrapper around
5697 # the Linux version.
5698 NSSSONAMEVERSIONSUFFIX=".1"
5699 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5700 nsswitch/winbind_nss_linux.o"
5701 WINBIND_NSS_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5702 PAM_WINBIND_EXTRA_LIBS="${LIBREPLACE_NETWORK_LIBS}"
5705 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5708 # AIX has even differently named shared libraries. No
5709 # WINS support has been implemented yet.
5710 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5711 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5712 WINBIND_NSS="nsswitch/WINBIND"
5717 winbind_no_reason=", unsupported on $host_os"
5721 # Check the setting of --with-winbind
5723 AC_ARG_WITH(winbind,
5724 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
5737 # We need unix domain sockets for winbind
5739 if test x"$HAVE_WINBIND" = x"yes"; then
5740 if test x"$libreplace_cv_HAVE_UNIXSOCKET" = x"no"; then
5741 winbind_no_reason=", no unix domain socket support on $host_os"
5746 # Display test results
5748 if test x"$HAVE_WINBIND" = x"no"; then
5753 if test x"$enable_developer" = x"yes" -a x"$LINK_LIBWBCLIENT" = x"STATIC" ; then
5754 BUILD_LIBWBCLIENT_SHARED=no
5756 BUILD_LIBWBCLIENT_SHARED=yes
5759 LIBWBCLIENT_SHARED_TARGET=bin/libwbclient.$SHLIBEXT
5760 LIBWBCLIENT_STATIC_TARGET=bin/libwbclient.a
5762 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
5763 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5764 ## Only worry about libwbclient if we have shared library support
5766 LIBWBCLIENT_SHARED=$LIBWBCLIENT_SHARED_TARGET
5767 LIBWBCLIENT=libwbclient
5768 INSTALL_LIBWBCLIENT=installlibwbclient
5769 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
5770 WINBIND_LIBS="-lwbclient"
5772 LIBWBCLIENT_STATIC=$LIBWBCLIENT_STATIC_TARGET
5775 if test x"$HAVE_WINBIND" = x"yes"; then
5777 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5779 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5780 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5781 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5782 PAM_MODULES="$PAM_MODULES pam_winbind"
5783 INSTALL_PAM_MODULES="installpammodules"
5784 UNINSTALL_PAM_MODULES="uninstallpammodules"
5787 AC_MSG_RESULT(no$winbind_no_reason)
5790 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
5791 AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
5793 AC_SUBST(WINBIND_NSS_PTHREAD)
5794 AC_SUBST(WINBIND_NSS)
5795 AC_SUBST(WINBIND_WINS_NSS)
5796 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5797 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5798 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5799 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5800 AC_SUBST(PAM_WINBIND_EXTRA_LIBS)
5802 AC_SUBST(WINBIND_KRB5_LOCATOR)
5804 # Solaris 10 does have new member in nss_XbyY_key
5805 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5806 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5807 [#include <nss_dbdefs.h>])
5809 # Solaris has some extra fields in struct passwd that need to be
5810 # initialised otherwise nscd crashes.
5812 AC_CHECK_MEMBER(struct passwd.pw_comment,
5813 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5816 AC_CHECK_MEMBER(struct passwd.pw_age,
5817 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5820 # AIX 4.3.x and 5.1 do not have as many members in
5821 # struct secmethod_table as AIX 5.2
5822 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5823 [#include <usersec.h>])
5824 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5825 [#include <usersec.h>])
5827 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5828 AC_TRY_COMPILE([#include <sys/types.h>
5829 #include <sys/socket.h>],
5832 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5834 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5835 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5836 AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5840 #################################################
5841 # Check to see if we should use the included popt
5843 AC_ARG_WITH(included-popt,
5844 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
5855 if test x"$INCLUDED_POPT" != x"yes"; then
5856 AC_CHECK_LIB(popt, poptGetContext,
5857 INCLUDED_POPT=no, INCLUDED_POPT=yes)
5860 AC_MSG_CHECKING(whether to use included popt)
5861 if test x"$INCLUDED_POPT" = x"yes"; then
5863 BUILD_POPT='$(POPT_OBJ)'
5864 POPTLIBS='$(POPT_OBJ)'
5865 FLAGS1="-I\$(srcdir)/../lib/popt"
5871 AC_SUBST(BUILD_POPT)
5875 #################################################
5876 # Check if user wants DNS service discovery support
5878 AC_ARG_ENABLE(dnssd,
5879 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=auto)])])
5881 AC_SUBST(DNSSD_LIBS)
5882 if test x"$enable_dnssd" != x"no"; then
5883 have_dnssd_support=yes
5885 AC_CHECK_HEADERS(dns_sd.h)
5886 if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
5887 have_dnssd_support=no
5890 # On Darwin the DNSSD API is in libc, but on other platforms it's
5891 # probably in -ldns_sd
5892 AC_CHECK_FUNCS(DNSServiceRegister)
5893 AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
5894 if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
5895 x"$ac_cv_lib_ext_DNSServiceRegister" != x"yes"; then
5896 have_dnssd_support=no
5899 if test x"$have_dnssd_support" = x"yes"; then
5900 AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
5901 [Whether to enable DNS service discovery support])
5903 if test x"$enable_dnssd" = x"yes"; then
5904 AC_MSG_ERROR(DNS service discovery support not available)
5910 #################################################
5911 # Check to see if we should use the included iniparser
5913 AC_ARG_WITH(included-iniparser,
5914 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
5918 INCLUDED_INIPARSER=yes
5921 INCLUDED_INIPARSER=no
5925 if test x"$INCLUDED_INIPARSER" != x"yes"; then
5926 AC_CHECK_LIB(iniparser, iniparser_load,
5927 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5930 AC_MSG_CHECKING(whether to use included iniparser)
5931 if test x"$INCLUDED_INIPARSER" = x"yes"; then
5933 BUILD_INIPARSER='$(INIPARSER_OBJ)'
5935 FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
5939 INIPARSERLIBS="-liniparser"
5941 AC_SUBST(BUILD_INIPARSER)
5942 AC_SUBST(INIPARSERLIBS)
5947 # Checks for the vfs_fileid module
5949 AC_CHECK_FUNC(getmntent)
5951 AC_CHECK_HEADERS(sys/statfs.h)
5953 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
5954 AC_CACHE_VAL(vfsfileid_cv_statfs,[
5956 #include <sys/types.h>
5957 #include <sys/statfs.h>
5961 fsid_t fsid = fsd.f_fsid;
5962 return statfs (".", &fsd);
5964 vfsfileid_cv_statfs=yes,
5965 vfsfileid_cv_statfs=no,
5966 vfsfileid_cv_statfs=cross)
5968 AC_MSG_RESULT($vfsfileid_cv_statfs)
5970 if test x"$ac_cv_func_getmntent" = x"yes" -a \
5971 x"$vfsfileid_cv_statfs" = x"yes"; then
5972 default_shared_modules="$default_shared_modules vfs_fileid"
5975 # Checks for the vfs_fileid module
5978 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5980 eval MODULE_DEFAULT_$i=STATIC
5983 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5985 dnl Fall back to static if we cannot build shared libraries
5986 eval MODULE_DEFAULT_$i=STATIC
5988 if test $BLDSHARED = true; then
5989 eval MODULE_DEFAULT_$i=SHARED
5993 dnl Always build these modules static
5994 MODULE_rpc_spoolss=STATIC
5995 MODULE_rpc_srvsvc=STATIC
5996 MODULE_idmap_tdb=STATIC
5997 MODULE_idmap_passdb=STATIC
5998 MODULE_idmap_nss=STATIC
6000 MODULE_nss_info_template=STATIC
6002 AC_ARG_WITH(static-modules,
6003 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6004 [ if test $withval; then
6005 for i in `echo $withval | sed -e 's/,/ /g'`
6007 eval MODULE_$i=STATIC
6011 AC_ARG_WITH(shared-modules,
6012 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6013 [ if test $withval; then
6014 for i in `echo $withval | sed -e 's/,/ /g'`
6016 eval MODULE_$i=SHARED
6020 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6021 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6022 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6023 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6024 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6027 SMB_MODULE(rpc_lsarpc, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6028 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6029 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6030 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6031 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6032 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
6033 SMB_MODULE(rpc_ntsvcs2, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs2.$SHLIBEXT", RPC)
6034 SMB_MODULE(rpc_netlogon, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6035 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6036 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc.$SHLIBEXT", RPC)
6037 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6038 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
6039 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6040 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6041 SMB_SUBSYSTEM(RPC,smbd/server.o)
6043 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6044 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6045 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6046 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6047 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6048 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6049 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6050 SMB_MODULE(idmap_hash, \$(IDMAP_HASH_OBJ), "bin/hash.$SHLIBEXT", IDMAP)
6051 SMB_MODULE(idmap_adex, \$(IDMAP_ADEX_OBJ), "bin/adex.$SHLIBEXT", IDMAP)
6052 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6054 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6055 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6057 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6058 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6059 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6060 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6061 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6063 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6064 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6065 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6066 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6067 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6068 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6069 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6070 SMB_MODULE(auth_netlogond, \$(AUTH_NETLOGOND_OBJ), "bin/netlogond.$SHLIBEXT", AUTH)
6071 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6073 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6074 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6075 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6076 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6077 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6078 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6079 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6080 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6081 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6082 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6083 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6084 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6085 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6086 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6087 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6088 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6089 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6090 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6091 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6092 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6093 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6094 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6095 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6096 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6097 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6098 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6099 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6100 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6101 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6102 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6103 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6104 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6105 SMB_MODULE(vfs_aio_fork, \$(VFS_AIO_FORK_OBJ), "bin/aio_fork.$SHLIBEXT", VFS)
6106 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6107 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6108 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6109 SMB_MODULE(vfs_acl_xattr, \$(VFS_ACL_XATTR_OBJ), "bin/acl_xattr.$SHLIBEXT", VFS)
6110 SMB_MODULE(vfs_acl_tdb, \$(VFS_ACL_TDB_OBJ), "bin/acl_tdb.$SHLIBEXT", VFS)
6111 SMB_MODULE(vfs_smb_traffic_analyzer, \$(VFS_SMB_TRAFFIC_ANALYZER_OBJ), "bin/smb_traffic_analyzer.$SHLIBEXT", VFS)
6113 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6115 SMB_MODULE(gpext_registry, libgpo/gpext/registry.o, "bin/registry.$SHLIBEXT", GPEXT)
6116 SMB_MODULE(gpext_scripts, libgpo/gpext/scripts.o, "bin/scripts.$SHLIBEXT", GPEXT)
6117 SMB_MODULE(gpext_security, libgpo/gpext/security.o, "bin/security.$SHLIBEXT", GPEXT)
6118 SMB_SUBSYSTEM(GPEXT, libgpo/gpext/gpext.o)
6120 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6122 #################################################
6123 # do extra things if we are running insure
6125 if test "${ac_cv_prog_CC}" = "insure"; then
6126 CPPFLAGS="$CPPFLAGS -D__INSURE__"
6129 #################################################
6130 # If run from the build farm, enable NASTY hacks
6131 #################################################
6132 AC_MSG_CHECKING(whether to enable build farm hacks)
6133 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6135 AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6140 #################################################
6141 # check for bad librt/libpthread interactions
6143 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6144 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6145 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6146 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6148 SMB_IF_RTSIGNAL_BUG(
6150 # Have RT_SIGNAL bug, need to check whether the problem will
6151 # affect anything we have configured.
6154 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6155 if test x"$rt_signal_lease_ok" = x"no" ; then
6160 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6161 if test x"$rt_signal_notify_ok" = x"no" ; then
6166 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6167 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6168 if test x"$rt_signal_aio_ok" = x"no" ; then
6173 if test x"$rt_do_error" = x"yes" ; then
6174 SMB_IS_LIBPTHREAD_LINKED(
6178 *** On this platforms, linking Samba against pthreads causes problems
6179 *** with the oplock and change notification mechanisms. You may be
6180 *** using pthreads as a side-effect of using the --with-aio-support
6181 *** or --with-profiling-data options. Please remove these and try again.
6188 *** On this platform, the oplock and change notification mechanisms do not
6189 *** appear to work. Please report this problem to samba-technical@samba.org
6190 *** and attach the config.log file from this directory.
6194 AC_MSG_ERROR(unable to use realtime signals on this platform)
6198 # no RT_SIGNAL bug, we are golden
6199 SMB_IS_LIBPTHREAD_LINKED(
6201 AC_MSG_WARN(using libpthreads - this may degrade performance)
6206 # cross compiling, I hope you know what you are doing
6212 AC_ARG_ENABLE(merged-build,
6213 [AS_HELP_STRING([--enable-merged-build], [Build Samba 4 as well])],
6214 [ enable_merged_build=$enableval ], [ enable_merged_build=auto ])
6216 m4_include(../lib/zlib/zlib.m4)
6218 if test x$enable_merged_build = xauto; then
6219 merged_build_possible=yes
6221 # Check for GNU make
6222 m4_include(../source4/build/m4/check_make.m4)
6223 AC_SAMBA_GNU_MAKE([true], [merged_build_possible=no])
6226 m4_include(../source4/build/m4/check_perl.m4)
6227 AC_SAMBA_PERL([true], [merged_build_possible=no])
6230 m4_include(../source4/build/m4/check_python.m4)
6231 AC_SAMBA_PYTHON_DEVEL([true], [merged_build_possible=no])
6233 AC_MSG_CHECKING([whether it would be possible to do a merged build])
6234 AC_MSG_RESULT([$merged_build_possible])
6236 # Enable merged build automatically if possible, when in developer mode
6237 if test "x$developer" = xyes; then
6238 enable_merged_build=$merged_build_possible
6242 if test x$enable_merged_build = xyes; then
6244 m4_include(samba4.m4)
6249 AC_ZLIB([ZLIB_OBJS=""], [
6251 for o in adler32.o compress.o crc32.o gzio.o uncompr.o \
6252 deflate.o trees.o zutil.o inflate.o infback.o \
6253 inftrees.o inffast.o
6255 ZLIB_OBJS="$ZLIB_OBJS ../lib/zlib/$o"
6257 CFLAGS="$CFLAGS -I../lib/zlib"
6260 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6261 LIB_REMOVE_USR_LIB(LDFLAGS)
6262 LIB_REMOVE_USR_LIB(LIBS)
6263 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6265 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6266 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6267 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6269 #################################################
6270 # Display summary of libraries detected
6272 AC_MSG_RESULT([Using libraries:])
6273 AC_MSG_RESULT([ LIBS = $LIBS])
6274 if test x"$with_ads_support" != x"no"; then
6275 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6277 if test x"$with_ldap_support" != x"no"; then
6278 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6280 if test x"$with_dnsupdate_support" != x"no"; then
6281 AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS])
6283 if test x"$have_dnssd_support" != x"no"; then
6284 AC_MSG_RESULT([ DNSSD_LIBS = $DNSSD_LIBS])
6286 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6288 #################################################
6289 # final configure stuff
6291 AC_MSG_CHECKING([configure summary])
6292 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6294 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6295 AC_MSG_WARN([cannot run when cross-compiling]))
6297 dnl Merge in developer cflags from now on
6298 AC_SUBST(DEVELOPER_CFLAGS)
6299 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes" -o x"$picky_developer" = x"yes"; then
6300 CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6303 # Stuff the smbd-only libraries at the end of the smbd link
6304 # path (if we have them).
6305 SMBD_LIBS="$samba_dmapi_libs"
6308 CFLAGS="${CFLAGS} \$(FLAGS)"
6310 if test x$MERGED_BUILD != x1; then
6311 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
6313 if test x"$BLDSHARED" = x"true" ; then
6314 LDFLAGS="$LDFLAGS -L./bin"
6319 script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6320 lib/netapi/examples/Makefile
6321 lib/netapi/tests/Makefile
6322 pkgconfig/smbclient.pc
6323 pkgconfig/wbclient.pc
6325 pkgconfig/smbsharemodes.pc
6326 ../examples/libsmbclient/Makefile.internal
6329 #################################################
6330 # Print very concise instructions on building/use
6331 if test "x$enable_dmalloc" = xyes
6333 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
6334 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])