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)
7 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
11 AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
15 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
16 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
18 SAMBA_VERSION_GIT_COMMIT_FULLREV=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_GIT_COMMIT_FULLREV' | cut -d ' ' -f3- | cut -d '"' -f2`
19 if test -n "${SAMBA_VERSION_GIT_COMMIT_FULLREV}";then
20 echo "BUILD COMMIT REVISION: ${SAMBA_VERSION_GIT_COMMIT_FULLREV}"
22 SAMBA_VERSION_GIT_COMMIT_DATE=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_GIT_COMMIT_DATE' | cut -d ' ' -f3-`
23 if test -n "${SAMBA_VERSION_GIT_COMMIT_DATE}";then
24 echo "BUILD COMMIT DATE: ${SAMBA_VERSION_GIT_COMMIT_DATE}"
26 SAMBA_VERSION_GIT_COMMIT_TIME=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_GIT_COMMIT_TIME' | cut -d ' ' -f3-`
27 if test -n "${SAMBA_VERSION_GIT_COMMIT_TIME}";then
28 echo "BUILD COMMIT TIME: ${SAMBA_VERSION_GIT_COMMIT_TIME}"
30 # just to keep the build-farm gui happy for now...
31 echo "BUILD REVISION: ${SAMBA_VERSION_GIT_COMMIT_TIME}"
34 AC_LIBREPLACE_LOCATION_CHECKS
39 #################################################
40 # Directory handling stuff to support both the
41 # legacy SAMBA directories and FHS compliant
43 AC_PREFIX_DEFAULT(/usr/local/samba)
45 rootsbindir="\${SBINDIR}"
46 lockdir="\${VARDIR}/locks"
47 piddir="\${VARDIR}/locks"
48 test "${mandir}" || mandir="\${prefix}/man"
49 logfilebase="\${VARDIR}"
50 privatedir="\${prefix}/private"
51 test "${libdir}" || libdir="\${prefix}/lib"
52 pammodulesdir="\${LIBDIR}/security"
53 configdir="\${LIBDIR}"
54 swatdir="\${prefix}/swat"
55 codepagedir="\${LIBDIR}"
56 statedir="\${LOCKDIR}"
57 cachedir="\${LOCKDIR}"
60 [ --with-fhs Use FHS-compliant paths (default=no)],
63 lockdir="\${VARDIR}/lib/samba"
64 piddir="\${VARDIR}/run"
65 mandir="\${prefix}/share/man"
66 logfilebase="\${VARDIR}/log/samba"
67 privatedir="\${CONFIGDIR}/private"
68 test "${libdir}" || libdir="\${prefix}/lib/samba"
69 configdir="\${sysconfdir}/samba"
70 swatdir="\${DATADIR}/samba/swat"
71 codepagedir="\${LIBDIR}"
72 statedir="\${VARDIR}/lib/samba"
73 cachedir="\${VARDIR}/lib/samba"
74 AC_DEFINE(FHS_COMPATIBLE, 1, [Whether to use fully FHS-compatible paths])
78 #################################################
79 # set private directory location
80 AC_ARG_WITH(privatedir,
81 [ --with-privatedir=DIR Where to put smbpasswd ($ac_default_prefix/private)],
85 # Just in case anybody calls it without argument
87 AC_MSG_WARN([--with-privatedir called without argument - will use default])
94 #################################################
95 # set root sbin directory location
96 AC_ARG_WITH(rootsbindir,
97 [ --with-rootsbindir=DIR Which directory to use for root sbin ($ac_default_prefix/sbin)],
101 # Just in case anybody calls it without argument
103 AC_MSG_WARN([--with-rootsbindir called without argument - will use default])
106 rootsbindir="$withval"
110 #################################################
111 # set lock directory location
113 [ --with-lockdir=DIR Where to put lock files ($ac_default_prefix/var/locks)],
117 # Just in case anybody calls it without argument
119 AC_MSG_WARN([--with-lockdir called without argument - will use default])
126 #################################################
127 # set pid directory location
129 [ --with-piddir=DIR Where to put pid files ($ac_default_prefix/var/locks)],
133 # Just in case anybody calls it without argument
135 AC_MSG_WARN([--with-piddir called without argument - will use default])
142 #################################################
143 # set SWAT directory location
145 [ --with-swatdir=DIR Where to put SWAT files ($ac_default_prefix/swat)],
149 # Just in case anybody does it
151 AC_MSG_WARN([--with-swatdir called without argument - will use default])
158 #################################################
159 # set configuration directory location
160 AC_ARG_WITH(configdir,
161 [ --with-configdir=DIR Where to put configuration files ($libdir)],
165 # Just in case anybody does it
167 AC_MSG_WARN([--with-configdir called without argument - will use default])
174 #################################################
175 # set log directory location
176 AC_ARG_WITH(logfilebase,
177 [ --with-logfilebase=DIR Where to put log files ($VARDIR)],
181 # Just in case anybody does it
183 AC_MSG_WARN([--with-logfilebase called without argument - will use default])
186 logfilebase="$withval"
191 #################################################
192 # set ctdb source directory location
194 [ --with-ctdb=DIR Where to find ctdb sources],
197 AC_MSG_WARN([--with-ctdb called without argument])
204 #################################################
205 # set lib directory location
207 [ --with-libdir=DIR Where to put libdir ($libdir)],
211 # Just in case anybody does it
213 AC_MSG_WARN([--with-libdir without argument - will use default])
220 #################################################
221 # set PAM modules directory location
222 AC_ARG_WITH(pammodulesdir,
223 [ --with-pammodulesdir=DIR Which directory to use for PAM modules ($ac_default_prefix/$libdir/security)],
227 # Just in case anybody calls it without argument
229 AC_MSG_WARN([--with-pammodulesdir called without argument - will use default])
232 pammodulesdir="$withval"
236 #################################################
237 # set man directory location
239 [ --with-mandir=DIR Where to put man pages ($mandir)],
243 # Just in case anybody does it
245 AC_MSG_WARN([--with-mandir without argument - will use default])
253 [ --with-cfenc=HEADERDIR Use internal CoreFoundation encoding API
254 for optimization (Mac OS X/Darwin only)],
256 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
257 # Should have been in framework $withval/CoreFoundation.framework/Headers.
259 $withval/CoreFoundation/StringEncodings.subproj \
260 $withval/StringEncodings.subproj \
261 $withval/CoreFoundation.framework/Headers \
265 if test -r $d/CFStringEncodingConverter.h; then
266 ln -sfh $d include/CoreFoundation
271 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
272 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
273 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/talloc"
274 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/tdb/include"
275 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
276 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
278 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
280 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
281 if test "x${srcdir-.}" != "x."; then
282 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
288 AC_SUBST(logfilebase)
294 AC_SUBST(codepagedir)
297 AC_SUBST(rootsbindir)
298 AC_SUBST(pammodulesdir)
300 dnl Unique-to-Samba variables we'll be playing with.
301 AC_SUBST(SAMBA_CPPFLAGS)
306 AC_SUBST(MODULE_EXPORTS)
307 AC_SUBST(DSO_EXPORTS)
311 AC_SUBST(PIE_LDFLAGS)
313 AC_SUBST(INSTALLLIBCMD_SH)
314 AC_SUBST(INSTALLLIBCMD_A)
315 AC_SUBST(UNINSTALLLIBCMD_SH)
316 AC_SUBST(UNINSTALLLIBCMD_A)
317 AC_SUBST(INSTALL_LIBADDNS)
318 AC_SUBST(UNINSTALL_LIBADDNS)
319 AC_SUBST(LIBADDNS_SHARED)
322 AC_SUBST(INSTALL_LIBWBCLIENT)
323 AC_SUBST(UNINSTALL_LIBWBCLIENT)
324 AC_SUBST(LIBWBCLIENT_SHARED)
325 AC_SUBST(LIBWBCLIENT_STATIC)
326 AC_SUBST(LIBWBCLIENT)
327 AC_SUBST(WINBIND_LIBS)
329 AC_SUBST(LIBSAMBAUTIL_SHARED)
331 AC_SUBST(INSTALL_LIBSMBCLIENT)
332 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
333 AC_SUBST(LIBSMBCLIENT_SHARED)
334 AC_SUBST(LIBSMBCLIENT)
335 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
336 AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
337 AC_SUBST(LIBSMBSHAREMODES_SHARED)
338 AC_SUBST(LIBSMBSHAREMODES)
339 AC_SUBST(INSTALL_LIBNETAPI)
340 AC_SUBST(UNINSTALL_LIBNETAPI)
341 AC_SUBST(LIBNETAPI_SHARED)
346 AC_SUBST(PASSDB_LIBS)
351 AC_SUBST(PAM_MODULES)
352 AC_SUBST(INSTALL_PAM_MODULES)
353 AC_SUBST(UNINSTALL_PAM_MODULES)
354 AC_SUBST(NSS_MODULES)
355 AC_SUBST(EXTRA_BIN_PROGS)
356 AC_SUBST(SMBMOUNT_PROGS)
357 AC_SUBST(CIFSMOUNT_PROGS)
358 AC_SUBST(INSTALL_CIFSMOUNT)
359 AC_SUBST(UNINSTALL_CIFSMOUNT)
360 AC_SUBST(CIFSSPNEGO_PROGS)
361 AC_SUBST(INSTALL_CIFSSPNEGO)
362 AC_SUBST(UNINSTALL_CIFSSPNEGO)
363 AC_SUBST(EXTRA_SBIN_PROGS)
364 AC_SUBST(EXTRA_ALL_TARGETS)
365 AC_SUBST(CONFIG_LIBS)
368 ## check for --enable-debug first before checking CFLAGS before
369 ## so that we don't mix -O and -g
371 [ --enable-debug Turn on compiler debugging information (default=no)],
372 [if eval "test x$enable_debug = xyes"; then
373 CFLAGS="${CFLAGS} -g"
376 # compile with optimization and without debugging by default, but
377 # allow people to set their own preference.
378 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
379 # if it has no value. This prevent *very* large debug binaries from occurring
381 if test "x$CFLAGS" = x; then
385 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
387 AC_LIBREPLACE_CC_CHECKS
389 m4_include(lib/socket_wrapper/config.m4)
390 m4_include(lib/nss_wrapper/config.m4)
392 SWAT_SBIN_TARGETS='bin/swat$(EXEEXT)'
393 SWAT_INSTALL_TARGETS=installswat
396 [ --enable-swat Build the SWAT tool (default=yes)],
398 case "$enable_swat" in
401 SWAT_INSTALL_TARGETS=''
406 AC_SUBST(SWAT_SBIN_TARGETS)
407 AC_SUBST(SWAT_INSTALL_TARGETS)
409 #################################################
410 # set prefix for 'make test'
412 AC_SUBST(selftest_prefix)
413 AC_ARG_WITH(selftest-prefix,
414 [ --with-selftest-prefix=DIR The prefix where make test will be run ($selftest_prefix)],
417 AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
420 selftest_prefix="$withval"
425 #################################################
426 # set path of samba4's smbtorture
428 AC_SUBST(smbtorture4_path)
429 AC_ARG_WITH(smbtorture4_path,
430 [ --with-smbtorture4-path=PATH The path to a samba4 smbtorture for make test (none)],
433 AC_MSG_ERROR([--with-smbtorture4-path should take a path])
436 smbtorture4_path="$withval"
437 if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
438 AC_MSG_ERROR(['$smbtorture_path' does not exist!])
444 AC_ARG_ENABLE(developer, [ --enable-developer Turn on developer warnings and debugging (default=no)],
445 [if eval "test x$enable_developer = xyes"; then
449 AC_ARG_ENABLE(krb5developer, [ --enable-krb5developer Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
450 [if eval "test x$enable_krb5developer = xyes"; then
455 # Probe the gcc version for extra CFLAGS. We always stash these in
456 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
457 # Makefile edit, avoiding the need to re-run configure.
458 if test x"$ac_cv_prog_gcc" = x"yes" ; then
459 DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
460 # Add -Wdeclaration-after-statement if compiler supports it
462 [that the C compiler understands -Wdeclaration-after-statement],
463 samba_cv_HAVE_Wdeclaration_after_statement, [
468 }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
469 samba_cv_HAVE_Wdeclaration_after_statement=yes,
470 samba_cv_HAVE_Wdeclaration_after_statement=no,
471 samba_cv_HAVE_Wdeclaration_after_statement=cross)
474 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
475 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
478 #-Werror-implicit-function-declaration
480 [that the C compiler understands -Werror-implicit-function-declaration],
481 samba_cv_HAVE_Werror_implicit_function_declaration, [
486 }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
487 samba_cv_HAVE_Werror_implicit_function_declaration=yes,
488 samba_cv_HAVE_Werror_implicit_function_declaration=no,
489 samba_cv_HAVE_Werror_implicit_function_declaration=cross)
491 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
492 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
495 # krb5developer is like developer, except we don't get
496 # -Wstrict-prototypes.
497 if test x"$krb5_developer" != x"$yes" ; then
498 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
502 AC_ARG_ENABLE(dmalloc, [ --enable-dmalloc Enable heap debugging [default=no]])
504 if test "x$enable_dmalloc" = xyes
506 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
507 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
508 [Define to check invariants around some common functions])
509 LIBS="$LIBS -ldmalloc"
512 #################################################
513 # check for a shared memory profiling support
514 AC_MSG_CHECKING(whether to use profiling)
515 AC_ARG_WITH(profiling-data,
516 [ --with-profiling-data Include gathering source code profile information (default=no)],
520 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
521 samba_cv_WITH_PROFILE=yes
525 samba_cv_WITH_PROFILE=no
531 dnl Checks for programs.
535 AC_PATH_PROG(PERL, perl)
537 AC_CHECK_TOOL(AR, ar)
539 dnl Check if we use GNU ld
543 dnl Certain versions of GNU ld the default is not to have the
544 dnl --allow-shlib-undefined flag defined. This causes a stackload of
545 dnl warnings when building modules.
546 if test "$ac_cv_prog_gnu_ld" = "yes"; then
547 ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
548 AC_MSG_CHECKING(GNU ld release date)
550 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'`
552 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
553 if test -n "$ac_cv_gnu_ld_date"; then
554 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
555 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
557 if test "$ac_cv_gnu_ld_date" -gt 20030101; then
558 ac_cv_gnu_ld_version_script=yes
561 AC_MSG_CHECKING(GNU ld release version)
563 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
564 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
565 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
567 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
568 AC_MSG_CHECKING(GNU ld release version major)
569 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
570 AC_MSG_CHECKING(GNU ld release version minor)
571 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
572 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
573 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
575 if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_l= d_vernr_major"=2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then
576 ac_cv_gnu_ld_version_script=yes
581 dnl look for executable suffix
584 dnl Check if C compiler understands -c and -o at the same time
586 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
593 dnl Check if the C compiler understands -Werror
594 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
599 }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
600 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
601 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
602 Werror_FLAGS="-Werror"
604 dnl Check if the C compiler understands -w2
605 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
610 }],[-w2],[$CPPFLAGS],[$LDFLAGS],
611 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
612 if test x"$samba_cv_HAVE_w2" = x"yes"; then
617 dnl Check if the C compiler understands volatile (it should, being ANSI).
618 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
619 AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
620 samba_cv_volatile=yes,samba_cv_volatile=no)])
621 if test x"$samba_cv_volatile" = x"yes"; then
622 AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
625 ############################################
626 # check if the compiler can handle negative enum values
627 # and don't truncate the values to INT_MAX
628 # a runtime test is needed here
630 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
634 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
636 enum negative_values v1 = NEGATIVE_VALUE;
637 unsigned v2 = NEGATIVE_VALUE;
639 if (v1 != 0xFFFFFFFF) {
640 printf("%u != 0xFFFFFFFF\n", v1);
643 if (v2 != 0xFFFFFFFF) {
644 printf("%u != 0xFFFFFFFF\n", v2);
651 SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
652 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
653 AC_MSG_WARN([using --unit-enums for pidl])
654 PIDL_ARGS="$PIDL_ARGS --uint-enums"
657 dnl Figure out the flags to support named structure initializers
659 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
661 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
662 AC_MSG_CHECKING(uname -s)
663 AC_MSG_RESULT(${UNAME_S})
665 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
666 AC_MSG_CHECKING(uname -r)
667 AC_MSG_RESULT(${UNAME_R})
669 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
670 AC_MSG_CHECKING(uname -m)
671 AC_MSG_RESULT(${UNAME_M})
673 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
674 AC_MSG_CHECKING(uname -p)
675 AC_MSG_RESULT(${UNAME_P})
677 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
678 AC_MSG_CHECKING(uname -i)
679 AC_MSG_RESULT(${UNAME_I})
681 dnl Add #include for broken IRIX header files
684 #TODO add to libreplace
685 if test x"$ac_cv_prog_gcc" != x"yes" ; then
686 dnl Fix sensible defaults for MIPSPro compilers. The
687 dnl error numbers are valid for the 7.3 compilers,
688 dnl hopefully also valid for the 7.4 series.
690 dnl Bugzilla 3801. Force an error on warning 1035
691 dnl so we don't incorrectly detect stdint.h. This
692 dnl warning is emitted for #error directives.
693 CFLAGS="$CFLAGS -diag_error 1035"
694 dnl 1209: Controlling expression is constant
695 dnl 1174: Function foo declared but never referenced
696 dnl 3201: Parameter foo was never referenced
697 CFLAGS="$CFLAGS -woff 1209,1174,3201"
705 dnl Add modules that have to be built by default here
706 dnl These have to be built static:
707 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_winreg rpc_initshutdown rpc_lsa_ds rpc_wkssvc rpc_svcctl2 rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc2 rpc_spoolss rpc_eventlog2 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
709 dnl These are preferably build shared, and static if dlopen() is not available
710 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_syncops vfs_xattr_tdb"
712 if test "x$developer" = xyes; then
713 default_static_modules="$default_static_modules rpc_rpcecho"
714 default_shared_modules="$default_shared_modules charset_weird"
718 # Config CPPFLAG settings for strange OS's that must be set
719 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
720 # case statement; its first reference must be unconditional.
725 # Defines needed for HPUX support.
726 # HPUX has bigcrypt but (sometimes?) doesn't use it for
727 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
731 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
737 # CRAY Unicos has broken const handling
739 AC_MSG_RESULT([disabling const])
740 CPPFLAGS="$CPPFLAGS -Dconst="
744 # AIX4.x doesn't even admit to having large
745 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
748 AC_MSG_RESULT([enabling large file support])
749 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
750 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
753 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
754 # to the existance of large files..
755 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
756 # recommendations on large file support, however it makes the
757 # compile work using gcc 2.7 and 2.8, whereas using the Sun
758 # recommendation makes the compile fail on gcc2.7. JRA.
760 # Solaris uses SYSV printing. Make sure to set that here. --jerry
763 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
765 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
766 AC_MSG_RESULT([no large file support])
769 AC_MSG_RESULT([enabling large file support])
770 if test "$ac_cv_prog_gcc" = yes; then
771 ${CC-cc} -v >conftest.c 2>&1
772 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
774 case "$ac_cv_gcc_compiler_version_number" in
775 *"gcc version 2.6"*|*"gcc version 2.7"*)
776 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
777 LDFLAGS="$LDFLAGS -lthread"
778 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
781 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
782 LDFLAGS="$LDFLAGS -lthread"
783 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
784 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
788 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
789 LDFLAGS="$LDFLAGS -lthread"
790 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
791 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
797 # IRIX uses SYSV printing. Make sure to set that here
800 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
802 *freebsd*|*dragonfly*)
803 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
806 # VOS may need to have POSIX support and System V compatibility enabled.
813 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
814 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
818 *-D_SYSV*|*-D_SVID_SOURCE*)
821 CPPFLAGS="$CPPFLAGS -D_SYSV"
822 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
826 # Tests needed for SINIX large file support.
829 if test $host = mips-sni-sysv4 ; then
830 AC_MSG_CHECKING([for LFS support])
831 old_CPPFLAGS="$CPPFLAGS"
832 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
836 #if _LFS64_LARGEFILE == 1
841 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
842 CPPFLAGS="$old_CPPFLAGS"
843 if test x$SINIX_LFS_SUPPORT = xyes ; then
844 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
845 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
846 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
847 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
848 LIBS="`getconf LFS64_LIBS` $LIBS"
850 AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
854 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
857 AC_MSG_CHECKING([for LFS support])
858 old_CPPFLAGS="$CPPFLAGS"
859 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
862 #include <sys/utsname.h>
866 #if _LFS64_LARGEFILE == 1
871 /* Ensure this is glibc 2.2 or higher */
872 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
873 int libc_major = __GLIBC__;
874 int libc_minor = __GLIBC_MINOR__;
882 /* Ensure this is kernel 2.4 or higher */
885 release = strdup(uts.release);
886 major = atoi(strsep(&release, "."));
887 minor = atoi(strsep(&release, "."));
889 if (major > 2 || (major == 2 && minor > 3))
896 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
897 CPPFLAGS="$old_CPPFLAGS"
898 if test x$LINUX_LFS_SUPPORT = xyes ; then
899 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
900 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
901 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
902 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
904 AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
908 # MacOS X is the *only* system that uses compose character in utf8. This
909 # is so horribly broken....
912 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
914 # Add a system specific charset module.
915 default_shared_modules="$default_shared_modules charset_macosxfs"
919 AC_MSG_CHECKING([for LFS support])
920 old_CPPFLAGS="$CPPFLAGS"
921 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
925 #if _LFS64_LARGEFILE == 1
930 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
931 CPPFLAGS="$old_CPPFLAGS"
932 if test x$GLIBC_LFS_SUPPORT = xyes ; then
933 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
934 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
935 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
937 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
942 AC_LIBREPLACE_BROKEN_CHECKS
944 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
947 for obj in ${LIBREPLACEOBJ}; do
948 LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
950 AC_SUBST(LIBREPLACE_OBJS)
952 # add -ldl to the global LIBS
953 LIBS="${LIBS} ${LIBDL}"
955 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)
956 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
957 AC_CHECK_HEADERS(limits.h float.h pthread.h)
958 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
959 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
960 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
961 AC_CHECK_HEADERS(sys/un.h ifaddrs.h)
962 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
963 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
964 AC_CHECK_HEADERS(sys/sysmacros.h)
965 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
966 AC_CHECK_HEADERS(langinfo.h locale.h)
967 AC_CHECK_HEADERS(xfs/libxfs.h)
969 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
975 ## These fail to compile on IRIX so just check for their presence
976 AC_CHECK_HEADERS(sys/mode.h,,,)
978 # Look for Darwin headers
979 old_CPPFLAGS="$CPPFLAGS"
980 CPPFLAGS="-Iinclude $CPPFLAGS"
981 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
982 CPPFLAGS="$old_CPPFLAGS"
984 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
985 # subdirectory of headers.
986 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
988 # check for linux on amd64 since valgrind is not quite there yet
993 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
1001 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
1002 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
1006 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
1007 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
1008 if test x"$ac_cv_header_shadow_h" = x"yes"; then
1009 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
1013 AC_CHECK_HEADERS(shadow.h)
1014 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
1015 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
1017 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
1018 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
1020 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
1022 # For experimental utmp support (lastlog on some BSD-like systems)
1023 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
1025 AC_CHECK_SIZEOF(int,cross)
1026 AC_CHECK_SIZEOF(long,cross)
1027 AC_CHECK_SIZEOF(long long,cross)
1028 AC_CHECK_SIZEOF(short,cross)
1043 AC_CHECK_TYPE(ino_t,unsigned)
1044 AC_CHECK_TYPE(loff_t,off_t)
1045 AC_CHECK_TYPE(offset_t,loff_t)
1046 AC_CHECK_TYPE(ssize_t, int)
1047 AC_CHECK_TYPE(wchar_t, unsigned short)
1048 AC_CHECK_TYPE(comparison_fn_t,
1049 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
1051 ############################################
1052 # for cups support we need libcups, and a handful of header files
1055 [ --enable-cups Turn on CUPS support (default=auto)])
1057 if test x$enable_cups != xno; then
1058 AC_PATH_PROG(CUPS_CONFIG, cups-config)
1060 if test "x$CUPS_CONFIG" != x; then
1061 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
1062 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
1063 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
1064 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
1065 elif test x"$enable_cups" = x"yes"; then
1066 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
1070 AC_ARG_ENABLE(iprint,
1071 [ --enable-iprint Turn on iPrint support (default=yes if cups is yes)])
1073 if test x$enable_iprint != xno; then
1074 if test "x$CUPS_CONFIG" != x; then
1075 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
1076 elif test x"$enable_iprint" = x"yes"; then
1077 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
1081 ############################################
1082 # check if the compiler will optimize out function calls
1083 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
1085 #include <stdio.h>],
1088 this_function_does_not_exist();
1094 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
1095 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
1096 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1099 ############################################
1100 # check for unix domain sockets
1101 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1103 #include <sys/types.h>
1106 #include <sys/socket.h>
1107 #include <sys/un.h>],
1109 struct sockaddr_un sunaddr;
1110 sunaddr.sun_family = AF_UNIX;
1112 samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1113 if test x"$samba_cv_unixsocket" = x"yes"; then
1114 AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1118 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1120 #include <sys/types.h>
1125 #include <signal.h>],[sig_atomic_t i = 0],
1126 samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1127 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1128 AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1131 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1133 #include <sys/types.h>
1138 #if TIME_WITH_SYS_TIME
1139 # include <sys/time.h>
1142 # if HAVE_SYS_TIME_H
1143 # include <sys/time.h>
1148 ],[struct timespec ts;],
1149 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1150 if test x"$samba_cv_struct_timespec" = x"yes"; then
1151 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1154 # stupid headers have the functions but no declaration. grrrr.
1155 AC_HAVE_DECL(errno, [#include <errno.h>])
1156 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1157 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1158 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1159 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1160 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1161 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1163 # and glibc has setresuid under linux but the function does
1164 # nothing until kernel 2.1.44! very dumb.
1165 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1166 AC_TRY_RUN([#include <errno.h>
1167 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1168 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1169 if test x"$samba_cv_have_setresuid" = x"yes"; then
1170 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1173 # Do the same check for setresguid...
1175 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1176 AC_TRY_RUN([#include <unistd.h>
1178 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1179 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1180 if test x"$samba_cv_have_setresgid" = x"yes"; then
1181 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1186 ###############################################
1187 # Readline included by default unless explicitly asked not to
1188 test "${with_readline+set}" != "set" && with_readline=yes
1190 # test for where we get readline() from
1191 AC_MSG_CHECKING(whether to use readline)
1192 AC_ARG_WITH(readline,
1193 [ --with-readline[=DIR] Look for readline include/libs in DIR (default=auto) ],
1194 [ case "$with_readline" in
1198 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1199 AC_CHECK_HEADERS(readline/history.h)
1201 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1202 for termlib in ncurses curses termcap terminfo termlib tinfo; do
1203 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1205 AC_CHECK_LIB(readline, rl_callback_handler_install,
1206 [TERMLIBS="-lreadline $TERMLIBS"
1207 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1208 break], [TERMLIBS=], $TERMLIBS)])
1216 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1217 # alternate readline path
1219 _cppflags=${CPPFLAGS}
1221 # Add additional search path
1222 LDFLAGS="-L$with_readline/lib $LDFLAGS"
1223 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1225 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1226 AC_CHECK_HEADERS(readline/history.h)
1228 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1229 for termlib in ncurses curses termcap terminfo termlib; do
1230 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1232 AC_CHECK_LIB(readline, rl_callback_handler_install,
1233 [TERMLDFLAGS="-L$with_readline/lib"
1234 TERMCPPFLAGS="-I$with_readline/include"
1235 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1236 TERMLIBS="-lreadline $TERMLIBS"
1237 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1238 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1246 AC_SUBST(TERMLDFLAGS)
1248 # The readline API changed slightly from readline3 to readline4, so
1249 # code will generate warnings on one of them unless we have a few
1251 AC_CHECK_LIB(readline, rl_completion_matches,
1252 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1253 [Do we have rl_completion_matches?])],
1257 # not all readline libs have rl_event_hook or history_list
1258 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1259 AC_CHECK_LIB(readline, history_list,
1260 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1264 # The following test taken from the cvs sources
1265 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1266 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1267 # libsocket.so which has a bad implementation of gethostbyname (it
1268 # only looks in /etc/hosts), so we only look for -lsocket if we need
1270 AC_CHECK_FUNCS(connect)
1271 if test x"$ac_cv_func_connect" = x"no"; then
1274 *) AC_CHECK_LIB(nsl_s, connect) ;;
1278 *) AC_CHECK_LIB(nsl, connect) ;;
1282 *) AC_CHECK_LIB(socket, connect) ;;
1286 *) AC_CHECK_LIB(inet, connect) ;;
1288 dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1289 dnl has been cached.
1290 if test x"$ac_cv_lib_socket_connect" = x"yes" ||
1291 test x"$ac_cv_lib_inet_connect" = x"yes"; then
1292 # ac_cv_func_connect=yes
1293 # don't! it would cause AC_CHECK_FUNC to succeed next time configure is run
1294 AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1298 ###############################################
1299 # test for where we get yp_get_default_domain() from
1300 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1301 AC_CHECK_FUNCS(yp_get_default_domain)
1303 # Check if we have execl, if not we need to compile smbrun.
1304 AC_CHECK_FUNCS(execl)
1305 if test x"$ac_cv_func_execl" = x"no"; then
1306 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1309 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1310 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1311 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1312 AC_CHECK_FUNCS(getrlimit fsync fdatasync memset strlcpy strlcat setpgid)
1313 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1314 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1315 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1316 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1317 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1318 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1319 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1320 AC_CHECK_FUNCS(getpwent_r)
1321 AC_CHECK_FUNCS(getdents getdents64)
1322 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1323 AC_CHECK_FUNCS(syslog vsyslog timegm)
1324 AC_CHECK_FUNCS(setlocale nl_langinfo)
1325 AC_CHECK_FUNCS(nanosleep)
1326 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1327 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1328 AC_CHECK_HEADERS(sys/mman.h)
1329 # setbuffer, shmget, shm_open are needed for smbtorture
1330 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1332 # Find a method of generating a stack trace
1333 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1334 AC_CHECK_FUNCS(backtrace_symbols)
1335 AC_CHECK_LIB(exc, trace_back_stack)
1337 echo -n "checking for GPFS GPL libs... "
1339 LIBS="$LIBS -lgpfs_gpl"
1340 AC_TRY_LINK([#include <gpfs_gpl.h>],
1341 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1342 samba_cv_HAVE_GPFS=yes,
1343 samba_cv_HAVE_GPFS=no)
1344 echo $samba_cv_HAVE_GPFS
1345 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1346 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1347 default_shared_modules="$default_shared_modules vfs_gpfs"
1351 # Note that all the libunwind symbols in the API are defined to internal
1352 # platform-specific version, so we must include libunwind.h before checking
1354 AC_MSG_CHECKING([for libunwind])
1357 UNWIND_ARCH="unknown"
1358 if test x"$UNAME_I" != x"unknown"; then
1359 UNWIND_ARCH="$UNAME_I"
1360 elif test x"$UNAME_M" != x"unknown"; then
1361 UNWIND_ARCH="$UNAME_M"
1362 elif test x"$UNAME_P" != x"unknown"; then
1363 UNWIND_ARCH="$UNAME_P"
1366 case "$UNWIND_ARCH" in
1368 # This probably won't link without
1369 # the platform-specific libunwind.
1370 LIBS="$LIBS -lunwind"
1373 # Add the platform-specific libunwind module.
1374 LIBS="$LIBS -lunwind -lunwind-x86"
1377 # Add the platform-specific libunwind module.
1378 # based on uname -i, uname -m or uname -p
1379 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1385 #ifdef HAVE_LIBUNWIND_H
1386 #include <libunwind.h>
1390 unw_context_t ctx; unw_cursor_t cur;
1391 char buf[256]; unw_word_t off;
1392 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1393 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1397 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1399 # If we have libunwind, test whether we also have libunwind-ptrace
1400 # which would let us unwind arbitrary processes.
1402 AC_CHECK_HEADERS(libunwind-ptrace.h)
1403 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1405 LIBUNWIND_PTRACE="-lunwind-ptrace";
1406 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1407 [Whether libunwind-ptrace.a is available.])
1409 [ LIBUNWIND_PTRACE="" ])
1418 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1419 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1420 AC_CHECK_HEADERS(sys/ptrace.h)
1421 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1424 #if HAVE_SYS_TYPES_H
1425 #include <sys/types.h>
1427 #if HAVE_SYS_PTRACE_H
1428 #include <sys/ptrace.h>
1432 int main(int argc, const char ** argv)
1434 pid_t me = (pid_t)-1;
1435 ptrace(PTRACE_ATTACH, me, 0, 0);
1436 ptrace(PTRACE_DETACH, me, 0, 0);
1442 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1443 [Whether the Linux ptrace(2) interface is available.])
1451 AC_SUBST(LIBUNWIND_PTRACE)
1453 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1454 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1455 AC_CHECK_FUNCS(__getcwd _getcwd)
1456 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1457 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1458 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1459 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1460 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1461 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1462 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1463 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1464 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1465 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1466 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1467 AC_CHECK_FUNCS(prctl)
1470 #ifdef HAVE_SYS_PRCTL_H
1471 #include <sys/prctl.h>
1474 [int i; i = prtcl(0); ],
1475 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1482 # glibc <= 2.3.2 has a broken getgrouplist
1485 #include <sys/utsname.h>
1487 /* glibc up to 2.3 has a broken getgrouplist */
1488 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1489 int libc_major = __GLIBC__;
1490 int libc_minor = __GLIBC_MINOR__;
1494 if ((libc_major == 2) && (libc_minor <= 3))
1499 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1500 if test x"$linux_getgrouplist_ok" = x"yes"; then
1501 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1505 AC_CHECK_FUNCS(getgrouplist)
1510 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1513 if test x$ac_cv_func_stat64 = xno ; then
1514 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1516 #if defined(HAVE_UNISTD_H)
1519 #include <sys/stat.h>
1520 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1521 AC_MSG_RESULT([$ac_cv_func_stat64])
1522 if test x$ac_cv_func_stat64 = xyes ; then
1523 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1527 if test x$ac_cv_func_lstat64 = xno ; then
1528 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1530 #if defined(HAVE_UNISTD_H)
1533 #include <sys/stat.h>
1534 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1535 AC_MSG_RESULT([$ac_cv_func_lstat64])
1536 if test x$ac_cv_func_lstat64 = xyes ; then
1537 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1541 if test x$ac_cv_func_fstat64 = xno ; then
1542 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1544 #if defined(HAVE_UNISTD_H)
1547 #include <sys/stat.h>
1548 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1549 AC_MSG_RESULT([$ac_cv_func_fstat64])
1550 if test x$ac_cv_func_fstat64 = xyes ; then
1551 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1555 #################################################
1556 # Check whether struct stat has timestamps with sub-second resolution.
1557 # At least IRIX and Solaris have these.
1560 # all of st_mtim, st_atim and st_ctim exist
1561 # all of the members are in fact of type struct timespec
1563 # There is some conflicting standards weirdness about whether we should use
1564 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1565 # prefer struct timespec.
1567 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1571 #if TIME_WITH_SYS_TIME
1572 # include <sys/time.h>
1575 # if HAVE_SYS_TIME_H
1576 # include <sys/time.h>
1581 #ifdef HAVE_SYS_STAT_H
1582 #include <sys/stat.h>
1587 struct stat s = {0};
1588 t.tv_sec = s.st_mtim.tv_sec;
1589 t.tv_nsec = s.st_mtim.tv_nsec;
1590 t.tv_sec = s.st_ctim.tv_sec;
1591 t.tv_nsec = s.st_ctim.tv_nsec;
1592 t.tv_sec = s.st_atim.tv_sec;
1593 t.tv_nsec = s.st_atim.tv_nsec;
1595 samba_stat_hires=yes, samba_stat_hires=no)
1598 if test x"$samba_stat_hires" = x"yes" ; then
1599 AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1600 AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1601 AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1602 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1603 [whether struct stat has sub-second timestamps])
1606 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1610 #if TIME_WITH_SYS_TIME
1611 # include <sys/time.h>
1614 # if HAVE_SYS_TIME_H
1615 # include <sys/time.h>
1620 #ifdef HAVE_SYS_STAT_H
1621 #include <sys/stat.h>
1626 struct stat s = {0};
1627 t.tv_sec = s.st_mtime;
1628 t.tv_nsec = s.st_mtimensec;
1629 t.tv_sec = s.st_ctime;
1630 t.tv_nsec = s.st_ctimensec;
1631 t.tv_sec = s.st_atime;
1632 t.tv_nsec = s.st_atimensec;
1634 samba_stat_hires=yes, samba_stat_hires=no)
1637 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1638 AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1639 AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1640 AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1641 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1642 [whether struct stat has sub-second timestamps without struct timespec])
1645 #####################################
1646 # needed for SRV lookups
1647 AC_CHECK_LIB(resolv, dn_expand)
1648 AC_CHECK_LIB(resolv, _dn_expand)
1649 AC_CHECK_LIB(resolv, __dn_expand)
1652 # Check for the functions putprpwnam, set_auth_parameters,
1653 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1654 # Needed for OSF1 and HPUX.
1657 AC_LIBTESTFUNC(security, putprpwnam)
1658 AC_LIBTESTFUNC(sec, putprpwnam)
1660 AC_LIBTESTFUNC(security, set_auth_parameters)
1661 AC_LIBTESTFUNC(sec, set_auth_parameters)
1663 # UnixWare 7.x has its getspnam in -lgen
1664 AC_LIBTESTFUNC(gen, getspnam)
1666 AC_LIBTESTFUNC(security, getspnam)
1667 AC_LIBTESTFUNC(sec, getspnam)
1669 AC_LIBTESTFUNC(security, bigcrypt)
1670 AC_LIBTESTFUNC(sec, bigcrypt)
1672 AC_LIBTESTFUNC(security, getprpwnam)
1673 AC_LIBTESTFUNC(sec, getprpwnam)
1675 AC_CHECK_FUNCS(strsignal)
1677 ############################################
1678 # Check if we have libattr
1681 AC_SEARCH_LIBS(getproplist, [proplist])
1682 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1683 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1684 AC_CHECK_FUNCS(sizeof_proplist_entry)
1687 AC_SEARCH_LIBS(getxattr, [attr])
1688 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1689 AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1690 AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1691 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1692 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1693 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1694 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1698 ########################################################
1699 # Check if attropen() is present if this is Solaris
1702 AC_CHECK_FUNCS(attropen)
1706 ########################################################
1707 # Do xattr functions take additional options like on Darwin?
1708 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1709 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1711 LIBS="$LIBS $ACL_LIBS"
1713 #include <sys/types.h>
1714 #if HAVE_ATTR_XATTR_H
1715 #include <attr/xattr.h>
1716 #elif HAVE_SYS_XATTR_H
1717 #include <sys/xattr.h>
1720 getxattr(0, 0, 0, 0, 0, 0);
1722 [smb_attr_cv_xattr_add_opt=yes],
1723 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1725 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1726 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1730 # Check if we have extattr
1732 *freebsd4* | *dragonfly* )
1733 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1736 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1737 AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1738 AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1739 AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1746 AC_ARG_ENABLE(pie, [ --enable-pie Turn on pie support if available (default=yes)])
1748 if test "x$enable_pie" != xno
1750 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1752 cat > conftest.c <<EOF
1754 main () { return 0;}
1756 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1764 if test x"${samba_cv_fpie}" = x"yes"
1771 # Assume non-shared by default and override below
1774 # these are the defaults, good for lots of systems
1779 SHLD="\${CC} \${CFLAGS}"
1780 PICFLAG="${PIE_CFLAGS}"
1784 # this bit needs to be modified for each OS that supports share libs
1785 # You need to specify how to create a shared library and
1786 # how to compile C code to produce PIC object files
1788 AC_MSG_CHECKING([ability to build shared libraries])
1790 # and these are for particular systems
1792 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux])
1794 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1795 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1797 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1799 DYNEXP="-Wl,--export-dynamic"
1801 SONAMEFLAG="-Wl,-soname="
1802 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1804 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1808 if test "${GCC}" = "yes"; then
1810 SONAMEFLAG="-Wl,-soname="
1811 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1816 ## ${CFLAGS} added for building 64-bit shared
1817 ## libs using Sun's Compiler
1818 LDSHFLAGS="-G \${CFLAGS}"
1820 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1821 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1823 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1826 SONAMEFLAG="-Wl,-h,"
1827 PICFLAG="-KPIC" # Is this correct for SunOS
1828 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1829 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1831 *netbsd* | *freebsd* | *dragonfly* )
1834 DYNEXP="-Wl,--export-dynamic"
1835 SONAMEFLAG="-Wl,-soname,"
1836 PICFLAG="-fPIC -DPIC"
1837 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1838 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1840 *openbsd*) BLDSHARED="true"
1842 DYNEXP="-Wl,-Bdynamic"
1843 SONAMEFLAG="-Wl,-soname,"
1845 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1846 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1848 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1850 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1854 LDSHFLAGS="-set_version sgi1.0 -shared"
1855 SONAMEFLAG="-soname "
1857 if test "${GCC}" = "yes"; then
1862 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1864 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1866 LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1867 DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1869 # as AIX code is always position independent...
1870 # .po will just create compile warnings, use po.o:
1871 if test "${GCC}" != "yes"; then
1872 ## for funky AIX compiler using strncpy()
1873 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1876 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1877 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1878 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1880 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1881 # Use special PIC flags for the native HP-UX compiler.
1884 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1885 SONAMEFLAG="-Wl,+h "
1887 if test "${GCC}" = "yes"; then
1890 PICFLAG="+z +ESnolit"
1892 if test "$host_cpu" = "ia64"; then
1895 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1898 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1900 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1901 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1903 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1904 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1906 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1909 SONAMEFLAG="-Wl,-soname,"
1911 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1912 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1914 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1915 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1917 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1920 SONAMEFLAG="-Wl,-soname,"
1922 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1924 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1925 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1927 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1928 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1930 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1932 *-univel-*) if [ test "$GCC" != yes ]; then
1933 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1938 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1940 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1943 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1944 if [ test "$GCC" != yes ]; then
1945 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1948 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1950 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1955 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1957 LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1959 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1961 # Since gcc doesn't fail on unrecognised options, the
1962 # PIE test incorrectly succeeds. Darwin gcc does not
1963 # actually support the PIE stuff.
1966 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1970 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1974 if test "$enable_shared" != "yes"; then
1978 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1979 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1982 AC_MSG_RESULT($BLDSHARED)
1984 AC_MSG_CHECKING([LDFLAGS])
1985 AC_MSG_RESULT([$LDFLAGS])
1986 AC_MSG_CHECKING([DYNEXP])
1987 AC_MSG_RESULT([$DYNEXP])
1989 #######################################################
1990 # test whether building a shared library actually works
1991 if test $BLDSHARED = true; then
1993 AC_MSG_CHECKING([SHLD])
1994 AC_MSG_RESULT([$SHLD])
1995 AC_MSG_CHECKING([LDSHFLAGS])
1996 AC_MSG_RESULT([$LDSHFLAGS])
1998 AC_MSG_CHECKING([SHLIBEXT])
1999 AC_MSG_RESULT([$SHLIBEXT])
2000 AC_MSG_CHECKING([SONAMEFLAG])
2001 AC_MSG_RESULT([$SONAMEFLAG])
2003 AC_MSG_CHECKING([PICFLAG])
2004 AC_MSG_RESULT([$PICFLAG])
2006 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
2007 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
2009 AC_CACHE_CHECK([whether building shared libraries actually works],
2010 [ac_cv_shlib_works],[
2011 # try building a trivial shared library
2012 ac_cv_shlib_works=no
2013 # The $SHLD and $LDSHFLAGS variables may contain references to other
2014 # variables so they need to be eval'ed.
2015 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
2016 shlib.o ${srcdir-.}/tests/shlib.c && \
2017 `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
2018 shlib.o && ac_cv_shlib_works=yes
2019 rm -f "shlib.$SHLIBEXT" shlib.o
2022 if test $ac_cv_shlib_works = no; then
2027 if test x"$BLDSHARED" != x"true"; then
2028 LDSHFLAGS="shared-libraries-disabled"
2029 SONAMEFLAG="shared-libraries-disabled"
2030 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
2031 SHLD="shared-libraries-disabled"
2032 PICFLAG="${PIE_CFLAGS}"
2033 SHLIBEXT="shared_libraries_disabled"
2036 AC_MSG_CHECKING([used PICFLAG])
2037 AC_MSG_RESULT([$PICFLAG])
2039 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
2041 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
2045 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2046 AC_TRY_RUN([#include <stdio.h>
2047 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2048 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2049 if test x"$samba_cv_have_longlong" = x"yes"; then
2050 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2051 AC_CHECK_TYPE(intptr_t, unsigned long long)
2053 AC_CHECK_TYPE(intptr_t, unsigned long)
2057 # Check if the compiler supports the LL prefix on long long integers.
2060 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2061 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2062 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2063 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2064 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2068 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2069 AC_TRY_RUN([#include <time.h>
2070 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2071 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2072 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2073 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2076 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2077 AC_TRY_RUN([#include <stdio.h>
2078 #include <sys/stat.h>
2079 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2080 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2081 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2082 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2085 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2087 #if defined(HAVE_UNISTD_H)
2091 #include <sys/stat.h>
2092 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2093 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2094 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2095 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2098 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2100 #if defined(HAVE_UNISTD_H)
2104 #include <sys/stat.h>
2105 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2106 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2107 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2108 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2111 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2113 #if defined(HAVE_UNISTD_H)
2117 #include <sys/stat.h>
2118 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2119 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2120 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2121 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2124 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2126 #if defined(HAVE_UNISTD_H)
2130 #include <sys/stat.h>
2131 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2132 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2133 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2134 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2137 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2139 #if defined(HAVE_UNISTD_H)
2143 #include <sys/stat.h>
2144 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2145 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2146 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2147 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2150 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2152 #if defined(HAVE_UNISTD_H)
2155 #include <sys/types.h>
2156 #include <dirent.h>],
2158 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2159 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2160 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2163 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2165 #if defined(HAVE_UNISTD_H)
2168 #include <sys/types.h>
2169 #include <dirent.h>],
2170 [struct dirent64 de;],
2171 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2172 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2173 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2176 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2178 #if defined(HAVE_UNISTD_H)
2181 #include <sys/types.h>
2182 main() { dev_t dev; int i = major(dev); return 0; }],
2183 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2184 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2185 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2188 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2190 #if defined(HAVE_UNISTD_H)
2193 #include <sys/types.h>
2194 main() { dev_t dev; int i = minor(dev); return 0; }],
2195 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2196 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2197 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2200 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2202 #if defined(HAVE_UNISTD_H)
2205 #include <sys/types.h>
2206 main() { dev_t dev = makedev(1,2); return 0; }],
2207 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2208 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2209 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2212 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2213 AC_TRY_RUN([#include <stdio.h>
2214 main() { char c; c=250; exit((c > 0)?0:1); }],
2215 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2216 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2217 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2220 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2221 AC_TRY_COMPILE([#include <sys/types.h>
2222 #include <sys/socket.h>
2223 #include <netinet/in.h>],
2224 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2225 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2226 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2227 AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2230 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2231 AC_TRY_COMPILE([#include <sys/types.h>
2233 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2234 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2235 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2236 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2239 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2240 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2241 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2242 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2243 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2246 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2248 #include <sys/time.h>
2249 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2250 samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2251 samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2252 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2253 AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2256 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2258 # On some systems (eg. Linux) librt can pull in libpthread. We
2259 # don't want this to happen because libpthreads changes signal delivery
2260 # semantics in ways we are not prepared for. This breaks Linux oplocks
2261 # which rely on signals.
2263 AC_LIBTESTFUNC(rt, clock_gettime,
2265 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2266 [Whether clock_gettime is available])
2267 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2268 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2269 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2274 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2275 AC_TRY_LINK([#include <stdarg.h>
2276 va_list ap1,ap2;], [va_copy(ap1,ap2);],
2277 samba_cv_HAVE_VA_COPY=yes,
2278 samba_cv_HAVE_VA_COPY=no)])
2279 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2280 AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2282 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2283 AC_TRY_LINK([#include <stdarg.h>
2284 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2285 samba_cv_HAVE___VA_COPY=yes,
2286 samba_cv_HAVE___VA_COPY=no)])
2287 if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2288 AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2292 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2294 #include <sys/types.h>
2296 void foo(const char *format, ...) {
2301 va_start(ap, format);
2302 len = vsnprintf(buf, 0, format, ap);
2304 if (len != 5) exit(1);
2306 va_start(ap, format);
2307 len = vsnprintf(0, 0, format, ap);
2309 if (len != 5) exit(1);
2311 if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2315 main() { foo("hello"); }
2317 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2318 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2319 AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2322 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2323 AC_TRY_RUN([#include <sys/types.h>
2325 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2326 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2327 di->d_name[0] == 0) exit(0); exit(1);} ],
2328 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2329 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2330 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2333 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2334 AC_TRY_COMPILE([#include <sys/types.h>
2335 #include <utime.h>],
2336 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2337 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2338 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2339 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2343 # Check utmp details, but only if our OS offers utmp.h
2344 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2345 dnl utmp and utmpx come in many flavours
2346 dnl We need to check for many of them
2347 dnl But we don't need to do each and every one, because our code uses
2348 dnl mostly just the utmp (not utmpx) fields.
2350 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2352 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2353 AC_TRY_COMPILE([#include <sys/types.h>
2355 [struct utmp ut; ut.ut_name[0] = 'a';],
2356 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2357 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2358 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2361 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2362 AC_TRY_COMPILE([#include <sys/types.h>
2364 [struct utmp ut; ut.ut_user[0] = 'a';],
2365 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2366 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2367 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2370 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2371 AC_TRY_COMPILE([#include <sys/types.h>
2373 [struct utmp ut; ut.ut_id[0] = 'a';],
2374 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2375 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2376 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2379 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2380 AC_TRY_COMPILE([#include <sys/types.h>
2382 [struct utmp ut; ut.ut_host[0] = 'a';],
2383 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2384 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2385 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2388 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2389 AC_TRY_COMPILE([#include <sys/types.h>
2391 [struct utmp ut; time_t t; ut.ut_time = t;],
2392 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2393 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2394 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2397 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2398 AC_TRY_COMPILE([#include <sys/types.h>
2400 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2401 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2402 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2403 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2406 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2407 AC_TRY_COMPILE([#include <sys/types.h>
2409 [struct utmp ut; ut.ut_type = 0;],
2410 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2411 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2412 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2415 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2416 AC_TRY_COMPILE([#include <sys/types.h>
2418 [struct utmp ut; ut.ut_pid = 0;],
2419 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2420 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2421 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2424 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2425 AC_TRY_COMPILE([#include <sys/types.h>
2427 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2428 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2429 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2430 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2433 dnl Look for the IPv6 varient by preference. Many systems have both.
2434 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2435 AC_TRY_COMPILE([#include <sys/types.h>
2437 [struct utmp ut; ut.ut_addr_v6[0] = 0;],
2438 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2439 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2440 AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2443 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2444 AC_TRY_COMPILE([#include <sys/types.h>
2446 [struct utmp ut; ut.ut_addr = 0;],
2447 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2448 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2449 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2452 if test x$ac_cv_func_pututline = xyes ; then
2453 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2454 AC_TRY_COMPILE([#include <sys/types.h>
2456 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2457 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2458 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2459 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2463 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2464 AC_TRY_COMPILE([#include <sys/types.h>
2465 #include <utmpx.h>],
2466 [struct utmpx ux; ux.ut_syslen = 0;],
2467 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2468 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2469 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2476 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2477 AC_ARG_WITH(libiconv,
2478 [ --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2480 if test "$withval" = "no" ; then
2481 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2483 if test "$withval" != "yes" ; then
2485 ICONV_LOOK_DIRS="$withval"
2490 for i in $ICONV_LOOK_DIRS ; do
2493 save_LDFLAGS="$LDFLAGS"
2494 save_CPPFLAGS="$CPPFLAGS"
2496 iconv_current_LIBS=""
2497 iconv_current_LDFLAGS=""
2498 iconv_current_CPPFLAGS=""
2503 # This is here to handle -withval stuff for --with-libiconv
2504 # Perhaps we should always add a -L
2505 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2507 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2508 # installation paths. This gets a little tricky since we might have iconv
2509 # in both libiconv and in libc. In this case the jm_ICONV test will always
2510 # succeed when the header is found. To counter this, make sure the
2511 # library directory is there and check the ABI directory first (which
2512 # should be harmless on other systems.
2513 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2514 for l in "lib32" "lib" "lib/hpux32"; do
2515 if test -d "$i/$l" ; then
2516 LDFLAGS="$save_LDFLAGS -L$i/$l"
2518 export LDFLAGS LIBS CPPFLAGS
2519 # Try to find iconv(3)
2521 if test x"$ICONV_FOUND" = "xyes" ; then
2528 if test x"$ICONV_FOUND" = "xyes" ; then
2529 iconv_current_LDFLAGS="-L$i/$libext"
2530 iconv_current_CPPFLAGS="-I$i/include"
2532 if test x"$jm_cv_lib_iconv" != x; then
2533 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2535 # We found iconv in libc.
2536 iconv_current_LIBS=""
2541 if test x"$ICONV_FOUND" = "xyes" ; then
2543 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2544 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2545 LIBS="$save_LIBS $iconv_current_LIBS"
2546 export LDFLAGS LIBS CPPFLAGS
2548 default_dos_charset=no
2549 default_display_charset=no
2550 default_unix_charset=no
2552 # check for default dos charset name
2553 for j in CP850 IBM850 ; do
2555 default_dos_charset="$ICONV_CHARSET"
2556 if test x"$default_dos_charset" = x"$j"; then
2561 # check for default display charset name
2562 for j in ASCII 646 ; do
2564 default_display_charset="$ICONV_CHARSET"
2565 if test x"$default_display_charset" = x"$j"; then
2570 # check for default unix charset name
2571 for j in UTF-8 UTF8 ; do
2573 default_unix_charset="$ICONV_CHARSET"
2574 if test x"$default_unix_charset" = x"$j"; then
2579 if test "$default_dos_charset" != "no" -a \
2580 "$default_dos_charset" != "cross" -a \
2581 "$default_display_charset" != "no" -a \
2582 "$default_display_charset" != "cross" -a \
2583 "$default_unix_charset" != "no" -a \
2584 "$default_unix_charset" != "cross"
2586 samba_cv_HAVE_NATIVE_ICONV=yes
2588 if test "$default_dos_charset" = "cross" -o \
2589 "$default_display_charset" = "cross" -o \
2590 "$default_unix_charset" = "cross"
2592 samba_cv_HAVE_NATIVE_ICONV=cross
2594 samba_cv_HAVE_NATIVE_ICONV=no
2598 # At this point, we have a libiconv candidate. We know that
2599 # we have the right headers and libraries, but we don't know
2600 # whether it does the conversions we want. We can't test this
2601 # because we are cross-compiling. This is not necessarily a big
2602 # deal, since we can't guarantee that the results we get now will
2603 # match the results we get at runtime anyway.
2604 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2605 default_dos_charset="CP850"
2606 default_display_charset="ASCII"
2607 default_unix_charset="UTF-8"
2608 samba_cv_HAVE_NATIVE_ICONV=yes
2609 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2610 AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2613 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2615 CPPFLAGS=$save_CPPFLAGS
2616 LDFLAGS=$save_LDFLAGS
2619 if test x"$iconv_current_LIBS" != x; then
2620 LIBS="$LIBS $iconv_current_LIBS"
2623 # Add the flags we need to CPPFLAGS and LDFLAGS
2624 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2625 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2627 # Turn the #defines into string literals
2628 default_dos_charset="\"$default_dos_charset\""
2629 default_display_charset="\"$default_display_charset\""
2630 default_unix_charset="\"$default_unix_charset\""
2632 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2633 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2634 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2635 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2640 # We didn't find a working iconv, so keep going
2643 # We only need to clean these up here for the next pass through the loop
2644 CPPFLAGS=$save_CPPFLAGS
2645 LDFLAGS=$save_LDFLAGS
2647 export LDFLAGS LIBS CPPFLAGS
2652 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2653 AC_MSG_WARN([Sufficient support for iconv function was not found.
2654 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2655 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2656 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2657 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2661 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2663 #include <sys/types.h>
2666 #define F_GETLEASE 1025
2669 int fd = open("/dev/null", O_RDONLY);
2670 return fcntl(fd, F_GETLEASE, 0) == -1;
2673 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2674 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2675 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2678 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2680 #include <sys/types.h>
2684 #define F_NOTIFY 1026
2687 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2690 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2691 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2692 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2695 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2696 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2697 AC_CHECK_FUNC(inotify_init)
2698 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2700 samba_cv_HAVE_INOTIFY=yes,
2701 samba_cv_HAVE_INOTIFY=no,
2702 samba_cv_HAVE_INOTIFY=cross)
2704 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2705 AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2708 #################################################
2709 # Check if FAM notifications are available. For FAM info, see
2710 # http://oss.sgi.com/projects/fam/
2711 # http://savannah.nongnu.org/projects/fam/
2713 [ --enable-fam Turn on FAM support (default=auto)])
2715 if test x$enable_fam != xno; then
2716 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2717 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2718 # On IRIX, libfam requires libC, but other FAM implementations
2719 # might not need it.
2720 AC_CHECK_LIB(fam, FAMOpen2,
2721 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2722 [samba_cv_HAVE_LIBFAM=no])
2724 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2726 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2727 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2728 [samba_cv_HAVE_LIBFAM=no])
2729 unset samba_fam_xtra
2733 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2734 default_shared_modules="$default_shared_modules vfs_notify_fam"
2735 AC_TRY_COMPILE([#include <fam.h>],
2736 [FAMCodes code = FAMChanged;],
2737 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2738 [Whether fam.h contains a typedef for enum FAMCodes]),
2742 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2743 AC_MSG_ERROR(FAM support requested but FAM library not available )
2747 AC_SUBST(SMB_FAM_LIBS)
2749 #################################################
2750 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2752 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2754 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2755 # Theoretically it should work with AIX JFS2 too but this needs testing
2756 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2757 default_shared_modules="$default_shared_modules vfs_tsmsm"
2760 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2762 #include <sys/types.h>
2765 #include <sys/file.h>
2767 #define LOCK_MAND 32
2768 #define LOCK_READ 64
2771 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2774 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2775 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2776 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2780 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2781 AC_TRY_COMPILE([#include <sys/types.h>
2782 #include <fcntl.h>],
2783 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2784 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2785 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2786 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2789 #################################################
2790 # Check for POSIX capability support
2792 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2793 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2796 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2799 AC_LIBTESTFUNC(cap, cap_get_proc)
2801 AC_CACHE_CHECK([for POSIX capabilities],
2802 samba_cv_HAVE_POSIX_CAPABILITIES,
2805 #include <sys/types.h>
2806 #include <sys/capability.h>
2809 cap_value_t vals[1];
2810 if (!(cap = cap_get_proc()))
2812 vals[0] = CAP_CHOWN;
2813 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2817 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2818 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2819 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2822 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2823 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2824 [Whether POSIX capabilities are available])
2832 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2833 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2836 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2837 AC_TRY_COMPILE([#include <sys/types.h>
2838 #if defined(HAVE_RPC_RPC_H)
2839 #include <rpc/rpc.h>
2842 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2843 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2844 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2847 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2848 AC_TRY_COMPILE([#include <sys/types.h>
2849 #if defined(HAVE_RPC_RPC_H)
2850 #include <rpc/rpc.h>
2853 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2854 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2855 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2858 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2859 AC_TRY_COMPILE([#include <sys/types.h>
2860 #if defined(HAVE_RPC_RPC_H)
2861 #include <rpc/rpc.h>
2864 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2865 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2866 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2869 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2870 AC_TRY_COMPILE([#include <sys/types.h>
2871 #if defined(HAVE_RPC_RPC_H)
2872 #include <rpc/rpc.h>
2875 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2876 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2877 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2881 dnl Some systems (SCO) have a problem including
2882 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2883 dnl as a #define in <prot.h> and as part of an enum
2887 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2888 AC_TRY_COMPILE([#include <sys/types.h>
2889 #ifdef HAVE_SYS_SECURITY_H
2890 #include <sys/security.h>
2892 #endif /* HAVE_SYS_SECURITY_H */
2893 #if defined(HAVE_RPC_RPC_H)
2894 #include <rpc/rpc.h>
2897 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2898 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2899 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2902 AC_MSG_CHECKING([for test routines])
2903 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2905 AC_MSG_ERROR([cant find test code. Aborting config]),
2906 AC_MSG_WARN([cannot run when cross-compiling]))
2908 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2909 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2910 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2911 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2912 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2915 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2916 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2917 samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2918 samba_cv_HAVE_WORKING_AF_LOCAL=no,
2919 samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2920 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2922 AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2925 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2926 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2927 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2928 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2929 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2932 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2933 AC_TRY_RUN([#include <stdlib.h>
2934 #include <sys/types.h>
2935 #include <sys/stat.h>
2939 char tpl[20]="/tmp/test.XXXXXX";
2940 int fd = mkstemp(tpl);
2941 if (fd == -1) exit(1);
2943 if (fstat(fd, &st) != 0) exit(1);
2944 if ((st.st_mode & 0777) != 0600) exit(1);
2947 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2948 samba_cv_HAVE_SECURE_MKSTEMP=no,
2949 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2950 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2951 AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2954 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2955 AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
2956 [samba_cv_HAVE_BROKEN_READDIR=no],
2957 [samba_cv_HAVE_BROKEN_READDIR=yes],
2958 [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2960 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2961 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2963 #include "${srcdir-.}/lib/repdir.c"
2964 #include "${srcdir-.}/tests/os2_delete.c"],
2965 samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2968 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2969 AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2972 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2973 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2974 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2975 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2976 AC_CHECK_FUNCS(getpagesize)
2978 dnl test for getifaddrs and freeifaddrs
2979 AC_CACHE_CHECK([for getifaddrs and freeifaddrs],samba_cv_HAVE_GETIFADDRS,[
2981 #include <sys/socket.h>
2982 #include <sys/types.h>
2983 #include <netinet/in.h>
2984 #include <arpa/inet.h>
2985 #include <ifaddrs.h>
2986 #include <netdb.h>],
2988 struct ifaddrs *ifp = NULL;
2989 int ret = getifaddrs (&ifp);
2992 samba_cv_HAVE_GETIFADDRS=yes,samba_cv_HAVE_GETIFADDRS=no)])
2993 if test x"$samba_cv_HAVE_GETIFADDRS" = x"yes"; then
2994 AC_DEFINE(HAVE_GETIFADDRS,1,[Whether the system has getifaddrs])
2995 AC_DEFINE(HAVE_FREEIFADDRS,1,[Whether the system has freeifaddrs])
2999 # look for a method of finding the list of network interfaces
3001 AC_CACHE_CHECK([for iface getifaddrs],samba_cv_HAVE_IFACE_GETIFADDRS,[
3002 SAVE_CPPFLAGS="$CPPFLAGS"
3003 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3005 #define NO_CONFIG_H 1
3006 #define HAVE_IFACE_GETIFADDRS 1
3007 #define AUTOCONF_TEST 1
3008 #include "${srcdir-.}/lib/replace/replace.c"
3009 #include "${srcdir-.}/lib/interfaces.c"],
3010 samba_cv_HAVE_IFACE_GETIFADDRS=yes,samba_cv_HAVE_IFACE_GETIFADDRS=no,samba_cv_HAVE_IFACE_GETIFADDRS=cross)])
3011 CPPFLAGS="$SAVE_CPPFLAGS"
3012 if test x"$samba_cv_HAVE_IFACE_GETIFADDRS" = x"yes"; then
3013 iface=yes;AC_DEFINE(HAVE_IFACE_GETIFADDRS,1,[Whether iface getifaddrs is available])
3016 if test $iface = no; then
3017 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
3018 SAVE_CPPFLAGS="$CPPFLAGS"
3019 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3021 #define NO_CONFIG_H 1
3022 #define HAVE_IFACE_IFCONF 1
3023 #define AUTOCONF_TEST 1
3024 #define SOCKET_WRAPPER_NOT_REPLACE
3025 #include "${srcdir-.}/lib/replace/replace.c"
3026 #include "${srcdir-.}/lib/interfaces.c"],
3027 samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
3028 CPPFLAGS="$SAVE_CPPFLAGS"
3029 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
3030 iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
3034 if test $iface = no; then
3035 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
3036 SAVE_CPPFLAGS="$CPPFLAGS"
3037 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3039 #define NO_CONFIG_H 1
3040 #define HAVE_IFACE_IFREQ 1
3041 #define AUTOCONF_TEST 1
3042 #define SOCKET_WRAPPER_NOT_REPLACE
3043 #include "${srcdir-.}/lib/replace/replace.c"
3044 #include "${srcdir-.}/lib/replace/getaddrinfo.c"
3045 #include "${srcdir-.}/lib/replace/snprintf.c"
3046 #include "${srcdir-.}/lib/interfaces.c"],
3047 samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
3048 CPPFLAGS="$SAVE_CPPFLAGS"
3049 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
3050 iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
3055 AC_TRY_COMPILE([#include <sys/socket.h>],[
3056 struct sockaddr_storage s; s.__ss_family = 0],
3057 samba_cv_have_aix_sockaddr_storage=yes,samba_cv_have_aix_sockaddr_storage=no)
3059 if test x"$samba_cv_have_aix_sockaddr_storage" = x"yes"; then
3060 AC_DEFINE(HAVE_AIX_SOCKADDR_STORAGE, 1, [Whether struct sockaddr_storage has __sa_family])
3063 if test $iface = no; then
3064 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
3065 SAVE_CPPFLAGS="$CPPFLAGS"
3066 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3068 #define NO_CONFIG_H 1
3069 #define HAVE_IFACE_AIX 1
3070 #define AUTOCONF_TEST 1
3071 #undef _XOPEN_SOURCE_EXTENDED
3072 #define SOCKET_WRAPPER_NOT_REPLACE
3073 #include "${srcdir-.}/lib/replace/replace.c"
3074 #include "${srcdir-.}/lib/replace/snprintf.c"
3075 #include "${srcdir-.}/lib/interfaces.c"],
3076 samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
3077 CPPFLAGS="$SAVE_CPPFLAGS"
3078 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
3079 iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
3084 AC_CACHE_CHECK([for ipv6 support],samba_cv_HAVE_IPV6,[
3086 #include <stdlib.h> /* for NULL */
3087 #include <sys/socket.h>
3088 #include <sys/types.h>
3089 #include <netdb.h>],
3091 struct sockaddr_storage sa_store;
3092 struct addrinfo *ai = NULL;
3093 struct in6_addr in6addr;
3094 int s = socket(AF_INET6, SOCK_STREAM, 0);
3095 int ret = getaddrinfo(NULL, NULL, NULL, &ai);
3097 const char *es = gai_strerror(ret);
3101 samba_cv_HAVE_IPV6=yes,samba_cv_HAVE_IPV6=no)])
3102 if test x"$samba_cv_HAVE_IPV6" = x"yes"; then
3103 AC_DEFINE(HAVE_IPV6,1,[Whether the system has IPv6 support])
3106 ################################################
3107 # look for a method of setting the effective uid
3109 if test $seteuid = no; then
3110 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
3112 #define AUTOCONF_TEST 1
3113 #define USE_SETRESUID 1
3114 #include "confdefs.h"
3115 #include "${srcdir-.}/lib/util_sec.c"],
3116 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
3117 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
3118 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
3123 if test $seteuid = no; then
3124 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
3126 #define AUTOCONF_TEST 1
3127 #define USE_SETREUID 1
3128 #include "confdefs.h"
3129 #include "${srcdir-.}/lib/util_sec.c"],
3130 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
3131 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
3132 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
3136 if test $seteuid = no; then
3137 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
3139 #define AUTOCONF_TEST 1
3140 #define USE_SETEUID 1
3141 #include "confdefs.h"
3142 #include "${srcdir-.}/lib/util_sec.c"],
3143 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
3144 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
3145 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
3149 if test $seteuid = no; then
3150 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
3152 #define AUTOCONF_TEST 1
3153 #define USE_SETUIDX 1
3154 #include "confdefs.h"
3155 #include "${srcdir-.}/lib/util_sec.c"],
3156 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
3157 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
3158 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
3162 AC_CACHE_CHECK([for the Darwin initgroups system call],
3163 samba_cv_DARWIN_INITGROUPS,
3165 #include <sys/syscall.h>
3168 [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
3169 samba_cv_DARWIN_INITGROUPS=yes,
3170 samba_cv_DARWIN_INITGROUPS=no)
3173 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
3174 AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
3175 [Whether to use the Darwin-specific initgroups system call])
3178 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
3179 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
3180 samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
3181 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
3182 AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
3185 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
3186 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
3187 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
3188 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
3189 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
3192 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
3193 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
3194 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
3195 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
3196 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
3201 dnl Don't check for 64 bit fcntl locking if we know that the
3202 dnl glibc2.1 broken check has succeeded.
3205 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
3207 #if defined(HAVE_UNISTD_H)
3217 #ifdef HAVE_SYS_FCNTL_H
3218 #include <sys/fcntl.h>
3220 main() { struct flock64 fl64;
3221 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3227 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3229 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3230 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3234 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3235 AC_TRY_COMPILE([#include <sys/types.h>
3236 #include <sys/stat.h>
3237 #include <unistd.h>],
3238 [struct stat st; st.st_blocks = 0;],
3239 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3240 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3241 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3244 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3245 AC_TRY_COMPILE([#include <sys/types.h>
3246 #include <sys/stat.h>
3247 #include <unistd.h>],
3248 [struct stat st; st.st_blksize = 0;],
3249 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3250 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3251 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3254 AC_CACHE_CHECK([for st_flags in struct stat],
3255 samba_cv_HAVE_STAT_ST_FLAGS,
3257 AC_TRY_COMPILE([#include <sys/types.h>
3258 #include <sys/stat.h>
3259 #include <unistd.h>],
3260 [struct stat st; st.st_flags = 0;],
3261 samba_cv_HAVE_STAT_ST_FLAGS=yes,
3262 samba_cv_HAVE_STAT_ST_FLAGS=no,
3263 samba_cv_HAVE_STAT_ST_FLAGS=cross)
3266 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3267 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3268 [Whether the stat struct has a st_flags member])
3271 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3273 #include <sys/types.h>
3274 #include <sys/acl.h>
3275 #if defined(HAVE_RPCSVC_NIS_H)
3276 #include <rpcsvc/nis.h>
3279 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3280 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3281 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3284 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3289 char *newpath = realpath("/tmp", NULL);
3290 exit ((newpath != NULL) ? 0 : 1);
3293 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3294 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3295 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3298 #################################################
3299 # check for AFS clear-text auth support
3300 samba_cv_WITH_AFS=no
3301 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3303 [ --with-afs Include AFS clear-text auth support (default=no) ],
3304 [ case "$withval" in
3306 AC_MSG_RESULT($withval)
3307 samba_cv_WITH_AFS=$withval
3316 ####################################################
3317 # check for Linux-specific AFS fake-kaserver support
3318 samba_cv_WITH_FAKE_KASERVER=no
3319 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3320 AC_ARG_WITH(fake-kaserver,
3321 [ --with-fake-kaserver Include AFS fake-kaserver support (default=no) ],
3322 [ case "$withval" in
3324 AC_MSG_RESULT($withval)
3325 samba_cv_WITH_FAKE_KASERVER=$withval
3334 #################################################
3335 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3336 if test x"$samba_cv_WITH_AFS" != x"no" ||
3337 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3339 # see if this box has the afs-headers in /usr/include/afs
3340 AC_MSG_CHECKING(for /usr/include/afs)
3341 if test -d /usr/include/afs; then
3342 CFLAGS="$CFLAGS -I/usr/include/afs"
3343 CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3351 AC_CHECK_HEADERS(afs.h afs/afs.h)
3352 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3353 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3354 test x"$samba_cv_WITH_AFS" = x"auto"; then
3355 AC_MSG_WARN([AFS cannot be supported without afs.h])
3357 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3360 have_afs_headers=yes
3364 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3365 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3368 #################################################
3369 # check whether to compile AFS/NT ACL mapping module
3370 samba_cv_WITH_VFS_AFSACL=no
3371 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3372 AC_ARG_WITH(vfs-afsacl,
3373 [ --with-vfs-afsacl Include AFS to NT ACL mapping module (default=no) ],
3374 [ case "$withval" in
3376 AC_MSG_RESULT($withval)
3377 samba_cv_WITH_VFS_AFSACL=yes
3386 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3387 default_shared_modules="$default_shared_modules vfs_afsacl"
3390 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3391 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3394 #################################################
3395 # check for the DFS clear-text auth system
3396 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3398 [ --with-dce-dfs Include DCE/DFS clear-text auth support (default=no)],
3399 [ case "$withval" in
3402 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3411 ########################################################
3412 # Compile with LDAP support?
3414 with_ldap_support=auto
3415 AC_MSG_CHECKING([for LDAP support])
3418 [ --with-ldap LDAP support (default yes)],
3419 [ case "$withval" in
3421 with_ldap_support=$withval
3425 AC_MSG_RESULT($with_ldap_support)
3430 AC_SUBST(SMBLDAPUTIL)
3434 if test x"$with_ldap_support" != x"no"; then
3436 ##################################################################
3437 # first test for ldap.h and lber.h
3438 # (ldap.h is required for this test)
3439 AC_CHECK_HEADERS(ldap.h lber.h)
3441 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3442 if test x"$with_ldap_support" = x"yes"; then
3443 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3445 AC_MSG_WARN(ldap.h is needed for LDAP support)
3448 with_ldap_support=no
3451 ##################################################################
3452 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3453 # unsigned int in include/includes.h
3456 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3457 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3458 with_ldap_support=yes
3461 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3462 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3463 if test x"$with_ldap_support" = x"yes"; then
3464 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3466 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3468 with_ldap_support=no
3474 if test x"$with_ldap_support" != x"no"; then
3477 ##################################################################
3478 # we might need the lber lib on some systems. To avoid link errors
3479 # this test must be before the libldap test
3480 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3482 ########################################################
3483 # If ber_sockbuf_add_io() is available we can add
3484 # SASL wrapping hooks
3485 AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3487 AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3488 AC_TRY_COMPILE([#include <ldap.h>],
3489 [int val = LDAP_OPT_SOCKBUF;],
3490 samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3491 samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3493 if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3494 x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3495 AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3498 ########################################################
3499 # now see if we can find the ldap libs in standard paths
3500 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3502 ########################################################
3503 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3504 # Check found in pam_ldap 145.
3505 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3507 LIBS="$LIBS $LDAP_LIBS"
3508 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3512 [ldap_set_rebind_proc(0, 0, 0);],
3513 [smb_ldap_cv_ldap_set_rebind_proc=3],
3514 [smb_ldap_cv_ldap_set_rebind_proc=2]
3518 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3520 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3522 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3523 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3524 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3525 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3526 default_shared_modules="$default_shared_modules";
3527 SMBLDAP="lib/smbldap.o"
3528 SMBLDAPUTIL="lib/smbldap_util.o"
3529 with_ldap_support=yes
3530 AC_MSG_CHECKING(whether LDAP support is used)
3533 if test x"$with_ldap_support" = x"yes"; then
3534 AC_MSG_ERROR(libldap is needed for LDAP support)
3536 AC_MSG_WARN(libldap is needed for LDAP support)
3540 with_ldap_support=no
3546 #################################################
3547 # active directory support
3549 with_ads_support=auto
3550 AC_MSG_CHECKING([for Active Directory and krb5 support])
3553 [ --with-ads Active Directory support (default auto)],
3554 [ case "$withval" in
3556 with_ads_support="$withval"
3560 AC_MSG_RESULT($with_ads_support)
3565 if test x"$with_ldap_support" != x"yes"; then
3567 if test x"$with_ads_support" = x"yes"; then
3568 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3569 elif test x"$with_ads_support" = x"auto"; then
3570 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3576 # Check to see whether there is enough LDAP functionality to be able
3577 # to build AD support.
3579 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3582 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3584 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3585 if test x"$with_ads_support" = x"yes"; then
3586 AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3587 elif test x"$with_ads_support" = x"auto"; then
3588 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3594 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3596 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3597 if test x"$with_ads_support" = x"yes"; then
3598 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3599 elif test x"$with_ads_support" = x"auto"; then
3600 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3608 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3610 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3611 if test x"$with_ads_support" = x"yes"; then
3612 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3613 elif test x"$with_ads_support" = x"auto"; then
3614 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3621 if test x"$with_ads_support" != x"no"; then
3623 # Do no harm to the values of CFLAGS and LIBS while testing for
3626 if test x$FOUND_KRB5 = x"no"; then
3627 #################################################
3628 # check for location of Kerberos 5 install
3629 AC_MSG_CHECKING(for kerberos 5 install path)
3631 [ --with-krb5=base-dir Locate Kerberos 5 support (default=/usr)],
3632 [ case "$withval" in
3634 AC_MSG_RESULT(no krb5-path given)
3641 AC_MSG_RESULT($withval)
3642 KRB5_CFLAGS="-I$withval/include"
3643 KRB5_CPPFLAGS="-I$withval/include"
3644 KRB5_LDFLAGS="-L$withval/lib"
3646 if test -x "$withval/bin/krb5-config"; then
3647 KRB5CONFIG=$withval/bin/krb5-config
3651 AC_MSG_RESULT(no krb5-path given)
3655 #################################################
3656 # check for krb5-config from recent MIT and Heimdal kerberos 5
3657 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3658 AC_MSG_CHECKING(for working krb5-config)
3659 if test -x "$KRB5CONFIG"; then
3660 ac_save_CFLAGS=$CFLAGS
3661 CFLAGS="";export CFLAGS
3662 ac_save_LDFLAGS=$LDFLAGS
3663 LDFLAGS="";export LDFLAGS
3664 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3665 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3666 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3667 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3668 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3669 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3673 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3676 if test x$FOUND_KRB5 = x"no"; then
3677 #################################################
3678 # see if this box has the SuSE location for the heimdal krb implementation
3679 AC_MSG_CHECKING(for /usr/include/heimdal)
3680 if test -d /usr/include/heimdal; then
3681 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3682 KRB5_CFLAGS="-I/usr/include/heimdal"
3683 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3684 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3688 KRB5_CFLAGS="-I/usr/include/heimdal"
3689 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3698 if test x$FOUND_KRB5 = x"no"; then
3699 #################################################
3700 # see if this box has the RedHat location for kerberos
3701 AC_MSG_CHECKING(for /usr/kerberos)
3702 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3703 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3704 KRB5_CFLAGS="-I/usr/kerberos/include"
3705 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3713 if test x$FOUND_KRB5 = x"no"; then
3714 #################################################
3715 # see if this box has the OpenBSD location for heimdal krb5
3716 AC_MSG_CHECKING(for /usr/include/kerberosV)
3717 if test -d /usr/include/kerberosV; then
3718 KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3719 KRB5_LIBS="-lcrypto"
3727 ac_save_CFLAGS=$CFLAGS
3728 ac_save_CPPFLAGS=$CPPFLAGS
3729 ac_save_LDFLAGS=$LDFLAGS
3731 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3732 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3733 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3735 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3737 # now check for krb5.h. Some systems have the libraries without the headers!
3738 # note that this check is done here to allow for different kerberos
3740 AC_CHECK_HEADERS(krb5.h)
3742 if test x"$ac_cv_header_krb5_h" = x"no"; then
3744 # Give a warning if AD support was not explicitly requested,
3745 # i.e with_ads_support = auto, otherwise die with an error.
3747 if test x"$with_ads_support" = x"yes"; then
3748 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3750 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3753 # Turn off AD support and restore CFLAGS and LIBS variables
3755 with_ads_support="no"
3757 CFLAGS=$ac_save_CFLAGS
3758 CPPFLAGS=$ac_save_CPPFLAGS
3759 LDFLAGS=$ac_save_LDFLAGS
3761 AC_CHECK_HEADERS(krb5/locate_plugin.h)
3762 if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3763 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3764 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3768 # Now we have determined whether we really want ADS support
3770 if test x"$with_ads_support" != x"no"; then
3775 # now check for gssapi headers. This is also done here to allow for
3776 # different kerberos include paths
3777 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3779 ##################################################################
3780 # we might need the k5crypto and com_err libraries on some systems
3781 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3782 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3785 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3786 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3787 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3789 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3790 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3792 ########################################################
3793 # now see if we can find the krb5 libs in standard paths
3794 # or as specified above
3795 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3796 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3798 ########################################################
3799 # now see if we can find the gssapi libs in standard paths
3800 if test x"$have_gssapi" != x"yes"; then
3801 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3804 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3805 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3806 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3807 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3808 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3809 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3810 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3811 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3812 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3813 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3814 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3815 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3816 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3817 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3818 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3819 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3820 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3821 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3822 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3823 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3824 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3825 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3826 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3827 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3828 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3829 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3830 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3831 AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3832 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3833 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3834 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3835 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3836 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3837 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3838 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3839 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3840 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3841 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3842 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3843 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3844 AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3846 LIBS="$KRB5_LIBS $LIBS"
3848 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3849 smb_krb5_ticket_has_keyinfo,
3858 krb5_enctype enctype;
3860 enctype = ticket.enc_part.enctype;
3861 kvno = ticket.enc_part.kvno;
3863 [ smb_krb5_ticket_has_keyinfo=yes ],
3864 [ smb_krb5_ticket_has_keyinfo=no ])
3867 if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3868 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3869 [Whether the krb5_ticket structure contains the kvno and enctype])
3872 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3873 smb_krb5_creds_opt_free_context,
3879 krb5_get_init_creds_opt *opt = NULL;
3880 krb5_get_init_creds_opt_free(ctx, opt);
3882 [smb_krb5_creds_opt_free_context=yes],
3883 [smb_krb5_creds_opt_free_context=no]
3887 if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3888 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3889 [Whether krb5_get_init_creds_opt_free takes a context argument])
3892 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3895 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3896 [smb_krb5_verify_checksum=7],
3897 [smb_krb5_verify_checksum=6],
3900 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3902 AC_CACHE_CHECK([for checksum in krb5_checksum],
3903 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3904 AC_TRY_COMPILE([#include <krb5.h>],
3905 [krb5_checksum cksum; cksum.checksum.length = 0;],
3906 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3907 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3909 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3910 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3911 [Whether the krb5_checksum struct has a checksum property])
3914 AC_CACHE_CHECK([for etype in EncryptedData],
3915 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3916 AC_TRY_COMPILE([#include <krb5.h>],
3917 [EncryptedData edata; edata.etype = 0;],
3918 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3919 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3921 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3922 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3923 [Whether the EncryptedData struct has a etype property])
3926 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3927 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3928 AC_TRY_COMPILE([#include <krb5.h>],
3929 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3930 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3931 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3933 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3934 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3935 [Whether the krb5_ap_req struct has a ticket pointer])
3938 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3939 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3940 AC_TRY_COMPILE([#include <krb5.h>],
3941 [krb5_error err; err.e_data = NULL;],
3942 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3943 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3945 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3946 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3947 [Whether the krb5_error struct has a e_data pointer])
3950 AC_CACHE_CHECK([for krb5_crypto type],
3951 samba_cv_HAVE_KRB5_CRYPTO,[
3952 AC_TRY_COMPILE([#include <krb5.h>],
3953 [krb5_crypto crypto;],
3954 samba_cv_HAVE_KRB5_CRYPTO=yes,
3955 samba_cv_HAVE_KRB5_CRYPTO=no)])
3957 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3958 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3959 [Whether the type krb5_crypto exists])
3962 AC_CACHE_CHECK([for krb5_encrypt_block type],
3963 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3964 AC_TRY_COMPILE([#include <krb5.h>],
3965 [krb5_encrypt_block block;],
3966 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3967 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3969 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3970 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3971 [Whether the type krb5_encrypt_block exists])
3974 AC_CACHE_CHECK([for addrtype in krb5_address],
3975 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3976 AC_TRY_COMPILE([#include <krb5.h>],
3977 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3978 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3979 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3981 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3982 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3983 [Whether the krb5_address struct has a addrtype property])
3986 AC_CACHE_CHECK([for addr_type in krb5_address],
3987 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3988 AC_TRY_COMPILE([#include <krb5.h>],
3989 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3990 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3991 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3993 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3994 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3995 [Whether the krb5_address struct has a addr_type property])
3998 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3999 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
4000 [AC_TRY_COMPILE([#include <krb5.h>],
4001 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
4002 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
4004 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
4005 AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
4006 [Whether the krb5_ticket struct has a enc_part2 property])
4009 AC_CACHE_CHECK([for keyblock in krb5_creds],
4010 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
4011 AC_TRY_COMPILE([#include <krb5.h>],
4012 [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
4013 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
4014 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
4016 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
4017 AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
4018 [Whether the krb5_creds struct has a keyblock property])
4021 AC_CACHE_CHECK([for session in krb5_creds],
4022 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
4023 AC_TRY_COMPILE([#include <krb5.h>],
4024 [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
4025 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
4026 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
4028 if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
4029 AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
4030 [Whether the krb5_creds struct has a session property])
4033 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
4034 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
4035 AC_TRY_COMPILE([#include <krb5.h>],
4036 [krb5_keyblock key; key.keyvalue.data = NULL;],
4037 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
4038 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
4040 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
4041 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
4042 [Whether the krb5_keyblock struct has a keyvalue property])
4045 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
4046 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
4047 AC_TRY_COMPILE([#include <krb5.h>],
4048 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
4049 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
4050 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
4051 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
4052 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
4053 AC_TRY_COMPILE([#include <krb5.h>],
4054 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
4055 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
4056 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
4057 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
4058 # w.r.t. arcfour and windows, so we must not enable it here
4059 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
4060 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
4061 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
4062 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
4065 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
4066 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
4067 AC_TRY_COMPILE([#include <krb5.h>],
4068 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
4069 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
4070 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
4072 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
4073 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
4074 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
4077 AC_CACHE_CHECK([for KV5M_KEYTAB],
4078 samba_cv_HAVE_KV5M_KEYTAB,[
4079 AC_TRY_COMPILE([#include <krb5.h>],
4080 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
4081 samba_cv_HAVE_KV5M_KEYTAB=yes,
4082 samba_cv_HAVE_KV5M_KEYTAB=no)])
4084 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
4085 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
4086 [Whether the KV5M_KEYTAB option is available])
4089 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
4090 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
4091 AC_TRY_COMPILE([#include <krb5.h>],
4092 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
4093 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
4094 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
4096 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
4097 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
4098 [Whether KRB5_KU_OTHER_CKSUM is available])
4101 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
4102 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
4103 AC_TRY_COMPILE([#include <krb5.h>],
4104 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
4105 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
4106 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
4108 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
4109 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
4110 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
4113 AC_CACHE_CHECK([for the krb5_princ_component macro],
4114 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
4115 AC_TRY_LINK([#include <krb5.h>],
4116 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
4117 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
4118 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
4120 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
4121 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
4122 [Whether krb5_princ_component is available])
4125 AC_CACHE_CHECK([for key in krb5_keytab_entry],
4126 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
4127 AC_TRY_COMPILE([#include <krb5.h>],
4128 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
4129 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
4130 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
4132 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
4133 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
4134 [Whether krb5_keytab_entry has key member])
4137 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
4138 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
4139 AC_TRY_COMPILE([#include <krb5.h>],
4140 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4141 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4142 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4144 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4145 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4146 [Whether krb5_keytab_entry has keyblock member])
4149 AC_CACHE_CHECK([for magic in krb5_address],
4150 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4151 AC_TRY_COMPILE([#include <krb5.h>],
4152 [krb5_address addr; addr.magic = 0;],
4153 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4154 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4156 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4157 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4158 [Whether the krb5_address struct has a magic property])
4161 AC_CACHE_CHECK([for WRFILE: keytab support],
4162 samba_cv_HAVE_WRFILE_KEYTAB,[
4167 krb5_context context;
4170 krb5_init_context(&context);
4171 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4173 samba_cv_HAVE_WRFILE_KEYTAB=yes,
4174 samba_cv_HAVE_WRFILE_KEYTAB=no)])
4176 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4177 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4178 [Whether the WRFILE:-keytab is supported])
4181 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4182 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4183 AC_TRY_COMPILE([#include <krb5.h>],
4185 krb5_context context;
4186 krb5_principal principal;
4187 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4188 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4189 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4191 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4192 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4193 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4196 AC_CACHE_CHECK([for krb5_addresses type],
4197 samba_cv_HAVE_KRB5_ADDRESSES,[
4198 AC_TRY_COMPILE([#include <krb5.h>],
4199 [krb5_addresses addr;],
4200 samba_cv_HAVE_KRB5_ADDRESSES=yes,
4201 samba_cv_HAVE_KRB5_ADDRESSES=no)])
4203 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4204 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4205 [Whether the type krb5_addresses type exists])
4208 AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4209 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4210 AC_TRY_COMPILE([#include <krb5.h>],
4212 krb5_mk_error(0,0,0);],
4213 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4214 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4216 if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4217 AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4218 [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4221 if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4222 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4223 smb_krb5_enctype_to_string_takes_krb5_context_arg,[
4227 krb5_context context = NULL;
4229 krb5_enctype_to_string(context, 1, &str);
4230 if (str) free (str);
4233 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4234 smb_krb5_enctype_to_string_takes_krb5_context_arg=yes,
4235 smb_krb5_enctype_to_string_takes_krb5_context_arg=no)])
4237 if test x"$smb_krb5_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4238 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4239 [whether krb5_enctype_to_string takes krb5_context argument])
4242 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4243 smb_krb5_enctype_to_string_takes_size_t_arg,[
4248 krb5_enctype_to_string(1, buf, 256);
4251 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4252 smb_krb5_enctype_to_string_takes_size_t_arg=yes,
4253 smb_krb5_enctype_to_string_takes_size_t_arg=no)])
4255 if test x"$smb_krb5_enctype_to_string_takes_size_t_arg" = x"yes"; then
4256 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4257 [whether krb5_enctype_to_string takes size_t argument])
4261 AC_CACHE_CHECK([for krb5_principal_get_realm],
4262 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4263 AC_TRY_LINK([#include <krb5.h>],
4264 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4265 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4266 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4268 if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4269 AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4270 [Whether the function krb5_principal_get_realm is defined])
4273 AC_CACHE_CHECK([for krb5_princ_realm],
4274 samba_cv_HAVE_KRB5_PRINC_REALM,[
4275 AC_TRY_LINK([#include <krb5.h>],
4276 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4277 samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4278 samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4280 if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4281 AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4282 [Whether the macro krb5_princ_realm is defined])
4287 # Now the decisions whether we can support krb5
4289 # NOTE: all tests should be done before this block!
4292 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4293 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4297 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4298 x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4300 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4304 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4305 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4307 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4311 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4312 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4314 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4318 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4319 x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4321 AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4325 if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
4327 # We only need the following functions if we can't get the enctype
4328 # and kvno out of the ticket directly (ie. on Heimdal).
4330 if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4332 AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4336 if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4338 AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4344 if test x"$use_ads" = x"yes"; then
4345 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4346 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4347 if test x"$have_gssapi" = x"yes"; then
4348 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4351 if test x"$with_ads_support" = x"yes"; then
4352 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4354 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4356 AC_REMOVE_DEFINE(HAVE_KRB5_H)
4357 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4358 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4359 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4363 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4364 AC_MSG_RESULT([$use_ads])
4366 LIBS="$ac_save_LIBS"
4369 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4370 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4373 ########################################################
4374 # Compile with DNS Updates support?
4376 with_dnsupdate_support=no
4377 AC_MSG_CHECKING([whether to enable DNS Updates support])
4379 AC_ARG_WITH(dnsupdate,
4380 [ --with-dnsupdate Enable DNS Updates support (default no)],
4381 [ case "$withval" in
4383 with_dnsupdate_support=$withval
4387 AC_MSG_RESULT($with_dnsupdate_support)
4389 if test x"$with_dnsupdate_support" != x"no"; then
4391 ################################################################
4392 # first test for Active Directory support being enabled
4393 #if test x"$with_ads_support" = x"no"; then
4394 # AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4395 # with_dnsupdate_support=no
4397 ##################################################################
4398 # then test for uuid.h (necessary to generate unique DNS keynames
4399 # (uuid.h is required for this test)
4400 AC_CHECK_HEADERS(uuid/uuid.h)
4402 if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4403 if test x"$with_dnsupdate_support" = x"yes"; then
4404 AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4406 AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4408 with_dnsupdate_support=no
4412 if test x"$with_dnsupdate_support" != x"no"; then
4414 ########################################################
4415 # Now see if we can find the uuid libs in standard paths
4416 # On some systems, the uuid API is in libc, so we have to
4417 # be careful not to insert a spurious -luuid.
4420 AC_LIBTESTFUNC(uuid, uuid_generate,
4425 SMB_REMOVE_LIB(uuid)
4429 with_dnsupdate_support=yes
4430 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4433 if test x"$with_dnsupdate_support" = x"yes"; then
4434 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4436 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4438 with_dnsupdate_support=no
4442 #################################################
4443 # check for automount support
4444 AC_MSG_CHECKING(whether to use automount)
4445 AC_ARG_WITH(automount,
4446 [ --with-automount Include automount support (default=no)],
4447 [ case "$withval" in
4450 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4459 #################################################
4460 # check for smbmount support
4461 AC_MSG_CHECKING(whether to use smbmount)
4462 AC_ARG_WITH(smbmount,
4463 [ --with-smbmount Include smbmount (Linux only) support (default=no)],
4464 [ case "$withval" in
4469 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
4470 SMBMOUNT_PROGS="bin/smbmount bin/smbmnt bin/smbumount"
4473 AC_MSG_ERROR(not on a linux system!)
4484 #################################################
4485 # check for mount- and umount.cifs support
4487 INSTALL_CIFSMOUNT=""
4488 UNINSTALL_CIFSMOUNT=""
4489 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4490 AC_ARG_WITH(cifsmount,
4491 [ --with-cifsmount Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
4492 [ case "$withval" in
4500 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4501 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4502 INSTALL_CIFSMOUNT="installcifsmount"
4503 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4506 AC_MSG_ERROR(not on a linux system!)
4511 [ case "$host_os" in
4514 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4515 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4516 INSTALL_CIFSMOUNT="installcifsmount"
4517 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4525 #################################################
4526 # check for cifs.spnego support
4527 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4529 INSTALL_CIFSSPNEGO=""
4530 UNINSTALL_CIFSSPNEGO=""
4531 AC_MSG_CHECKING(whether to build cifs.spnego)
4532 AC_ARG_WITH(cifsspnego,
4533 [ --with-cifsspnego Include cifs.spnego (Linux only) support (default=no)],
4534 [ case "$withval" in
4541 if test x"$use_ads" != x"yes"; then
4542 AC_MSG_ERROR(ADS support should be enabled for building cifs.spnego)
4543 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4544 AC_MSG_ERROR(keyutils package is required for cifs.spnego)
4547 AC_DEFINE(WITH_CIFSSPNEGO,1,[whether to build cifs.spnego])
4548 CIFSSPNEGO_PROGS="bin/cifs.spnego"
4549 INSTALL_CIFSSPNEGO="installcifsspnego"
4550 UNINSTALL_CIFSSPNEGO="uninstallcifsspnego"
4554 AC_MSG_ERROR(not on a linux system!)
4565 #################################################
4566 # Check for a PAM clear-text auth, accounts, password
4567 # and session support. Most PAM implementations keep their
4568 # headers in /usr/include/security. Darwin keeps its in
4571 with_pam_for_crypt=no
4573 AC_MSG_CHECKING(whether to try PAM support)
4575 [ --with-pam Include PAM support (default=no)],
4576 [ case "$withval" in
4582 AC_MSG_RESULT([$try_pam])
4585 create_pam_modules=no
4586 if test x"${try_pam}" != x"no";then
4588 create_pam_modules=yes
4590 # Most systems have PAM headers in /usr/include/security, but Darwin
4591 # has them in /usr/include/pam.
4592 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4593 if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4594 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4595 if test x"${try_pam}" = x"yes";then
4596 AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4599 create_pam_modules=no
4602 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4603 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4604 if test x"${try_pam}" = x"yes";then
4605 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4608 create_pam_modules=no
4611 AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4612 #if HAVE_SECURITY_PAM_APPL_H
4613 #include <security/pam_appl.h>
4615 #if HAVE_PAM_PAM_APPL_H
4616 #include <pam/pam_appl.h>
4619 if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4620 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4621 if test x"${try_pam}" = x"yes";then
4622 AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4624 create_pam_modules=no
4627 if test x"$use_pam" = x"yes"; then
4628 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4629 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4630 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4631 with_pam_for_crypt=yes
4633 if test x"$create_pam_modules" = x"yes"; then
4634 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4635 # this checks are optional,
4636 # we don't care about the results here
4637 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4638 AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4639 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4641 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4644 AC_MSG_CHECKING(whether to use PAM support)
4645 AC_MSG_RESULT([$use_pam])
4647 AC_MSG_CHECKING(whether to have PAM MODULES support)
4648 AC_MSG_RESULT([$create_pam_modules])
4651 #################################################
4652 # check for pam_smbpass support
4654 INSTALL_PAM_MODULES=""
4655 UNINSTALL_PAM_MODULES=""
4656 AC_MSG_CHECKING(whether to use pam_smbpass)
4657 AC_ARG_WITH(pam_smbpass,
4658 [ --with-pam_smbpass Build PAM module for authenticating against passdb backends (default=no)],
4659 [ case "$withval" in
4663 # Conditions under which pam_smbpass should not be built.
4665 if test x"$BLDSHARED" != x"true"; then
4666 AC_MSG_ERROR([No support for shared modules])
4667 elif test x"$create_pam_modules" != x"yes"; then
4668 AC_MSG_ERROR([No support for PAM MODULES])
4670 PAM_MODULES="pam_smbpass"
4671 INSTALL_PAM_MODULES="installpammodules"
4672 UNINSTALL_PAM_MODULES="uninstallpammodules"
4683 ###############################################
4684 # test for where we get crypt() from
4685 AC_SEARCH_LIBS(crypt, [crypt],
4686 [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4687 AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4690 ## moved after the check for -lcrypt in order to
4691 ## ensure that the necessary libraries are included
4692 ## check checking for truncated salt. Wrapped by the
4693 ## $with_pam_for_crypt variable as above --jerry
4695 if test $with_pam_for_crypt = no; then
4696 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4698 LIBS="$AUTH_LIBS $LIBS"
4699 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4700 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4701 LIBS="$crypt_LIBS"])
4702 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4703 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4707 #################################################
4708 # check for a NISPLUS_HOME support
4709 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4710 AC_ARG_WITH(nisplus-home,
4711 [ --with-nisplus-home Include NISPLUS_HOME support (default=no)],
4712 [ case "$withval" in
4715 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4724 #################################################
4725 # check for syslog logging
4726 AC_MSG_CHECKING(whether to use syslog logging)
4728 [ --with-syslog Include experimental SYSLOG support (default=no)],
4729 [ case "$withval" in
4732 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4741 #################################################
4742 # check for experimental disk-quotas support
4744 samba_cv_WITH_QUOTAS=auto
4745 samba_cv_TRY_QUOTAS=no
4746 samba_cv_RUN_QUOTA_TESTS=auto
4747 samba_cv_WITH_SYS_QUOTAS=auto
4748 samba_cv_TRY_SYS_QUOTAS=auto
4749 samba_cv_SYSQUOTA_FOUND=no
4751 AC_MSG_CHECKING(whether to try disk-quotas support)
4753 [ --with-quotas Include disk-quota support (default=no)],
4754 [ case "$withval" in
4757 samba_cv_WITH_QUOTAS=yes
4758 samba_cv_TRY_QUOTAS=yes
4759 samba_cv_RUN_QUOTA_TESTS=yes
4760 #set sys quotas to auto in this case
4761 samba_cv_TRY_SYS_QUOTAS=auto
4765 samba_cv_WITH_QUOTAS=auto
4766 samba_cv_TRY_QUOTAS=auto
4767 samba_cv_RUN_QUOTA_TESTS=auto
4768 #set sys quotas to auto in this case
4769 samba_cv_TRY_SYS_QUOTAS=auto
4773 samba_cv_WITH_QUOTAS=no
4774 samba_cv_TRY_QUOTAS=no
4775 samba_cv_RUN_QUOTA_TESTS=no
4778 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4781 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4784 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4785 AC_ARG_WITH(sys-quotas,
4786 [ --with-sys-quotas Include lib/sysquotas.c support (default=auto)],
4787 [ case "$withval" in
4790 samba_cv_WITH_SYS_QUOTAS=yes
4791 samba_cv_TRY_SYS_QUOTAS=yes
4792 samba_cv_RUN_QUOTA_TESTS=yes
4796 samba_cv_WITH_SYS_QUOTAS=auto
4797 samba_cv_TRY_SYS_QUOTAS=auto
4798 samba_cv_RUN_QUOTA_TESTS=auto
4802 samba_cv_WITH_SYS_QUOTAS=no
4803 samba_cv_TRY_SYS_QUOTAS=no
4806 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4809 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4812 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4813 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4817 samba_cv_TRY_SYS_QUOTAS=yes
4818 samba_cv_RUN_QUOTA_TESTS=yes
4822 samba_cv_TRY_SYS_QUOTAS=no
4827 #############################################
4828 # only check for quota stuff if --with-quotas
4829 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4832 # on linux we didn't need to test we have builtin support
4834 samba_cv_SYSQUOTA_FOUND=yes
4835 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4836 samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4837 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4840 AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4841 samba_cv_found_xfs_header=yes
4842 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4846 # need to set this define when using static linking (BUG 1473)
4847 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4853 # some broken header files need this
4854 AC_CHECK_HEADER(asm/types.h,[
4855 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4856 AC_ADD_INCLUDE(<asm/types.h>)
4859 # For quotas on Veritas VxFS filesystems
4860 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4862 # For quotas on Linux XFS filesystems
4863 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4865 # For sys/quota.h and linux/quota.h
4866 AC_CHECK_HEADERS(sys/quota.h)
4868 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4869 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4870 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4872 #include "confdefs.h"
4873 #ifdef HAVE_SYS_TYPES_H
4874 #include <sys/types.h>
4876 #ifdef HAVE_ASM_TYPES_H
4877 #include <asm/types.h>
4879 #include <sys/quota.h>
4880 ],[int i = Q_XGETQUOTA;],
4881 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4882 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4883 samba_cv_found_xfs_header=yes
4887 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4888 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4890 #include "confdefs.h"
4891 #ifdef HAVE_SYS_QUOTA_H
4892 #include <sys/quota.h>
4896 D.dqb_fsoftlimit = 0;],
4897 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4898 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4899 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4903 # look for a working quota system
4905 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4906 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4908 #define HAVE_QUOTACTL_4A 1
4909 #define AUTOCONF_TEST 1
4910 #include "confdefs.h"
4911 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4912 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4913 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4914 samba_cv_SYSQUOTA_FOUND=yes;
4915 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4916 samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4920 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4921 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4923 #define HAVE_QUOTACTL_4B 1
4924 #define AUTOCONF_TEST 1
4925 #include "confdefs.h"
4926 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4927 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4928 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4929 echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4930 samba_cv_SYSQUOTA_FOUND=yes;
4931 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4932 samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4936 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4937 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4939 #define HAVE_QUOTACTL_3 1
4940 #define AUTOCONF_TEST 1
4941 #include "confdefs.h"
4942 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4943 samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4944 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4945 echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4946 samba_cv_SYSQUOTA_FOUND=yes;
4947 AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4948 samba_cv_sysquotas_file="lib/sysquotas_3.c"
4952 #################################################
4953 # check for mntent.h and struct mntent
4954 AC_CHECK_HEADERS(mntent.h)
4955 #################################################
4956 # check for setmntent,getmntent,endmntent
4957 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4959 #################################################
4960 # check for devnm.h and struct mntent
4961 AC_CHECK_HEADERS(devnm.h)
4962 #################################################
4964 AC_CHECK_FUNCS(devnm)
4966 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4967 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4968 # if --with-sys-quotas=yes then build it
4969 # you have can use the get/set quota command smb.conf
4971 samba_cv_SYSQUOTA_FOUND=auto
4973 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4974 # if --with-sys-quotas=yes then build it
4975 # you have can use the get/set quota command smb.conf
4977 samba_cv_TRY_SYS_QUOTAS=auto
4981 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4982 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4983 SAVE_CPPFLAGS="$CPPFLAGS"
4984 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4986 #include "confdefs.h"
4987 #define NO_PROTO_H 1
4988 #define NO_CONFIG_H 1
4989 #define HAVE_SYS_QUOTAS 1
4990 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4991 #include "${srcdir-.}/lib/sysquotas.c"
4992 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4993 CPPFLAGS="$SAVE_CPPFLAGS"
4995 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4996 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4997 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4998 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4999 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
5000 samba_cv_WE_USE_SYS_QUOTAS=yes
5008 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
5009 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
5010 SAVE_CPPFLAGS="$CPPFLAGS"
5011 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5013 #include "confdefs.h"
5014 #define NO_PROTO_H 1
5015 #define NO_CONFIG_H 1
5016 #define HAVE_SYS_QUOTAS 1
5017 #define HAVE_XFS_QUOTAS 1
5018 #include "${srcdir-.}/lib/sysquotas_xfs.c"
5019 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
5020 CPPFLAGS="$SAVE_CPPFLAGS"
5022 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
5023 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
5024 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
5029 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
5030 SAVE_CPPFLAGS="$CPPFLAGS"
5031 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5033 #include "confdefs.h"
5034 #define NO_PROTO_H 1
5035 #define NO_CONFIG_H 1
5036 #include "${srcdir-.}/smbd/quotas.c"
5037 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
5038 CPPFLAGS="$SAVE_CPPFLAGS"
5040 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
5041 AC_MSG_CHECKING(whether to use the old quota support)
5042 if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
5043 if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
5044 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5054 ####################
5055 # End of quota check samba_cv_RUN_QUOTA_TESTS
5058 #################################################
5059 # check for experimental utmp accounting
5061 AC_MSG_CHECKING(whether to support utmp accounting)
5064 [ --with-utmp Include utmp accounting (default, if supported by OS)],
5065 [ case "$withval" in
5075 # utmp requires utmp.h
5076 # Note similar check earlier, when checking utmp details.
5078 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
5079 utmp_no_reason=", no utmp.h on $host_os"
5083 # Display test results
5085 if test x"$WITH_UTMP" = x"yes"; then
5087 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
5089 AC_MSG_RESULT(no$utmp_no_reason)
5094 UNINSTALLLIBCMD_SH=:
5097 if test $BLDSHARED = true; then
5098 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
5099 UNINSTALLLIBCMD_SH="rm -f"
5101 if test $enable_static = yes; then
5102 INSTALLLIBCMD_A="\$(INSTALLCMD)"
5103 UNINSTALLLIBCMD_A="rm -f"
5106 #################################################
5107 # should we build libnetapi?
5109 UNINSTALL_LIBNETAPI=
5112 AC_MSG_CHECKING(whether to build the libnetapi shared library)
5113 AC_ARG_WITH(libnetapi,
5114 [ --with-libnetapi Build the libnetapi shared library (default=yes if shared libs supported)],
5115 [ case "$withval" in
5120 if test $BLDSHARED = true; then
5121 LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
5126 AC_MSG_RESULT(no shared library support -- will supply static library)
5128 if test $enable_static = yes; then
5131 INSTALL_LIBNETAPI=installlibnetapi
5132 UNINSTALL_LIBNETAPI=uninstalllibnetapi
5136 # if unspecified, default is to built it if possible.
5137 if test $BLDSHARED = true; then
5138 LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
5143 AC_MSG_RESULT(no shared library support -- will supply static library)
5145 if test $enable_static = yes; then
5148 INSTALL_LIBNETAPI=installlibnetapi
5151 #################################################
5152 # should we build libaddns?
5157 AC_MSG_CHECKING(whether to build the libaddns shared library)
5158 AC_ARG_WITH(libaddns,
5159 [ --with-libaddns Build the libaddns shared library (default=no undefined API)],
5160 [ case "$withval" in
5165 if test $BLDSHARED = true; then
5166 LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
5171 AC_MSG_RESULT(no shared library support -- will supply static library)
5173 if test $enable_static = yes; then
5176 INSTALL_LIBADDNS=installlibaddns
5177 UNINSTALL_LIBADDNS=uninstalllibaddns
5183 #################################################
5184 # should we build libsmbclient?
5186 INSTALL_LIBSMBCLIENT=
5187 UNINSTALL_LIBSMBCLIENT=
5188 LIBSMBCLIENT_SHARED=
5190 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
5191 AC_ARG_WITH(libsmbclient,
5192 [ --with-libsmbclient Build the libsmbclient shared library (default=yes if shared libs supported)],
5193 [ case "$withval" in
5198 if test $BLDSHARED = true; then
5199 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
5200 LIBSMBCLIENT=libsmbclient
5204 AC_MSG_RESULT(no shared library support -- will supply static library)
5206 if test $enable_static = yes; then
5207 LIBSMBCLIENT=libsmbclient
5209 INSTALL_LIBSMBCLIENT=installclientlib
5210 UNINSTALL_LIBSMBCLIENT=uninstallclientlib
5214 # if unspecified, default is to built it if possible.
5215 if test $BLDSHARED = true; then
5216 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
5217 LIBSMBCLIENT=libsmbclient
5221 AC_MSG_RESULT(no shared library support -- will supply static library)
5223 if test $enable_static = yes; then
5224 LIBSMBCLIENT=libsmbclient
5226 INSTALL_LIBSMBCLIENT=installclientlib
5227 UNINSTALL_LIBSMBCLIENT=uninstallclientlib
5230 INSTALL_LIBSMBSHAREMODES=
5231 LIBSMBSHAREMODES_SHARED=
5233 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
5234 AC_ARG_WITH(libsmbsharemodes,
5235 [ --with-libsmbsharemodes Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
5236 [ case "$withval" in
5241 if test $BLDSHARED = true; then
5242 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
5243 LIBSMBSHAREMODES=libsmbsharemodes
5247 AC_MSG_RESULT(no shared library support -- will supply static library)
5249 if test $enable_static = yes; then
5250 LIBSMBSHAREMODES=libsmbsharemodes
5252 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
5253 UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
5257 # if unspecified, default is to built it if possible.
5258 if test $BLDSHARED = true; then
5259 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
5260 LIBSMBSHAREMODES=libsmbsharemodes
5264 AC_MSG_RESULT(no shared library support -- will supply static library)
5266 if test $enable_static = yes; then
5267 LIBSMBSHAREMODES=libsmbsharemodes
5269 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
5273 #################################################
5274 # these tests are taken from the GNU fileutils package
5275 AC_CHECKING(how to get filesystem space usage)
5278 # Test for statvfs64.
5279 if test $space = no; then
5281 AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
5283 #if defined(HAVE_UNISTD_H)
5286 #include <sys/types.h>
5287 #include <sys/statvfs.h>
5290 struct statvfs64 fsd;
5291 exit (statvfs64 (".", &fsd));
5293 fu_cv_sys_stat_statvfs64=yes,
5294 fu_cv_sys_stat_statvfs64=no,
5295 fu_cv_sys_stat_statvfs64=cross)])
5296 if test $fu_cv_sys_stat_statvfs64 = yes; then
5298 AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
5302 # Perform only the link test since it seems there are no variants of the
5303 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
5304 # because that got a false positive on SCO OSR5. Adding the declaration
5305 # of a `struct statvfs' causes this test to fail (as it should) on such
5306 # systems. That system is reported to work fine with STAT_STATFS4 which
5307 # is what it gets when this test fails.
5308 if test $space = no; then
5310 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5311 [AC_TRY_LINK([#include <sys/types.h>
5312 #include <sys/statvfs.h>],
5313 [struct statvfs fsd; statvfs (0, &fsd);],
5314 fu_cv_sys_stat_statvfs=yes,
5315 fu_cv_sys_stat_statvfs=no)])
5316 if test $fu_cv_sys_stat_statvfs = yes; then
5318 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5322 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5323 # This is not the case on ancient Linux systems.
5325 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5326 AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5327 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5328 if test x"$samba_cv_fsid_int" = x"yes"; then
5329 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5332 if test $space = no; then
5333 # DEC Alpha running OSF/1
5334 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5335 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5337 #include <sys/param.h>
5338 #include <sys/types.h>
5339 #include <sys/mount.h>
5344 exit (statfs (".", &fsd, sizeof (struct statfs)));
5346 fu_cv_sys_stat_statfs3_osf1=yes,
5347 fu_cv_sys_stat_statfs3_osf1=no,
5348 fu_cv_sys_stat_statfs3_osf1=no)])
5349 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5350 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5352 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5356 if test $space = no; then
5358 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5359 member (AIX, 4.3BSD)])
5360 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5362 #ifdef HAVE_SYS_PARAM_H
5363 #include <sys/param.h>
5365 #ifdef HAVE_SYS_MOUNT_H
5366 #include <sys/mount.h>
5368 #ifdef HAVE_SYS_VFS_H
5369 #include <sys/vfs.h>
5375 exit (statfs (".", &fsd));
5377 fu_cv_sys_stat_statfs2_bsize=yes,
5378 fu_cv_sys_stat_statfs2_bsize=no,
5379 fu_cv_sys_stat_statfs2_bsize=no)])
5380 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5381 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5383 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5387 if test $space = no; then
5389 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5390 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5391 [AC_TRY_RUN([#include <sys/types.h>
5392 #include <sys/statfs.h>
5396 exit (statfs (".", &fsd, sizeof fsd, 0));
5398 fu_cv_sys_stat_statfs4=yes,
5399 fu_cv_sys_stat_statfs4=no,
5400 fu_cv_sys_stat_statfs4=no)])
5401 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5402 if test $fu_cv_sys_stat_statfs4 = yes; then
5404 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5408 if test $space = no; then
5410 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5411 member (4.4BSD and NetBSD)])
5412 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5413 [AC_TRY_RUN([#include <sys/types.h>
5414 #ifdef HAVE_SYS_PARAM_H
5415 #include <sys/param.h>
5417 #ifdef HAVE_SYS_MOUNT_H
5418 #include <sys/mount.h>
5424 exit (statfs (".", &fsd));
5426 fu_cv_sys_stat_statfs2_fsize=yes,
5427 fu_cv_sys_stat_statfs2_fsize=no,
5428 fu_cv_sys_stat_statfs2_fsize=no)])
5429 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5430 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5432 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5436 if test $space = no; then
5438 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5439 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5440 [AC_TRY_RUN([#include <sys/types.h>
5441 #ifdef HAVE_SYS_PARAM_H
5442 #include <sys/param.h>
5444 #ifdef HAVE_SYS_MOUNT_H
5445 #include <sys/mount.h>
5447 #ifdef HAVE_SYS_FS_TYPES_H
5448 #include <sys/fs_types.h>
5453 /* Ultrix's statfs returns 1 for success,
5454 0 for not mounted, -1 for failure. */
5455 exit (statfs (".", &fsd) != 1);
5457 fu_cv_sys_stat_fs_data=yes,
5458 fu_cv_sys_stat_fs_data=no,
5459 fu_cv_sys_stat_fs_data=no)])
5460 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5461 if test $fu_cv_sys_stat_fs_data = yes; then
5463 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5468 # As a gating factor for large file support, in order to
5469 # use <4GB files we must have the following minimal support
5471 # long long, and a 64 bit off_t or off64_t.
5472 # If we don't have all of these then disable large
5475 AC_MSG_CHECKING([if large file support can be enabled])
5477 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5478 #include <sys/types.h>
5484 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5485 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5486 AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5488 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5490 #################################################
5491 # check for cluster extensions
5493 AC_MSG_CHECKING(whether to include cluster support)
5494 AC_ARG_WITH(cluster-support,
5495 [ --with-cluster-support Enable cluster extensions (default=no)])
5496 if test "x$with_cluster_support" = "xyes"; then
5497 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5504 #################################################
5505 # check for ACL support
5507 AC_MSG_CHECKING(whether to support ACLs)
5508 AC_ARG_WITH(acl-support,
5509 [ --with-acl-support Include ACL support (default=auto)],
5510 [ case "$withval" in
5512 with_acl_support="$withval"
5516 if test x"$with_acl_support" = x ; then
5517 with_acl_support="auto"
5520 AC_MSG_RESULT($with_acl_support)
5522 if test x"$with_acl_support" = x"no"; then
5523 AC_MSG_RESULT(Disabling ACL support)
5524 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5526 AC_MSG_NOTICE(checking whether ACL support is available:)
5529 AC_MSG_NOTICE(Using UnixWare ACLs)
5530 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5531 default_static_modules="$default_static_modules vfs_solarisacl"
5534 AC_MSG_NOTICE(Using solaris ACLs)
5535 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5536 ACL_LIBS="$ACL_LIBS -lsec"
5537 default_static_modules="$default_static_modules vfs_solarisacl"
5540 AC_MSG_NOTICE(Using HPUX ACLs)
5541 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5542 default_static_modules="$default_static_modules vfs_hpuxacl"
5545 AC_MSG_NOTICE(Using IRIX ACLs)
5546 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5547 default_static_modules="$default_static_modules vfs_irixacl"
5550 AC_MSG_NOTICE(Using AIX ACLs)
5551 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5552 default_static_modules="$default_static_modules vfs_aixacl"
5555 AC_MSG_NOTICE(Using Tru64 ACLs)
5556 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5557 ACL_LIBS="$ACL_LIBS -lpacl"
5558 default_static_modules="$default_static_modules vfs_tru64acl"
5561 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5562 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5565 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5568 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5571 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5573 LIBS="$LIBS $ACL_LIBS"
5575 #include <sys/types.h>
5576 #include <sys/acl.h>
5580 acl_entry_t *entry_p;
5581 return acl_get_entry(acl, entry_id, entry_p);
5583 [samba_cv_HAVE_POSIX_ACLS=yes],
5584 [samba_cv_HAVE_POSIX_ACLS=no])
5587 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5588 AC_MSG_NOTICE(Using posix ACLs)
5589 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5590 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5592 LIBS="$LIBS $ACL_LIBS"
5594 #include <sys/types.h>
5595 #include <sys/acl.h>
5597 acl_permset_t permset_d;
5599 return acl_get_perm_np(permset_d, perm);
5601 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5602 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5605 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5606 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5608 default_static_modules="$default_static_modules vfs_posixacl"
5610 AC_MSG_NOTICE(ACL support is not avaliable)
5611 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5615 fi # with_acl_support
5619 #################################################
5620 # check for AIO support
5622 AC_MSG_CHECKING(whether to support asynchronous io)
5623 AC_ARG_WITH(aio-support,
5624 [ --with-aio-support Include asynchronous io support (default=no)],
5625 [ case "$withval" in
5632 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5633 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5634 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5637 AC_TRY_LINK([#include <sys/types.h>
5639 [ struct aiocb a; return aio_read(&a);],
5640 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5642 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5645 AC_TRY_LINK([#include <sys/types.h>
5647 [ struct aiocb64 a; return aio_read64(&a);],
5648 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5650 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5651 AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5652 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5654 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5655 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5659 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5660 AC_MSG_CHECKING(for aio_read)
5661 AC_LINK_IFELSE([#include <aio.h>
5662 int main() { struct aiocb a; return aio_read(&a); }],
5663 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5664 [AC_MSG_RESULT(no)])
5666 AC_MSG_CHECKING(for aio_write)
5667 AC_LINK_IFELSE([#include <aio.h>
5668 int main() { struct aiocb a; return aio_write(&a); }],
5669 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5670 [AC_MSG_RESULT(no)])
5672 AC_MSG_CHECKING(for aio_fsync)
5673 AC_LINK_IFELSE([#include <aio.h>
5674 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5675 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5676 [AC_MSG_RESULT(no)])
5678 AC_MSG_CHECKING(for aio_return)
5679 AC_LINK_IFELSE([#include <aio.h>
5680 int main() { struct aiocb a; return aio_return(&a); }],
5681 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5682 [AC_MSG_RESULT(no)])
5684 AC_MSG_CHECKING(for aio_error)
5685 AC_LINK_IFELSE([#include <aio.h>
5686 int main() { struct aiocb a; return aio_error(&a); }],
5687 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5688 [AC_MSG_RESULT(no)])
5690 AC_MSG_CHECKING(for aio_cancel)
5691 AC_LINK_IFELSE([#include <aio.h>
5692 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5693 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5694 [AC_MSG_RESULT(no)])
5696 AC_MSG_CHECKING(for aio_suspend)
5697 AC_LINK_IFELSE([#include <aio.h>
5698 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5699 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5700 [AC_MSG_RESULT(no)])
5703 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5704 AC_MSG_CHECKING(for aio_read64)
5705 AC_LINK_IFELSE([#include <aio.h>
5706 int main() { struct aiocb a; return aio_read64(&a); }],
5707 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5708 [AC_MSG_RESULT(no)])
5710 AC_MSG_CHECKING(for aio_write64)
5711 AC_LINK_IFELSE([#include <aio.h>
5712 int main() { struct aiocb a; return aio_write64(&a); }],
5713 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5714 [AC_MSG_RESULT(no)])
5716 AC_MSG_CHECKING(for aio_fsync64)
5717 AC_LINK_IFELSE([#include <aio.h>
5718 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5719 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5720 [AC_MSG_RESULT(no)])
5722 AC_MSG_CHECKING(for aio_return64)
5723 AC_LINK_IFELSE([#include <aio.h>
5724 int main() { struct aiocb a; return aio_return64(&a); }],
5725 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5726 [AC_MSG_RESULT(no)])
5728 AC_MSG_CHECKING(for aio_error64)
5729 AC_LINK_IFELSE([#include <aio.h>
5730 int main() { struct aiocb a; return aio_error64(&a); }],
5731 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5732 [AC_MSG_RESULT(no)])
5734 AC_MSG_CHECKING(for aio_cancel64)
5735 AC_LINK_IFELSE([#include <aio.h>
5736 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5737 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5738 [AC_MSG_RESULT(no)])
5740 AC_MSG_CHECKING(for aio_suspend64)
5741 AC_LINK_IFELSE([#include <aio.h>
5742 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5743 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5744 [AC_MSG_RESULT(no)])
5751 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5754 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5758 #################################################
5759 # check for sendfile support
5761 with_sendfile_support=yes
5762 AC_MSG_CHECKING(whether to check to support sendfile)
5763 AC_ARG_WITH(sendfile-support,
5764 [ --with-sendfile-support Check for sendfile support (default=yes)],
5765 [ case "$withval" in
5772 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5773 AC_TRY_LINK([#include <sys/sendfile.h>],
5778 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5780 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5782 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5783 AC_TRY_LINK([#include <sys/sendfile.h>],
5788 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5790 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5792 # Try and cope with broken Linux sendfile....
5793 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5795 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5796 #undef _FILE_OFFSET_BITS
5798 #include <sys/sendfile.h>],
5803 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5805 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5807 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5808 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5809 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5810 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5811 elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5812 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5813 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5814 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5815 elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5816 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5817 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5823 *freebsd* | *dragonfly* )
5824 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5826 #include <sys/types.h>
5828 #include <sys/socket.h>
5829 #include <sys/uio.h>],
5831 int fromfd, tofd, ret, total=0;
5832 off_t offset, nwritten;
5835 hdr.headers = &hdtrl;
5837 hdr.trailers = NULL;
5839 hdtrl.iov_base = NULL;
5841 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5843 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5845 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5846 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5847 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5848 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5855 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5857 #include <sys/socket.h>
5858 #include <sys/uio.h>],
5862 struct iovec hdtrl[2];
5866 hdtrl[0].iov_base = 0;
5867 hdtrl[0].iov_len = 0;
5869 nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5871 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5872 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5873 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5874 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5875 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5880 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5882 #include <sys/socket.h>
5883 #include <sys/uio.h>],
5887 struct iovec hdtrl[2];
5891 hdtrl[0].iov_base = 0;
5892 hdtrl[0].iov_len = 0;
5894 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5896 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5897 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5898 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5899 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5900 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5907 AC_CHECK_LIB(sendfile,sendfilev)
5908 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5910 #include <sys/sendfile.h>],
5914 struct sendfilevec vec[2];
5920 vec[0].sfv_fd = SFV_FD_SELF;
5921 vec[0].sfv_flag = 0;
5926 vec[1].sfv_flag = 0;
5929 nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5931 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5933 if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5934 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5935 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5936 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5941 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5943 #include <sys/sendfile.h>],
5947 struct sendfilevec vec[2];
5953 vec[0].sfv_fd = SFV_FD_SELF;
5954 vec[0].sfv_flag = 0;
5959 vec[1].sfv_flag = 0;
5962 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5964 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5966 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5967 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5968 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5969 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5975 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5977 #include <sys/socket.h>],
5981 struct sf_parms hdtrl;
5985 hdtrl.header_data = 0;
5986 hdtrl.header_length = 0;
5987 hdtrl.file_descriptor = fromfd;
5988 hdtrl.file_offset = 0;
5989 hdtrl.file_bytes = 0;
5990 hdtrl.trailer_data = 0;
5991 hdtrl.trailer_length = 0;
5993 nwritten = send_file(&tofd, &hdtrl, 0);
5995 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5996 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5997 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5998 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5999 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
6015 ############################################
6016 # See if we have the Linux readahead syscall.
6018 AC_CACHE_CHECK([for Linux readahead],
6019 samba_cv_HAVE_LINUX_READAHEAD,[
6021 #if defined(HAVE_UNISTD_H)
6024 #include <fcntl.h>],
6025 [ssize_t err = readahead(0,0,0x80000);],
6026 samba_cv_HAVE_LINUX_READAHEAD=yes,
6027 samba_cv_HAVE_LINUX_READAHEAD=no)])
6029 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
6030 AC_DEFINE(HAVE_LINUX_READAHEAD,1,
6031 [Whether Linux readahead is available])
6034 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
6036 ############################################
6037 # See if we have the posix_fadvise syscall.
6039 AC_CACHE_CHECK([for posix_fadvise],
6040 samba_cv_HAVE_POSIX_FADVISE,[
6042 #if defined(HAVE_UNISTD_H)
6045 #include <fcntl.h>],
6046 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
6047 samba_cv_HAVE_POSIX_FADVISE=yes,
6048 samba_cv_HAVE_POSIX_FADVISE=no)])
6050 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
6051 AC_DEFINE(HAVE_POSIX_FADVISE,1,
6052 [Whether posix_fadvise is available])
6057 #################################################
6058 # Check whether winbind is supported on this platform. If so we need to
6059 # build and install client programs, sbin programs and shared libraries
6061 AC_MSG_CHECKING(whether to build winbind)
6063 # Initially, the value of $host_os decides whether winbind is supported
6067 # Define the winbind shared library name and any specific linker flags
6068 # it needs to be built with.
6070 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
6071 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
6072 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
6073 NSSSONAMEVERSIONSUFFIX=""
6074 WINBIND_NSS_PTHREAD=""
6078 NSSSONAMEVERSIONSUFFIX=".2"
6079 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
6082 # FreeBSD winbind client is implemented as a wrapper around
6083 # the Linux version.
6084 NSSSONAMEVERSIONSUFFIX=".1"
6085 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
6086 nsswitch/winbind_nss_linux.o"
6087 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
6088 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
6092 # NetBSD winbind client is implemented as a wrapper
6093 # around the Linux version. It needs getpwent_r() to
6094 # indicate libc's use of the correct nsdispatch API.
6096 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
6097 WINBIND_NSS_EXTRA_OBJS="\
6098 nsswitch/winbind_nss_netbsd.o \
6099 nsswitch/winbind_nss_linux.o"
6100 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
6101 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
6104 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6108 # IRIX has differently named shared libraries
6109 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
6110 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
6111 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
6114 # Solaris winbind client is implemented as a wrapper around
6115 # the Linux version.
6116 NSSSONAMEVERSIONSUFFIX=".1"
6117 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
6118 nsswitch/winbind_nss_linux.o"
6119 WINBIND_NSS_EXTRA_LIBS="-lsocket"
6122 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
6125 # AIX has even differently named shared libraries. No
6126 # WINS support has been implemented yet.
6127 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
6128 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6129 WINBIND_NSS="nsswitch/WINBIND"
6134 winbind_no_reason=", unsupported on $host_os"
6138 # Check the setting of --with-winbind
6140 AC_ARG_WITH(winbind,
6141 [ --with-winbind Build winbind (default, if supported by OS)],
6154 # We need unix domain sockets for winbind
6156 if test x"$HAVE_WINBIND" = x"yes"; then
6157 if test x"$samba_cv_unixsocket" = x"no"; then
6158 winbind_no_reason=", no unix domain socket support on $host_os"
6163 # Display test results
6165 if test x"$HAVE_WINBIND" = x"no"; then
6170 BUILD_LIBWBCLIENT_SHARED=yes
6172 AC_ARG_ENABLE(libwbclient-shared,
6173 [ --enable-libwbclient-shared Build libwbclient as shared object (default=yes, \"no\" only for --enable-developer)],
6174 [if eval "test x$enable_developer = xyes -a x$enable_libwbclient_shared = xno" ; then
6175 BUILD_LIBWBCLIENT_SHARED=no
6178 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6179 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6180 ## Only worry about libwbclient if we have shared library support
6182 LIBWBCLIENT_SHARED=bin/libwbclient.$SHLIBEXT
6183 LIBWBCLIENT=libwbclient
6184 INSTALL_LIBWBCLIENT=installlibwbclient
6185 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6186 WINBIND_LIBS="-lwbclient"
6187 LDFLAGS="$LDFLAGS -L./bin"
6189 LIBWBCLIENT_STATIC=bin/libwbclient.a
6192 if test x"$HAVE_WINBIND" = x"yes"; then
6194 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6196 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6197 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6198 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6199 PAM_MODULES="$PAM_MODULES pam_winbind"
6200 INSTALL_PAM_MODULES="installpammodules"
6201 UNINSTALL_PAM_MODULES="uninstallpammodules"
6204 AC_MSG_RESULT(no$winbind_no_reason)
6207 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
6208 AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
6210 AC_SUBST(WINBIND_NSS_PTHREAD)
6211 AC_SUBST(WINBIND_NSS)
6212 AC_SUBST(WINBIND_WINS_NSS)
6213 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6214 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6215 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
6216 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6218 AC_SUBST(WINBIND_KRB5_LOCATOR)
6220 # Solaris 10 does have new member in nss_XbyY_key
6221 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6222 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6223 [#include <nss_dbdefs.h>])
6225 # Solaris has some extra fields in struct passwd that need to be
6226 # initialised otherwise nscd crashes.
6228 AC_CHECK_MEMBER(struct passwd.pw_comment,
6229 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6232 AC_CHECK_MEMBER(struct passwd.pw_age,
6233 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6236 # AIX 4.3.x and 5.1 do not have as many members in
6237 # struct secmethod_table as AIX 5.2
6238 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6239 [#include <usersec.h>])
6240 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6241 [#include <usersec.h>])
6243 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6244 AC_TRY_COMPILE([#include <sys/types.h>
6245 #include <sys/socket.h>],
6248 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6250 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6251 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6252 AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6256 #################################################
6257 # Check to see if we should use the included popt
6259 AC_ARG_WITH(included-popt,
6260 [ --with-included-popt use bundled popt library, not from system],
6271 if test x"$INCLUDED_POPT" != x"yes"; then
6272 AC_CHECK_LIB(popt, poptGetContext,
6273 INCLUDED_POPT=no, INCLUDED_POPT=yes)
6276 AC_MSG_CHECKING(whether to use included popt)
6277 if test x"$INCLUDED_POPT" = x"yes"; then
6279 BUILD_POPT='$(POPT_OBJ)'
6280 POPTLIBS='$(POPT_OBJ)'
6281 FLAGS1="-I\$(srcdir)/popt"
6287 AC_SUBST(BUILD_POPT)
6291 #################################################
6292 # Check if user wants DNS service discovery support
6294 AC_ARG_ENABLE(dnssd,
6295 [ --enable-dnssd Enable DNS service discovery support (default=auto)])
6297 AC_SUBST(DNSSD_LIBS)
6298 if test x"$enable_dnssd" != x"no"; then
6299 have_dnssd_support=yes
6301 AC_CHECK_HEADERS(dns_sd.h)
6302 if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6303 have_dnssd_support=no
6306 # On Darwin the DNSSD API is in libc, but on other platforms it's
6307 # probably in -ldns_sd
6308 AC_CHECK_FUNCS(DNSServiceRegister)
6309 AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6310 if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6311 x"$ac_cv_lib_ext_DNSServiceRegister" != x"yes"; then
6312 have_dnssd_support=no
6315 if test x"$have_dnssd_support" = x"yes"; then
6316 AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6317 [Whether to enable DNS service discovery support])
6319 if test x"$enable_dnssd" = x"yes"; then
6320 AC_MSG_ERROR(DNS service discovery support not available)
6326 #################################################
6327 # Check to see if we should use the included iniparser
6329 AC_ARG_WITH(included-iniparser,
6330 [ --with-included-iniparser use bundled iniparser library, not from system],
6334 INCLUDED_INIPARSER=yes
6337 INCLUDED_INIPARSER=no
6341 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6342 AC_CHECK_LIB(iniparser, iniparser_load,
6343 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6346 AC_MSG_CHECKING(whether to use included iniparser)
6347 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6349 BUILD_INIPARSER='$(INIPARSER_OBJ)'
6351 FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6355 INIPARSERLIBS="-liniparser"
6357 AC_SUBST(BUILD_INIPARSER)
6358 AC_SUBST(INIPARSERLIBS)
6363 # Checks for the vfs_fileid module
6365 AC_CHECK_FUNC(getmntent)
6367 AC_CHECK_HEADERS(sys/statfs.h)
6369 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6370 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6372 #include <sys/types.h>
6373 #include <sys/statfs.h>
6377 fsid_t fsid = fsd.f_fsid;
6378 return statfs (".", &fsd);
6380 vfsfileid_cv_statfs=yes,
6381 vfsfileid_cv_statfs=no,
6382 vfsfileid_cv_statfs=cross)
6384 AC_MSG_RESULT($vfsfileid_cv_statfs)
6386 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6387 x"$vfsfileid_cv_statfs" = x"yes"; then
6388 default_shared_modules="$default_shared_modules vfs_fileid"
6391 # Checks for the vfs_fileid module
6394 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6396 eval MODULE_DEFAULT_$i=STATIC
6399 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6401 dnl Fall back to static if we cannot build shared libraries
6402 eval MODULE_DEFAULT_$i=STATIC
6404 if test $BLDSHARED = true; then
6405 eval MODULE_DEFAULT_$i=SHARED
6409 dnl Always built these modules static
6410 MODULE_rpc_spoolss=STATIC
6411 MODULE_rpc_srvsvc2=STATIC
6412 MODULE_idmap_tdb=STATIC
6413 MODULE_idmap_passdb=STATIC
6414 MODULE_idmap_nss=STATIC
6416 MODULE_nss_info_template=STATIC
6418 AC_ARG_WITH(static-modules,
6419 [ --with-static-modules=MODULES Comma-separated list of names of modules to statically link in],
6420 [ if test $withval; then
6421 for i in `echo $withval | sed -e 's/,/ /g'`
6423 eval MODULE_$i=STATIC
6427 AC_ARG_WITH(shared-modules,
6428 [ --with-shared-modules=MODULES Comma-separated list of names of modules to build shared],
6429 [ if test $withval; then
6430 for i in `echo $withval | sed -e 's/,/ /g'`
6432 eval MODULE_$i=SHARED
6436 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6437 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6438 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6439 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6440 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6443 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6444 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6445 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6446 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
6447 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6448 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
6449 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6450 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6451 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6452 SMB_MODULE(rpc_srvsvc2, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc2.$SHLIBEXT", RPC)
6453 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6454 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
6455 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6456 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6457 SMB_SUBSYSTEM(RPC,smbd/server.o)
6459 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6460 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6461 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6462 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6463 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6464 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6465 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6466 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6468 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6469 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6471 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6472 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6473 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6474 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6475 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6477 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6478 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6479 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6480 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6481 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6482 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6483 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6484 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6486 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6487 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6488 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6489 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6490 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6491 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6492 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6493 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6494 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6495 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6496 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6497 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6498 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6499 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6500 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6501 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6502 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6503 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6504 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6505 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6506 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6507 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6508 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6509 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6510 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6511 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6512 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6513 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6514 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6515 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6516 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6517 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6518 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6521 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6523 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6525 #################################################
6526 # do extra things if we are running insure
6528 if test "${ac_cv_prog_CC}" = "insure"; then
6529 CPPFLAGS="$CPPFLAGS -D__INSURE__"
6532 #################################################
6533 # If run from the build farm, enable NASTY hacks
6534 #################################################
6535 AC_MSG_CHECKING(whether to enable build farm hacks)
6536 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6538 AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6543 #################################################
6544 # check for bad librt/libpthread interactions
6546 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6547 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6548 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6549 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6551 SMB_IF_RTSIGNAL_BUG(
6553 # Have RT_SIGNAL bug, need to check whether the problem will
6554 # affect anything we have configured.
6557 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6558 if test x"$rt_signal_lease_ok" = x"no" ; then
6563 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6564 if test x"$rt_signal_notify_ok" = x"no" ; then
6569 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6570 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6571 if test x"$rt_signal_aio_ok" = x"no" ; then
6576 if test x"$rt_do_error" = x"yes" ; then
6577 SMB_IS_LIBPTHREAD_LINKED(
6581 *** On this platforms, linking Samba against pthreads causes problems
6582 *** with the oplock and change notification mechanisms. You may be
6583 *** using pthreads as a side-effect of using the --with-aio-support
6584 *** or --with-profiling-data options. Please remove these and try again.
6591 *** On this platform, the oplock and change notification mechanisms do not
6592 *** appear to work. Please report this problem to samba-technical@samba.org
6593 *** and attach the config.log file from this directory.
6597 AC_MSG_ERROR(unable to use realtime signals on this platform)
6601 # no RT_SIGNAL bug, we are golden
6602 SMB_IS_LIBPTHREAD_LINKED(
6604 AC_MSG_WARN(using libpthreads - this may degrade performance)
6609 # cross compiling, I hope you know what you are doing
6615 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6616 LIB_REMOVE_USR_LIB(LDFLAGS)
6617 LIB_REMOVE_USR_LIB(LIBS)
6618 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6620 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6621 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6622 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6624 #################################################
6625 # Display summary of libraries detected
6627 AC_MSG_RESULT([Using libraries:])
6628 AC_MSG_RESULT([ LIBS = $LIBS])
6629 if test x"$with_ads_support" != x"no"; then
6630 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6632 if test x"$with_ldap_support" != x"no"; then
6633 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6635 if test x"$with_dnsupdate_support" != x"no"; then
6636 AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS])
6638 if test x"$have_dnssd_support" != x"no"; then
6639 AC_MSG_RESULT([ DNSSD_LIBS = $DNSSD_LIBS])
6641 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6643 #################################################
6644 # final configure stuff
6646 AC_MSG_CHECKING([configure summary])
6647 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6649 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6650 AC_MSG_WARN([cannot run when cross-compiling]))
6652 dnl Merge in developer cflags from now on
6653 AC_SUBST(DEVELOPER_CFLAGS)
6654 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
6655 CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6661 # Stuff the smbd-only libraries at the end of the smbd link
6662 # path (if we have them).
6663 SMBD_LIBS="$samba_dmapi_libs"
6666 AC_OUTPUT(Makefile library-versions
6667 script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6668 lib/netapi/examples/Makefile
6669 pkgconfig/smbclient.pc
6670 pkgconfig/wbclient.pc
6672 pkgconfig/smbsharemodes.pc
6675 #################################################
6676 # Print very concise instructions on building/use
6677 if test "x$enable_dmalloc" = xyes
6679 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
6680 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])