1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.53 or above
5 AC_INIT(include/includes.h)
6 AC_CONFIG_HEADER(include/config.h)
8 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
9 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
11 SAMBA_VERSION_SVN_REVISION=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_SVN_REVISION' | cut -d ' ' -f3-`
12 if test -n "${SAMBA_VERSION_SVN_REVISION}";then
13 echo "BUILD REVISION: ${SAMBA_VERSION_SVN_REVISION}"
16 AC_LIBREPLACE_LOCATION_CHECKS
21 #################################################
22 # Directory handling stuff to support both the
23 # legacy SAMBA directories and FHS compliant
25 AC_PREFIX_DEFAULT(/usr/local/samba)
27 rootsbindir="\${SBINDIR}"
28 lockdir="\${VARDIR}/locks"
29 piddir="\${VARDIR}/locks"
30 test "${mandir}" || mandir="\${prefix}/man"
31 logfilebase="\${VARDIR}"
32 privatedir="\${prefix}/private"
33 test "${libdir}" || libdir="\${prefix}/lib"
34 pammodulesdir="\${LIBDIR}/security"
35 configdir="\${LIBDIR}"
36 swatdir="\${prefix}/swat"
39 [ --with-fhs Use FHS-compliant paths (default=no)],
42 lockdir="\${VARDIR}/lib/samba"
43 piddir="\${VARDIR}/run"
44 mandir="\${prefix}/share/man"
45 logfilebase="\${VARDIR}/log/samba"
46 privatedir="\${CONFIGDIR}/private"
47 libdir="\${prefix}/lib/samba"
48 configdir="${sysconfdir}/samba"
49 swatdir="\${DATADIR}/samba/swat"
53 #################################################
54 # set private directory location
55 AC_ARG_WITH(privatedir,
56 [ --with-privatedir=DIR Where to put smbpasswd ($ac_default_prefix/private)],
60 # Just in case anybody calls it without argument
62 AC_MSG_WARN([--with-privatedir called without argument - will use default])
69 #################################################
70 # set root sbin directory location
71 AC_ARG_WITH(rootsbindir,
72 [ --with-rootsbindir=DIR Which directory to use for root sbin ($ac_default_prefix/sbin)],
76 # Just in case anybody calls it without argument
78 AC_MSG_WARN([--with-rootsbindir called without argument - will use default])
81 rootsbindir="$withval"
85 #################################################
86 # set lock directory location
88 [ --with-lockdir=DIR Where to put lock files ($ac_default_prefix/var/locks)],
92 # Just in case anybody calls it without argument
94 AC_MSG_WARN([--with-lockdir called without argument - will use default])
101 #################################################
102 # set pid directory location
104 [ --with-piddir=DIR Where to put pid files ($ac_default_prefix/var/locks)],
108 # Just in case anybody calls it without argument
110 AC_MSG_WARN([--with-piddir called without argument - will use default])
117 #################################################
118 # set SWAT directory location
120 [ --with-swatdir=DIR Where to put SWAT files ($ac_default_prefix/swat)],
124 # Just in case anybody does it
126 AC_MSG_WARN([--with-swatdir called without argument - will use default])
133 #################################################
134 # set configuration directory location
135 AC_ARG_WITH(configdir,
136 [ --with-configdir=DIR Where to put configuration files ($libdir)],
140 # Just in case anybody does it
142 AC_MSG_WARN([--with-configdir called without argument - will use default])
149 #################################################
150 # set log directory location
151 AC_ARG_WITH(logfilebase,
152 [ --with-logfilebase=DIR Where to put log files ($VARDIR)],
156 # Just in case anybody does it
158 AC_MSG_WARN([--with-logfilebase called without argument - will use default])
161 logfilebase="$withval"
165 #################################################
166 # set lib directory location
168 [ --with-libdir=DIR Where to put libdir ($libdir)],
172 # Just in case anybody does it
174 AC_MSG_WARN([--with-libdir without argument - will use default])
181 #################################################
182 # set PAM modules directory location
183 AC_ARG_WITH(pammodulesdir,
184 [ --with-pammodulesdir=DIR Which directory to use for PAM modules ($ac_default_prefix/$libdir/security)],
188 # Just in case anybody calls it without argument
190 AC_MSG_WARN([--with-pammodulesdir called without argument - will use default])
193 pammodulesdir="$withval"
197 #################################################
198 # set man directory location
200 [ --with-mandir=DIR Where to put man pages ($mandir)],
204 # Just in case anybody does it
206 AC_MSG_WARN([--with-mandir without argument - will use default])
214 [ --with-cfenc=HEADERDIR Use internal CoreFoundation encoding API
215 for optimization (Mac OS X/Darwin only)],
217 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
218 # Should have been in framework $withval/CoreFoundation.framework/Headers.
220 $withval/CoreFoundation/StringEncodings.subproj \
221 $withval/StringEncodings.subproj \
222 $withval/CoreFoundation.framework/Headers \
226 if test -r $d/CFStringEncodingConverter.h; then
227 ln -sfh $d include/CoreFoundation
232 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
233 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
234 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/talloc"
235 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/tdb/include"
236 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
237 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
239 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
241 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
242 if test "x${srcdir-.}" != "x."; then
243 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
249 AC_SUBST(logfilebase)
254 AC_SUBST(rootsbindir)
255 AC_SUBST(pammodulesdir)
257 dnl Unique-to-Samba variables we'll be playing with.
258 AC_SUBST(SAMBA_CPPFLAGS)
266 AC_SUBST(PIE_LDFLAGS)
268 AC_SUBST(INSTALLLIBCMD_SH)
269 AC_SUBST(INSTALLLIBCMD_A)
270 AC_SUBST(UNINSTALLLIBCMD_SH)
271 AC_SUBST(UNINSTALLLIBCMD_A)
272 AC_SUBST(INSTALL_LIBMSRPC)
273 AC_SUBST(UNINSTALL_LIBMSRPC)
274 AC_SUBST(LIBMSRPC_SHARED)
276 AC_SUBST(INSTALL_LIBADDNS)
277 AC_SUBST(UNINSTALL_LIBADDNS)
278 AC_SUBST(LIBADDNS_SHARED)
280 AC_SUBST(INSTALL_LIBSMBCLIENT)
281 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
282 AC_SUBST(LIBSMBCLIENT_SHARED)
283 AC_SUBST(LIBSMBCLIENT)
284 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
285 AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
286 AC_SUBST(LIBSMBSHAREMODES_SHARED)
287 AC_SUBST(LIBSMBSHAREMODES)
291 AC_SUBST(PASSDB_LIBS)
296 AC_SUBST(SHLIB_PROGS)
297 AC_SUBST(PAM_MODULES)
298 AC_SUBST(INSTALL_PAM_MODULES)
299 AC_SUBST(UNINSTALL_PAM_MODULES)
301 AC_SUBST(SMBWRAP_OBJS)
302 AC_SUBST(SMBWRAP_INC)
303 AC_SUBST(EXTRA_BIN_PROGS)
304 AC_SUBST(CIFSMOUNT_PROGS)
305 AC_SUBST(INSTALL_CIFSMOUNT)
306 AC_SUBST(UNINSTALL_CIFSMOUNT)
307 AC_SUBST(EXTRA_SBIN_PROGS)
308 AC_SUBST(EXTRA_ALL_TARGETS)
309 AC_SUBST(CONFIG_LIBS)
312 ## check for --enable-debug first before checking CFLAGS before
313 ## so that we don't mix -O and -g
315 [ --enable-debug Turn on compiler debugging information (default=no)],
316 [if eval "test x$enable_debug = xyes"; then
317 CFLAGS="${CFLAGS} -g"
320 # compile with optimization and without debugging by default, but
321 # allow people to set their own preference.
322 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
323 # if it has no value. This prevent *very* large debug binaries from occurring
325 if test "x$CFLAGS" = x; then
329 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
331 AC_LIBREPLACE_CC_CHECKS
333 m4_include(lib/socket_wrapper/config.m4)
335 #################################################
336 # set prefix for 'make test'
338 AC_SUBST(selftest_prefix)
339 AC_ARG_WITH(selftest-prefix,
340 [ --with-selftest-prefix=DIR The prefix where make test will be runned ($selftest_prefix)],
343 AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
346 selftest_prefix="$withval"
351 #################################################
352 # set path of samba4's smbtorture
354 AC_SUBST(smbtorture4_path)
355 AC_ARG_WITH(smbtorture4_path,
356 [ --with-smbtorture4-path=PATH The path to a samba4 smbtorture for make test (none)],
359 AC_MSG_ERROR([--with-smbtorture4-path should take a path])
362 smbtorture4_path="$withval"
363 if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
364 AC_MSG_ERROR(['$smbtorture_path' does not exist!])
370 AC_ARG_ENABLE(developer, [ --enable-developer Turn on developer warnings and debugging (default=no)],
371 [if eval "test x$enable_developer = xyes"; then
373 CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
374 # Add -Wdeclaration-after-statement if compiler supports it
376 [that the C compiler understands -Wdeclaration-after-statement],
377 samba_cv_HAVE_Wdeclaration_after_statement, [
382 }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
383 samba_cv_HAVE_Wdeclaration_after_statement=yes,
384 samba_cv_HAVE_Wdeclaration_after_statement=no,
385 samba_cv_HAVE_Wdeclaration_after_statement=cross)
387 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
388 CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
392 AC_ARG_ENABLE(krb5developer, [ --enable-krb5developer Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
393 [if eval "test x$enable_krb5developer = xyes"; then
395 CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
398 AC_ARG_ENABLE(dmalloc, [ --enable-dmalloc Enable heap debugging [default=no]])
400 if test "x$enable_dmalloc" = xyes
402 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
403 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
404 [Define to check invariants around some common functions])
405 LIBS="$LIBS -ldmalloc"
408 #################################################
409 # check for a shared memory profiling support
410 AC_MSG_CHECKING(whether to use profiling)
411 AC_ARG_WITH(profiling-data,
412 [ --with-profiling-data Include gathering source code profile information (default=no)],
416 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
417 samba_cv_WITH_PROFILE=yes
421 samba_cv_WITH_PROFILE=no
427 dnl Checks for programs.
431 AC_PATH_PROG(PERL, perl)
433 AC_CHECK_TOOL(AR, ar)
435 dnl Check if we use GNU ld
439 dnl Certain versions of GNU ld the default is not to have the
440 dnl --allow-shlib-undefined flag defined. This causes a stackload of
441 dnl warnings when building modules.
442 if test "$ac_cv_prog_gnu_ld" = "yes"; then
443 ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
444 AC_MSG_CHECKING(GNU ld release date)
446 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'`
448 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
449 if test -n "$ac_cv_gnu_ld_date"; then
450 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
451 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
454 AC_MSG_CHECKING(GNU ld release version)
456 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
457 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
458 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
460 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
461 AC_MSG_CHECKING(GNU ld release version major)
462 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
463 AC_MSG_CHECKING(GNU ld release version minor)
464 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
465 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
466 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
471 dnl look for executable suffix
474 dnl Check if C compiler understands -c and -o at the same time
476 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
483 dnl Check if the C compiler understands -Werror
484 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
489 }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
490 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
491 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
492 Werror_FLAGS="-Werror"
494 dnl Check if the C compiler understands -w2
495 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
500 }],[-w2],[$CPPFLAGS],[$LDFLAGS],
501 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
502 if test x"$samba_cv_HAVE_w2" = x"yes"; then
507 dnl Check if the C compiler understands volatile (it should, being ANSI).
508 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
509 AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
510 samba_cv_volatile=yes,samba_cv_volatile=no)])
511 if test x"$samba_cv_volatile" = x"yes"; then
512 AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
515 ############################################
516 # check if the compiler can handle negative enum values
517 # and don't truncate the values to INT_MAX
518 # a runtime test is needed here
520 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
524 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
526 enum negative_values v1 = NEGATIVE_VALUE;
527 unsigned v2 = NEGATIVE_VALUE;
529 if (v1 != 0xFFFFFFFF) {
530 printf("%u != 0xFFFFFFFF\n", v1);
533 if (v2 != 0xFFFFFFFF) {
534 printf("%u != 0xFFFFFFFF\n", v2);
541 SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
542 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
543 AC_MSG_WARN([using --unit-enums for pidl])
544 PIDL_ARGS="$PIDL_ARGS --uint-enums"
547 dnl Figure out the flags to support named structure initializers
549 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
551 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
552 AC_MSG_CHECKING(uname -s)
553 AC_MSG_RESULT(${UNAME_S})
555 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
556 AC_MSG_CHECKING(uname -r)
557 AC_MSG_RESULT(${UNAME_R})
559 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
560 AC_MSG_CHECKING(uname -m)
561 AC_MSG_RESULT(${UNAME_M})
563 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
564 AC_MSG_CHECKING(uname -p)
565 AC_MSG_RESULT(${UNAME_P})
567 dnl Add #include for broken IRIX header files
570 #TODO add to libreplace
571 if test x"$ac_cv_prog_gcc" != x"yes" ; then
572 dnl Fix sensible defaults for MIPSPro compilers. The
573 dnl error numbers are valid for the 7.3 compilers,
574 dnl hopefully also valid for the 7.4 series.
576 dnl Bugzilla 3801. Force an error on warning 1035
577 dnl so we don't incorrectly detect stdint.h. This
578 dnl warning is emitted for #error directives.
579 CFLAGS="$CFLAGS -diag_error 1035"
580 dnl 1209: Controlling expression is constant
581 dnl 1174: Function foo declared but never referenced
582 dnl 3201: Parameter foo was never referenced
583 CFLAGS="$CFLAGS -woff 1209,1174,3201"
591 dnl Add modules that have to be built by default here
592 dnl These have to be built static:
593 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_winreg rpc_initshutdown rpc_lsa_ds rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog rpc_unixinfo auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default"
595 dnl These are preferably build shared, and static if dlopen() is not available
596 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy charset_CP850 charset_CP437 auth_script"
598 if test "x$developer" = xyes; then
599 default_static_modules="$default_static_modules rpc_rpcecho"
600 default_shared_modules="$default_shared_modules charset_weird"
604 # Config CPPFLAG settings for strange OS's that must be set
605 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
606 # case statement; its first reference must be unconditional.
609 # Try to work out if this is the native HPUX compiler that uses the -Ae flag.
612 # Defines needed for HPUX support.
613 # HPUX has bigcrypt but (sometimes?) doesn't use it for
614 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
618 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
619 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
620 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
621 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
622 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
623 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
626 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
627 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
628 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
629 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
630 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
631 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
632 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
633 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Unix 98 sources -- needed for socklen_t in getsockopt on HP/UX 11])
639 # CRAY Unicos has broken const handling
641 AC_MSG_RESULT([disabling const])
642 CPPFLAGS="$CPPFLAGS -Dconst="
646 # AIX4.x doesn't even admit to having large
647 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
650 AC_MSG_RESULT([enabling large file support])
651 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
652 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
655 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
656 # to the existance of large files..
657 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
658 # recommendations on large file support, however it makes the
659 # compile work using gcc 2.7 and 2.8, whereas using the Sun
660 # recommendation makes the compile fail on gcc2.7. JRA.
662 # Solaris uses SYSV printing. Make sure to set that here. --jerry
665 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
667 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
668 AC_MSG_RESULT([no large file support])
671 AC_MSG_RESULT([enabling large file support])
672 if test "$ac_cv_prog_gcc" = yes; then
673 ${CC-cc} -v >conftest.c 2>&1
674 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
676 case "$ac_cv_gcc_compiler_version_number" in
677 *"gcc version 2.6"*|*"gcc version 2.7"*)
678 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
679 LDFLAGS="$LDFLAGS -lthread"
680 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
683 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
684 LDFLAGS="$LDFLAGS -lthread"
685 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
686 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
690 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
691 LDFLAGS="$LDFLAGS -lthread"
692 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
693 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
699 # IRIX uses SYSV printing. Make sure to set that here
702 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
704 *freebsd*|*dragonfly*)
705 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
708 # VOS may need to have POSIX support and System V compatibility enabled.
715 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
716 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
720 *-D_SYSV*|*-D_SVID_SOURCE*)
723 CPPFLAGS="$CPPFLAGS -D_SYSV"
724 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
728 # Tests needed for SINIX large file support.
731 if test $host = mips-sni-sysv4 ; then
732 AC_MSG_CHECKING([for LFS support])
733 old_CPPFLAGS="$CPPFLAGS"
734 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
738 #if _LFS64_LARGEFILE == 1
743 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
744 CPPFLAGS="$old_CPPFLAGS"
745 if test x$SINIX_LFS_SUPPORT = xyes ; then
746 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
747 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
748 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
749 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
750 LIBS="`getconf LFS64_LIBS` $LIBS"
752 AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
756 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
759 AC_MSG_CHECKING([for LFS support])
760 old_CPPFLAGS="$CPPFLAGS"
761 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
764 #include <sys/utsname.h>
768 #if _LFS64_LARGEFILE == 1
773 /* Ensure this is glibc 2.2 or higher */
774 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
775 int libc_major = __GLIBC__;
776 int libc_minor = __GLIBC_MINOR__;
784 /* Ensure this is kernel 2.4 or higher */
787 release = strdup(uts.release);
788 major = atoi(strsep(&release, "."));
789 minor = atoi(strsep(&release, "."));
791 if (major > 2 || (major == 2 && minor > 3))
798 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
799 CPPFLAGS="$old_CPPFLAGS"
800 if test x$LINUX_LFS_SUPPORT = xyes ; then
801 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
802 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
803 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
804 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
806 AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
810 # MacOS X is the *only* system that uses compose character in utf8. This
811 # is so horribly broken....
814 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
816 # Add a system specific charset module.
817 default_shared_modules="$default_shared_modules charset_macosxfs"
821 AC_MSG_CHECKING([for LFS support])
822 old_CPPFLAGS="$CPPFLAGS"
823 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
827 #if _LFS64_LARGEFILE == 1
832 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
833 CPPFLAGS="$old_CPPFLAGS"
834 if test x$GLIBC_LFS_SUPPORT = xyes ; then
835 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
836 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
837 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
839 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
844 AC_LIBREPLACE_BROKEN_CHECKS
846 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
849 for obj in ${LIBREPLACEOBJ}; do
850 LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
852 AC_SUBST(LIBREPLACE_OBJS)
854 # add -ldl to the global LIBS
855 LIBS="${LIBS} ${LIBDL}"
857 AC_CHECK_HEADERS(aio.h arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
858 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
859 AC_CHECK_HEADERS(limits.h float.h)
860 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
861 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
862 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
863 AC_CHECK_HEADERS(sys/un.h)
864 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
865 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
866 AC_CHECK_HEADERS(sys/sysmacros.h)
867 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
868 AC_CHECK_HEADERS(langinfo.h locale.h)
869 AC_CHECK_HEADERS(xfs/libxfs.h)
871 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
877 ## These fail to compile on IRIX so just check for their presence
878 AC_CHECK_HEADERS(sys/mode.h,,,)
880 # Look for Darwin headers
881 old_CPPFLAGS="$CPPFLAGS"
882 CPPFLAGS="-Iinclude $CPPFLAGS"
883 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
884 CPPFLAGS="$old_CPPFLAGS"
886 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
887 # subdirectory of headers.
888 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
890 # check for linux on amd64 since valgrind is not quite there yet
895 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
903 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
904 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
908 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
909 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
910 if test x"$ac_cv_header_shadow_h" = x"yes"; then
911 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
915 AC_CHECK_HEADERS(shadow.h)
916 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
917 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
919 AC_CHECK_HEADERS(sys/acl.h sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
920 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
922 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
924 # For experimental utmp support (lastlog on some BSD-like systems)
925 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
927 AC_CHECK_SIZEOF(int,cross)
928 AC_CHECK_SIZEOF(long,cross)
929 AC_CHECK_SIZEOF(long long,cross)
930 AC_CHECK_SIZEOF(short,cross)
945 AC_CHECK_TYPE(ino_t,unsigned)
946 AC_CHECK_TYPE(loff_t,off_t)
947 AC_CHECK_TYPE(offset_t,loff_t)
948 AC_CHECK_TYPE(ssize_t, int)
949 AC_CHECK_TYPE(wchar_t, unsigned short)
950 AC_CHECK_TYPE(comparison_fn_t,
951 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
953 ############################################
954 # for cups support we need libcups, and a handful of header files
957 [ --enable-cups Turn on CUPS support (default=auto)])
959 if test x$enable_cups != xno; then
960 AC_PATH_PROG(CUPS_CONFIG, cups-config)
962 if test "x$CUPS_CONFIG" != x; then
963 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
964 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
965 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
966 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
967 elif test x"$enable_cups" = x"yes"; then
968 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
972 AC_ARG_ENABLE(iprint,
973 [ --enable-iprint Turn on iPrint support (default=yes if cups is yes)])
975 if test x$enable_iprint != xno; then
976 if test "x$CUPS_CONFIG" != x; then
977 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
978 elif test x"$enable_iprint" = x"yes"; then
979 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
983 ############################################
984 # check if the compiler can do immediate structures
985 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
990 this_function_does_not_exist();
996 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
997 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
998 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1001 ############################################
1002 # check for unix domain sockets
1003 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1005 #include <sys/types.h>
1008 #include <sys/socket.h>
1009 #include <sys/un.h>],
1011 struct sockaddr_un sunaddr;
1012 sunaddr.sun_family = AF_UNIX;
1014 samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1015 if test x"$samba_cv_unixsocket" = x"yes"; then
1016 AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1020 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
1022 #include <sys/types.h>
1027 #include <sys/socket.h>],[socklen_t i = 0],
1028 samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
1029 if test x"$samba_cv_socklen_t" = x"yes"; then
1030 AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
1033 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1035 #include <sys/types.h>
1040 #include <signal.h>],[sig_atomic_t i = 0],
1041 samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1042 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1043 AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1046 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1048 #include <sys/types.h>
1053 #if TIME_WITH_SYS_TIME
1054 # include <sys/time.h>
1057 # if HAVE_SYS_TIME_H
1058 # include <sys/time.h>
1063 ],[struct timespec ts;],
1064 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1065 if test x"$samba_cv_struct_timespec" = x"yes"; then
1066 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1069 # stupid headers have the functions but no declaration. grrrr.
1070 AC_HAVE_DECL(errno, [#include <errno.h>])
1071 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1072 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1073 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1074 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1075 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1076 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1078 # and glibc has setresuid under linux but the function does
1079 # nothing until kernel 2.1.44! very dumb.
1080 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1081 AC_TRY_RUN([#include <errno.h>
1082 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1083 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1084 if test x"$samba_cv_have_setresuid" = x"yes"; then
1085 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1088 # Do the same check for setresguid...
1090 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1091 AC_TRY_RUN([#include <unistd.h>
1093 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1094 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1095 if test x"$samba_cv_have_setresgid" = x"yes"; then
1096 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1101 ###############################################
1102 # Readline included by default unless explicitly asked not to
1103 test "${with_readline+set}" != "set" && with_readline=yes
1105 # test for where we get readline() from
1106 AC_MSG_CHECKING(whether to use readline)
1107 AC_ARG_WITH(readline,
1108 [ --with-readline[=DIR] Look for readline include/libs in DIR (default=auto) ],
1109 [ case "$with_readline" in
1113 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1114 AC_CHECK_HEADERS(readline/history.h)
1116 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1117 for termlib in ncurses curses termcap terminfo termlib tinfo; do
1118 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1120 AC_CHECK_LIB(readline, rl_callback_handler_install,
1121 [TERMLIBS="-lreadline $TERMLIBS"
1122 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1123 break], [TERMLIBS=], $TERMLIBS)])
1131 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1132 # alternate readline path
1134 _cppflags=${CPPFLAGS}
1136 # Add additional search path
1137 LDFLAGS="-L$with_readline/lib $LDFLAGS"
1138 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1140 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1141 AC_CHECK_HEADERS(readline/history.h)
1143 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1144 for termlib in ncurses curses termcap terminfo termlib; do
1145 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1147 AC_CHECK_LIB(readline, rl_callback_handler_install,
1148 [TERMLDFLAGS="-L$with_readline/lib"
1149 TERMCPPFLAGS="-I$with_readline/include"
1150 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1151 TERMLIBS="-lreadline $TERMLIBS"
1152 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1153 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1161 AC_SUBST(TERMLDFLAGS)
1163 # The readline API changed slightly from readline3 to readline4, so
1164 # code will generate warnings on one of them unless we have a few
1166 AC_CHECK_LIB(readline, rl_completion_matches,
1167 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1168 [Do we have rl_completion_matches?])],
1172 # not all readline libs have rl_event_hook or history_list
1173 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1174 AC_CHECK_LIB(readline, history_list,
1175 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1179 # The following test taken from the cvs sources
1180 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1181 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1182 # libsocket.so which has a bad implementation of gethostbyname (it
1183 # only looks in /etc/hosts), so we only look for -lsocket if we need
1185 AC_CHECK_FUNCS(connect)
1186 if test x"$ac_cv_func_connect" = x"no"; then
1189 *) AC_CHECK_LIB(nsl_s, connect) ;;
1193 *) AC_CHECK_LIB(nsl, connect) ;;
1197 *) AC_CHECK_LIB(socket, connect) ;;
1201 *) AC_CHECK_LIB(inet, connect) ;;
1203 dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1204 dnl has been cached.
1205 if test x"$ac_cv_lib_socket_connect" = x"yes" ||
1206 test x"$ac_cv_lib_inet_connect" = x"yes"; then
1207 # ac_cv_func_connect=yes
1208 # don't! it would cause AC_CHECK_FUNC to succeed next time configure is run
1209 AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1213 ###############################################
1214 # test for where we get yp_get_default_domain() from
1215 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1216 AC_CHECK_FUNCS(yp_get_default_domain)
1218 # Check if we have execl, if not we need to compile smbrun.
1219 AC_CHECK_FUNCS(execl)
1220 if test x"$ac_cv_func_execl" = x"no"; then
1221 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1224 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown chmod fchmod chroot link mknod mknod64)
1225 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1226 AC_CHECK_FUNCS(fstat strchr utime utimes getrlimit fsync memset strlcpy strlcat setpgid)
1227 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1228 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1229 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1230 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1231 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1232 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1233 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1234 AC_CHECK_FUNCS(getpwent_r)
1235 AC_CHECK_FUNCS(getdents getdents64)
1236 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1237 AC_CHECK_FUNCS(syslog vsyslog timegm)
1238 AC_CHECK_FUNCS(setlocale nl_langinfo)
1239 AC_CHECK_FUNCS(nanosleep)
1240 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1241 AC_CHECK_HEADERS(sys/mman.h)
1242 # setbuffer, shmget, shm_open are needed for smbtorture
1243 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1245 # Find a method of generating a stack trace
1246 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1247 AC_CHECK_FUNCS(backtrace_symbols)
1248 AC_CHECK_LIB(exc, trace_back_stack)
1250 echo -n "checking for GPFS GPL libs... "
1252 LIBS="$LIBS -lgpfs_gpl"
1253 AC_TRY_LINK([#include <gpfs_gpl.h>],
1254 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1255 samba_cv_HAVE_GPFS=yes,
1256 samba_cv_HAVE_GPFS=no)
1257 echo $samba_cv_HAVE_GPFS
1258 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1259 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1260 default_shared_modules="$default_shared_modules vfs_gpfs"
1264 # Note that all the libunwind symbols in the API are defined to internal
1265 # platform-specific version, so we must include libunwind.h before checking
1267 AC_MSG_CHECKING([for libunwind])
1269 if test x"$UNAME_P" = xunknown ; then
1270 # This probably won't link without the platform-specific libunwind.
1271 LIBS="$LIBS -lunwind"
1273 # Add the platform-specific libunwind module. uname -p seems the most
1274 # plausible option and works for ia64, where libunwind is most useful.
1275 LIBS="$LIBS -lunwind -lunwind-$UNAME_P"
1280 #ifdef HAVE_LIBUNWIND_H
1281 #include <libunwind.h>
1285 unw_context_t ctx; unw_cursor_t cur;
1286 char buf[256]; unw_word_t off;
1287 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1288 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1292 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1294 # If we have libunwind, test whether we also have libunwind-ptrace
1295 # which would let us unwind arbitrary processes.
1297 AC_CHECK_HEADERS(libunwind-ptrace.h)
1298 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1300 LIBUNWIND_PTRACE="-lunwind-ptrace";
1301 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1302 [Whether libunwind-ptrace.a is available.])
1304 [ LIBUNWIND_PTRACE="" ])
1313 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1314 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1315 AC_CHECK_HEADERS(sys/ptrace.h)
1316 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1319 #if HAVE_SYS_TYPES_H
1320 #include <sys/types.h>
1322 #if HAVE_SYS_PTRACE_H
1323 #include <sys/ptrace.h>
1327 int main(int argc, const char ** argv)
1329 pid_t me = (pid_t)-1;
1330 ptrace(PTRACE_ATTACH, me, 0, 0);
1331 ptrace(PTRACE_DETACH, me, 0, 0);
1337 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1338 [Whether the Linux ptrace(2) interface is available.])
1346 AC_SUBST(LIBUNWIND_PTRACE)
1348 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1349 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1350 AC_CHECK_FUNCS(__getcwd _getcwd)
1351 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1352 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1353 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1354 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1355 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1356 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1357 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1358 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1359 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1360 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1361 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1362 AC_CHECK_FUNCS(prctl)
1365 #ifdef HAVE_SYS_PRCTL_H
1366 #include <sys/prctl.h>
1369 [int i; i = prtcl(0); ],
1370 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1377 # glibc <= 2.3.2 has a broken getgrouplist
1380 #include <sys/utsname.h>
1382 /* glibc up to 2.3 has a broken getgrouplist */
1383 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1384 int libc_major = __GLIBC__;
1385 int libc_minor = __GLIBC_MINOR__;
1389 if ((libc_major == 2) && (libc_minor <= 3))
1394 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1395 if test x"$linux_getgrouplist_ok" = x"yes"; then
1396 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1400 AC_CHECK_FUNCS(getgrouplist)
1405 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1408 if test x$ac_cv_func_stat64 = xno ; then
1409 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1411 #if defined(HAVE_UNISTD_H)
1414 #include <sys/stat.h>
1415 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1416 AC_MSG_RESULT([$ac_cv_func_stat64])
1417 if test x$ac_cv_func_stat64 = xyes ; then
1418 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1422 if test x$ac_cv_func_lstat64 = xno ; then
1423 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1425 #if defined(HAVE_UNISTD_H)
1428 #include <sys/stat.h>
1429 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1430 AC_MSG_RESULT([$ac_cv_func_lstat64])
1431 if test x$ac_cv_func_lstat64 = xyes ; then
1432 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1436 if test x$ac_cv_func_fstat64 = xno ; then
1437 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1439 #if defined(HAVE_UNISTD_H)
1442 #include <sys/stat.h>
1443 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1444 AC_MSG_RESULT([$ac_cv_func_fstat64])
1445 if test x$ac_cv_func_fstat64 = xyes ; then
1446 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1450 #################################################
1451 # Check whether struct stat has timestamps with sub-second resolution.
1452 # At least IRIX and Solaris have these.
1455 # all of st_mtim, st_atim and st_ctim exist
1456 # all of the members are in fact of type struct timespec
1458 # There is some conflicting standards weirdness about whether we should use
1459 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1460 # prefer struct timespec.
1462 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1466 #if TIME_WITH_SYS_TIME
1467 # include <sys/time.h>
1470 # if HAVE_SYS_TIME_H
1471 # include <sys/time.h>
1476 #ifdef HAVE_SYS_STAT_H
1477 #include <sys/stat.h>
1482 struct stat s = {0};
1483 t.tv_sec = s.st_mtim.tv_sec;
1484 t.tv_nsec = s.st_mtim.tv_nsec;
1485 t.tv_sec = s.st_ctim.tv_sec;
1486 t.tv_nsec = s.st_ctim.tv_nsec;
1487 t.tv_sec = s.st_atim.tv_sec;
1488 t.tv_nsec = s.st_atim.tv_nsec;
1490 samba_stat_hires=yes, samba_stat_hires=no)
1493 if test x"$samba_stat_hires" = x"yes" ; then
1494 AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1495 AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1496 AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1497 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1498 [whether struct stat has sub-second timestamps])
1501 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1505 #if TIME_WITH_SYS_TIME
1506 # include <sys/time.h>
1509 # if HAVE_SYS_TIME_H
1510 # include <sys/time.h>
1515 #ifdef HAVE_SYS_STAT_H
1516 #include <sys/stat.h>
1521 struct stat s = {0};
1522 t.tv_sec = s.st_mtime;
1523 t.tv_nsec = s.st_mtimensec;
1524 t.tv_sec = s.st_ctime;
1525 t.tv_nsec = s.st_ctimensec;
1526 t.tv_sec = s.st_atime;
1527 t.tv_nsec = s.st_atimensec;
1529 samba_stat_hires=yes, samba_stat_hires=no)
1532 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1533 AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1534 AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1535 AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1536 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1537 [whether struct stat has sub-second timestamps without struct timespec])
1540 #####################################
1541 # needed for SRV lookups
1542 AC_CHECK_LIB(resolv, dn_expand)
1543 AC_CHECK_LIB(resolv, _dn_expand)
1544 AC_CHECK_LIB(resolv, __dn_expand)
1547 # Check for the functions putprpwnam, set_auth_parameters,
1548 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1549 # Needed for OSF1 and HPUX.
1552 AC_LIBTESTFUNC(security, putprpwnam)
1553 AC_LIBTESTFUNC(sec, putprpwnam)
1555 AC_LIBTESTFUNC(security, set_auth_parameters)
1556 AC_LIBTESTFUNC(sec, set_auth_parameters)
1558 # UnixWare 7.x has its getspnam in -lgen
1559 AC_LIBTESTFUNC(gen, getspnam)
1561 AC_LIBTESTFUNC(security, getspnam)
1562 AC_LIBTESTFUNC(sec, getspnam)
1564 AC_LIBTESTFUNC(security, bigcrypt)
1565 AC_LIBTESTFUNC(sec, bigcrypt)
1567 AC_LIBTESTFUNC(security, getprpwnam)
1568 AC_LIBTESTFUNC(sec, getprpwnam)
1570 AC_CHECK_FUNCS(strsignal)
1572 ############################################
1573 # Check if we have libattr
1576 AC_SEARCH_LIBS(getproplist, [proplist])
1577 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1578 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1579 AC_CHECK_FUNCS(sizeof_proplist_entry)
1582 AC_SEARCH_LIBS(getxattr, [attr])
1583 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1584 AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1585 AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1586 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1587 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1588 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1589 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1593 ########################################################
1594 # Do xattr functions take additional options like on Darwin?
1595 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1596 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1598 LIBS="$LIBS $ACL_LIBS"
1600 #include <sys/types.h>
1601 #if HAVE_ATTR_XATTR_H
1602 #include <attr/xattr.h>
1603 #elif HAVE_SYS_XATTR_H
1604 #include <sys/xattr.h>
1607 getxattr(0, 0, 0, 0, 0, 0);
1609 [smb_attr_cv_xattr_add_opt=yes],
1610 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1612 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1613 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1617 # Check if we have extattr
1619 *freebsd4* | *dragonfly* )
1620 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1623 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1624 AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1625 AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1626 AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1633 AC_ARG_ENABLE(pie, [ --enable-pie Turn on pie support if available (default=yes)])
1635 if test "x$enable_pie" != xno
1637 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1639 cat > conftest.c <<EOF
1641 main () { return 0;}
1643 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1651 if test x"${samba_cv_fpie}" = x"yes"
1658 # Assume non-shared by default and override below
1661 # these are the defaults, good for lots of systems
1665 SHLD="\${CC} \${CFLAGS}"
1666 PICFLAG="${PIE_CFLAGS}"
1669 # this bit needs to be modified for each OS that supports share libs
1670 # You need to specify how to create a shared library and
1671 # how to compile C code to produce PIC object files
1673 AC_MSG_CHECKING([ability to build shared libraries])
1675 # and these are for particular systems
1677 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux])
1679 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1680 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1682 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1684 DYNEXP="-Wl,--export-dynamic"
1686 SONAMEFLAG="-Wl,-soname="
1687 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1689 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1693 if test "${GCC}" = "yes"; then
1695 SONAMEFLAG="-Wl,-soname="
1696 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1701 ## ${CFLAGS} added for building 64-bit shared
1702 ## libs using Sun's Compiler
1703 LDSHFLAGS="-G \${CFLAGS}"
1705 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1706 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1708 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1711 SONAMEFLAG="-Wl,-h,"
1712 PICFLAG="-KPIC" # Is this correct for SunOS
1713 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1714 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1716 *netbsd* | *freebsd* | *dragonfly* )
1719 DYNEXP="-Wl,--export-dynamic"
1720 SONAMEFLAG="-Wl,-soname,"
1721 PICFLAG="-fPIC -DPIC"
1722 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1723 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1725 *openbsd*) BLDSHARED="true"
1727 DYNEXP="-Wl,-Bdynamic"
1728 SONAMEFLAG="-Wl,-soname,"
1730 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1731 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1733 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1735 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1739 LDSHFLAGS="-set_version sgi1.0 -shared"
1740 SONAMEFLAG="-soname "
1742 if test "${GCC}" = "yes"; then
1747 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1749 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1751 LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1752 DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1754 # as AIX code is always position independent...
1755 # .po will just create compile warnings, use po.o:
1756 if test "${GCC}" != "yes"; then
1757 ## for funky AIX compiler using strncpy()
1758 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1761 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1762 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1763 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1765 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1766 # Use special PIC flags for the native HP-UX compiler.
1767 if test $ac_cv_prog_cc_Ae = yes; then
1770 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1771 SONAMEFLAG="-Wl,+h "
1773 elif test "${GCC}" = "yes"; then
1776 if test "$host_cpu" = "ia64"; then
1778 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1781 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1783 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1784 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1786 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1787 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1789 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1792 SONAMEFLAG="-Wl,-soname,"
1794 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1795 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1797 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1798 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1800 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1803 SONAMEFLAG="-Wl,-soname,"
1805 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1807 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1808 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1810 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1811 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1813 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1815 *-univel-*) if [ test "$GCC" != yes ]; then
1816 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1821 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1823 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1826 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1827 if [ test "$GCC" != yes ]; then
1828 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1831 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1833 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1838 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1840 LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1842 # Since gcc doesn't fail on unrecognised options, the
1843 # PIE test incorrectly succeeds. Darwin gcc does not
1844 # actually support the PIE stuff.
1847 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1851 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1855 if test "$enable_shared" != "yes"; then
1859 AC_MSG_RESULT($BLDSHARED)
1861 AC_MSG_CHECKING([LDFLAGS])
1862 AC_MSG_RESULT([$LDFLAGS])
1863 AC_MSG_CHECKING([DYNEXP])
1864 AC_MSG_RESULT([$DYNEXP])
1866 #######################################################
1867 # test whether building a shared library actually works
1868 if test $BLDSHARED = true; then
1870 AC_MSG_CHECKING([SHLD])
1871 AC_MSG_RESULT([$SHLD])
1872 AC_MSG_CHECKING([LDSHFLAGS])
1873 AC_MSG_RESULT([$LDSHFLAGS])
1875 AC_MSG_CHECKING([SHLIBEXT])
1876 AC_MSG_RESULT([$SHLIBEXT])
1877 AC_MSG_CHECKING([SONAMEFLAG])
1878 AC_MSG_RESULT([$SONAMEFLAG])
1880 AC_MSG_CHECKING([PICFLAG])
1881 AC_MSG_RESULT([$PICFLAG])
1883 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1884 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1886 AC_CACHE_CHECK([whether building shared libraries actually works],
1887 [ac_cv_shlib_works],[
1888 # try building a trivial shared library
1889 ac_cv_shlib_works=no
1890 # The $SHLD and $LDSHFLAGS variables may contain references to other
1891 # variables so they need to be eval'ed.
1892 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1893 shlib.o ${srcdir-.}/tests/shlib.c && \
1894 `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1895 shlib.o && ac_cv_shlib_works=yes
1896 rm -f "shlib.$SHLIBEXT" shlib.o
1899 if test $ac_cv_shlib_works = no; then
1904 if test x"$BLDSHARED" != x"true"; then
1905 LDSHFLAGS="shared-libraries-disabled"
1906 SONAMEFLAG="shared-libraries-disabled"
1907 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1908 SHLD="shared-libraries-disabled"
1909 PICFLAG="${PIE_CFLAGS}"
1910 SHLIBEXT="shared_libraries_disabled"
1913 AC_MSG_CHECKING([used PICFLAG])
1914 AC_MSG_RESULT([$PICFLAG])
1916 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1920 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1921 AC_TRY_RUN([#include <stdio.h>
1922 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1923 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1924 if test x"$samba_cv_have_longlong" = x"yes"; then
1925 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1926 AC_CHECK_TYPE(intptr_t, unsigned long long)
1928 AC_CHECK_TYPE(intptr_t, unsigned long)
1932 # Check if the compiler supports the LL prefix on long long integers.
1935 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1936 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1937 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1938 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1939 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1943 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1944 AC_TRY_RUN([#include <stdio.h>
1945 #include <sys/stat.h>
1946 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1947 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1948 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1949 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1952 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1954 #if defined(HAVE_UNISTD_H)
1958 #include <sys/stat.h>
1959 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1960 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
1961 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
1962 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
1965 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
1967 #if defined(HAVE_UNISTD_H)
1971 #include <sys/stat.h>
1972 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
1973 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
1974 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
1975 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
1978 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
1980 #if defined(HAVE_UNISTD_H)
1984 #include <sys/stat.h>
1985 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
1986 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
1987 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
1988 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
1991 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
1993 #if defined(HAVE_UNISTD_H)
1997 #include <sys/stat.h>
1998 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
1999 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2000 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2001 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2004 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2006 #if defined(HAVE_UNISTD_H)
2010 #include <sys/stat.h>
2011 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2012 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2013 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2014 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2017 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2019 #if defined(HAVE_UNISTD_H)
2022 #include <sys/types.h>
2023 #include <dirent.h>],
2025 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2026 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2027 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2030 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2032 #if defined(HAVE_UNISTD_H)
2035 #include <sys/types.h>
2036 #include <dirent.h>],
2037 [struct dirent64 de;],
2038 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2039 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2040 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2043 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2045 #if defined(HAVE_UNISTD_H)
2048 #include <sys/types.h>
2049 main() { dev_t dev; int i = major(dev); return 0; }],
2050 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2051 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2052 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2055 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2057 #if defined(HAVE_UNISTD_H)
2060 #include <sys/types.h>
2061 main() { dev_t dev; int i = minor(dev); return 0; }],
2062 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2063 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2064 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2067 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2069 #if defined(HAVE_UNISTD_H)
2072 #include <sys/types.h>
2073 main() { dev_t dev = makedev(1,2); return 0; }],
2074 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2075 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2076 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2079 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2080 AC_TRY_RUN([#include <stdio.h>
2081 main() { char c; c=250; exit((c > 0)?0:1); }],
2082 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2083 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2084 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2087 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2088 AC_TRY_COMPILE([#include <sys/types.h>
2089 #include <sys/socket.h>
2090 #include <netinet/in.h>],
2091 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2092 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2093 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2094 AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2097 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2098 AC_TRY_COMPILE([#include <sys/types.h>
2100 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2101 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2102 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2103 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2106 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2107 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2108 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2109 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2110 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2113 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2115 #include <sys/time.h>
2117 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
2118 samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
2119 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2120 AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
2123 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2125 # On some systems (eg. Linux) librt can pull in libpthread. We
2126 # don't want this to happen because libpthreads changes signal delivery
2127 # semantics in ways we are not prepared for. This breaks Linux oplocks
2128 # which rely on signals.
2130 AC_LIBTESTFUNC(rt, clock_gettime,
2132 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2133 [Whether clock_gettime is available])
2134 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2135 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2136 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2141 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2142 AC_TRY_LINK([#include <stdarg.h>
2143 va_list ap1,ap2;], [va_copy(ap1,ap2);],
2144 samba_cv_HAVE_VA_COPY=yes,
2145 samba_cv_HAVE_VA_COPY=no)])
2146 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2147 AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2149 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2150 AC_TRY_LINK([#include <stdarg.h>
2151 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2152 samba_cv_HAVE___VA_COPY=yes,
2153 samba_cv_HAVE___VA_COPY=no)])
2154 if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2155 AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2159 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2161 #include <sys/types.h>
2163 void foo(const char *format, ...) {
2168 va_start(ap, format);
2169 len = vsnprintf(buf, 0, format, ap);
2171 if (len != 5) exit(1);
2173 va_start(ap, format);
2174 len = vsnprintf(0, 0, format, ap);
2176 if (len != 5) exit(1);
2178 if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2182 main() { foo("hello"); }
2184 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2185 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2186 AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2189 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2190 AC_TRY_RUN([#include <sys/types.h>
2192 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2193 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2194 di->d_name[0] == 0) exit(0); exit(1);} ],
2195 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2196 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2197 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2200 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2201 AC_TRY_COMPILE([#include <sys/types.h>
2202 #include <utime.h>],
2203 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2204 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2205 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2206 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2210 # Check utmp details, but only if our OS offers utmp.h
2211 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2212 dnl utmp and utmpx come in many flavours
2213 dnl We need to check for many of them
2214 dnl But we don't need to do each and every one, because our code uses
2215 dnl mostly just the utmp (not utmpx) fields.
2217 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2219 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2220 AC_TRY_COMPILE([#include <sys/types.h>
2222 [struct utmp ut; ut.ut_name[0] = 'a';],
2223 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2224 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2225 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2228 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2229 AC_TRY_COMPILE([#include <sys/types.h>
2231 [struct utmp ut; ut.ut_user[0] = 'a';],
2232 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2233 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2234 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2237 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2238 AC_TRY_COMPILE([#include <sys/types.h>
2240 [struct utmp ut; ut.ut_id[0] = 'a';],
2241 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2242 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2243 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2246 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2247 AC_TRY_COMPILE([#include <sys/types.h>
2249 [struct utmp ut; ut.ut_host[0] = 'a';],
2250 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2251 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2252 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2255 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2256 AC_TRY_COMPILE([#include <sys/types.h>
2258 [struct utmp ut; time_t t; ut.ut_time = t;],
2259 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2260 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2261 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2264 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2265 AC_TRY_COMPILE([#include <sys/types.h>
2267 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2268 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2269 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2270 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2273 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2274 AC_TRY_COMPILE([#include <sys/types.h>
2276 [struct utmp ut; ut.ut_type = 0;],
2277 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2278 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2279 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2282 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2283 AC_TRY_COMPILE([#include <sys/types.h>
2285 [struct utmp ut; ut.ut_pid = 0;],
2286 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2287 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2288 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2291 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2292 AC_TRY_COMPILE([#include <sys/types.h>
2294 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2295 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2296 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2297 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2300 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2301 AC_TRY_COMPILE([#include <sys/types.h>
2303 [struct utmp ut; ut.ut_addr = 0;],
2304 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2305 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2306 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2309 if test x$ac_cv_func_pututline = xyes ; then
2310 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2311 AC_TRY_COMPILE([#include <sys/types.h>
2313 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2314 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2315 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2316 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2320 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2321 AC_TRY_COMPILE([#include <sys/types.h>
2322 #include <utmpx.h>],
2323 [struct utmpx ux; ux.ut_syslen = 0;],
2324 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2325 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2326 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2333 ICONV_LOCATION=standard
2334 LOOK_DIRS="/usr /usr/local /sw /opt"
2335 AC_ARG_WITH(libiconv,
2336 [ --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2338 if test "$withval" = "no" ; then
2339 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2341 if test "$withval" != "yes" ; then
2343 LOOK_DIRS="$withval"
2348 for i in $LOOK_DIRS ; do
2350 save_LDFLAGS=$LDFLAGS
2351 save_CPPFLAGS=$CPPFLAGS
2354 CPPFLAGS="$CPPFLAGS -I$i/include"
2355 dnl This is here to handle -withval stuff for --with-libiconv
2356 dnl Perhaps we should always add a -L
2358 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
2359 dnl installation paths. This gets a little tricky since we might have iconv
2360 dnl in both libiconv and in libc. In this case the jm_ICONV test will always
2361 dnl succeed when the header is found. To counter this, make sure the
2362 dnl library directory is there and check the ABI directory first (which
2363 dnl should be harmless on other systems.
2364 dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2365 for l in "lib32" "lib" "lib/hpux32"; do
2366 if test -d "$i/$l" ; then
2367 LDFLAGS="$save_LDFLAGS -L$i/$l"
2369 export LDFLAGS LIBS CPPFLAGS
2370 dnl Try to find iconv(3)
2372 if test x"$ICONV_FOUND" = "xyes" ; then
2379 if test x"$ICONV_FOUND" = "xyes" ; then
2380 LDFLAGS=$save_LDFLAGS
2381 LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2382 CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2385 export LDFLAGS LIBS CPPFLAGS
2386 dnl Now, check for a working iconv ... we want to do it here because
2387 dnl there might be a working iconv further down the list of LOOK_DIRS
2390 # check for iconv in libc
2391 ic_save_LIBS="$LIBS"
2392 if test x"$ICONV_PATH_SPEC" = "xyes" ; then
2393 LIBS="$LIBS -L$ICONV_LOCATION/$libext"
2395 if test x"$jm_cv_lib_iconv" != x; then
2396 LIBS="$LIBS -l$jm_cv_lib_iconv"
2398 dnl AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
2399 default_dos_charset=no
2400 default_display_charset=no
2401 default_unix_charset=no
2403 # check for default dos charset name
2404 for j in CP850 IBM850 ; do
2406 if test x"$ICONV_CHARSET" = x"$j"; then
2407 default_dos_charset="\"$j\""
2411 # check for default display charset name
2412 for j in ASCII 646 ; do
2414 if test x"$ICONV_CHARSET" = x"$j"; then
2415 default_display_charset="\"$j\""
2419 # check for default unix charset name
2420 for j in UTF-8 UTF8 ; do
2422 if test x"$ICONV_CHARSET" = x"$j"; then
2423 default_unix_charset="\"$j\""
2428 if test "$default_dos_charset" != "no" -a \
2429 "$default_dos_charset" != "cross" -a \
2430 "$default_display_charset" != "no" -a \
2431 "$default_display_charset" != "cross" -a \
2432 "$default_unix_charset" != "no" -a \
2433 "$default_unix_charset" != "cross"
2435 samba_cv_HAVE_NATIVE_ICONV=yes
2436 else if test "$default_dos_charset" = "cross" -o \
2437 "$default_display_charset" = "cross" -o \
2438 "$default_unix_charset" = "cross"
2440 samba_cv_HAVE_NATIVE_ICONV=cross
2442 samba_cv_HAVE_NATIVE_ICONV=no
2447 LIBS="$ic_save_LIBS"
2448 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
2449 CPPFLAGS=$save_CPPFLAGS
2450 LDFLAGS=$save_LDFLAGS
2452 if test x"$jm_cv_lib_iconv" != x; then
2453 LIBS="$LIBS -l$jm_cv_lib_iconv"
2455 dnl Add the flags we need to CPPFLAGS and LDFLAGS
2456 CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2457 LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2459 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2460 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2461 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2462 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2465 dnl We didn't find a working iconv, so keep going
2467 dnl We only need to clean these up here for the next pass through the loop
2468 CPPFLAGS=$save_CPPFLAGS
2469 LDFLAGS=$save_LDFLAGS
2471 export LDFLAGS LIBS CPPFLAGS
2476 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2477 AC_MSG_WARN([Sufficient support for iconv function was not found.
2478 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2479 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2480 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2481 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2485 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2487 #include <sys/types.h>
2490 #define F_GETLEASE 1025
2493 int fd = open("/dev/null", O_RDONLY);
2494 return fcntl(fd, F_GETLEASE, 0) == -1;
2497 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2498 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2499 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2502 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2504 #include <sys/types.h>
2508 #define F_NOTIFY 1026
2511 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2514 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2515 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2516 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2519 #################################################
2520 # Check if FAM notifications are available. For FAM info, see
2521 # http://oss.sgi.com/projects/fam/
2522 # http://savannah.nongnu.org/projects/fam/
2524 [ --enable-fam Turn on FAM support (default=auto)])
2526 if test x$enable_fam != xno; then
2527 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2528 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2529 # On IRIX, libfam requires libC, but other FAM implementations
2530 # might not need it.
2531 AC_CHECK_LIB(fam, FAMOpen2,
2532 [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam"],
2533 [samba_cv_HAVE_LIBFAM=no])
2535 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2537 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2538 [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam -lC"],
2539 [samba_cv_HAVE_LIBFAM=no])
2540 unset samba_fam_xtra
2544 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2545 AC_DEFINE(HAVE_FAM_CHANGE_NOTIFY, 1,
2546 [Whether FAM file notifications are available])
2547 AC_TRY_COMPILE([#include <fam.h>],
2548 [FAMCodes code = FAMChanged;],
2549 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2550 [Whether fam.h contains a typedef for enum FAMCodes]),
2554 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2555 AC_MSG_ERROR(FAM support requested but FAM library not available )
2559 #################################################
2560 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2562 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2564 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2566 #include <sys/types.h>
2569 #include <sys/file.h>
2571 #define LOCK_MAND 32
2572 #define LOCK_READ 64
2575 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2578 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2579 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2580 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2584 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2585 AC_TRY_COMPILE([#include <sys/types.h>
2586 #include <fcntl.h>],
2587 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2588 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2589 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2590 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2593 #################################################
2594 # Check for POSIX capability support
2596 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2597 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2600 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2603 AC_LIBTESTFUNC(cap, cap_get_proc)
2605 AC_CACHE_CHECK([for POSIX capabilities],
2606 samba_cv_HAVE_POSIX_CAPABILITIES,
2609 #include <sys/types.h>
2610 #include <sys/capability.h>
2613 cap_value_t vals[1];
2614 if (!(cap = cap_get_proc()))
2616 vals[0] = CAP_CHOWN;
2617 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2621 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2622 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2623 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2626 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2627 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2628 [Whether POSIX capabilities are available])
2636 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2637 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2640 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2641 AC_TRY_COMPILE([#include <sys/types.h>
2642 #if defined(HAVE_RPC_RPC_H)
2643 #include <rpc/rpc.h>
2646 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2647 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2648 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2651 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2652 AC_TRY_COMPILE([#include <sys/types.h>
2653 #if defined(HAVE_RPC_RPC_H)
2654 #include <rpc/rpc.h>
2657 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2658 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2659 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2662 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2663 AC_TRY_COMPILE([#include <sys/types.h>
2664 #if defined(HAVE_RPC_RPC_H)
2665 #include <rpc/rpc.h>
2668 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2669 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2670 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2673 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2674 AC_TRY_COMPILE([#include <sys/types.h>
2675 #if defined(HAVE_RPC_RPC_H)
2676 #include <rpc/rpc.h>
2679 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2680 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2681 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2685 dnl Some systems (SCO) have a problem including
2686 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2687 dnl as a #define in <prot.h> and as part of an enum
2691 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2692 AC_TRY_COMPILE([#include <sys/types.h>
2693 #ifdef HAVE_SYS_SECURITY_H
2694 #include <sys/security.h>
2696 #endif /* HAVE_SYS_SECURITY_H */
2697 #if defined(HAVE_RPC_RPC_H)
2698 #include <rpc/rpc.h>
2701 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2702 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2703 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2706 AC_MSG_CHECKING([for test routines])
2707 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2709 AC_MSG_ERROR([cant find test code. Aborting config]),
2710 AC_MSG_WARN([cannot run when cross-compiling]))
2712 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2713 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2714 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2715 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2716 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2719 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2720 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2721 samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2722 samba_cv_HAVE_WORKING_AF_LOCAL=no,
2723 samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2724 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2726 AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2729 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2730 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2731 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2732 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2733 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2736 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2737 AC_TRY_RUN([#include <stdlib.h>
2738 #include <sys/types.h>
2739 #include <sys/stat.h>
2743 char tpl[20]="/tmp/test.XXXXXX";
2744 int fd = mkstemp(tpl);
2745 if (fd == -1) exit(1);
2747 if (fstat(fd, &st) != 0) exit(1);
2748 if ((st.st_mode & 0777) != 0600) exit(1);
2751 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2752 samba_cv_HAVE_SECURE_MKSTEMP=no,
2753 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2754 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2755 AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2758 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2759 AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
2760 [samba_cv_HAVE_BROKEN_READDIR=no],
2761 [samba_cv_HAVE_BROKEN_READDIR=yes],
2762 [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2764 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2765 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2767 #include "${srcdir-.}/lib/repdir.c"
2768 #include "${srcdir-.}/tests/os2_delete.c"],
2769 samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2772 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2773 AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2776 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2777 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2778 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2779 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2780 AC_CHECK_FUNCS(getpagesize)
2783 # look for a method of finding the list of network interfaces
2785 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2786 SAVE_CPPFLAGS="$CPPFLAGS"
2787 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2789 #define HAVE_IFACE_AIX 1
2790 #define AUTOCONF_TEST 1
2791 #undef _XOPEN_SOURCE_EXTENDED
2792 #include "${srcdir-.}/lib/interfaces.c"],
2793 samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2794 CPPFLAGS="$SAVE_CPPFLAGS"
2795 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2796 iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2799 if test $iface = no; then
2800 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2801 SAVE_CPPFLAGS="$CPPFLAGS"
2802 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2804 #define HAVE_IFACE_IFCONF 1
2805 #define AUTOCONF_TEST 1
2806 #include "${srcdir-.}/lib/interfaces.c"],
2807 samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2808 CPPFLAGS="$SAVE_CPPFLAGS"
2809 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2810 iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2814 if test $iface = no; then
2815 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2816 SAVE_CPPFLAGS="$CPPFLAGS"
2817 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2819 #define HAVE_IFACE_IFREQ 1
2820 #define AUTOCONF_TEST 1
2821 #include "${srcdir-.}/lib/interfaces.c"],
2822 samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2823 CPPFLAGS="$SAVE_CPPFLAGS"
2824 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2825 iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2830 ################################################
2831 # look for a method of setting the effective uid
2833 if test $seteuid = no; then
2834 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2836 #define AUTOCONF_TEST 1
2837 #define USE_SETRESUID 1
2838 #include "confdefs.h"
2839 #include "${srcdir-.}/lib/util_sec.c"],
2840 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2841 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2842 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2847 if test $seteuid = no; then
2848 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2850 #define AUTOCONF_TEST 1
2851 #define USE_SETREUID 1
2852 #include "confdefs.h"
2853 #include "${srcdir-.}/lib/util_sec.c"],
2854 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2855 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2856 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2860 if test $seteuid = no; then
2861 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2863 #define AUTOCONF_TEST 1
2864 #define USE_SETEUID 1
2865 #include "confdefs.h"
2866 #include "${srcdir-.}/lib/util_sec.c"],
2867 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2868 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2869 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2873 if test $seteuid = no; then
2874 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2876 #define AUTOCONF_TEST 1
2877 #define USE_SETUIDX 1
2878 #include "confdefs.h"
2879 #include "${srcdir-.}/lib/util_sec.c"],
2880 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2881 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2882 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2887 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2888 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2889 samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2890 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2891 AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2894 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2895 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2896 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2897 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2898 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2901 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2902 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2903 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2904 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2905 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2910 dnl Don't check for 64 bit fcntl locking if we know that the
2911 dnl glibc2.1 broken check has succeeded.
2914 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2916 #if defined(HAVE_UNISTD_H)
2926 #ifdef HAVE_SYS_FCNTL_H
2927 #include <sys/fcntl.h>
2929 main() { struct flock64 fl64;
2930 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
2936 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
2938 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
2939 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
2943 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
2944 AC_TRY_COMPILE([#include <sys/types.h>
2945 #include <sys/stat.h>
2946 #include <unistd.h>],
2947 [struct stat st; st.st_blocks = 0;],
2948 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
2949 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
2950 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
2953 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
2954 AC_TRY_COMPILE([#include <sys/types.h>
2955 #include <sys/stat.h>
2956 #include <unistd.h>],
2957 [struct stat st; st.st_blksize = 0;],
2958 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
2959 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
2960 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
2965 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
2967 #ifdef HAVE_SYS_VFS_H
2968 #include <sys/vfs.h>
2970 #ifdef HAVE_SYS_CAPABILITY_H
2971 #include <sys/capability.h>
2974 samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
2975 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
2976 AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
2981 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
2983 #include <sys/types.h>
2984 #include <sys/acl.h>
2985 #if defined(HAVE_RPCSVC_NIS_H)
2986 #include <rpcsvc/nis.h>
2989 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
2990 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
2991 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
2994 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
2999 char *newpath = realpath("/tmp", NULL);
3000 exit ((newpath != NULL) ? 0 : 1);
3003 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3004 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3005 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3008 #################################################
3009 # check for AFS clear-text auth support
3010 samba_cv_WITH_AFS=no
3011 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3013 [ --with-afs Include AFS clear-text auth support (default=no) ],
3014 [ case "$withval" in
3016 AC_MSG_RESULT($withval)
3017 samba_cv_WITH_AFS=$withval
3026 ####################################################
3027 # check for Linux-specific AFS fake-kaserver support
3028 samba_cv_WITH_FAKE_KASERVER=no
3029 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3030 AC_ARG_WITH(fake-kaserver,
3031 [ --with-fake-kaserver Include AFS fake-kaserver support (default=no) ],
3032 [ case "$withval" in
3034 AC_MSG_RESULT($withval)
3035 samba_cv_WITH_FAKE_KASERVER=$withval
3044 #################################################
3045 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3046 if test x"$samba_cv_WITH_AFS" != x"no" ||
3047 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3049 # see if this box has the afs-headers in /usr/include/afs
3050 AC_MSG_CHECKING(for /usr/include/afs)
3051 if test -d /usr/include/afs; then
3052 CFLAGS="$CFLAGS -I/usr/include/afs"
3053 CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3061 AC_CHECK_HEADERS(afs.h afs/afs.h)
3062 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3063 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3064 test x"$samba_cv_WITH_AFS" = x"auto"; then
3065 AC_MSG_WARN([AFS cannot be supported without afs.h])
3067 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3070 have_afs_headers=yes
3074 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3075 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3078 #################################################
3079 # check whether to compile AFS/NT ACL mapping module
3080 samba_cv_WITH_VFS_AFSACL=no
3081 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3082 AC_ARG_WITH(vfs-afsacl,
3083 [ --with-vfs-afsacl Include AFS to NT ACL mapping module (default=no) ],
3084 [ case "$withval" in
3086 AC_MSG_RESULT($withval)
3087 samba_cv_WITH_VFS_AFSACL=yes
3096 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3097 default_shared_modules="$default_shared_modules vfs_afsacl"
3100 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3101 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3104 #################################################
3105 # check for the DFS clear-text auth system
3106 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3108 [ --with-dce-dfs Include DCE/DFS clear-text auth support (default=no)],
3109 [ case "$withval" in
3112 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3121 ########################################################
3122 # Compile with LDAP support?
3124 with_ldap_support=auto
3125 AC_MSG_CHECKING([for LDAP support])
3128 [ --with-ldap LDAP support (default yes)],
3129 [ case "$withval" in
3131 with_ldap_support=$withval
3135 AC_MSG_RESULT($with_ldap_support)
3140 AC_SUBST(SMBLDAPUTIL)
3144 if test x"$with_ldap_support" != x"no"; then
3146 ##################################################################
3147 # first test for ldap.h and lber.h
3148 # (ldap.h is required for this test)
3149 AC_CHECK_HEADERS(ldap.h lber.h)
3151 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3152 if test x"$with_ldap_support" = x"yes"; then
3153 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3155 AC_MSG_WARN(ldap.h is needed for LDAP support)
3158 with_ldap_support=no
3161 ##################################################################
3162 # HP/UX does not have ber_tag_t, disable LDAP there
3163 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3164 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3165 if test x"$with_ldap_support" = x"yes"; then
3166 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3168 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3170 with_ldap_support=no
3174 if test x"$with_ldap_support" != x"no"; then
3177 ##################################################################
3178 # we might need the lber lib on some systems. To avoid link errors
3179 # this test must be before the libldap test
3180 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3182 ########################################################
3183 # now see if we can find the ldap libs in standard paths
3184 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3186 ########################################################
3187 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3188 # Check found in pam_ldap 145.
3189 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3191 LIBS="$LIBS $LDAP_LIBS"
3192 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3196 [ldap_set_rebind_proc(0, 0, 0);],
3197 [smb_ldap_cv_ldap_set_rebind_proc=3],
3198 [smb_ldap_cv_ldap_set_rebind_proc=2]
3202 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3204 AC_CHECK_FUNC_EXT(ldap_dn2ad_canonical,$LDAP_LIBS)
3205 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3207 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3208 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3209 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3210 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3211 default_shared_modules="$default_shared_modules";
3212 SMBLDAP="lib/smbldap.o"
3213 SMBLDAPUTIL="lib/smbldap_util.o"
3214 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3215 AC_MSG_WARN(Disabling ldb_ldap support (requires ldap_initialize))
3217 AC_DEFINE(HAVE_LDB_LDAP,1,[Whether ldb_ldap is available])
3218 LDBLDAP="lib/ldb/ldb_ldap/ldb_ldap.o"
3220 with_ldap_support=yes
3221 AC_MSG_CHECKING(whether LDAP support is used)
3224 if test x"$with_ldap_support" = x"yes"; then
3225 AC_MSG_ERROR(libldap is needed for LDAP support)
3227 AC_MSG_WARN(libldap is needed for LDAP support)
3231 with_ldap_support=no
3237 #################################################
3238 # active directory support
3240 with_ads_support=auto
3241 AC_MSG_CHECKING([for Active Directory and krb5 support])
3244 [ --with-ads Active Directory support (default auto)],
3245 [ case "$withval" in
3247 with_ads_support="$withval"
3251 AC_MSG_RESULT($with_ads_support)
3256 if test x"$with_ldap_support" != x"yes"; then
3258 if test x"$with_ads_support" = x"yes"; then
3259 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3260 elif test x"$with_ads_support" = x"auto"; then
3261 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3267 # Check to see whether there is enough LDAP functionality to be able
3268 # to build AD support.
3270 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3272 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3273 if test x"$with_ads_support" = x"yes"; then
3274 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3275 elif test x"$with_ads_support" = x"auto"; then
3276 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3281 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3283 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3284 if test x"$with_ads_support" = x"yes"; then
3285 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3286 elif test x"$with_ads_support" = x"auto"; then
3287 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3294 if test x"$with_ads_support" != x"no"; then
3296 # Do no harm to the values of CFLAGS and LIBS while testing for
3299 if test x$FOUND_KRB5 = x"no"; then
3300 #################################################
3301 # check for location of Kerberos 5 install
3302 AC_MSG_CHECKING(for kerberos 5 install path)
3304 [ --with-krb5=base-dir Locate Kerberos 5 support (default=/usr)],
3305 [ case "$withval" in
3307 AC_MSG_RESULT(no krb5-path given)
3314 AC_MSG_RESULT($withval)
3315 KRB5_CFLAGS="-I$withval/include"
3316 KRB5_CPPFLAGS="-I$withval/include"
3317 KRB5_LDFLAGS="-L$withval/lib"
3319 if test -x "$withval/bin/krb5-config"; then
3320 KRB5CONFIG=$withval/bin/krb5-config
3324 AC_MSG_RESULT(no krb5-path given)
3328 #################################################
3329 # check for krb5-config from recent MIT and Heimdal kerberos 5
3330 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3331 AC_MSG_CHECKING(for working krb5-config)
3332 if test -x "$KRB5CONFIG"; then
3333 ac_save_CFLAGS=$CFLAGS
3334 CFLAGS="";export CFLAGS
3335 ac_save_LDFLAGS=$LDFLAGS
3336 LDFLAGS="";export LDFLAGS
3337 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3338 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3339 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3340 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3341 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3342 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3346 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3349 if test x$FOUND_KRB5 = x"no"; then
3350 #################################################
3351 # see if this box has the SuSE location for the heimdal krb implementation
3352 AC_MSG_CHECKING(for /usr/include/heimdal)
3353 if test -d /usr/include/heimdal; then
3354 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3355 KRB5_CFLAGS="-I/usr/include/heimdal"
3356 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3357 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3360 KRB5_CFLAGS="-I/usr/include/heimdal"
3361 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3369 if test x$FOUND_KRB5 = x"no"; then
3370 #################################################
3371 # see if this box has the RedHat location for kerberos
3372 AC_MSG_CHECKING(for /usr/kerberos)
3373 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3374 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3375 KRB5_CFLAGS="-I/usr/kerberos/include"
3376 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3383 ac_save_CFLAGS=$CFLAGS
3384 ac_save_CPPFLAGS=$CPPFLAGS
3385 ac_save_LDFLAGS=$LDFLAGS
3387 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3388 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3389 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3391 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3393 # now check for krb5.h. Some systems have the libraries without the headers!
3394 # note that this check is done here to allow for different kerberos
3396 AC_CHECK_HEADERS(krb5.h)
3398 if test x"$ac_cv_header_krb5_h" = x"no"; then
3400 # Give a warning if AD support was not explicitly requested,
3401 # i.e with_ads_support = auto, otherwise die with an error.
3403 if test x"$with_ads_support" = x"yes"; then
3404 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3406 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3409 # Turn off AD support and restore CFLAGS and LIBS variables
3411 with_ads_support="no"
3413 CFLAGS=$ac_save_CFLAGS
3414 CPPFLAGS=$ac_save_CPPFLAGS
3415 LDFLAGS=$ac_save_LDFLAGS
3419 # Now we have determined whether we really want ADS support
3421 if test x"$with_ads_support" != x"no"; then
3426 # now check for gssapi headers. This is also done here to allow for
3427 # different kerberos include paths
3428 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3430 ##################################################################
3431 # we might need the k5crypto and com_err libraries on some systems
3432 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3433 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3436 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3437 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3438 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3440 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3441 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3443 ########################################################
3444 # now see if we can find the krb5 libs in standard paths
3445 # or as specified above
3446 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3447 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3449 ########################################################
3450 # now see if we can find the gssapi libs in standard paths
3451 if test x"$have_gssapi" != x"yes"; then
3452 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3455 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3456 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3457 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3458 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3459 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3460 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3461 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3462 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3463 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3464 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3465 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3466 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3467 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3468 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3469 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3470 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3471 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3472 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3473 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3474 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3475 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3476 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3477 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3478 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3479 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3480 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3481 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3482 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3483 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3484 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3485 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3486 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3487 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3488 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3489 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3490 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3492 LIBS="$KRB5_LIBS $LIBS"
3494 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3495 smb_krb5_ticket_has_keyinfo,
3504 krb5_enctype enctype;
3506 enctype = ticket.enc_part.enctype;
3507 kvno = ticket.enc_part.kvno;
3509 [ smb_krb5_ticket_has_keyinfo=yes ],
3510 [ smb_krb5_ticket_has_keyinfo=no ])
3513 if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3514 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3515 [Whether the krb5_ticket structure contains the kvno and enctype])
3518 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3521 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3522 [smb_krb5_verify_checksum=7],
3523 [smb_krb5_verify_checksum=6],
3526 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3528 AC_CACHE_CHECK([for checksum in krb5_checksum],
3529 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3530 AC_TRY_COMPILE([#include <krb5.h>],
3531 [krb5_checksum cksum; cksum.checksum.length = 0;],
3532 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3533 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3535 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3536 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3537 [Whether the krb5_checksum struct has a checksum property])
3540 AC_CACHE_CHECK([for etype in EncryptedData],
3541 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3542 AC_TRY_COMPILE([#include <krb5.h>],
3543 [EncryptedData edata; edata.etype = 0;],
3544 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3545 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3547 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3548 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3549 [Whether the EncryptedData struct has a etype property])
3552 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3553 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3554 AC_TRY_COMPILE([#include <krb5.h>],
3555 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3556 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3557 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3559 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3560 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3561 [Whether the krb5_ap_req struct has a ticket pointer])
3564 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3565 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3566 AC_TRY_COMPILE([#include <krb5.h>],
3567 [krb5_error err; err.e_data = NULL;],
3568 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3569 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3571 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3572 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3573 [Whether the krb5_error struct has a e_data pointer])
3576 AC_CACHE_CHECK([for krb5_crypto type],
3577 samba_cv_HAVE_KRB5_CRYPTO,[
3578 AC_TRY_COMPILE([#include <krb5.h>],
3579 [krb5_crypto crypto;],
3580 samba_cv_HAVE_KRB5_CRYPTO=yes,
3581 samba_cv_HAVE_KRB5_CRYPTO=no)])
3583 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3584 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3585 [Whether the type krb5_crypto exists])
3588 AC_CACHE_CHECK([for krb5_encrypt_block type],
3589 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3590 AC_TRY_COMPILE([#include <krb5.h>],
3591 [krb5_encrypt_block block;],
3592 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3593 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3595 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3596 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3597 [Whether the type krb5_encrypt_block exists])
3600 AC_CACHE_CHECK([for addrtype in krb5_address],
3601 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3602 AC_TRY_COMPILE([#include <krb5.h>],
3603 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3604 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3605 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3607 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3608 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3609 [Whether the krb5_address struct has a addrtype property])
3612 AC_CACHE_CHECK([for addr_type in krb5_address],
3613 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3614 AC_TRY_COMPILE([#include <krb5.h>],
3615 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3616 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3617 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3619 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3620 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3621 [Whether the krb5_address struct has a addr_type property])
3624 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3625 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3626 [AC_TRY_COMPILE([#include <krb5.h>],
3627 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3628 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3630 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3631 AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3632 [Whether the krb5_ticket struct has a enc_part2 property])
3635 AC_CACHE_CHECK([for keyblock in krb5_creds],
3636 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3637 AC_TRY_COMPILE([#include <krb5.h>],
3638 [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3639 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3640 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3642 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3643 AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3644 [Whether the krb5_creds struct has a keyblock property])
3647 AC_CACHE_CHECK([for session in krb5_creds],
3648 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3649 AC_TRY_COMPILE([#include <krb5.h>],
3650 [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3651 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3652 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3654 if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3655 AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3656 [Whether the krb5_creds struct has a session property])
3659 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3660 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3661 AC_TRY_COMPILE([#include <krb5.h>],
3662 [krb5_keyblock key; key.keyvalue.data = NULL;],
3663 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3664 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3666 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3667 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3668 [Whether the krb5_keyblock struct has a keyvalue property])
3671 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3672 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3673 AC_TRY_COMPILE([#include <krb5.h>],
3674 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3675 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3676 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3677 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3678 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3679 AC_TRY_COMPILE([#include <krb5.h>],
3680 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3681 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3682 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3683 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3684 # w.r.t. arcfour and windows, so we must not enable it here
3685 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3686 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3687 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3688 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3691 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3692 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3693 AC_TRY_COMPILE([#include <krb5.h>],
3694 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3695 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3696 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3698 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3699 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3700 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3703 AC_CACHE_CHECK([for KV5M_KEYTAB],
3704 samba_cv_HAVE_KV5M_KEYTAB,[
3705 AC_TRY_COMPILE([#include <krb5.h>],
3706 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3707 samba_cv_HAVE_KV5M_KEYTAB=yes,
3708 samba_cv_HAVE_KV5M_KEYTAB=no)])
3710 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3711 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3712 [Whether the KV5M_KEYTAB option is available])
3715 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3716 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3717 AC_TRY_COMPILE([#include <krb5.h>],
3718 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3719 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3720 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3722 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3723 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3724 [Whether KRB5_KU_OTHER_CKSUM is available])
3727 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3728 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3729 AC_TRY_COMPILE([#include <krb5.h>],
3730 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3731 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3732 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3734 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3735 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3736 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3739 AC_CACHE_CHECK([for the krb5_princ_component macro],
3740 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3741 AC_TRY_LINK([#include <krb5.h>],
3742 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3743 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3744 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3746 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3747 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3748 [Whether krb5_princ_component is available])
3751 AC_CACHE_CHECK([for key in krb5_keytab_entry],
3752 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3753 AC_TRY_COMPILE([#include <krb5.h>],
3754 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3755 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3756 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3758 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3759 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3760 [Whether krb5_keytab_entry has key member])
3763 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3764 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3765 AC_TRY_COMPILE([#include <krb5.h>],
3766 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3767 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3768 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3770 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3771 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3772 [Whether krb5_keytab_entry has keyblock member])
3775 AC_CACHE_CHECK([for magic in krb5_address],
3776 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3777 AC_TRY_COMPILE([#include <krb5.h>],
3778 [krb5_address addr; addr.magic = 0;],
3779 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3780 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3782 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3783 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3784 [Whether the krb5_address struct has a magic property])
3787 AC_CACHE_CHECK([for WRFILE: keytab support],
3788 samba_cv_HAVE_WRFILE_KEYTAB,[
3793 krb5_context context;
3796 krb5_init_context(&context);
3797 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3799 samba_cv_HAVE_WRFILE_KEYTAB=yes,
3800 samba_cv_HAVE_WRFILE_KEYTAB=no)])
3802 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3803 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3804 [Whether the WRFILE:-keytab is supported])
3807 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3808 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3809 AC_TRY_COMPILE([#include <krb5.h>],
3811 krb5_context context;
3812 krb5_principal principal;
3813 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3814 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3815 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3817 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3818 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3819 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3822 AC_CACHE_CHECK([for krb5_addresses type],
3823 samba_cv_HAVE_KRB5_ADDRESSES,[
3824 AC_TRY_COMPILE([#include <krb5.h>],
3825 [krb5_addresses addr;],
3826 samba_cv_HAVE_KRB5_ADDRESSES=yes,
3827 samba_cv_HAVE_KRB5_ADDRESSES=no)])
3829 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3830 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3831 [Whether the type krb5_addresses type exists])
3836 # Now the decisions whether we can support krb5
3838 # NOTE: all tests should be done before this block!
3841 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
3842 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
3846 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
3847 x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
3849 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
3853 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
3854 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
3856 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
3860 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
3861 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
3863 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
3867 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
3868 x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
3870 AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
3874 if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
3876 # We only need the following functions if we can't get the enctype
3877 # and kvno out of the ticket directly (ie. on Heimdal).
3879 if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
3881 AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
3885 if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
3887 AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
3893 if test x"$use_ads" = x"yes"; then
3894 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
3895 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
3896 if test x"$have_gssapi" = x"yes"; then
3897 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
3900 if test x"$with_ads_support" = x"yes"; then
3901 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
3903 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
3905 AC_REMOVE_DEFINE(HAVE_KRB5_H)
3906 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
3907 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
3908 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
3912 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
3913 AC_MSG_RESULT([$use_ads])
3915 LIBS="$ac_save_LIBS"
3918 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
3919 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
3922 ########################################################
3923 # Compile with DNS Updates support?
3925 with_dnsupdate_support=no
3926 AC_MSG_CHECKING([whether to enable DNS Updates support])
3928 AC_ARG_WITH(dnsupdate,
3929 [ --with-dnsupdate Enable DNS Updates support (default no)],
3930 [ case "$withval" in
3932 with_dnsupdate_support=$withval
3936 AC_MSG_RESULT($with_dnsupdate_support)
3938 if test x"$with_dnsupdate_support" != x"no"; then
3940 ################################################################
3941 # first test for Active Directory support being enabled
3942 #if test x"$with_ads_support" = x"no"; then
3943 # AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
3944 # with_dnsupdate_support=no
3946 ##################################################################
3947 # then test for uuid.h (necessary to generate unique DNS keynames
3948 # (uuid.h is required for this test)
3949 AC_CHECK_HEADERS(uuid/uuid.h)
3951 if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
3952 if test x"$with_dnsupdate_support" = x"yes"; then
3953 AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
3955 AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
3957 with_dnsupdate_support=no
3961 if test x"$with_dnsupdate_support" != x"no"; then
3964 ########################################################
3965 # now see if we can find the uuid libs in standard paths
3966 AC_CHECK_LIB_EXT(uuid, UUID_LIBS, uuid_generate)
3968 LIBS="$LIBS $UUID_LIBS"
3970 if test x"$ac_cv_lib_ext_uuid_uuid_generate" = x"yes"; then
3971 with_dnsupdate_support=yes
3972 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
3973 AC_MSG_CHECKING(whether UUID support is used)
3976 if test x"$with_dnsupdate_support" = x"yes"; then
3977 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
3979 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
3982 with_dnsupdate_support=no
3987 #################################################
3988 # check for automount support
3989 AC_MSG_CHECKING(whether to use automount)
3990 AC_ARG_WITH(automount,
3991 [ --with-automount Include automount support (default=no)],
3992 [ case "$withval" in
3995 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4004 #################################################
4005 # check for smbmount support
4006 AC_MSG_CHECKING(whether to use smbmount)
4007 AC_ARG_WITH(smbmount,
4008 [ --with-smbmount Include smbmount (Linux only) support (default=no)],
4009 [ case "$withval" in
4014 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
4015 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbmount bin/smbmnt bin/smbumount"
4018 AC_MSG_ERROR(not on a linux system!)
4029 #################################################
4030 # check for mount- and umount.cifs support
4032 INSTALL_CIFSMOUNT=""
4033 UNINSTALL_CIFSMOUNT=""
4034 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4035 AC_ARG_WITH(cifsmount,
4036 [ --with-cifsmount Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
4037 [ case "$withval" in
4045 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4046 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4047 INSTALL_CIFSMOUNT="installcifsmount"
4048 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4051 AC_MSG_ERROR(not on a linux system!)
4056 [ case "$host_os" in
4059 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4060 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4061 INSTALL_CIFSMOUNT="installcifsmount"
4062 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4071 #################################################
4072 # check for a PAM clear-text auth, accounts, password and session support
4073 with_pam_for_crypt=no
4075 AC_MSG_CHECKING(whether to try PAM support)
4077 [ --with-pam Include PAM support (default=no)],
4078 [ case "$withval" in
4084 AC_MSG_RESULT([$try_pam])
4087 create_pam_modules=no
4088 if test x"${try_pam}" != x"no";then
4090 create_pam_modules=yes
4092 AC_CHECK_HEADERS(security/pam_appl.h)
4093 if test x"$ac_cv_header_security_pam_appl_h" != x"yes"; then
4094 if test x"${try_pam}" = x"yes";then
4095 AC_MSG_ERROR([--with-pam=yes but security/pam_appl.h not found])
4098 create_pam_modules=no
4101 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4102 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4103 if test x"${try_pam}" = x"yes";then
4104 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4107 create_pam_modules=no
4110 AC_CHECK_HEADERS(security/pam_modules.h,,,[[
4111 #if HAVE_SECURITY_PAM_APPL_H
4112 #include <security/pam_appl.h>
4115 if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
4116 if test x"${try_pam}" = x"yes";then
4117 AC_MSG_ERROR([--with-pam=yes but security/pam_modules.h not found])
4119 create_pam_modules=no
4122 if test x"$use_pam" = x"yes"; then
4123 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4124 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4125 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4126 with_pam_for_crypt=yes
4128 if test x"$create_pam_modules" = x"yes"; then
4129 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4130 # this checks are optional,
4131 # we don't care about the results here
4132 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4133 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4135 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4138 AC_MSG_CHECKING(whether to use PAM support)
4139 AC_MSG_RESULT([$use_pam])
4141 AC_MSG_CHECKING(whether to have PAM MODULES support)
4142 AC_MSG_RESULT([$create_pam_modules])
4145 #################################################
4146 # check for pam_smbpass support
4148 INSTALL_PAM_MODULES=""
4149 UNINSTALL_PAM_MODULES=""
4150 AC_MSG_CHECKING(whether to use pam_smbpass)
4151 AC_ARG_WITH(pam_smbpass,
4152 [ --with-pam_smbpass Build PAM module for authenticating against passdb backends (default=no)],
4153 [ case "$withval" in
4157 # Conditions under which pam_smbpass should not be built.
4159 if test x"$BLDSHARED" != x"true"; then
4160 AC_MSG_ERROR([No support for shared modules])
4161 elif test x"$create_pam_modules" != x"yes"; then
4162 AC_MSG_ERROR([No support for PAM MODULES])
4164 PAM_MODULES="pam_smbpass"
4165 INSTALL_PAM_MODULES="installpammodules"
4166 UNINSTALL_PAM_MODULES="uninstallpammodules"
4177 ###############################################
4178 # test for where we get crypt() from
4179 AC_SEARCH_LIBS(crypt, [crypt],
4180 [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4181 AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4184 ## moved after the check for -lcrypt in order to
4185 ## ensure that the necessary libraries are included
4186 ## check checking for truncated salt. Wrapped by the
4187 ## $with_pam_for_crypt variable as above --jerry
4189 if test $with_pam_for_crypt = no; then
4190 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4192 LIBS="$AUTH_LIBS $LIBS"
4193 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4194 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4195 LIBS="$crypt_LIBS"])
4196 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4197 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4201 #################################################
4202 # check for a NISPLUS_HOME support
4203 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4204 AC_ARG_WITH(nisplus-home,
4205 [ --with-nisplus-home Include NISPLUS_HOME support (default=no)],
4206 [ case "$withval" in
4209 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4218 #################################################
4219 # check for syslog logging
4220 AC_MSG_CHECKING(whether to use syslog logging)
4222 [ --with-syslog Include experimental SYSLOG support (default=no)],
4223 [ case "$withval" in
4226 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4235 #################################################
4236 # check for experimental disk-quotas support
4238 samba_cv_WITH_QUOTAS=auto
4239 samba_cv_TRY_QUOTAS=no
4240 samba_cv_RUN_QUOTA_TESTS=auto
4241 samba_cv_WITH_SYS_QUOTAS=auto
4242 samba_cv_TRY_SYS_QUOTAS=auto
4243 samba_cv_SYSQUOTA_FOUND=no
4245 AC_MSG_CHECKING(whether to try disk-quotas support)
4247 [ --with-quotas Include disk-quota support (default=no)],
4248 [ case "$withval" in
4251 samba_cv_WITH_QUOTAS=yes
4252 samba_cv_TRY_QUOTAS=yes
4253 samba_cv_RUN_QUOTA_TESTS=yes
4254 #set sys quotas to auto in this case
4255 samba_cv_TRY_SYS_QUOTAS=auto
4259 samba_cv_WITH_QUOTAS=auto
4260 samba_cv_TRY_QUOTAS=auto
4261 samba_cv_RUN_QUOTA_TESTS=auto
4262 #set sys quotas to auto in this case
4263 samba_cv_TRY_SYS_QUOTAS=auto
4267 samba_cv_WITH_QUOTAS=no
4268 samba_cv_TRY_QUOTAS=no
4269 samba_cv_RUN_QUOTA_TESTS=no
4272 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4275 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4278 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4279 AC_ARG_WITH(sys-quotas,
4280 [ --with-sys-quotas Include lib/sysquotas.c support (default=auto)],
4281 [ case "$withval" in
4284 samba_cv_WITH_SYS_QUOTAS=yes
4285 samba_cv_TRY_SYS_QUOTAS=yes
4286 samba_cv_RUN_QUOTA_TESTS=yes
4290 samba_cv_WITH_SYS_QUOTAS=auto
4291 samba_cv_TRY_SYS_QUOTAS=auto
4292 samba_cv_RUN_QUOTA_TESTS=auto
4296 samba_cv_WITH_SYS_QUOTAS=no
4297 samba_cv_TRY_SYS_QUOTAS=no
4300 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4303 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4306 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4307 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4311 samba_cv_TRY_SYS_QUOTAS=yes
4312 samba_cv_RUN_QUOTA_TESTS=yes
4316 samba_cv_TRY_SYS_QUOTAS=no
4321 #############################################
4322 # only check for quota stuff if --with-quotas
4323 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4326 # on linux we didn't need to test we have builtin support
4328 samba_cv_SYSQUOTA_FOUND=yes
4329 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4330 samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4331 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4334 AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4335 samba_cv_found_xfs_header=yes
4336 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4340 # need to set this define when using static linking (BUG 1473)
4341 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4347 # some broken header files need this
4348 AC_CHECK_HEADER(asm/types.h,[
4349 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4350 AC_ADD_INCLUDE(<asm/types.h>)
4353 # For quotas on Veritas VxFS filesystems
4354 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4356 # For sys/quota.h and linux/quota.h
4357 AC_CHECK_HEADERS(sys/quota.h)
4359 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4360 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4361 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4363 #include "confdefs.h"
4364 #ifdef HAVE_SYS_TYPES_H
4365 #include <sys/types.h>
4367 #ifdef HAVE_ASM_TYPES_H
4368 #include <asm/types.h>
4370 #include <sys/quota.h>
4371 ],[int i = Q_XGETQUOTA;],
4372 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4373 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4374 samba_cv_found_xfs_header=yes
4378 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4379 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4381 #include "confdefs.h"
4382 #ifdef HAVE_SYS_QUOTA_H
4383 #include <sys/quota.h>
4387 D.dqb_fsoftlimit = 0;],
4388 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4389 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4390 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4394 # look for a working quota system
4396 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4397 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4399 #define HAVE_QUOTACTL_4A 1
4400 #define AUTOCONF_TEST 1
4401 #include "confdefs.h"
4402 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4403 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4404 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4405 samba_cv_SYSQUOTA_FOUND=yes;
4406 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4407 samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4411 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4412 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4414 #define HAVE_QUOTACTL_4B 1
4415 #define AUTOCONF_TEST 1
4416 #include "confdefs.h"
4417 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4418 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4419 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4420 echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4421 samba_cv_SYSQUOTA_FOUND=yes;
4422 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4423 samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4427 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4428 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4430 #define HAVE_QUOTACTL_3 1
4431 #define AUTOCONF_TEST 1
4432 #include "confdefs.h"
4433 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4434 samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4435 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4436 echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4437 samba_cv_SYSQUOTA_FOUND=yes;
4438 AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4439 samba_cv_sysquotas_file="lib/sysquotas_3.c"
4443 #################################################
4444 # check for mntent.h and struct mntent
4445 AC_CHECK_HEADERS(mntent.h)
4446 #################################################
4447 # check for setmntent,getmntent,endmntent
4448 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4450 #################################################
4451 # check for devnm.h and struct mntent
4452 AC_CHECK_HEADERS(devnm.h)
4453 #################################################
4455 AC_CHECK_FUNCS(devnm)
4457 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4458 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4459 # if --with-sys-quotas=yes then build it
4460 # you have can use the get/set quota command smb.conf
4462 samba_cv_SYSQUOTA_FOUND=auto
4464 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4465 # if --with-sys-quotas=yes then build it
4466 # you have can use the get/set quota command smb.conf
4468 samba_cv_TRY_SYS_QUOTAS=auto
4472 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4473 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4474 SAVE_CPPFLAGS="$CPPFLAGS"
4475 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4477 #include "confdefs.h"
4478 #define NO_PROTO_H 1
4479 #define NO_CONFIG_H 1
4480 #define HAVE_SYS_QUOTAS 1
4481 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4482 #include "${srcdir-.}/lib/sysquotas.c"
4483 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4484 CPPFLAGS="$SAVE_CPPFLAGS"
4486 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4487 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4488 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4489 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4490 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4491 samba_cv_WE_USE_SYS_QUOTAS=yes
4499 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4500 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4501 SAVE_CPPFLAGS="$CPPFLAGS"
4502 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4504 #include "confdefs.h"
4505 #define NO_PROTO_H 1
4506 #define NO_CONFIG_H 1
4507 #define HAVE_SYS_QUOTAS 1
4508 #define HAVE_XFS_QUOTAS 1
4509 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4510 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4511 CPPFLAGS="$SAVE_CPPFLAGS"
4513 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4514 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4515 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4520 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4521 SAVE_CPPFLAGS="$CPPFLAGS"
4522 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4524 #include "confdefs.h"
4525 #define NO_PROTO_H 1
4526 #define NO_CONFIG_H 1
4527 #include "${srcdir-.}/smbd/quotas.c"
4528 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4529 CPPFLAGS="$SAVE_CPPFLAGS"
4531 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4532 AC_MSG_CHECKING(whether to use the old quota support)
4533 if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4534 if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4535 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4545 ####################
4546 # End of quota check samba_cv_RUN_QUOTA_TESTS
4549 #################################################
4550 # check for experimental utmp accounting
4552 AC_MSG_CHECKING(whether to support utmp accounting)
4555 [ --with-utmp Include utmp accounting (default, if supported by OS)],
4556 [ case "$withval" in
4566 # utmp requires utmp.h
4567 # Note similar check earlier, when checking utmp details.
4569 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4570 utmp_no_reason=", no utmp.h on $host_os"
4574 # Display test results
4576 if test x"$WITH_UTMP" = x"yes"; then
4578 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4580 AC_MSG_RESULT(no$utmp_no_reason)
4585 UNINSTALLLIBCMD_SH=:
4588 if test $BLDSHARED = true; then
4589 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4590 UNINSTALLLIBCMD_SH="rm -f"
4592 if test $enable_static = yes; then
4593 INSTALLLIBCMD_A="\$(INSTALLCMD)"
4594 UNINSTALLLIBCMD_A="rm -f"
4597 #################################################
4598 # should we build libmsrpc?
4603 AC_MSG_CHECKING(whether to build the libmsrpc shared library)
4604 AC_ARG_WITH(libmsrpc,
4605 [ --with-libmsrpc Build the libmsrpc shared library (default=yes if shared libs supported)],
4606 [ case "$withval" in
4611 if test $BLDSHARED = true; then
4612 LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4617 AC_MSG_RESULT(no shared library support -- will supply static library)
4619 if test $enable_static = yes; then
4622 INSTALL_LIBMSRPC=installlibmsrpc
4623 UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4627 # if unspecified, default is to built it if possible.
4628 if test $BLDSHARED = true; then
4629 LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4634 AC_MSG_RESULT(no shared library support -- will supply static library)
4636 if test $enable_static = yes; then
4639 INSTALL_LIBMSRPC=installlibmsrpc
4640 UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4644 #################################################
4645 # should we build libaddns?
4650 AC_MSG_CHECKING(whether to build the libaddns shared library)
4651 AC_ARG_WITH(libaddns,
4652 [ --with-libaddns Build the libaddns shared library (default=yes if shared libs supported)],
4653 [ case "$withval" in
4658 if test $BLDSHARED = true; then
4659 LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4664 AC_MSG_RESULT(no shared library support -- will supply static library)
4666 if test $enable_static = yes; then
4669 INSTALL_LIBADDNS=installlibaddns
4670 UNINSTALL_LIBADDNS=uninstalllibaddns
4674 # if unspecified, default is to built it if possible.
4675 if test $BLDSHARED = true; then
4676 LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4681 AC_MSG_RESULT(no shared library support -- will supply static library)
4683 if test $enable_static = yes; then
4686 INSTALL_LIBADDNS=installlibaddns
4687 UNINSTALL_LIBADDNS=uninstalllibaddns
4690 #################################################
4691 # should we build libsmbclient?
4692 INSTALL_LIBSMBCLIENT=
4693 UNINSTALL_LIBSMBCLIENT=
4694 LIBSMBCLIENT_SHARED=
4696 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
4697 AC_ARG_WITH(libsmbclient,
4698 [ --with-libsmbclient Build the libsmbclient shared library (default=yes if shared libs supported)],
4699 [ case "$withval" in
4704 if test $BLDSHARED = true; then
4705 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4706 LIBSMBCLIENT=libsmbclient
4710 AC_MSG_RESULT(no shared library support -- will supply static library)
4712 if test $enable_static = yes; then
4713 LIBSMBCLIENT=libsmbclient
4715 INSTALL_LIBSMBCLIENT=installclientlib
4716 UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4720 # if unspecified, default is to built it if possible.
4721 if test $BLDSHARED = true; then
4722 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4723 LIBSMBCLIENT=libsmbclient
4727 AC_MSG_RESULT(no shared library support -- will supply static library)
4729 if test $enable_static = yes; then
4730 LIBSMBCLIENT=libsmbclient
4732 INSTALL_LIBSMBCLIENT=installclientlib
4733 UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4736 INSTALL_LIBSMBSHAREMODES=
4737 LIBSMBSHAREMODES_SHARED=
4739 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4740 AC_ARG_WITH(libsmbsharemodes,
4741 [ --with-libsmbsharemodes Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
4742 [ case "$withval" in
4747 if test $BLDSHARED = true; then
4748 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4749 LIBSMBSHAREMODES=libsmbsharemodes
4753 AC_MSG_RESULT(no shared library support -- will supply static library)
4755 if test $enable_static = yes; then
4756 LIBSMBSHAREMODES=libsmbsharemodes
4758 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4759 UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
4763 # if unspecified, default is to built it if possible.
4764 if test $BLDSHARED = true; then
4765 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4766 LIBSMBSHAREMODES=libsmbsharemodes
4770 AC_MSG_RESULT(no shared library support -- will supply static library)
4772 if test $enable_static = yes; then
4773 LIBSMBSHAREMODES=libsmbsharemodes
4775 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4778 #################################################
4779 # these tests are taken from the GNU fileutils package
4780 AC_CHECKING(how to get filesystem space usage)
4783 # Test for statvfs64.
4784 if test $space = no; then
4786 AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4788 #if defined(HAVE_UNISTD_H)
4791 #include <sys/types.h>
4792 #include <sys/statvfs.h>
4795 struct statvfs64 fsd;
4796 exit (statvfs64 (".", &fsd));
4798 fu_cv_sys_stat_statvfs64=yes,
4799 fu_cv_sys_stat_statvfs64=no,
4800 fu_cv_sys_stat_statvfs64=cross)])
4801 if test $fu_cv_sys_stat_statvfs64 = yes; then
4803 AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4807 # Perform only the link test since it seems there are no variants of the
4808 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
4809 # because that got a false positive on SCO OSR5. Adding the declaration
4810 # of a `struct statvfs' causes this test to fail (as it should) on such
4811 # systems. That system is reported to work fine with STAT_STATFS4 which
4812 # is what it gets when this test fails.
4813 if test $space = no; then
4815 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4816 [AC_TRY_LINK([#include <sys/types.h>
4817 #include <sys/statvfs.h>],
4818 [struct statvfs fsd; statvfs (0, &fsd);],
4819 fu_cv_sys_stat_statvfs=yes,
4820 fu_cv_sys_stat_statvfs=no)])
4821 if test $fu_cv_sys_stat_statvfs = yes; then
4823 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4827 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4828 # This is not the case on ancient Linux systems.
4830 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4831 AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4832 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4833 if test x"$samba_cv_fsid_int" = x"yes"; then
4834 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4837 if test $space = no; then
4838 # DEC Alpha running OSF/1
4839 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4840 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4842 #include <sys/param.h>
4843 #include <sys/types.h>
4844 #include <sys/mount.h>
4849 exit (statfs (".", &fsd, sizeof (struct statfs)));
4851 fu_cv_sys_stat_statfs3_osf1=yes,
4852 fu_cv_sys_stat_statfs3_osf1=no,
4853 fu_cv_sys_stat_statfs3_osf1=no)])
4854 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
4855 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
4857 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
4861 if test $space = no; then
4863 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
4864 member (AIX, 4.3BSD)])
4865 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
4867 #ifdef HAVE_SYS_PARAM_H
4868 #include <sys/param.h>
4870 #ifdef HAVE_SYS_MOUNT_H
4871 #include <sys/mount.h>
4873 #ifdef HAVE_SYS_VFS_H
4874 #include <sys/vfs.h>
4880 exit (statfs (".", &fsd));
4882 fu_cv_sys_stat_statfs2_bsize=yes,
4883 fu_cv_sys_stat_statfs2_bsize=no,
4884 fu_cv_sys_stat_statfs2_bsize=no)])
4885 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
4886 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
4888 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
4892 if test $space = no; then
4894 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
4895 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
4896 [AC_TRY_RUN([#include <sys/types.h>
4897 #include <sys/statfs.h>
4901 exit (statfs (".", &fsd, sizeof fsd, 0));
4903 fu_cv_sys_stat_statfs4=yes,
4904 fu_cv_sys_stat_statfs4=no,
4905 fu_cv_sys_stat_statfs4=no)])
4906 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
4907 if test $fu_cv_sys_stat_statfs4 = yes; then
4909 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
4913 if test $space = no; then
4915 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
4916 member (4.4BSD and NetBSD)])
4917 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
4918 [AC_TRY_RUN([#include <sys/types.h>
4919 #ifdef HAVE_SYS_PARAM_H
4920 #include <sys/param.h>
4922 #ifdef HAVE_SYS_MOUNT_H
4923 #include <sys/mount.h>
4929 exit (statfs (".", &fsd));
4931 fu_cv_sys_stat_statfs2_fsize=yes,
4932 fu_cv_sys_stat_statfs2_fsize=no,
4933 fu_cv_sys_stat_statfs2_fsize=no)])
4934 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
4935 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
4937 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
4941 if test $space = no; then
4943 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
4944 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
4945 [AC_TRY_RUN([#include <sys/types.h>
4946 #ifdef HAVE_SYS_PARAM_H
4947 #include <sys/param.h>
4949 #ifdef HAVE_SYS_MOUNT_H
4950 #include <sys/mount.h>
4952 #ifdef HAVE_SYS_FS_TYPES_H
4953 #include <sys/fs_types.h>
4958 /* Ultrix's statfs returns 1 for success,
4959 0 for not mounted, -1 for failure. */
4960 exit (statfs (".", &fsd) != 1);
4962 fu_cv_sys_stat_fs_data=yes,
4963 fu_cv_sys_stat_fs_data=no,
4964 fu_cv_sys_stat_fs_data=no)])
4965 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
4966 if test $fu_cv_sys_stat_fs_data = yes; then
4968 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
4973 # As a gating factor for large file support, in order to
4974 # use <4GB files we must have the following minimal support
4976 # long long, and a 64 bit off_t or off64_t.
4977 # If we don't have all of these then disable large
4980 AC_MSG_CHECKING([if large file support can be enabled])
4982 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
4983 #include <sys/types.h>
4989 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
4990 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
4991 AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
4993 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
4995 #################################################
4996 # check for cluster extensions
4998 AC_MSG_CHECKING(whether to include cluster support)
4999 AC_ARG_WITH(cluster-support,
5000 [ --with-cluster-support Enable cluster extensions (default=no)])
5001 if test "x$with_cluster_support" = "xyes"; then
5002 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5009 #################################################
5010 # check for ACL support
5012 AC_MSG_CHECKING(whether to support ACLs)
5013 AC_ARG_WITH(acl-support,
5014 [ --with-acl-support Include ACL support (default=no)],
5015 [ case "$withval" in
5020 AC_MSG_RESULT(Using UnixWare ACLs)
5021 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5022 default_static_modules="$default_static_modules vfs_solarisacl"
5025 AC_MSG_RESULT(Using solaris ACLs)
5026 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5027 ACL_LIBS="$ACL_LIBS -lsec"
5028 default_static_modules="$default_static_modules vfs_solarisacl"
5031 AC_MSG_RESULT(Using HPUX ACLs)
5032 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5033 default_static_modules="$default_static_modules vfs_hpuxacl"
5036 AC_MSG_RESULT(Using IRIX ACLs)
5037 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5038 default_static_modules="$default_static_modules vfs_irixacl"
5041 AC_MSG_RESULT(Using AIX ACLs)
5042 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5043 default_static_modules="$default_static_modules vfs_aixacl"
5046 AC_MSG_RESULT(Using Tru64 ACLs)
5047 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5048 ACL_LIBS="$ACL_LIBS -lpacl"
5049 default_static_modules="$default_static_modules vfs_tru64acl"
5052 AC_MSG_RESULT(Using FreeBSD posix ACLs)
5053 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
5054 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5057 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5058 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5059 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
5063 #include <sys/types.h>
5064 #include <sys/acl.h>
5068 acl_entry_t *entry_p;
5069 return acl_get_entry(acl, entry_id, entry_p);
5071 [samba_cv_HAVE_POSIX_ACLS=yes],
5072 [samba_cv_HAVE_POSIX_ACLS=no])
5075 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5076 AC_MSG_RESULT(Using posix ACLs)
5077 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5078 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5082 #include <sys/types.h>
5083 #include <sys/acl.h>
5085 acl_permset_t permset_d;
5087 return acl_get_perm_np(permset_d, perm);
5089 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5090 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5093 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5094 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5099 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5100 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
5104 #include <sys/types.h>
5105 #include <sys/acl.h>
5109 acl_entry_t *entry_p;
5110 return acl_get_entry( acl, entry_id, entry_p);
5112 [samba_cv_HAVE_POSIX_ACLS=yes],
5113 [samba_cv_HAVE_POSIX_ACLS=no])
5116 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5117 AC_MSG_RESULT(Using posix ACLs)
5118 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5119 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5123 #include <sys/types.h>
5124 #include <sys/acl.h>
5126 acl_permset_t permset_d;
5128 return acl_get_perm_np( permset_d, perm);
5130 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5131 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5134 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5135 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5143 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5146 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5150 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5151 default_static_modules="$default_static_modules vfs_posixacl"
5154 #################################################
5155 # check for AIO support
5157 AC_MSG_CHECKING(whether to support asynchronous io)
5158 AC_ARG_WITH(aio-support,
5159 [ --with-aio-support Include asynchronous io support (default=no)],
5160 [ case "$withval" in
5167 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5168 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5169 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5172 AC_TRY_LINK([#include <sys/types.h>
5174 [ struct aiocb a; return aio_read(&a);],
5175 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5177 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5180 AC_TRY_LINK([#include <sys/types.h>
5182 [ struct aiocb64 a; return aio_read64(&a);],
5183 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5185 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5186 AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5187 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5189 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5190 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5194 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5195 AC_MSG_CHECKING(for aio_read)
5196 AC_LINK_IFELSE([#include <aio.h>
5197 int main() { struct aiocb a; return aio_read(&a); }],
5198 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5199 [AC_MSG_RESULT(no)])
5201 AC_MSG_CHECKING(for aio_write)
5202 AC_LINK_IFELSE([#include <aio.h>
5203 int main() { struct aiocb a; return aio_write(&a); }],
5204 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5205 [AC_MSG_RESULT(no)])
5207 AC_MSG_CHECKING(for aio_fsync)
5208 AC_LINK_IFELSE([#include <aio.h>
5209 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5210 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5211 [AC_MSG_RESULT(no)])
5213 AC_MSG_CHECKING(for aio_return)
5214 AC_LINK_IFELSE([#include <aio.h>
5215 int main() { struct aiocb a; return aio_return(&a); }],
5216 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5217 [AC_MSG_RESULT(no)])
5219 AC_MSG_CHECKING(for aio_error)
5220 AC_LINK_IFELSE([#include <aio.h>
5221 int main() { struct aiocb a; return aio_error(&a); }],
5222 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5223 [AC_MSG_RESULT(no)])
5225 AC_MSG_CHECKING(for aio_cancel)
5226 AC_LINK_IFELSE([#include <aio.h>
5227 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5228 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5229 [AC_MSG_RESULT(no)])
5231 AC_MSG_CHECKING(for aio_suspend)
5232 AC_LINK_IFELSE([#include <aio.h>
5233 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5234 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5235 [AC_MSG_RESULT(no)])
5238 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5239 AC_MSG_CHECKING(for aio_read64)
5240 AC_LINK_IFELSE([#include <aio.h>
5241 int main() { struct aiocb a; return aio_read64(&a); }],
5242 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5243 [AC_MSG_RESULT(no)])
5245 AC_MSG_CHECKING(for aio_write64)
5246 AC_LINK_IFELSE([#include <aio.h>
5247 int main() { struct aiocb a; return aio_write64(&a); }],
5248 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5249 [AC_MSG_RESULT(no)])
5251 AC_MSG_CHECKING(for aio_fsync64)
5252 AC_LINK_IFELSE([#include <aio.h>
5253 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5254 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5255 [AC_MSG_RESULT(no)])
5257 AC_MSG_CHECKING(for aio_return64)
5258 AC_LINK_IFELSE([#include <aio.h>
5259 int main() { struct aiocb a; return aio_return64(&a); }],
5260 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5261 [AC_MSG_RESULT(no)])
5263 AC_MSG_CHECKING(for aio_error64)
5264 AC_LINK_IFELSE([#include <aio.h>
5265 int main() { struct aiocb a; return aio_error64(&a); }],
5266 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5267 [AC_MSG_RESULT(no)])
5269 AC_MSG_CHECKING(for aio_cancel64)
5270 AC_LINK_IFELSE([#include <aio.h>
5271 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5272 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5273 [AC_MSG_RESULT(no)])
5275 AC_MSG_CHECKING(for aio_suspend64)
5276 AC_LINK_IFELSE([#include <aio.h>
5277 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5278 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5279 [AC_MSG_RESULT(no)])
5286 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5289 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5293 #################################################
5294 # check for sendfile support
5296 with_sendfile_support=yes
5297 AC_MSG_CHECKING(whether to check to support sendfile)
5298 AC_ARG_WITH(sendfile-support,
5299 [ --with-sendfile-support Check for sendfile support (default=yes)],
5300 [ case "$withval" in
5307 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5308 AC_TRY_LINK([#include <sys/sendfile.h>],
5313 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5315 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5317 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5318 AC_TRY_LINK([#include <sys/sendfile.h>],
5323 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5325 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5327 # Try and cope with broken Linux sendfile....
5328 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5330 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5331 #undef _FILE_OFFSET_BITS
5333 #include <sys/sendfile.h>],
5338 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5340 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5342 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5343 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5344 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5345 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5346 elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5347 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5348 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5349 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5350 elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5351 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5352 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5358 *freebsd* | *dragonfly* )
5359 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5361 #include <sys/types.h>
5363 #include <sys/socket.h>
5364 #include <sys/uio.h>],
5366 int fromfd, tofd, ret, total=0;
5367 off_t offset, nwritten;
5370 hdr.headers = &hdtrl;
5372 hdr.trailers = NULL;
5374 hdtrl.iov_base = NULL;
5376 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5378 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5380 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5381 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5382 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5383 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5390 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5392 #include <sys/socket.h>
5393 #include <sys/uio.h>],
5397 struct iovec hdtrl[2];
5401 hdtrl[0].iov_base = 0;
5402 hdtrl[0].iov_len = 0;
5404 nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5406 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5407 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5408 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5409 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5410 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5415 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5417 #include <sys/socket.h>
5418 #include <sys/uio.h>],
5422 struct iovec hdtrl[2];
5426 hdtrl[0].iov_base = 0;
5427 hdtrl[0].iov_len = 0;
5429 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5431 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5432 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5433 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5434 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5435 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5442 AC_CHECK_LIB(sendfile,sendfilev)
5443 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5445 #include <sys/sendfile.h>],
5449 struct sendfilevec vec[2];
5455 vec[0].sfv_fd = SFV_FD_SELF;
5456 vec[0].sfv_flag = 0;
5461 vec[1].sfv_flag = 0;
5464 nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5466 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5468 if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5469 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5470 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5471 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5476 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5478 #include <sys/sendfile.h>],
5482 struct sendfilevec vec[2];
5488 vec[0].sfv_fd = SFV_FD_SELF;
5489 vec[0].sfv_flag = 0;
5494 vec[1].sfv_flag = 0;
5497 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5499 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5501 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5502 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5503 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5504 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5510 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5512 #include <sys/socket.h>],
5516 struct sf_parms hdtrl;
5520 hdtrl.header_data = 0;
5521 hdtrl.header_length = 0;
5522 hdtrl.file_descriptor = fromfd;
5523 hdtrl.file_offset = 0;
5524 hdtrl.file_bytes = 0;
5525 hdtrl.trailer_data = 0;
5526 hdtrl.trailer_length = 0;
5528 nwritten = send_file(&tofd, &hdtrl, 0);
5530 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5531 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5532 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5533 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5534 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5551 #################################################
5552 # Check whether winbind is supported on this platform. If so we need to
5553 # build and install client programs, sbin programs and shared libraries
5555 AC_MSG_CHECKING(whether to build winbind)
5557 # Initially, the value of $host_os decides whether winbind is supported
5561 # Define the winbind shared library name and any specific linker flags
5562 # it needs to be built with.
5564 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5565 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5566 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5567 NSSSONAMEVERSIONSUFFIX=""
5571 NSSSONAMEVERSIONSUFFIX=".2"
5572 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5575 # FreeBSD winbind client is implemented as a wrapper around
5576 # the Linux version.
5577 NSSSONAMEVERSIONSUFFIX=".1"
5578 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5579 nsswitch/winbind_nss_linux.o"
5580 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5581 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5585 # NetBSD winbind client is implemented as a wrapper
5586 # around the Linux version. It needs getpwent_r() to
5587 # indicate libc's use of the correct nsdispatch API.
5589 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5590 WINBIND_NSS_EXTRA_OBJS="\
5591 nsswitch/winbind_nss_netbsd.o \
5592 nsswitch/winbind_nss_linux.o"
5593 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5594 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5597 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5601 # IRIX has differently named shared libraries
5602 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5603 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5604 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5607 # Solaris winbind client is implemented as a wrapper around
5608 # the Linux version.
5609 NSSSONAMEVERSIONSUFFIX=".1"
5610 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5611 nsswitch/winbind_nss_linux.o"
5612 WINBIND_NSS_EXTRA_LIBS="-lsocket"
5615 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5618 # AIX has even differently named shared libraries. No
5619 # WINS support has been implemented yet.
5620 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5621 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5622 WINBIND_NSS="nsswitch/WINBIND"
5627 winbind_no_reason=", unsupported on $host_os"
5631 AC_SUBST(WINBIND_NSS)
5632 AC_SUBST(WINBIND_WINS_NSS)
5633 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5634 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5635 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5636 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5638 # Check the setting of --with-winbind
5640 AC_ARG_WITH(winbind,
5641 [ --with-winbind Build winbind (default, if supported by OS)],
5654 # We need unix domain sockets for winbind
5656 if test x"$HAVE_WINBIND" = x"yes"; then
5657 if test x"$samba_cv_unixsocket" = x"no"; then
5658 winbind_no_reason=", no unix domain socket support on $host_os"
5663 # Display test results
5665 if test x"$HAVE_WINBIND" = x"no"; then
5670 if test x"$HAVE_WINBIND" = x"yes"; then
5672 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5674 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5675 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5676 if test $BLDSHARED = true; then
5677 SHLIB_PROGS="$SHLIB_PROGS $WINBIND_NSS $WINBIND_WINS_NSS"
5679 if test x"$create_pam_modules" = x"yes"; then
5680 PAM_MODULES="$PAM_MODULES pam_winbind"
5681 INSTALL_PAM_MODULES="installpammodules"
5682 UNINSTALL_PAM_MODULES="uninstallpammodules"
5686 AC_MSG_RESULT(no$winbind_no_reason)
5689 # Solaris 10 does have new member in nss_XbyY_key
5690 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5691 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5692 [#include <nss_dbdefs.h>])
5694 # Solaris has some extra fields in struct passwd that need to be
5695 # initialised otherwise nscd crashes.
5697 AC_CHECK_MEMBER(struct passwd.pw_comment,
5698 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5701 AC_CHECK_MEMBER(struct passwd.pw_age,
5702 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5705 # AIX 4.3.x and 5.1 do not have as many members in
5706 # struct secmethod_table as AIX 5.2
5707 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5708 [#include <usersec.h>])
5709 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5710 [#include <usersec.h>])
5712 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5713 AC_TRY_COMPILE([#include <sys/types.h>
5714 #include <sys/socket.h>],
5717 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5719 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5720 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5721 AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5725 #################################################
5726 # Check to see if we should use the included popt
5728 AC_ARG_WITH(included-popt,
5729 [ --with-included-popt use bundled popt library, not from system],
5740 if test x"$INCLUDED_POPT" != x"yes"; then
5741 AC_CHECK_LIB(popt, poptGetContext,
5742 INCLUDED_POPT=no, INCLUDED_POPT=yes)
5745 AC_MSG_CHECKING(whether to use included popt)
5746 if test x"$INCLUDED_POPT" = x"yes"; then
5748 BUILD_POPT='$(POPT_OBJ)'
5749 POPTLIBS='$(POPT_OBJ)'
5750 FLAGS1="-I\$(srcdir)/popt"
5756 AC_SUBST(BUILD_POPT)
5760 #################################################
5761 # Check to see if we should use the included iniparser
5763 AC_ARG_WITH(included-iniparser,
5764 [ --with-included-iniparser use bundled iniparser library, not from system],
5768 INCLUDED_INIPARSER=yes
5771 INCLUDED_INIPARSER=no
5775 if test x"$INCLUDED_INIPARSER" != x"yes"; then
5776 AC_CHECK_LIB(iniparser, iniparser_load,
5777 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5780 AC_MSG_CHECKING(whether to use included iniparser)
5781 if test x"$INCLUDED_INIPARSER" = x"yes"; then
5783 BUILD_INIPARSER='$(INIPARSER_OBJ)'
5785 FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
5789 INIPARSERLIBS="-liniparser"
5791 AC_SUBST(BUILD_INIPARSER)
5792 AC_SUBST(INIPARSERLIBS)
5797 #################################################
5798 # Check if the user wants Python
5800 # At the moment, you can use this to set which Python binary to link
5801 # against. (Libraries built for Python2.2 can't be used by 2.1,
5802 # though they can coexist in different directories.) In the future
5803 # this might make the Python stuff be built by default.
5805 # Defaulting python breaks the clean target if python isn't installed
5810 [ --with-python=PYTHONNAME build Python libraries],
5811 [ case "${withval-python}" in
5814 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
5820 PYTHON=${withval-python}
5825 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
5827 eval MODULE_DEFAULT_$i=STATIC
5830 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
5832 dnl Fall back to static if we cannot build shared libraries
5833 eval MODULE_DEFAULT_$i=STATIC
5835 if test $BLDSHARED = true; then
5836 eval MODULE_DEFAULT_$i=SHARED
5840 dnl Always built these modules static
5841 MODULE_rpc_spoolss=STATIC
5842 MODULE_rpc_srvsvc=STATIC
5843 MODULE_idmap_tdb=STATIC
5844 MODULE_idmap_passdb=STATIC
5845 MODULE_idmap_nss=STATIC
5847 AC_ARG_WITH(static-modules,
5848 [ --with-static-modules=MODULES Comma-seperated list of names of modules to statically link in],
5849 [ if test $withval; then
5850 for i in `echo $withval | sed -e 's/,/ /g'`
5852 eval MODULE_$i=STATIC
5856 AC_ARG_WITH(shared-modules,
5857 [ --with-shared-modules=MODULES Comma-seperated list of names of modules to build shared],
5858 [ if test $withval; then
5859 for i in `echo $withval | sed -e 's/,/ /g'`
5861 eval MODULE_$i=SHARED
5865 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
5866 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
5867 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
5868 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
5869 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
5872 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
5873 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
5874 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
5875 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
5876 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
5877 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
5878 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
5879 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
5880 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
5881 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
5882 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
5883 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
5884 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
5885 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
5886 SMB_MODULE(rpc_unixinfo, \$(RPC_UNIXINFO_OBJ), "bin/librpc_unixinfo.$SHLIBEXT", RPC)
5887 SMB_SUBSYSTEM(RPC,smbd/server.o)
5889 SMB_MODULE(idmap_ldap, nsswitch/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
5890 SMB_MODULE(idmap_tdb, nsswitch/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
5891 SMB_MODULE(idmap_passdb, nsswitch/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
5892 SMB_MODULE(idmap_nss, nsswitch/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
5893 SMB_MODULE(idmap_rid, nsswitch/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
5894 SMB_MODULE(idmap_ad, nsswitch/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
5895 SMB_SUBSYSTEM(IDMAP, nsswitch/idmap.o)
5897 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
5898 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
5899 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
5900 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
5901 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
5903 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
5904 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
5905 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
5906 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
5907 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
5908 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
5909 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
5910 SMB_SUBSYSTEM(AUTH,auth/auth.o)
5912 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
5913 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
5914 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
5915 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
5916 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
5917 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
5918 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
5919 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
5920 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
5921 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
5922 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
5923 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
5924 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
5925 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
5926 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
5927 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
5928 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
5929 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
5930 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
5931 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
5932 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
5933 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
5934 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
5935 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
5936 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
5938 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
5940 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
5942 #################################################
5943 # do extra things if we are running insure
5945 if test "${ac_cv_prog_CC}" = "insure"; then
5946 CPPFLAGS="$CPPFLAGS -D__INSURE__"
5949 #################################################
5950 # If run from the build farm, enable NASTY hacks
5951 #################################################
5952 AC_MSG_CHECKING(whether to enable build farm hacks)
5953 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
5955 AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
5960 #################################################
5961 # check for bad librt/libpthread interactions
5963 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
5964 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
5965 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
5966 x"$samba_cv_HAVE_AIO" = x"yes" ; then
5968 SMB_IF_RTSIGNAL_BUG(
5970 # Have RT_SIGNAL bug, need to check whether the problem will
5971 # affect anything we have configured.
5974 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
5975 if test x"$rt_signal_lease_ok" = x"no" ; then
5980 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
5981 if test x"$rt_signal_notify_ok" = x"no" ; then
5986 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
5987 x"$samba_cv_HAVE_AIO" = x"yes" ; then
5988 if test x"$rt_signal_aio_ok" = x"no" ; then
5993 if test x"$rt_do_error" = x"yes" ; then
5994 SMB_IS_LIBPTHREAD_LINKED(
5998 *** On this platforms, linking Samba against pthreads causes problems
5999 *** with the oplock and change notification mechanisms. You may be
6000 *** using pthreads as a side-effect of using the --with-aio-support
6001 *** or --with-profiling-data options. Please remove these and try again.
6008 *** On this platform, the oplock and change notification mechanisms do not
6009 *** appear to work. Please report this problem to samba-technical@samba.org
6010 *** and attach the config.log file from this directory.
6014 AC_MSG_ERROR(unable to use realtime signals on this platform)
6018 # no RT_SIGNAL bug, we are golden
6019 SMB_IS_LIBPTHREAD_LINKED(
6021 AC_MSG_WARN(using libpthreads - this may degrade performance)
6026 # cross compiling, I hope you know what you are doing
6032 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6033 LIB_REMOVE_USR_LIB(LDFLAGS)
6034 LIB_REMOVE_USR_LIB(LIBS)
6035 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6037 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6038 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6039 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6041 #################################################
6042 # Display summary of libraries detected
6044 AC_MSG_RESULT([Using libraries:])
6045 AC_MSG_RESULT([ LIBS = $LIBS])
6046 if test x"$with_ads_support" != x"no"; then
6047 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6049 if test x"$with_ldap_support" != x"no"; then
6050 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6052 if test x"$with_dnsupdate_support" != x"no"; then
6053 AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS])
6055 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6057 #################################################
6058 # final configure stuff
6060 AC_MSG_CHECKING([configure summary])
6061 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6063 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6064 AC_MSG_WARN([cannot run when cross-compiling]))
6069 # Stuff the smbd-only libraries at the end of the smbd link
6070 # path (if we have them).
6071 SMBD_LIBS="$samba_fam_libs $samba_dmapi_libs"
6074 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh)
6076 #################################################
6077 # Print very concise instructions on building/use
6078 if test "x$enable_dmalloc" = xyes
6080 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
6081 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])