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_samr2 rpc_winreg rpc_initshutdown rpc_dssetup 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 vfs_streams_xattr"
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)
968 AC_CHECK_HEADERS(netgroup.h)
970 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
976 ## These fail to compile on IRIX so just check for their presence
977 AC_CHECK_HEADERS(sys/mode.h,,,)
979 # Look for Darwin headers
980 old_CPPFLAGS="$CPPFLAGS"
981 CPPFLAGS="-Iinclude $CPPFLAGS"
982 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
983 CPPFLAGS="$old_CPPFLAGS"
985 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
986 # subdirectory of headers.
987 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
989 # check for linux on amd64 since valgrind is not quite there yet
994 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
1002 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
1003 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
1007 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
1008 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
1009 if test x"$ac_cv_header_shadow_h" = x"yes"; then
1010 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
1014 AC_CHECK_HEADERS(shadow.h)
1015 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
1016 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
1018 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
1019 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
1021 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
1023 # For experimental utmp support (lastlog on some BSD-like systems)
1024 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
1026 AC_CHECK_SIZEOF(int,cross)
1027 AC_CHECK_SIZEOF(long,cross)
1028 AC_CHECK_SIZEOF(long long,cross)
1029 AC_CHECK_SIZEOF(short,cross)
1044 AC_CHECK_TYPE(ino_t,unsigned)
1045 AC_CHECK_TYPE(loff_t,off_t)
1046 AC_CHECK_TYPE(offset_t,loff_t)
1047 AC_CHECK_TYPE(ssize_t, int)
1048 AC_CHECK_TYPE(wchar_t, unsigned short)
1049 AC_CHECK_TYPE(comparison_fn_t,
1050 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
1052 ############################################
1053 # for cups support we need libcups, and a handful of header files
1056 [ --enable-cups Turn on CUPS support (default=auto)])
1058 if test x$enable_cups != xno; then
1059 AC_PATH_PROG(CUPS_CONFIG, cups-config)
1061 if test "x$CUPS_CONFIG" != x; then
1062 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
1063 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
1064 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
1065 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
1066 elif test x"$enable_cups" = x"yes"; then
1067 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
1071 AC_ARG_ENABLE(iprint,
1072 [ --enable-iprint Turn on iPrint support (default=yes if cups is yes)])
1074 if test x$enable_iprint != xno; then
1075 if test "x$CUPS_CONFIG" != x; then
1076 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
1077 elif test x"$enable_iprint" = x"yes"; then
1078 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
1082 ############################################
1083 # check if the compiler will optimize out function calls
1084 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
1086 #include <stdio.h>],
1089 this_function_does_not_exist();
1095 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
1096 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
1097 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1100 ############################################
1101 # check for unix domain sockets
1102 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1104 #include <sys/types.h>
1107 #include <sys/socket.h>
1108 #include <sys/un.h>],
1110 struct sockaddr_un sunaddr;
1111 sunaddr.sun_family = AF_UNIX;
1113 samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1114 if test x"$samba_cv_unixsocket" = x"yes"; then
1115 AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1119 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1121 #include <sys/types.h>
1126 #include <signal.h>],[sig_atomic_t i = 0],
1127 samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1128 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1129 AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1132 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1134 #include <sys/types.h>
1139 #if TIME_WITH_SYS_TIME
1140 # include <sys/time.h>
1143 # if HAVE_SYS_TIME_H
1144 # include <sys/time.h>
1149 ],[struct timespec ts;],
1150 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1151 if test x"$samba_cv_struct_timespec" = x"yes"; then
1152 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1155 # stupid headers have the functions but no declaration. grrrr.
1156 AC_HAVE_DECL(errno, [#include <errno.h>])
1157 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1158 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1159 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1160 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1161 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1162 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1164 # and glibc has setresuid under linux but the function does
1165 # nothing until kernel 2.1.44! very dumb.
1166 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1167 AC_TRY_RUN([#include <errno.h>
1168 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1169 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1170 if test x"$samba_cv_have_setresuid" = x"yes"; then
1171 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1174 # Do the same check for setresguid...
1176 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1177 AC_TRY_RUN([#include <unistd.h>
1179 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1180 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1181 if test x"$samba_cv_have_setresgid" = x"yes"; then
1182 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1187 ###############################################
1188 # Readline included by default unless explicitly asked not to
1189 test "${with_readline+set}" != "set" && with_readline=yes
1191 # test for where we get readline() from
1192 AC_MSG_CHECKING(whether to use readline)
1193 AC_ARG_WITH(readline,
1194 [ --with-readline[=DIR] Look for readline include/libs in DIR (default=auto) ],
1195 [ case "$with_readline" in
1199 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1200 AC_CHECK_HEADERS(readline/history.h)
1202 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1203 for termlib in ncurses curses termcap terminfo termlib tinfo; do
1204 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1206 AC_CHECK_LIB(readline, rl_callback_handler_install,
1207 [TERMLIBS="-lreadline $TERMLIBS"
1208 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1209 break], [TERMLIBS=], $TERMLIBS)])
1217 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1218 # alternate readline path
1220 _cppflags=${CPPFLAGS}
1222 # Add additional search path
1223 LDFLAGS="-L$with_readline/lib $LDFLAGS"
1224 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1226 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1227 AC_CHECK_HEADERS(readline/history.h)
1229 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1230 for termlib in ncurses curses termcap terminfo termlib; do
1231 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1233 AC_CHECK_LIB(readline, rl_callback_handler_install,
1234 [TERMLDFLAGS="-L$with_readline/lib"
1235 TERMCPPFLAGS="-I$with_readline/include"
1236 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1237 TERMLIBS="-lreadline $TERMLIBS"
1238 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1239 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1247 AC_SUBST(TERMLDFLAGS)
1249 # The readline API changed slightly from readline3 to readline4, so
1250 # code will generate warnings on one of them unless we have a few
1252 AC_CHECK_LIB(readline, rl_completion_matches,
1253 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1254 [Do we have rl_completion_matches?])],
1258 # not all readline libs have rl_event_hook or history_list
1259 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1260 AC_CHECK_LIB(readline, history_list,
1261 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1265 # The following test taken from the cvs sources
1266 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1267 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1268 # libsocket.so which has a bad implementation of gethostbyname (it
1269 # only looks in /etc/hosts), so we only look for -lsocket if we need
1271 AC_CHECK_FUNCS(connect)
1272 if test x"$ac_cv_func_connect" = x"no"; then
1275 *) AC_CHECK_LIB(nsl_s, connect) ;;
1279 *) AC_CHECK_LIB(nsl, connect) ;;
1283 *) AC_CHECK_LIB(socket, connect) ;;
1287 *) AC_CHECK_LIB(inet, connect) ;;
1289 dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1290 dnl has been cached.
1291 if test x"$ac_cv_lib_socket_connect" = x"yes" ||
1292 test x"$ac_cv_lib_inet_connect" = x"yes"; then
1293 # ac_cv_func_connect=yes
1294 # don't! it would cause AC_CHECK_FUNC to succeed next time configure is run
1295 AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1299 ###############################################
1300 # test for where we get yp_get_default_domain() from
1301 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1302 AC_CHECK_FUNCS(yp_get_default_domain)
1304 # Check if we have execl, if not we need to compile smbrun.
1305 AC_CHECK_FUNCS(execl)
1306 if test x"$ac_cv_func_execl" = x"no"; then
1307 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1310 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1311 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1312 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1313 AC_CHECK_FUNCS(getrlimit fsync fdatasync memset strlcpy strlcat setpgid)
1314 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1315 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1316 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1317 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1318 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1319 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1320 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1321 AC_CHECK_FUNCS(getpwent_r)
1322 AC_CHECK_FUNCS(getdents getdents64)
1323 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1324 AC_CHECK_FUNCS(syslog vsyslog timegm)
1325 AC_CHECK_FUNCS(setlocale nl_langinfo)
1326 AC_CHECK_FUNCS(nanosleep)
1327 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1328 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1329 AC_CHECK_HEADERS(sys/mman.h)
1330 # setbuffer, shmget, shm_open are needed for smbtorture
1331 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1333 # Find a method of generating a stack trace
1334 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1335 AC_CHECK_FUNCS(backtrace_symbols)
1336 AC_CHECK_LIB(exc, trace_back_stack)
1338 echo -n "checking for GPFS GPL libs... "
1340 LIBS="$LIBS -lgpfs_gpl"
1341 AC_TRY_LINK([#include <gpfs_gpl.h>],
1342 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1343 samba_cv_HAVE_GPFS=yes,
1344 samba_cv_HAVE_GPFS=no)
1345 echo $samba_cv_HAVE_GPFS
1346 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1347 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1348 default_shared_modules="$default_shared_modules vfs_gpfs"
1352 # Note that all the libunwind symbols in the API are defined to internal
1353 # platform-specific version, so we must include libunwind.h before checking
1355 AC_MSG_CHECKING([for libunwind])
1358 UNWIND_ARCH="unknown"
1359 if test x"$UNAME_I" != x"unknown"; then
1360 UNWIND_ARCH="$UNAME_I"
1361 elif test x"$UNAME_M" != x"unknown"; then
1362 UNWIND_ARCH="$UNAME_M"
1363 elif test x"$UNAME_P" != x"unknown"; then
1364 UNWIND_ARCH="$UNAME_P"
1367 case "$UNWIND_ARCH" in
1369 # This probably won't link without
1370 # the platform-specific libunwind.
1371 LIBS="$LIBS -lunwind"
1374 # Add the platform-specific libunwind module.
1375 LIBS="$LIBS -lunwind -lunwind-x86"
1378 # Add the platform-specific libunwind module.
1379 # based on uname -i, uname -m or uname -p
1380 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1386 #ifdef HAVE_LIBUNWIND_H
1387 #include <libunwind.h>
1391 unw_context_t ctx; unw_cursor_t cur;
1392 char buf[256]; unw_word_t off;
1393 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1394 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1398 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1400 # If we have libunwind, test whether we also have libunwind-ptrace
1401 # which would let us unwind arbitrary processes.
1403 AC_CHECK_HEADERS(libunwind-ptrace.h)
1404 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1406 LIBUNWIND_PTRACE="-lunwind-ptrace";
1407 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1408 [Whether libunwind-ptrace.a is available.])
1410 [ LIBUNWIND_PTRACE="" ])
1419 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1420 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1421 AC_CHECK_HEADERS(sys/ptrace.h)
1422 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1425 #if HAVE_SYS_TYPES_H
1426 #include <sys/types.h>
1428 #if HAVE_SYS_PTRACE_H
1429 #include <sys/ptrace.h>
1433 int main(int argc, const char ** argv)
1435 pid_t me = (pid_t)-1;
1436 ptrace(PTRACE_ATTACH, me, 0, 0);
1437 ptrace(PTRACE_DETACH, me, 0, 0);
1443 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1444 [Whether the Linux ptrace(2) interface is available.])
1452 AC_SUBST(LIBUNWIND_PTRACE)
1454 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1455 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1456 AC_CHECK_FUNCS(__getcwd _getcwd)
1457 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1458 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1459 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1460 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1461 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1462 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1463 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1464 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1465 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1466 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1467 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1468 AC_CHECK_FUNCS(prctl)
1471 #ifdef HAVE_SYS_PRCTL_H
1472 #include <sys/prctl.h>
1475 [int i; i = prtcl(0); ],
1476 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1483 # glibc <= 2.3.2 has a broken getgrouplist
1486 #include <sys/utsname.h>
1488 /* glibc up to 2.3 has a broken getgrouplist */
1489 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1490 int libc_major = __GLIBC__;
1491 int libc_minor = __GLIBC_MINOR__;
1495 if ((libc_major == 2) && (libc_minor <= 3))
1500 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1501 if test x"$linux_getgrouplist_ok" = x"yes"; then
1502 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1506 AC_CHECK_FUNCS(getgrouplist)
1511 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1514 if test x$ac_cv_func_stat64 = xno ; then
1515 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1517 #if defined(HAVE_UNISTD_H)
1520 #include <sys/stat.h>
1521 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1522 AC_MSG_RESULT([$ac_cv_func_stat64])
1523 if test x$ac_cv_func_stat64 = xyes ; then
1524 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1528 if test x$ac_cv_func_lstat64 = xno ; then
1529 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1531 #if defined(HAVE_UNISTD_H)
1534 #include <sys/stat.h>
1535 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1536 AC_MSG_RESULT([$ac_cv_func_lstat64])
1537 if test x$ac_cv_func_lstat64 = xyes ; then
1538 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1542 if test x$ac_cv_func_fstat64 = xno ; then
1543 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1545 #if defined(HAVE_UNISTD_H)
1548 #include <sys/stat.h>
1549 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1550 AC_MSG_RESULT([$ac_cv_func_fstat64])
1551 if test x$ac_cv_func_fstat64 = xyes ; then
1552 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1556 #################################################
1557 # Check whether struct stat has timestamps with sub-second resolution.
1558 # At least IRIX and Solaris have these.
1561 # all of st_mtim, st_atim and st_ctim exist
1562 # all of the members are in fact of type struct timespec
1564 # There is some conflicting standards weirdness about whether we should use
1565 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1566 # prefer struct timespec.
1568 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1572 #if TIME_WITH_SYS_TIME
1573 # include <sys/time.h>
1576 # if HAVE_SYS_TIME_H
1577 # include <sys/time.h>
1582 #ifdef HAVE_SYS_STAT_H
1583 #include <sys/stat.h>
1588 struct stat s = {0};
1589 t.tv_sec = s.st_mtim.tv_sec;
1590 t.tv_nsec = s.st_mtim.tv_nsec;
1591 t.tv_sec = s.st_ctim.tv_sec;
1592 t.tv_nsec = s.st_ctim.tv_nsec;
1593 t.tv_sec = s.st_atim.tv_sec;
1594 t.tv_nsec = s.st_atim.tv_nsec;
1596 samba_stat_hires=yes, samba_stat_hires=no)
1599 if test x"$samba_stat_hires" = x"yes" ; then
1600 AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1601 AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1602 AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1603 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1604 [whether struct stat has sub-second timestamps])
1607 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1611 #if TIME_WITH_SYS_TIME
1612 # include <sys/time.h>
1615 # if HAVE_SYS_TIME_H
1616 # include <sys/time.h>
1621 #ifdef HAVE_SYS_STAT_H
1622 #include <sys/stat.h>
1627 struct stat s = {0};
1628 t.tv_sec = s.st_mtime;
1629 t.tv_nsec = s.st_mtimensec;
1630 t.tv_sec = s.st_ctime;
1631 t.tv_nsec = s.st_ctimensec;
1632 t.tv_sec = s.st_atime;
1633 t.tv_nsec = s.st_atimensec;
1635 samba_stat_hires=yes, samba_stat_hires=no)
1638 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1639 AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1640 AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1641 AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1642 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1643 [whether struct stat has sub-second timestamps without struct timespec])
1646 #####################################
1647 # needed for SRV lookups
1648 AC_CHECK_LIB(resolv, dn_expand)
1649 AC_CHECK_LIB(resolv, _dn_expand)
1650 AC_CHECK_LIB(resolv, __dn_expand)
1653 # Check for the functions putprpwnam, set_auth_parameters,
1654 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1655 # Needed for OSF1 and HPUX.
1658 AC_LIBTESTFUNC(security, putprpwnam)
1659 AC_LIBTESTFUNC(sec, putprpwnam)
1661 AC_LIBTESTFUNC(security, set_auth_parameters)
1662 AC_LIBTESTFUNC(sec, set_auth_parameters)
1664 # UnixWare 7.x has its getspnam in -lgen
1665 AC_LIBTESTFUNC(gen, getspnam)
1667 AC_LIBTESTFUNC(security, getspnam)
1668 AC_LIBTESTFUNC(sec, getspnam)
1670 AC_LIBTESTFUNC(security, bigcrypt)
1671 AC_LIBTESTFUNC(sec, bigcrypt)
1673 AC_LIBTESTFUNC(security, getprpwnam)
1674 AC_LIBTESTFUNC(sec, getprpwnam)
1676 AC_CHECK_FUNCS(strsignal)
1678 ############################################
1679 # Check if we have libattr
1682 AC_SEARCH_LIBS(getproplist, [proplist])
1683 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1684 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1685 AC_CHECK_FUNCS(sizeof_proplist_entry)
1688 AC_SEARCH_LIBS(getxattr, [attr])
1689 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1690 AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1691 AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1692 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1693 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1694 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1695 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1699 ########################################################
1700 # Check if attropen() is present if this is Solaris
1703 AC_CHECK_FUNCS(attropen)
1707 ########################################################
1708 # Do xattr functions take additional options like on Darwin?
1709 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1710 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1712 LIBS="$LIBS $ACL_LIBS"
1714 #include <sys/types.h>
1715 #if HAVE_ATTR_XATTR_H
1716 #include <attr/xattr.h>
1717 #elif HAVE_SYS_XATTR_H
1718 #include <sys/xattr.h>
1721 getxattr(0, 0, 0, 0, 0, 0);
1723 [smb_attr_cv_xattr_add_opt=yes],
1724 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1726 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1727 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1731 # Check if we have extattr
1733 *freebsd4* | *dragonfly* )
1734 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1737 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1738 AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1739 AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1740 AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1747 AC_ARG_ENABLE(pie, [ --enable-pie Turn on pie support if available (default=yes)])
1749 if test "x$enable_pie" != xno
1751 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1753 cat > conftest.c <<EOF
1755 main () { return 0;}
1757 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1765 if test x"${samba_cv_fpie}" = x"yes"
1772 # Assume non-shared by default and override below
1775 # these are the defaults, good for lots of systems
1780 SHLD="\${CC} \${CFLAGS}"
1781 PICFLAG="${PIE_CFLAGS}"
1785 # this bit needs to be modified for each OS that supports share libs
1786 # You need to specify how to create a shared library and
1787 # how to compile C code to produce PIC object files
1789 AC_MSG_CHECKING([ability to build shared libraries])
1791 # and these are for particular systems
1793 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux])
1795 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1796 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1798 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1800 DYNEXP="-Wl,--export-dynamic"
1802 SONAMEFLAG="-Wl,-soname="
1803 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1805 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1809 if test "${GCC}" = "yes"; then
1811 SONAMEFLAG="-Wl,-soname="
1812 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1817 ## ${CFLAGS} added for building 64-bit shared
1818 ## libs using Sun's Compiler
1819 LDSHFLAGS="-G \${CFLAGS}"
1821 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1822 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1824 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1827 SONAMEFLAG="-Wl,-h,"
1828 PICFLAG="-KPIC" # Is this correct for SunOS
1829 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1830 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1832 *netbsd* | *freebsd* | *dragonfly* )
1835 DYNEXP="-Wl,--export-dynamic"
1836 SONAMEFLAG="-Wl,-soname,"
1837 PICFLAG="-fPIC -DPIC"
1838 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1839 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1841 *openbsd*) BLDSHARED="true"
1843 DYNEXP="-Wl,-Bdynamic"
1844 SONAMEFLAG="-Wl,-soname,"
1846 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1847 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1849 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1851 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1855 LDSHFLAGS="-set_version sgi1.0 -shared"
1856 SONAMEFLAG="-soname "
1858 if test "${GCC}" = "yes"; then
1863 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1865 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1867 LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1868 DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1870 # as AIX code is always position independent...
1871 # .po will just create compile warnings, use po.o:
1872 if test "${GCC}" != "yes"; then
1873 ## for funky AIX compiler using strncpy()
1874 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1877 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1878 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1879 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1881 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1882 # Use special PIC flags for the native HP-UX compiler.
1885 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1886 SONAMEFLAG="-Wl,+h "
1888 if test "${GCC}" = "yes"; then
1891 PICFLAG="+z +ESnolit"
1893 if test "$host_cpu" = "ia64"; then
1896 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1899 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1901 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1902 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1904 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1905 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1907 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1910 SONAMEFLAG="-Wl,-soname,"
1912 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1913 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1915 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1916 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1918 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1921 SONAMEFLAG="-Wl,-soname,"
1923 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1925 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1926 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1928 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1929 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1931 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1933 *-univel-*) if [ test "$GCC" != yes ]; then
1934 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1939 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1941 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1944 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1945 if [ test "$GCC" != yes ]; then
1946 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1949 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1951 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1956 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1958 LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1960 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1962 # Since gcc doesn't fail on unrecognised options, the
1963 # PIE test incorrectly succeeds. Darwin gcc does not
1964 # actually support the PIE stuff.
1967 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1971 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1975 if test "$enable_shared" != "yes"; then
1979 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1980 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1983 AC_MSG_RESULT($BLDSHARED)
1985 AC_MSG_CHECKING([LDFLAGS])
1986 AC_MSG_RESULT([$LDFLAGS])
1987 AC_MSG_CHECKING([DYNEXP])
1988 AC_MSG_RESULT([$DYNEXP])
1990 #######################################################
1991 # test whether building a shared library actually works
1992 if test $BLDSHARED = true; then
1994 AC_MSG_CHECKING([SHLD])
1995 AC_MSG_RESULT([$SHLD])
1996 AC_MSG_CHECKING([LDSHFLAGS])
1997 AC_MSG_RESULT([$LDSHFLAGS])
1999 AC_MSG_CHECKING([SHLIBEXT])
2000 AC_MSG_RESULT([$SHLIBEXT])
2001 AC_MSG_CHECKING([SONAMEFLAG])
2002 AC_MSG_RESULT([$SONAMEFLAG])
2004 AC_MSG_CHECKING([PICFLAG])
2005 AC_MSG_RESULT([$PICFLAG])
2007 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
2008 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
2010 AC_CACHE_CHECK([whether building shared libraries actually works],
2011 [ac_cv_shlib_works],[
2012 # try building a trivial shared library
2013 ac_cv_shlib_works=no
2014 # The $SHLD and $LDSHFLAGS variables may contain references to other
2015 # variables so they need to be eval'ed.
2016 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
2017 shlib.o ${srcdir-.}/tests/shlib.c && \
2018 `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
2019 shlib.o && ac_cv_shlib_works=yes
2020 rm -f "shlib.$SHLIBEXT" shlib.o
2023 if test $ac_cv_shlib_works = no; then
2028 if test x"$BLDSHARED" != x"true"; then
2029 LDSHFLAGS="shared-libraries-disabled"
2030 SONAMEFLAG="shared-libraries-disabled"
2031 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
2032 SHLD="shared-libraries-disabled"
2033 PICFLAG="${PIE_CFLAGS}"
2034 SHLIBEXT="shared_libraries_disabled"
2037 AC_MSG_CHECKING([used PICFLAG])
2038 AC_MSG_RESULT([$PICFLAG])
2040 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
2042 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
2046 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2047 AC_TRY_RUN([#include <stdio.h>
2048 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2049 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2050 if test x"$samba_cv_have_longlong" = x"yes"; then
2051 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2052 AC_CHECK_TYPE(intptr_t, unsigned long long)
2054 AC_CHECK_TYPE(intptr_t, unsigned long)
2058 # Check if the compiler supports the LL prefix on long long integers.
2061 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2062 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2063 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2064 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2065 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2069 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2070 AC_TRY_RUN([#include <time.h>
2071 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2072 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2073 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2074 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2077 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2078 AC_TRY_RUN([#include <stdio.h>
2079 #include <sys/stat.h>
2080 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2081 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2082 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2083 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2086 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2088 #if defined(HAVE_UNISTD_H)
2092 #include <sys/stat.h>
2093 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2094 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2095 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2096 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2099 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2101 #if defined(HAVE_UNISTD_H)
2105 #include <sys/stat.h>
2106 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2107 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2108 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2109 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2112 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2114 #if defined(HAVE_UNISTD_H)
2118 #include <sys/stat.h>
2119 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2120 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2121 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2122 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2125 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2127 #if defined(HAVE_UNISTD_H)
2131 #include <sys/stat.h>
2132 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2133 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2134 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2135 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2138 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2140 #if defined(HAVE_UNISTD_H)
2144 #include <sys/stat.h>
2145 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2146 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2147 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2148 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2151 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2153 #if defined(HAVE_UNISTD_H)
2156 #include <sys/types.h>
2157 #include <dirent.h>],
2159 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2160 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2161 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2164 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2166 #if defined(HAVE_UNISTD_H)
2169 #include <sys/types.h>
2170 #include <dirent.h>],
2171 [struct dirent64 de;],
2172 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2173 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2174 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2177 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2179 #if defined(HAVE_UNISTD_H)
2182 #include <sys/types.h>
2183 main() { dev_t dev; int i = major(dev); return 0; }],
2184 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2185 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2186 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2189 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2191 #if defined(HAVE_UNISTD_H)
2194 #include <sys/types.h>
2195 main() { dev_t dev; int i = minor(dev); return 0; }],
2196 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2197 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2198 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2201 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2203 #if defined(HAVE_UNISTD_H)
2206 #include <sys/types.h>
2207 main() { dev_t dev = makedev(1,2); return 0; }],
2208 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2209 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2210 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2213 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2214 AC_TRY_RUN([#include <stdio.h>
2215 main() { char c; c=250; exit((c > 0)?0:1); }],
2216 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2217 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2218 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2221 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2222 AC_TRY_COMPILE([#include <sys/types.h>
2223 #include <sys/socket.h>
2224 #include <netinet/in.h>],
2225 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2226 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2227 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2228 AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2231 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2232 AC_TRY_COMPILE([#include <sys/types.h>
2234 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2235 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2236 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2237 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2240 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2241 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2242 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2243 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2244 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2247 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2249 #include <sys/time.h>
2250 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2251 samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2252 samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2253 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2254 AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2257 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2259 # On some systems (eg. Linux) librt can pull in libpthread. We
2260 # don't want this to happen because libpthreads changes signal delivery
2261 # semantics in ways we are not prepared for. This breaks Linux oplocks
2262 # which rely on signals.
2264 AC_LIBTESTFUNC(rt, clock_gettime,
2266 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2267 [Whether clock_gettime is available])
2268 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2269 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2270 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2275 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2276 AC_TRY_LINK([#include <stdarg.h>
2277 va_list ap1,ap2;], [va_copy(ap1,ap2);],
2278 samba_cv_HAVE_VA_COPY=yes,
2279 samba_cv_HAVE_VA_COPY=no)])
2280 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2281 AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2283 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2284 AC_TRY_LINK([#include <stdarg.h>
2285 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2286 samba_cv_HAVE___VA_COPY=yes,
2287 samba_cv_HAVE___VA_COPY=no)])
2288 if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2289 AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2293 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2295 #include <sys/types.h>
2297 void foo(const char *format, ...) {
2302 va_start(ap, format);
2303 len = vsnprintf(buf, 0, format, ap);
2305 if (len != 5) exit(1);
2307 va_start(ap, format);
2308 len = vsnprintf(0, 0, format, ap);
2310 if (len != 5) exit(1);
2312 if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2316 main() { foo("hello"); }
2318 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2319 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2320 AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2323 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2324 AC_TRY_RUN([#include <sys/types.h>
2326 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2327 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2328 di->d_name[0] == 0) exit(0); exit(1);} ],
2329 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2330 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2331 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2334 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2335 AC_TRY_COMPILE([#include <sys/types.h>
2336 #include <utime.h>],
2337 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2338 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2339 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2340 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2344 # Check utmp details, but only if our OS offers utmp.h
2345 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2346 dnl utmp and utmpx come in many flavours
2347 dnl We need to check for many of them
2348 dnl But we don't need to do each and every one, because our code uses
2349 dnl mostly just the utmp (not utmpx) fields.
2351 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2353 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2354 AC_TRY_COMPILE([#include <sys/types.h>
2356 [struct utmp ut; ut.ut_name[0] = 'a';],
2357 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2358 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2359 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2362 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2363 AC_TRY_COMPILE([#include <sys/types.h>
2365 [struct utmp ut; ut.ut_user[0] = 'a';],
2366 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2367 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2368 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2371 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2372 AC_TRY_COMPILE([#include <sys/types.h>
2374 [struct utmp ut; ut.ut_id[0] = 'a';],
2375 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2376 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2377 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2380 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2381 AC_TRY_COMPILE([#include <sys/types.h>
2383 [struct utmp ut; ut.ut_host[0] = 'a';],
2384 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2385 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2386 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2389 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2390 AC_TRY_COMPILE([#include <sys/types.h>
2392 [struct utmp ut; time_t t; ut.ut_time = t;],
2393 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2394 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2395 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2398 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2399 AC_TRY_COMPILE([#include <sys/types.h>
2401 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2402 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2403 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2404 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2407 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2408 AC_TRY_COMPILE([#include <sys/types.h>
2410 [struct utmp ut; ut.ut_type = 0;],
2411 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2412 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2413 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2416 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2417 AC_TRY_COMPILE([#include <sys/types.h>
2419 [struct utmp ut; ut.ut_pid = 0;],
2420 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2421 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2422 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2425 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2426 AC_TRY_COMPILE([#include <sys/types.h>
2428 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2429 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2430 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2431 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2434 dnl Look for the IPv6 varient by preference. Many systems have both.
2435 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2436 AC_TRY_COMPILE([#include <sys/types.h>
2438 [struct utmp ut; ut.ut_addr_v6[0] = 0;],
2439 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2440 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2441 AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2444 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2445 AC_TRY_COMPILE([#include <sys/types.h>
2447 [struct utmp ut; ut.ut_addr = 0;],
2448 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2449 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2450 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2453 if test x$ac_cv_func_pututline = xyes ; then
2454 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2455 AC_TRY_COMPILE([#include <sys/types.h>
2457 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2458 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2459 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2460 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2464 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2465 AC_TRY_COMPILE([#include <sys/types.h>
2466 #include <utmpx.h>],
2467 [struct utmpx ux; ux.ut_syslen = 0;],
2468 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2469 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2470 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2477 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2478 AC_ARG_WITH(libiconv,
2479 [ --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2481 if test "$withval" = "no" ; then
2482 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2484 if test "$withval" != "yes" ; then
2486 ICONV_LOOK_DIRS="$withval"
2491 for i in $ICONV_LOOK_DIRS ; do
2494 save_LDFLAGS="$LDFLAGS"
2495 save_CPPFLAGS="$CPPFLAGS"
2497 iconv_current_LIBS=""
2498 iconv_current_LDFLAGS=""
2499 iconv_current_CPPFLAGS=""
2504 # This is here to handle -withval stuff for --with-libiconv
2505 # Perhaps we should always add a -L
2506 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2508 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2509 # installation paths. This gets a little tricky since we might have iconv
2510 # in both libiconv and in libc. In this case the jm_ICONV test will always
2511 # succeed when the header is found. To counter this, make sure the
2512 # library directory is there and check the ABI directory first (which
2513 # should be harmless on other systems.
2514 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2515 for l in "lib32" "lib" "lib/hpux32"; do
2516 if test -d "$i/$l" ; then
2517 LDFLAGS="$save_LDFLAGS -L$i/$l"
2519 export LDFLAGS LIBS CPPFLAGS
2520 # Try to find iconv(3)
2522 if test x"$ICONV_FOUND" = "xyes" ; then
2529 if test x"$ICONV_FOUND" = "xyes" ; then
2530 iconv_current_LDFLAGS="-L$i/$libext"
2531 iconv_current_CPPFLAGS="-I$i/include"
2533 if test x"$jm_cv_lib_iconv" != x; then
2534 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2536 # We found iconv in libc.
2537 iconv_current_LIBS=""
2542 if test x"$ICONV_FOUND" = "xyes" ; then
2544 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2545 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2546 LIBS="$save_LIBS $iconv_current_LIBS"
2547 export LDFLAGS LIBS CPPFLAGS
2549 default_dos_charset=no
2550 default_display_charset=no
2551 default_unix_charset=no
2553 # check for default dos charset name
2554 for j in CP850 IBM850 ; do
2556 default_dos_charset="$ICONV_CHARSET"
2557 if test x"$default_dos_charset" = x"$j"; then
2562 # check for default display charset name
2563 for j in ASCII 646 ; do
2565 default_display_charset="$ICONV_CHARSET"
2566 if test x"$default_display_charset" = x"$j"; then
2571 # check for default unix charset name
2572 for j in UTF-8 UTF8 ; do
2574 default_unix_charset="$ICONV_CHARSET"
2575 if test x"$default_unix_charset" = x"$j"; then
2580 if test "$default_dos_charset" != "no" -a \
2581 "$default_dos_charset" != "cross" -a \
2582 "$default_display_charset" != "no" -a \
2583 "$default_display_charset" != "cross" -a \
2584 "$default_unix_charset" != "no" -a \
2585 "$default_unix_charset" != "cross"
2587 samba_cv_HAVE_NATIVE_ICONV=yes
2589 if test "$default_dos_charset" = "cross" -o \
2590 "$default_display_charset" = "cross" -o \
2591 "$default_unix_charset" = "cross"
2593 samba_cv_HAVE_NATIVE_ICONV=cross
2595 samba_cv_HAVE_NATIVE_ICONV=no
2599 # At this point, we have a libiconv candidate. We know that
2600 # we have the right headers and libraries, but we don't know
2601 # whether it does the conversions we want. We can't test this
2602 # because we are cross-compiling. This is not necessarily a big
2603 # deal, since we can't guarantee that the results we get now will
2604 # match the results we get at runtime anyway.
2605 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2606 default_dos_charset="CP850"
2607 default_display_charset="ASCII"
2608 default_unix_charset="UTF-8"
2609 samba_cv_HAVE_NATIVE_ICONV=yes
2610 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2611 AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2614 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2616 CPPFLAGS=$save_CPPFLAGS
2617 LDFLAGS=$save_LDFLAGS
2620 if test x"$iconv_current_LIBS" != x; then
2621 LIBS="$LIBS $iconv_current_LIBS"
2624 # Add the flags we need to CPPFLAGS and LDFLAGS
2625 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2626 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2628 # Turn the #defines into string literals
2629 default_dos_charset="\"$default_dos_charset\""
2630 default_display_charset="\"$default_display_charset\""
2631 default_unix_charset="\"$default_unix_charset\""
2633 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2634 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2635 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2636 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2641 # We didn't find a working iconv, so keep going
2644 # We only need to clean these up here for the next pass through the loop
2645 CPPFLAGS=$save_CPPFLAGS
2646 LDFLAGS=$save_LDFLAGS
2648 export LDFLAGS LIBS CPPFLAGS
2653 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2654 AC_MSG_WARN([Sufficient support for iconv function was not found.
2655 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2656 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2657 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2658 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2662 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2664 #include <sys/types.h>
2667 #define F_GETLEASE 1025
2670 int fd = open("/dev/null", O_RDONLY);
2671 return fcntl(fd, F_GETLEASE, 0) == -1;
2674 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2675 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2676 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2679 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2681 #include <sys/types.h>
2685 #define F_NOTIFY 1026
2688 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2691 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2692 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2693 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2696 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2697 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2698 AC_CHECK_FUNC(inotify_init)
2699 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2701 samba_cv_HAVE_INOTIFY=yes,
2702 samba_cv_HAVE_INOTIFY=no,
2703 samba_cv_HAVE_INOTIFY=cross)
2705 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2706 AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2709 #################################################
2710 # Check if FAM notifications are available. For FAM info, see
2711 # http://oss.sgi.com/projects/fam/
2712 # http://savannah.nongnu.org/projects/fam/
2714 [ --enable-fam Turn on FAM support (default=auto)])
2716 if test x$enable_fam != xno; then
2717 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2718 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2719 # On IRIX, libfam requires libC, but other FAM implementations
2720 # might not need it.
2721 AC_CHECK_LIB(fam, FAMOpen2,
2722 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2723 [samba_cv_HAVE_LIBFAM=no])
2725 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2727 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2728 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2729 [samba_cv_HAVE_LIBFAM=no])
2730 unset samba_fam_xtra
2734 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2735 default_shared_modules="$default_shared_modules vfs_notify_fam"
2736 AC_TRY_COMPILE([#include <fam.h>],
2737 [FAMCodes code = FAMChanged;],
2738 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2739 [Whether fam.h contains a typedef for enum FAMCodes]),
2743 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2744 AC_MSG_ERROR(FAM support requested but FAM library not available )
2748 AC_SUBST(SMB_FAM_LIBS)
2750 #################################################
2751 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2753 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2755 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2756 # Theoretically it should work with AIX JFS2 too but this needs testing
2757 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2758 default_shared_modules="$default_shared_modules vfs_tsmsm"
2761 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2763 #include <sys/types.h>
2766 #include <sys/file.h>
2768 #define LOCK_MAND 32
2769 #define LOCK_READ 64
2772 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2775 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2776 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2777 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2781 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2782 AC_TRY_COMPILE([#include <sys/types.h>
2783 #include <fcntl.h>],
2784 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2785 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2786 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2787 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2790 #################################################
2791 # Check for POSIX capability support
2793 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2794 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2797 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2800 AC_LIBTESTFUNC(cap, cap_get_proc)
2802 AC_CACHE_CHECK([for POSIX capabilities],
2803 samba_cv_HAVE_POSIX_CAPABILITIES,
2806 #include <sys/types.h>
2807 #include <sys/capability.h>
2810 cap_value_t vals[1];
2811 if (!(cap = cap_get_proc()))
2813 vals[0] = CAP_CHOWN;
2814 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2818 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2819 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2820 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2823 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2824 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2825 [Whether POSIX capabilities are available])
2833 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2834 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2837 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2838 AC_TRY_COMPILE([#include <sys/types.h>
2839 #if defined(HAVE_RPC_RPC_H)
2840 #include <rpc/rpc.h>
2843 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2844 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2845 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2848 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2849 AC_TRY_COMPILE([#include <sys/types.h>
2850 #if defined(HAVE_RPC_RPC_H)
2851 #include <rpc/rpc.h>
2854 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2855 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2856 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2859 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2860 AC_TRY_COMPILE([#include <sys/types.h>
2861 #if defined(HAVE_RPC_RPC_H)
2862 #include <rpc/rpc.h>
2865 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2866 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2867 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2870 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2871 AC_TRY_COMPILE([#include <sys/types.h>
2872 #if defined(HAVE_RPC_RPC_H)
2873 #include <rpc/rpc.h>
2876 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2877 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2878 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2882 dnl Some systems (SCO) have a problem including
2883 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2884 dnl as a #define in <prot.h> and as part of an enum
2888 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2889 AC_TRY_COMPILE([#include <sys/types.h>
2890 #ifdef HAVE_SYS_SECURITY_H
2891 #include <sys/security.h>
2893 #endif /* HAVE_SYS_SECURITY_H */
2894 #if defined(HAVE_RPC_RPC_H)
2895 #include <rpc/rpc.h>
2898 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2899 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2900 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2903 AC_MSG_CHECKING([for test routines])
2904 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2906 AC_MSG_ERROR([cant find test code. Aborting config]),
2907 AC_MSG_WARN([cannot run when cross-compiling]))
2909 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2910 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2911 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2912 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2913 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2916 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2917 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2918 samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2919 samba_cv_HAVE_WORKING_AF_LOCAL=no,
2920 samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2921 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2923 AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2926 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2927 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2928 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2929 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2930 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2933 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2934 AC_TRY_RUN([#include <stdlib.h>
2935 #include <sys/types.h>
2936 #include <sys/stat.h>
2940 char tpl[20]="/tmp/test.XXXXXX";
2941 int fd = mkstemp(tpl);
2942 if (fd == -1) exit(1);
2944 if (fstat(fd, &st) != 0) exit(1);
2945 if ((st.st_mode & 0777) != 0600) exit(1);
2948 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2949 samba_cv_HAVE_SECURE_MKSTEMP=no,
2950 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2951 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2952 AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2955 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2956 AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
2957 [samba_cv_HAVE_BROKEN_READDIR=no],
2958 [samba_cv_HAVE_BROKEN_READDIR=yes],
2959 [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2961 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2962 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2964 #include "${srcdir-.}/lib/repdir.c"
2965 #include "${srcdir-.}/tests/os2_delete.c"],
2966 samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2969 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2970 AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2973 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2974 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2975 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2976 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2977 AC_CHECK_FUNCS(getpagesize)
2979 dnl test for getifaddrs and freeifaddrs
2980 AC_CACHE_CHECK([for getifaddrs and freeifaddrs],samba_cv_HAVE_GETIFADDRS,[
2982 #include <sys/socket.h>
2983 #include <sys/types.h>
2984 #include <netinet/in.h>
2985 #include <arpa/inet.h>
2986 #include <ifaddrs.h>
2987 #include <netdb.h>],
2989 struct ifaddrs *ifp = NULL;
2990 int ret = getifaddrs (&ifp);
2993 samba_cv_HAVE_GETIFADDRS=yes,samba_cv_HAVE_GETIFADDRS=no)])
2994 if test x"$samba_cv_HAVE_GETIFADDRS" = x"yes"; then
2995 AC_DEFINE(HAVE_GETIFADDRS,1,[Whether the system has getifaddrs])
2996 AC_DEFINE(HAVE_FREEIFADDRS,1,[Whether the system has freeifaddrs])
3000 # look for a method of finding the list of network interfaces
3002 AC_CACHE_CHECK([for iface getifaddrs],samba_cv_HAVE_IFACE_GETIFADDRS,[
3003 SAVE_CPPFLAGS="$CPPFLAGS"
3004 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3006 #define NO_CONFIG_H 1
3007 #define HAVE_IFACE_GETIFADDRS 1
3008 #define AUTOCONF_TEST 1
3009 #include "${srcdir-.}/lib/replace/replace.c"
3010 #include "${srcdir-.}/lib/interfaces.c"],
3011 samba_cv_HAVE_IFACE_GETIFADDRS=yes,samba_cv_HAVE_IFACE_GETIFADDRS=no,samba_cv_HAVE_IFACE_GETIFADDRS=cross)])
3012 CPPFLAGS="$SAVE_CPPFLAGS"
3013 if test x"$samba_cv_HAVE_IFACE_GETIFADDRS" = x"yes"; then
3014 iface=yes;AC_DEFINE(HAVE_IFACE_GETIFADDRS,1,[Whether iface getifaddrs is available])
3017 if test $iface = no; then
3018 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
3019 SAVE_CPPFLAGS="$CPPFLAGS"
3020 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3022 #define NO_CONFIG_H 1
3023 #define HAVE_IFACE_IFCONF 1
3024 #define AUTOCONF_TEST 1
3025 #define SOCKET_WRAPPER_NOT_REPLACE
3026 #include "${srcdir-.}/lib/replace/replace.c"
3027 #include "${srcdir-.}/lib/interfaces.c"],
3028 samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
3029 CPPFLAGS="$SAVE_CPPFLAGS"
3030 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
3031 iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
3035 if test $iface = no; then
3036 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
3037 SAVE_CPPFLAGS="$CPPFLAGS"
3038 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3040 #define NO_CONFIG_H 1
3041 #define HAVE_IFACE_IFREQ 1
3042 #define AUTOCONF_TEST 1
3043 #define SOCKET_WRAPPER_NOT_REPLACE
3044 #include "${srcdir-.}/lib/replace/replace.c"
3045 #include "${srcdir-.}/lib/replace/getaddrinfo.c"
3046 #include "${srcdir-.}/lib/replace/snprintf.c"
3047 #include "${srcdir-.}/lib/interfaces.c"],
3048 samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
3049 CPPFLAGS="$SAVE_CPPFLAGS"
3050 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
3051 iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
3055 if test $iface = no; then
3056 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
3057 SAVE_CPPFLAGS="$CPPFLAGS"
3058 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3060 #define NO_CONFIG_H 1
3061 #define HAVE_IFACE_AIX 1
3062 #define AUTOCONF_TEST 1
3063 #undef _XOPEN_SOURCE_EXTENDED
3064 #define SOCKET_WRAPPER_NOT_REPLACE
3065 #include "${srcdir-.}/lib/replace/replace.c"
3066 #include "${srcdir-.}/lib/replace/snprintf.c"
3067 #include "${srcdir-.}/lib/interfaces.c"],
3068 samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
3069 CPPFLAGS="$SAVE_CPPFLAGS"
3070 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
3071 iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
3076 AC_CACHE_CHECK([for ipv6 support],samba_cv_HAVE_IPV6,[
3078 #include <stdlib.h> /* for NULL */
3079 #include <sys/socket.h>
3080 #include <sys/types.h>
3081 #include <netdb.h>],
3083 struct sockaddr_storage sa_store;
3084 struct addrinfo *ai = NULL;
3085 struct in6_addr in6addr;
3086 int s = socket(AF_INET6, SOCK_STREAM, 0);
3087 int ret = getaddrinfo(NULL, NULL, NULL, &ai);
3089 const char *es = gai_strerror(ret);
3093 samba_cv_HAVE_IPV6=yes,samba_cv_HAVE_IPV6=no)])
3094 if test x"$samba_cv_HAVE_IPV6" = x"yes"; then
3095 AC_DEFINE(HAVE_IPV6,1,[Whether the system has IPv6 support])
3098 ################################################
3099 # look for a method of setting the effective uid
3101 if test $seteuid = no; then
3102 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
3104 #define AUTOCONF_TEST 1
3105 #define USE_SETRESUID 1
3106 #include "confdefs.h"
3107 #include "${srcdir-.}/lib/util_sec.c"],
3108 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
3109 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
3110 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
3115 if test $seteuid = no; then
3116 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
3118 #define AUTOCONF_TEST 1
3119 #define USE_SETREUID 1
3120 #include "confdefs.h"
3121 #include "${srcdir-.}/lib/util_sec.c"],
3122 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
3123 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
3124 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
3128 if test $seteuid = no; then
3129 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
3131 #define AUTOCONF_TEST 1
3132 #define USE_SETEUID 1
3133 #include "confdefs.h"
3134 #include "${srcdir-.}/lib/util_sec.c"],
3135 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
3136 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
3137 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
3141 if test $seteuid = no; then
3142 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
3144 #define AUTOCONF_TEST 1
3145 #define USE_SETUIDX 1
3146 #include "confdefs.h"
3147 #include "${srcdir-.}/lib/util_sec.c"],
3148 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
3149 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
3150 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
3154 AC_CACHE_CHECK([for the Darwin initgroups system call],
3155 samba_cv_DARWIN_INITGROUPS,
3157 #include <sys/syscall.h>
3160 [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
3161 samba_cv_DARWIN_INITGROUPS=yes,
3162 samba_cv_DARWIN_INITGROUPS=no)
3165 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
3166 AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
3167 [Whether to use the Darwin-specific initgroups system call])
3170 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
3171 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
3172 samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
3173 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
3174 AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
3177 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
3178 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
3179 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
3180 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
3181 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
3184 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
3185 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
3186 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
3187 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
3188 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
3193 dnl Don't check for 64 bit fcntl locking if we know that the
3194 dnl glibc2.1 broken check has succeeded.
3197 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
3199 #if defined(HAVE_UNISTD_H)
3209 #ifdef HAVE_SYS_FCNTL_H
3210 #include <sys/fcntl.h>
3212 main() { struct flock64 fl64;
3213 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3219 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3221 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3222 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3226 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3227 AC_TRY_COMPILE([#include <sys/types.h>
3228 #include <sys/stat.h>
3229 #include <unistd.h>],
3230 [struct stat st; st.st_blocks = 0;],
3231 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3232 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3233 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3236 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3237 AC_TRY_COMPILE([#include <sys/types.h>
3238 #include <sys/stat.h>
3239 #include <unistd.h>],
3240 [struct stat st; st.st_blksize = 0;],
3241 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3242 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3243 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3246 AC_CACHE_CHECK([for st_flags in struct stat],
3247 samba_cv_HAVE_STAT_ST_FLAGS,
3249 AC_TRY_COMPILE([#include <sys/types.h>
3250 #include <sys/stat.h>
3251 #include <unistd.h>],
3252 [struct stat st; st.st_flags = 0;],
3253 samba_cv_HAVE_STAT_ST_FLAGS=yes,
3254 samba_cv_HAVE_STAT_ST_FLAGS=no,
3255 samba_cv_HAVE_STAT_ST_FLAGS=cross)
3258 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3259 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3260 [Whether the stat struct has a st_flags member])
3263 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3265 #include <sys/types.h>
3266 #include <sys/acl.h>
3267 #if defined(HAVE_RPCSVC_NIS_H)
3268 #include <rpcsvc/nis.h>
3271 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3272 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3273 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3276 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3281 char *newpath = realpath("/tmp", NULL);
3282 exit ((newpath != NULL) ? 0 : 1);
3285 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3286 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3287 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3290 #################################################
3291 # check for AFS clear-text auth support
3292 samba_cv_WITH_AFS=no
3293 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3295 [ --with-afs Include AFS clear-text auth support (default=no) ],
3296 [ case "$withval" in
3298 AC_MSG_RESULT($withval)
3299 samba_cv_WITH_AFS=$withval
3308 ####################################################
3309 # check for Linux-specific AFS fake-kaserver support
3310 samba_cv_WITH_FAKE_KASERVER=no
3311 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3312 AC_ARG_WITH(fake-kaserver,
3313 [ --with-fake-kaserver Include AFS fake-kaserver support (default=no) ],
3314 [ case "$withval" in
3316 AC_MSG_RESULT($withval)
3317 samba_cv_WITH_FAKE_KASERVER=$withval
3326 #################################################
3327 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3328 if test x"$samba_cv_WITH_AFS" != x"no" ||
3329 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3331 # see if this box has the afs-headers in /usr/include/afs
3332 AC_MSG_CHECKING(for /usr/include/afs)
3333 if test -d /usr/include/afs; then
3334 CFLAGS="$CFLAGS -I/usr/include/afs"
3335 CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3343 AC_CHECK_HEADERS(afs.h afs/afs.h)
3344 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3345 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3346 test x"$samba_cv_WITH_AFS" = x"auto"; then
3347 AC_MSG_WARN([AFS cannot be supported without afs.h])
3349 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3352 have_afs_headers=yes
3356 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3357 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3360 #################################################
3361 # check whether to compile AFS/NT ACL mapping module
3362 samba_cv_WITH_VFS_AFSACL=no
3363 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3364 AC_ARG_WITH(vfs-afsacl,
3365 [ --with-vfs-afsacl Include AFS to NT ACL mapping module (default=no) ],
3366 [ case "$withval" in
3368 AC_MSG_RESULT($withval)
3369 samba_cv_WITH_VFS_AFSACL=yes
3378 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3379 default_shared_modules="$default_shared_modules vfs_afsacl"
3382 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3383 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3386 #################################################
3387 # check for the DFS clear-text auth system
3388 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3390 [ --with-dce-dfs Include DCE/DFS clear-text auth support (default=no)],
3391 [ case "$withval" in
3394 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3403 ########################################################
3404 # Compile with LDAP support?
3406 with_ldap_support=auto
3407 AC_MSG_CHECKING([for LDAP support])
3410 [ --with-ldap LDAP support (default yes)],
3411 [ case "$withval" in
3413 with_ldap_support=$withval
3417 AC_MSG_RESULT($with_ldap_support)
3422 AC_SUBST(SMBLDAPUTIL)
3426 if test x"$with_ldap_support" != x"no"; then
3428 ##################################################################
3429 # first test for ldap.h and lber.h
3430 # (ldap.h is required for this test)
3431 AC_CHECK_HEADERS(ldap.h lber.h)
3433 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3434 if test x"$with_ldap_support" = x"yes"; then
3435 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3437 AC_MSG_WARN(ldap.h is needed for LDAP support)
3440 with_ldap_support=no
3443 ##################################################################
3444 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3445 # unsigned int in include/includes.h
3448 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3449 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3450 with_ldap_support=yes
3453 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3454 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3455 if test x"$with_ldap_support" = x"yes"; then
3456 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3458 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3460 with_ldap_support=no
3466 if test x"$with_ldap_support" != x"no"; then
3469 ##################################################################
3470 # we might need the lber lib on some systems. To avoid link errors
3471 # this test must be before the libldap test
3472 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3474 ########################################################
3475 # If ber_sockbuf_add_io() is available we can add
3476 # SASL wrapping hooks
3477 AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3479 AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3480 AC_TRY_COMPILE([#include <ldap.h>],
3481 [int val = LDAP_OPT_SOCKBUF;],
3482 samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3483 samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3485 if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3486 x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3487 AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3490 ########################################################
3491 # now see if we can find the ldap libs in standard paths
3492 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3494 ########################################################
3495 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3496 # Check found in pam_ldap 145.
3497 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3499 LIBS="$LIBS $LDAP_LIBS"
3500 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3504 [ldap_set_rebind_proc(0, 0, 0);],
3505 [smb_ldap_cv_ldap_set_rebind_proc=3],
3506 [smb_ldap_cv_ldap_set_rebind_proc=2]
3510 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3512 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3514 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3515 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3516 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3517 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3518 default_shared_modules="$default_shared_modules";
3519 SMBLDAP="lib/smbldap.o"
3520 SMBLDAPUTIL="lib/smbldap_util.o"
3521 with_ldap_support=yes
3522 AC_MSG_CHECKING(whether LDAP support is used)
3525 if test x"$with_ldap_support" = x"yes"; then
3526 AC_MSG_ERROR(libldap is needed for LDAP support)
3528 AC_MSG_WARN(libldap is needed for LDAP support)
3532 with_ldap_support=no
3538 #################################################
3539 # active directory support
3541 with_ads_support=auto
3542 AC_MSG_CHECKING([for Active Directory and krb5 support])
3545 [ --with-ads Active Directory support (default auto)],
3546 [ case "$withval" in
3548 with_ads_support="$withval"
3552 AC_MSG_RESULT($with_ads_support)
3557 if test x"$with_ldap_support" != x"yes"; then
3559 if test x"$with_ads_support" = x"yes"; then
3560 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3561 elif test x"$with_ads_support" = x"auto"; then
3562 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3568 # Check to see whether there is enough LDAP functionality to be able
3569 # to build AD support.
3571 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3574 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3576 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3577 if test x"$with_ads_support" = x"yes"; then
3578 AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3579 elif test x"$with_ads_support" = x"auto"; then
3580 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3586 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3588 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3589 if test x"$with_ads_support" = x"yes"; then
3590 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3591 elif test x"$with_ads_support" = x"auto"; then
3592 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3600 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3602 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3603 if test x"$with_ads_support" = x"yes"; then
3604 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3605 elif test x"$with_ads_support" = x"auto"; then
3606 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3613 if test x"$with_ads_support" != x"no"; then
3615 # Do no harm to the values of CFLAGS and LIBS while testing for
3618 if test x$FOUND_KRB5 = x"no"; then
3619 #################################################
3620 # check for location of Kerberos 5 install
3621 AC_MSG_CHECKING(for kerberos 5 install path)
3623 [ --with-krb5=base-dir Locate Kerberos 5 support (default=/usr)],
3624 [ case "$withval" in
3626 AC_MSG_RESULT(no krb5-path given)
3633 AC_MSG_RESULT($withval)
3634 KRB5_CFLAGS="-I$withval/include"
3635 KRB5_CPPFLAGS="-I$withval/include"
3636 KRB5_LDFLAGS="-L$withval/lib"
3638 if test -x "$withval/bin/krb5-config"; then
3639 KRB5CONFIG=$withval/bin/krb5-config
3643 AC_MSG_RESULT(no krb5-path given)
3647 #################################################
3648 # check for krb5-config from recent MIT and Heimdal kerberos 5
3649 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3650 AC_MSG_CHECKING(for working krb5-config)
3651 if test -x "$KRB5CONFIG"; then
3652 ac_save_CFLAGS=$CFLAGS
3653 CFLAGS="";export CFLAGS
3654 ac_save_LDFLAGS=$LDFLAGS
3655 LDFLAGS="";export LDFLAGS
3656 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3657 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3658 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3659 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3660 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3661 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3665 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3668 if test x$FOUND_KRB5 = x"no"; then
3669 #################################################
3670 # see if this box has the SuSE location for the heimdal krb implementation
3671 AC_MSG_CHECKING(for /usr/include/heimdal)
3672 if test -d /usr/include/heimdal; then
3673 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3674 KRB5_CFLAGS="-I/usr/include/heimdal"
3675 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3676 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3680 KRB5_CFLAGS="-I/usr/include/heimdal"
3681 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3690 if test x$FOUND_KRB5 = x"no"; then
3691 #################################################
3692 # see if this box has the RedHat location for kerberos
3693 AC_MSG_CHECKING(for /usr/kerberos)
3694 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3695 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3696 KRB5_CFLAGS="-I/usr/kerberos/include"
3697 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3705 if test x$FOUND_KRB5 = x"no"; then
3706 #################################################
3707 # see if this box has the OpenBSD location for heimdal krb5
3708 AC_MSG_CHECKING(for /usr/include/kerberosV)
3709 if test -d /usr/include/kerberosV; then
3710 KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3711 KRB5_LIBS="-lcrypto"
3719 ac_save_CFLAGS=$CFLAGS
3720 ac_save_CPPFLAGS=$CPPFLAGS
3721 ac_save_LDFLAGS=$LDFLAGS
3723 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3724 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3725 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3727 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3729 # now check for krb5.h. Some systems have the libraries without the headers!
3730 # note that this check is done here to allow for different kerberos
3732 AC_CHECK_HEADERS(krb5.h)
3734 if test x"$ac_cv_header_krb5_h" = x"no"; then
3736 # Give a warning if AD support was not explicitly requested,
3737 # i.e with_ads_support = auto, otherwise die with an error.
3739 if test x"$with_ads_support" = x"yes"; then
3740 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3742 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3745 # Turn off AD support and restore CFLAGS and LIBS variables
3747 with_ads_support="no"
3749 CFLAGS=$ac_save_CFLAGS
3750 CPPFLAGS=$ac_save_CPPFLAGS
3751 LDFLAGS=$ac_save_LDFLAGS
3753 AC_CHECK_HEADERS(krb5/locate_plugin.h)
3754 if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3755 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3756 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3760 # Now we have determined whether we really want ADS support
3762 if test x"$with_ads_support" != x"no"; then
3767 # now check for gssapi headers. This is also done here to allow for
3768 # different kerberos include paths
3769 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3771 ##################################################################
3772 # we might need the k5crypto and com_err libraries on some systems
3773 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3774 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3777 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3778 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3779 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3781 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3782 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3784 ########################################################
3785 # now see if we can find the krb5 libs in standard paths
3786 # or as specified above
3787 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3788 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3790 ########################################################
3791 # now see if we can find the gssapi libs in standard paths
3792 if test x"$have_gssapi" != x"yes"; then
3793 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3796 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3797 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3798 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3799 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3800 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3801 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3802 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3803 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3804 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3805 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3806 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3807 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3808 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3809 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3810 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3811 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3812 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3813 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3814 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3815 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3816 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3817 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3818 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3819 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3820 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3821 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3822 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3823 AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3824 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3825 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3826 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3827 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3828 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3829 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3830 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3831 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3832 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3833 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3834 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3835 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3836 AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3838 LIBS="$KRB5_LIBS $LIBS"
3840 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3841 smb_krb5_ticket_has_keyinfo,
3850 krb5_enctype enctype;
3852 enctype = ticket.enc_part.enctype;
3853 kvno = ticket.enc_part.kvno;
3855 [ smb_krb5_ticket_has_keyinfo=yes ],
3856 [ smb_krb5_ticket_has_keyinfo=no ])
3859 if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3860 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3861 [Whether the krb5_ticket structure contains the kvno and enctype])
3864 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3865 smb_krb5_creds_opt_free_context,
3871 krb5_get_init_creds_opt *opt = NULL;
3872 krb5_get_init_creds_opt_free(ctx, opt);
3874 [smb_krb5_creds_opt_free_context=yes],
3875 [smb_krb5_creds_opt_free_context=no]
3879 if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3880 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3881 [Whether krb5_get_init_creds_opt_free takes a context argument])
3884 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3887 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3888 [smb_krb5_verify_checksum=7],
3889 [smb_krb5_verify_checksum=6],
3892 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3894 AC_CACHE_CHECK([for checksum in krb5_checksum],
3895 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3896 AC_TRY_COMPILE([#include <krb5.h>],
3897 [krb5_checksum cksum; cksum.checksum.length = 0;],
3898 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3899 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3901 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3902 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3903 [Whether the krb5_checksum struct has a checksum property])
3906 AC_CACHE_CHECK([for etype in EncryptedData],
3907 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3908 AC_TRY_COMPILE([#include <krb5.h>],
3909 [EncryptedData edata; edata.etype = 0;],
3910 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3911 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3913 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3914 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3915 [Whether the EncryptedData struct has a etype property])
3918 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3919 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3920 AC_TRY_COMPILE([#include <krb5.h>],
3921 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3922 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3923 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3925 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3926 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3927 [Whether the krb5_ap_req struct has a ticket pointer])
3930 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3931 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3932 AC_TRY_COMPILE([#include <krb5.h>],
3933 [krb5_error err; err.e_data = NULL;],
3934 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3935 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3937 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3938 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3939 [Whether the krb5_error struct has a e_data pointer])
3942 AC_CACHE_CHECK([for krb5_crypto type],
3943 samba_cv_HAVE_KRB5_CRYPTO,[
3944 AC_TRY_COMPILE([#include <krb5.h>],
3945 [krb5_crypto crypto;],
3946 samba_cv_HAVE_KRB5_CRYPTO=yes,
3947 samba_cv_HAVE_KRB5_CRYPTO=no)])
3949 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3950 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3951 [Whether the type krb5_crypto exists])
3954 AC_CACHE_CHECK([for krb5_encrypt_block type],
3955 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3956 AC_TRY_COMPILE([#include <krb5.h>],
3957 [krb5_encrypt_block block;],
3958 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3959 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3961 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3962 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3963 [Whether the type krb5_encrypt_block exists])
3966 AC_CACHE_CHECK([for addrtype in krb5_address],
3967 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3968 AC_TRY_COMPILE([#include <krb5.h>],
3969 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3970 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3971 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3973 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3974 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3975 [Whether the krb5_address struct has a addrtype property])
3978 AC_CACHE_CHECK([for addr_type in krb5_address],
3979 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3980 AC_TRY_COMPILE([#include <krb5.h>],
3981 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3982 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3983 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3985 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3986 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3987 [Whether the krb5_address struct has a addr_type property])
3990 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3991 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3992 [AC_TRY_COMPILE([#include <krb5.h>],
3993 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3994 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3996 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3997 AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3998 [Whether the krb5_ticket struct has a enc_part2 property])
4001 AC_CACHE_CHECK([for keyblock in krb5_creds],
4002 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
4003 AC_TRY_COMPILE([#include <krb5.h>],
4004 [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
4005 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
4006 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
4008 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
4009 AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
4010 [Whether the krb5_creds struct has a keyblock property])
4013 AC_CACHE_CHECK([for session in krb5_creds],
4014 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
4015 AC_TRY_COMPILE([#include <krb5.h>],
4016 [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
4017 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
4018 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
4020 if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
4021 AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
4022 [Whether the krb5_creds struct has a session property])
4025 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
4026 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
4027 AC_TRY_COMPILE([#include <krb5.h>],
4028 [krb5_keyblock key; key.keyvalue.data = NULL;],
4029 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
4030 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
4032 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
4033 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
4034 [Whether the krb5_keyblock struct has a keyvalue property])
4037 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
4038 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
4039 AC_TRY_COMPILE([#include <krb5.h>],
4040 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
4041 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
4042 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
4043 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
4044 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
4045 AC_TRY_COMPILE([#include <krb5.h>],
4046 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
4047 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
4048 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
4049 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
4050 # w.r.t. arcfour and windows, so we must not enable it here
4051 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
4052 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
4053 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
4054 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
4057 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
4058 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
4059 AC_TRY_COMPILE([#include <krb5.h>],
4060 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
4061 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
4062 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
4064 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
4065 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
4066 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
4069 AC_CACHE_CHECK([for KV5M_KEYTAB],
4070 samba_cv_HAVE_KV5M_KEYTAB,[
4071 AC_TRY_COMPILE([#include <krb5.h>],
4072 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
4073 samba_cv_HAVE_KV5M_KEYTAB=yes,
4074 samba_cv_HAVE_KV5M_KEYTAB=no)])
4076 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
4077 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
4078 [Whether the KV5M_KEYTAB option is available])
4081 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
4082 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
4083 AC_TRY_COMPILE([#include <krb5.h>],
4084 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
4085 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
4086 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
4088 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
4089 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
4090 [Whether KRB5_KU_OTHER_CKSUM is available])
4093 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
4094 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
4095 AC_TRY_COMPILE([#include <krb5.h>],
4096 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
4097 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
4098 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
4100 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
4101 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
4102 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
4105 AC_CACHE_CHECK([for the krb5_princ_component macro],
4106 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
4107 AC_TRY_LINK([#include <krb5.h>],
4108 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
4109 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
4110 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
4112 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
4113 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
4114 [Whether krb5_princ_component is available])
4117 AC_CACHE_CHECK([for key in krb5_keytab_entry],
4118 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
4119 AC_TRY_COMPILE([#include <krb5.h>],
4120 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
4121 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
4122 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
4124 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
4125 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
4126 [Whether krb5_keytab_entry has key member])
4129 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
4130 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
4131 AC_TRY_COMPILE([#include <krb5.h>],
4132 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4133 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4134 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4136 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4137 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4138 [Whether krb5_keytab_entry has keyblock member])
4141 AC_CACHE_CHECK([for magic in krb5_address],
4142 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4143 AC_TRY_COMPILE([#include <krb5.h>],
4144 [krb5_address addr; addr.magic = 0;],
4145 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4146 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4148 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4149 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4150 [Whether the krb5_address struct has a magic property])
4153 AC_CACHE_CHECK([for WRFILE: keytab support],
4154 samba_cv_HAVE_WRFILE_KEYTAB,[
4159 krb5_context context;
4162 krb5_init_context(&context);
4163 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4165 samba_cv_HAVE_WRFILE_KEYTAB=yes,
4166 samba_cv_HAVE_WRFILE_KEYTAB=no)])
4168 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4169 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4170 [Whether the WRFILE:-keytab is supported])
4173 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4174 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4175 AC_TRY_COMPILE([#include <krb5.h>],
4177 krb5_context context;
4178 krb5_principal principal;
4179 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4180 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4181 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4183 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4184 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4185 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4188 AC_CACHE_CHECK([for krb5_addresses type],
4189 samba_cv_HAVE_KRB5_ADDRESSES,[
4190 AC_TRY_COMPILE([#include <krb5.h>],
4191 [krb5_addresses addr;],
4192 samba_cv_HAVE_KRB5_ADDRESSES=yes,
4193 samba_cv_HAVE_KRB5_ADDRESSES=no)])
4195 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4196 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4197 [Whether the type krb5_addresses type exists])
4200 AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4201 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4202 AC_TRY_COMPILE([#include <krb5.h>],
4204 krb5_mk_error(0,0,0);],
4205 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4206 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4208 if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4209 AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4210 [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4213 if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4214 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4215 smb_krb5_enctype_to_string_takes_krb5_context_arg,[
4219 krb5_context context = NULL;
4221 krb5_enctype_to_string(context, 1, &str);
4222 if (str) free (str);
4225 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4226 smb_krb5_enctype_to_string_takes_krb5_context_arg=yes,
4227 smb_krb5_enctype_to_string_takes_krb5_context_arg=no)])
4229 if test x"$smb_krb5_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4230 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4231 [whether krb5_enctype_to_string takes krb5_context argument])
4234 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4235 smb_krb5_enctype_to_string_takes_size_t_arg,[
4240 krb5_enctype_to_string(1, buf, 256);
4243 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4244 smb_krb5_enctype_to_string_takes_size_t_arg=yes,
4245 smb_krb5_enctype_to_string_takes_size_t_arg=no)])
4247 if test x"$smb_krb5_enctype_to_string_takes_size_t_arg" = x"yes"; then
4248 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4249 [whether krb5_enctype_to_string takes size_t argument])
4253 AC_CACHE_CHECK([for krb5_principal_get_realm],
4254 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4255 AC_TRY_LINK([#include <krb5.h>],
4256 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4257 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4258 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4260 if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4261 AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4262 [Whether the function krb5_principal_get_realm is defined])
4265 AC_CACHE_CHECK([for krb5_princ_realm],
4266 samba_cv_HAVE_KRB5_PRINC_REALM,[
4267 AC_TRY_LINK([#include <krb5.h>],
4268 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4269 samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4270 samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4272 if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4273 AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4274 [Whether the macro krb5_princ_realm is defined])
4279 # Now the decisions whether we can support krb5
4281 # NOTE: all tests should be done before this block!
4284 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4285 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4289 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4290 x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4292 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4296 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4297 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4299 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4303 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4304 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4306 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4310 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4311 x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4313 AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4317 if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
4319 # We only need the following functions if we can't get the enctype
4320 # and kvno out of the ticket directly (ie. on Heimdal).
4322 if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4324 AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4328 if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4330 AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4336 if test x"$use_ads" = x"yes"; then
4337 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4338 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4339 if test x"$have_gssapi" = x"yes"; then
4340 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4343 if test x"$with_ads_support" = x"yes"; then
4344 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4346 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4348 AC_REMOVE_DEFINE(HAVE_KRB5_H)
4349 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4350 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4351 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4355 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4356 AC_MSG_RESULT([$use_ads])
4358 LIBS="$ac_save_LIBS"
4361 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4362 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4365 ########################################################
4366 # Compile with DNS Updates support?
4368 with_dnsupdate_support=no
4369 AC_MSG_CHECKING([whether to enable DNS Updates support])
4371 AC_ARG_WITH(dnsupdate,
4372 [ --with-dnsupdate Enable DNS Updates support (default no)],
4373 [ case "$withval" in
4375 with_dnsupdate_support=$withval
4379 AC_MSG_RESULT($with_dnsupdate_support)
4381 if test x"$with_dnsupdate_support" != x"no"; then
4383 ################################################################
4384 # first test for Active Directory support being enabled
4385 #if test x"$with_ads_support" = x"no"; then
4386 # AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4387 # with_dnsupdate_support=no
4389 ##################################################################
4390 # then test for uuid.h (necessary to generate unique DNS keynames
4391 # (uuid.h is required for this test)
4392 AC_CHECK_HEADERS(uuid/uuid.h)
4394 if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4395 if test x"$with_dnsupdate_support" = x"yes"; then
4396 AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4398 AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4400 with_dnsupdate_support=no
4404 if test x"$with_dnsupdate_support" != x"no"; then
4406 ########################################################
4407 # Now see if we can find the uuid libs in standard paths
4408 # On some systems, the uuid API is in libc, so we have to
4409 # be careful not to insert a spurious -luuid.
4412 AC_LIBTESTFUNC(uuid, uuid_generate,
4417 SMB_REMOVE_LIB(uuid)
4421 with_dnsupdate_support=yes
4422 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4425 if test x"$with_dnsupdate_support" = x"yes"; then
4426 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4428 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4430 with_dnsupdate_support=no
4434 #################################################
4435 # check for automount support
4436 AC_MSG_CHECKING(whether to use automount)
4437 AC_ARG_WITH(automount,
4438 [ --with-automount Include automount support (default=no)],
4439 [ case "$withval" in
4442 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4451 #################################################
4452 # check for smbmount support
4453 AC_MSG_CHECKING(whether to use smbmount)
4454 AC_ARG_WITH(smbmount,
4455 [ --with-smbmount Include smbmount (Linux only) support (default=no)],
4456 [ case "$withval" in
4461 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
4462 SMBMOUNT_PROGS="bin/smbmount bin/smbmnt bin/smbumount"
4465 AC_MSG_ERROR(not on a linux system!)
4476 #################################################
4477 # check for mount- and umount.cifs support
4479 INSTALL_CIFSMOUNT=""
4480 UNINSTALL_CIFSMOUNT=""
4481 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4482 AC_ARG_WITH(cifsmount,
4483 [ --with-cifsmount Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
4484 [ case "$withval" in
4492 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4493 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4494 INSTALL_CIFSMOUNT="installcifsmount"
4495 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4498 AC_MSG_ERROR(not on a linux system!)
4503 [ case "$host_os" in
4506 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4507 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4508 INSTALL_CIFSMOUNT="installcifsmount"
4509 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4517 #################################################
4518 # check for cifs.spnego support
4519 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4521 INSTALL_CIFSSPNEGO=""
4522 UNINSTALL_CIFSSPNEGO=""
4523 AC_MSG_CHECKING(whether to build cifs.spnego)
4524 AC_ARG_WITH(cifsspnego,
4525 [ --with-cifsspnego Include cifs.spnego (Linux only) support (default=no)],
4526 [ case "$withval" in
4533 if test x"$use_ads" != x"yes"; then
4534 AC_MSG_ERROR(ADS support should be enabled for building cifs.spnego)
4535 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4536 AC_MSG_ERROR(keyutils package is required for cifs.spnego)
4539 AC_DEFINE(WITH_CIFSSPNEGO,1,[whether to build cifs.spnego])
4540 CIFSSPNEGO_PROGS="bin/cifs.spnego"
4541 INSTALL_CIFSSPNEGO="installcifsspnego"
4542 UNINSTALL_CIFSSPNEGO="uninstallcifsspnego"
4546 AC_MSG_ERROR(not on a linux system!)
4557 #################################################
4558 # Check for a PAM clear-text auth, accounts, password
4559 # and session support. Most PAM implementations keep their
4560 # headers in /usr/include/security. Darwin keeps its in
4563 with_pam_for_crypt=no
4565 AC_MSG_CHECKING(whether to try PAM support)
4567 [ --with-pam Include PAM support (default=no)],
4568 [ case "$withval" in
4574 AC_MSG_RESULT([$try_pam])
4577 create_pam_modules=no
4578 if test x"${try_pam}" != x"no";then
4580 create_pam_modules=yes
4582 # Most systems have PAM headers in /usr/include/security, but Darwin
4583 # has them in /usr/include/pam.
4584 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4585 if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4586 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4587 if test x"${try_pam}" = x"yes";then
4588 AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4591 create_pam_modules=no
4594 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4595 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4596 if test x"${try_pam}" = x"yes";then
4597 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4600 create_pam_modules=no
4603 AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4604 #if HAVE_SECURITY_PAM_APPL_H
4605 #include <security/pam_appl.h>
4607 #if HAVE_PAM_PAM_APPL_H
4608 #include <pam/pam_appl.h>
4611 if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4612 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4613 if test x"${try_pam}" = x"yes";then
4614 AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4616 create_pam_modules=no
4619 if test x"$use_pam" = x"yes"; then
4620 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4621 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4622 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4623 with_pam_for_crypt=yes
4625 if test x"$create_pam_modules" = x"yes"; then
4626 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4627 # this checks are optional,
4628 # we don't care about the results here
4629 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4630 AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4631 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4633 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4636 AC_MSG_CHECKING(whether to use PAM support)
4637 AC_MSG_RESULT([$use_pam])
4639 AC_MSG_CHECKING(whether to have PAM MODULES support)
4640 AC_MSG_RESULT([$create_pam_modules])
4643 #################################################
4644 # check for pam_smbpass support
4646 INSTALL_PAM_MODULES=""
4647 UNINSTALL_PAM_MODULES=""
4648 AC_MSG_CHECKING(whether to use pam_smbpass)
4649 AC_ARG_WITH(pam_smbpass,
4650 [ --with-pam_smbpass Build PAM module for authenticating against passdb backends (default=no)],
4651 [ case "$withval" in
4655 # Conditions under which pam_smbpass should not be built.
4657 if test x"$BLDSHARED" != x"true"; then
4658 AC_MSG_ERROR([No support for shared modules])
4659 elif test x"$create_pam_modules" != x"yes"; then
4660 AC_MSG_ERROR([No support for PAM MODULES])
4662 PAM_MODULES="pam_smbpass"
4663 INSTALL_PAM_MODULES="installpammodules"
4664 UNINSTALL_PAM_MODULES="uninstallpammodules"
4675 ###############################################
4676 # test for where we get crypt() from
4677 AC_SEARCH_LIBS(crypt, [crypt],
4678 [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4679 AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4682 ## moved after the check for -lcrypt in order to
4683 ## ensure that the necessary libraries are included
4684 ## check checking for truncated salt. Wrapped by the
4685 ## $with_pam_for_crypt variable as above --jerry
4687 if test $with_pam_for_crypt = no; then
4688 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4690 LIBS="$AUTH_LIBS $LIBS"
4691 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4692 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4693 LIBS="$crypt_LIBS"])
4694 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4695 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4699 #################################################
4700 # check for a NISPLUS_HOME support
4701 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4702 AC_ARG_WITH(nisplus-home,
4703 [ --with-nisplus-home Include NISPLUS_HOME support (default=no)],
4704 [ case "$withval" in
4707 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4716 #################################################
4717 # check for syslog logging
4718 AC_MSG_CHECKING(whether to use syslog logging)
4720 [ --with-syslog Include experimental SYSLOG support (default=no)],
4721 [ case "$withval" in
4724 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4733 #################################################
4734 # check for experimental disk-quotas support
4736 samba_cv_WITH_QUOTAS=auto
4737 samba_cv_TRY_QUOTAS=no
4738 samba_cv_RUN_QUOTA_TESTS=auto
4739 samba_cv_WITH_SYS_QUOTAS=auto
4740 samba_cv_TRY_SYS_QUOTAS=auto
4741 samba_cv_SYSQUOTA_FOUND=no
4743 AC_MSG_CHECKING(whether to try disk-quotas support)
4745 [ --with-quotas Include disk-quota support (default=no)],
4746 [ case "$withval" in
4749 samba_cv_WITH_QUOTAS=yes
4750 samba_cv_TRY_QUOTAS=yes
4751 samba_cv_RUN_QUOTA_TESTS=yes
4752 #set sys quotas to auto in this case
4753 samba_cv_TRY_SYS_QUOTAS=auto
4757 samba_cv_WITH_QUOTAS=auto
4758 samba_cv_TRY_QUOTAS=auto
4759 samba_cv_RUN_QUOTA_TESTS=auto
4760 #set sys quotas to auto in this case
4761 samba_cv_TRY_SYS_QUOTAS=auto
4765 samba_cv_WITH_QUOTAS=no
4766 samba_cv_TRY_QUOTAS=no
4767 samba_cv_RUN_QUOTA_TESTS=no
4770 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4773 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4776 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4777 AC_ARG_WITH(sys-quotas,
4778 [ --with-sys-quotas Include lib/sysquotas.c support (default=auto)],
4779 [ case "$withval" in
4782 samba_cv_WITH_SYS_QUOTAS=yes
4783 samba_cv_TRY_SYS_QUOTAS=yes
4784 samba_cv_RUN_QUOTA_TESTS=yes
4788 samba_cv_WITH_SYS_QUOTAS=auto
4789 samba_cv_TRY_SYS_QUOTAS=auto
4790 samba_cv_RUN_QUOTA_TESTS=auto
4794 samba_cv_WITH_SYS_QUOTAS=no
4795 samba_cv_TRY_SYS_QUOTAS=no
4798 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4801 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4804 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4805 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4809 samba_cv_TRY_SYS_QUOTAS=yes
4810 samba_cv_RUN_QUOTA_TESTS=yes
4814 samba_cv_TRY_SYS_QUOTAS=no
4819 #############################################
4820 # only check for quota stuff if --with-quotas
4821 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4824 # on linux we didn't need to test we have builtin support
4826 samba_cv_SYSQUOTA_FOUND=yes
4827 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4828 samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4829 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4832 AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4833 samba_cv_found_xfs_header=yes
4834 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4838 # need to set this define when using static linking (BUG 1473)
4839 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4845 # some broken header files need this
4846 AC_CHECK_HEADER(asm/types.h,[
4847 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4848 AC_ADD_INCLUDE(<asm/types.h>)
4851 # For quotas on Veritas VxFS filesystems
4852 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4854 # For quotas on Linux XFS filesystems
4855 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4857 # For sys/quota.h and linux/quota.h
4858 AC_CHECK_HEADERS(sys/quota.h)
4860 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4861 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4862 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4864 #include "confdefs.h"
4865 #ifdef HAVE_SYS_TYPES_H
4866 #include <sys/types.h>
4868 #ifdef HAVE_ASM_TYPES_H
4869 #include <asm/types.h>
4871 #include <sys/quota.h>
4872 ],[int i = Q_XGETQUOTA;],
4873 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4874 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4875 samba_cv_found_xfs_header=yes
4879 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4880 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4882 #include "confdefs.h"
4883 #ifdef HAVE_SYS_QUOTA_H
4884 #include <sys/quota.h>
4888 D.dqb_fsoftlimit = 0;],
4889 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4890 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4891 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4895 # look for a working quota system
4897 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4898 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4900 #define HAVE_QUOTACTL_4A 1
4901 #define AUTOCONF_TEST 1
4902 #include "confdefs.h"
4903 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4904 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4905 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4906 samba_cv_SYSQUOTA_FOUND=yes;
4907 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4908 samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4912 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4913 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4915 #define HAVE_QUOTACTL_4B 1
4916 #define AUTOCONF_TEST 1
4917 #include "confdefs.h"
4918 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4919 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4920 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4921 echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4922 samba_cv_SYSQUOTA_FOUND=yes;
4923 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4924 samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4928 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4929 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4931 #define HAVE_QUOTACTL_3 1
4932 #define AUTOCONF_TEST 1
4933 #include "confdefs.h"
4934 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4935 samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4936 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4937 echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4938 samba_cv_SYSQUOTA_FOUND=yes;
4939 AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4940 samba_cv_sysquotas_file="lib/sysquotas_3.c"
4944 #################################################
4945 # check for mntent.h and struct mntent
4946 AC_CHECK_HEADERS(mntent.h)
4947 #################################################
4948 # check for setmntent,getmntent,endmntent
4949 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4951 #################################################
4952 # check for devnm.h and struct mntent
4953 AC_CHECK_HEADERS(devnm.h)
4954 #################################################
4956 AC_CHECK_FUNCS(devnm)
4958 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4959 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4960 # if --with-sys-quotas=yes then build it
4961 # you have can use the get/set quota command smb.conf
4963 samba_cv_SYSQUOTA_FOUND=auto
4965 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4966 # if --with-sys-quotas=yes then build it
4967 # you have can use the get/set quota command smb.conf
4969 samba_cv_TRY_SYS_QUOTAS=auto
4973 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4974 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4975 SAVE_CPPFLAGS="$CPPFLAGS"
4976 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4978 #include "confdefs.h"
4979 #define NO_PROTO_H 1
4980 #define NO_CONFIG_H 1
4981 #define HAVE_SYS_QUOTAS 1
4982 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4983 #include "${srcdir-.}/lib/sysquotas.c"
4984 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4985 CPPFLAGS="$SAVE_CPPFLAGS"
4987 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4988 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4989 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4990 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4991 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4992 samba_cv_WE_USE_SYS_QUOTAS=yes
5000 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
5001 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
5002 SAVE_CPPFLAGS="$CPPFLAGS"
5003 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5005 #include "confdefs.h"
5006 #define NO_PROTO_H 1
5007 #define NO_CONFIG_H 1
5008 #define HAVE_SYS_QUOTAS 1
5009 #define HAVE_XFS_QUOTAS 1
5010 #include "${srcdir-.}/lib/sysquotas_xfs.c"
5011 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
5012 CPPFLAGS="$SAVE_CPPFLAGS"
5014 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
5015 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
5016 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
5021 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
5022 SAVE_CPPFLAGS="$CPPFLAGS"
5023 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5025 #include "confdefs.h"
5026 #define NO_PROTO_H 1
5027 #define NO_CONFIG_H 1
5028 #include "${srcdir-.}/smbd/quotas.c"
5029 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
5030 CPPFLAGS="$SAVE_CPPFLAGS"
5032 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
5033 AC_MSG_CHECKING(whether to use the old quota support)
5034 if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
5035 if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
5036 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5046 ####################
5047 # End of quota check samba_cv_RUN_QUOTA_TESTS
5050 #################################################
5051 # check for experimental utmp accounting
5053 AC_MSG_CHECKING(whether to support utmp accounting)
5056 [ --with-utmp Include utmp accounting (default, if supported by OS)],
5057 [ case "$withval" in
5067 # utmp requires utmp.h
5068 # Note similar check earlier, when checking utmp details.
5070 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
5071 utmp_no_reason=", no utmp.h on $host_os"
5075 # Display test results
5077 if test x"$WITH_UTMP" = x"yes"; then
5079 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
5081 AC_MSG_RESULT(no$utmp_no_reason)
5086 UNINSTALLLIBCMD_SH=:
5089 if test $BLDSHARED = true; then
5090 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
5091 UNINSTALLLIBCMD_SH="rm -f"
5093 if test $enable_static = yes; then
5094 INSTALLLIBCMD_A="\$(INSTALLCMD)"
5095 UNINSTALLLIBCMD_A="rm -f"
5098 #################################################
5099 # should we build libnetapi?
5101 UNINSTALL_LIBNETAPI=
5104 AC_MSG_CHECKING(whether to build the libnetapi shared library)
5105 AC_ARG_WITH(libnetapi,
5106 [ --with-libnetapi Build the libnetapi shared library (default=yes if shared libs supported)],
5107 [ case "$withval" in
5112 if test $BLDSHARED = true; then
5113 LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
5118 AC_MSG_RESULT(no shared library support -- will supply static library)
5120 if test $enable_static = yes; then
5123 INSTALL_LIBNETAPI=installlibnetapi
5124 UNINSTALL_LIBNETAPI=uninstalllibnetapi
5128 # if unspecified, default is to built it if possible.
5129 if test $BLDSHARED = true; then
5130 LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
5135 AC_MSG_RESULT(no shared library support -- will supply static library)
5137 if test $enable_static = yes; then
5140 INSTALL_LIBNETAPI=installlibnetapi
5143 #################################################
5144 # should we build libaddns?
5149 AC_MSG_CHECKING(whether to build the libaddns shared library)
5150 AC_ARG_WITH(libaddns,
5151 [ --with-libaddns Build the libaddns shared library (default=no undefined API)],
5152 [ case "$withval" in
5157 if test $BLDSHARED = true; then
5158 LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
5163 AC_MSG_RESULT(no shared library support -- will supply static library)
5165 if test $enable_static = yes; then
5168 INSTALL_LIBADDNS=installlibaddns
5169 UNINSTALL_LIBADDNS=uninstalllibaddns
5175 #################################################
5176 # should we build libsmbclient?
5178 INSTALL_LIBSMBCLIENT=
5179 UNINSTALL_LIBSMBCLIENT=
5180 LIBSMBCLIENT_SHARED=
5182 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
5183 AC_ARG_WITH(libsmbclient,
5184 [ --with-libsmbclient Build the libsmbclient shared library (default=yes if shared libs supported)],
5185 [ case "$withval" in
5190 if test $BLDSHARED = true; then
5191 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
5192 LIBSMBCLIENT=libsmbclient
5196 AC_MSG_RESULT(no shared library support -- will supply static library)
5198 if test $enable_static = yes; then
5199 LIBSMBCLIENT=libsmbclient
5201 INSTALL_LIBSMBCLIENT=installclientlib
5202 UNINSTALL_LIBSMBCLIENT=uninstallclientlib
5206 # if unspecified, default is to built it if possible.
5207 if test $BLDSHARED = true; then
5208 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
5209 LIBSMBCLIENT=libsmbclient
5213 AC_MSG_RESULT(no shared library support -- will supply static library)
5215 if test $enable_static = yes; then
5216 LIBSMBCLIENT=libsmbclient
5218 INSTALL_LIBSMBCLIENT=installclientlib
5219 UNINSTALL_LIBSMBCLIENT=uninstallclientlib
5222 INSTALL_LIBSMBSHAREMODES=
5223 LIBSMBSHAREMODES_SHARED=
5225 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
5226 AC_ARG_WITH(libsmbsharemodes,
5227 [ --with-libsmbsharemodes Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
5228 [ case "$withval" in
5233 if test $BLDSHARED = true; then
5234 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
5235 LIBSMBSHAREMODES=libsmbsharemodes
5239 AC_MSG_RESULT(no shared library support -- will supply static library)
5241 if test $enable_static = yes; then
5242 LIBSMBSHAREMODES=libsmbsharemodes
5244 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
5245 UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
5249 # if unspecified, default is to built it if possible.
5250 if test $BLDSHARED = true; then
5251 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
5252 LIBSMBSHAREMODES=libsmbsharemodes
5256 AC_MSG_RESULT(no shared library support -- will supply static library)
5258 if test $enable_static = yes; then
5259 LIBSMBSHAREMODES=libsmbsharemodes
5261 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
5265 #################################################
5266 # these tests are taken from the GNU fileutils package
5267 AC_CHECKING(how to get filesystem space usage)
5270 # Test for statvfs64.
5271 if test $space = no; then
5273 AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
5275 #if defined(HAVE_UNISTD_H)
5278 #include <sys/types.h>
5279 #include <sys/statvfs.h>
5282 struct statvfs64 fsd;
5283 exit (statvfs64 (".", &fsd));
5285 fu_cv_sys_stat_statvfs64=yes,
5286 fu_cv_sys_stat_statvfs64=no,
5287 fu_cv_sys_stat_statvfs64=cross)])
5288 if test $fu_cv_sys_stat_statvfs64 = yes; then
5290 AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
5294 # Perform only the link test since it seems there are no variants of the
5295 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
5296 # because that got a false positive on SCO OSR5. Adding the declaration
5297 # of a `struct statvfs' causes this test to fail (as it should) on such
5298 # systems. That system is reported to work fine with STAT_STATFS4 which
5299 # is what it gets when this test fails.
5300 if test $space = no; then
5302 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5303 [AC_TRY_LINK([#include <sys/types.h>
5304 #include <sys/statvfs.h>],
5305 [struct statvfs fsd; statvfs (0, &fsd);],
5306 fu_cv_sys_stat_statvfs=yes,
5307 fu_cv_sys_stat_statvfs=no)])
5308 if test $fu_cv_sys_stat_statvfs = yes; then
5310 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5314 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5315 # This is not the case on ancient Linux systems.
5317 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5318 AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5319 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5320 if test x"$samba_cv_fsid_int" = x"yes"; then
5321 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5324 if test $space = no; then
5325 # DEC Alpha running OSF/1
5326 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5327 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5329 #include <sys/param.h>
5330 #include <sys/types.h>
5331 #include <sys/mount.h>
5336 exit (statfs (".", &fsd, sizeof (struct statfs)));
5338 fu_cv_sys_stat_statfs3_osf1=yes,
5339 fu_cv_sys_stat_statfs3_osf1=no,
5340 fu_cv_sys_stat_statfs3_osf1=no)])
5341 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5342 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5344 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5348 if test $space = no; then
5350 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5351 member (AIX, 4.3BSD)])
5352 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5354 #ifdef HAVE_SYS_PARAM_H
5355 #include <sys/param.h>
5357 #ifdef HAVE_SYS_MOUNT_H
5358 #include <sys/mount.h>
5360 #ifdef HAVE_SYS_VFS_H
5361 #include <sys/vfs.h>
5367 exit (statfs (".", &fsd));
5369 fu_cv_sys_stat_statfs2_bsize=yes,
5370 fu_cv_sys_stat_statfs2_bsize=no,
5371 fu_cv_sys_stat_statfs2_bsize=no)])
5372 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5373 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5375 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5379 if test $space = no; then
5381 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5382 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5383 [AC_TRY_RUN([#include <sys/types.h>
5384 #include <sys/statfs.h>
5388 exit (statfs (".", &fsd, sizeof fsd, 0));
5390 fu_cv_sys_stat_statfs4=yes,
5391 fu_cv_sys_stat_statfs4=no,
5392 fu_cv_sys_stat_statfs4=no)])
5393 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5394 if test $fu_cv_sys_stat_statfs4 = yes; then
5396 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5400 if test $space = no; then
5402 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5403 member (4.4BSD and NetBSD)])
5404 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5405 [AC_TRY_RUN([#include <sys/types.h>
5406 #ifdef HAVE_SYS_PARAM_H
5407 #include <sys/param.h>
5409 #ifdef HAVE_SYS_MOUNT_H
5410 #include <sys/mount.h>
5416 exit (statfs (".", &fsd));
5418 fu_cv_sys_stat_statfs2_fsize=yes,
5419 fu_cv_sys_stat_statfs2_fsize=no,
5420 fu_cv_sys_stat_statfs2_fsize=no)])
5421 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5422 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5424 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5428 if test $space = no; then
5430 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5431 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5432 [AC_TRY_RUN([#include <sys/types.h>
5433 #ifdef HAVE_SYS_PARAM_H
5434 #include <sys/param.h>
5436 #ifdef HAVE_SYS_MOUNT_H
5437 #include <sys/mount.h>
5439 #ifdef HAVE_SYS_FS_TYPES_H
5440 #include <sys/fs_types.h>
5445 /* Ultrix's statfs returns 1 for success,
5446 0 for not mounted, -1 for failure. */
5447 exit (statfs (".", &fsd) != 1);
5449 fu_cv_sys_stat_fs_data=yes,
5450 fu_cv_sys_stat_fs_data=no,
5451 fu_cv_sys_stat_fs_data=no)])
5452 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5453 if test $fu_cv_sys_stat_fs_data = yes; then
5455 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5460 # As a gating factor for large file support, in order to
5461 # use <4GB files we must have the following minimal support
5463 # long long, and a 64 bit off_t or off64_t.
5464 # If we don't have all of these then disable large
5467 AC_MSG_CHECKING([if large file support can be enabled])
5469 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5470 #include <sys/types.h>
5476 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5477 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5478 AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5480 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5482 #################################################
5483 # check for cluster extensions
5485 AC_MSG_CHECKING(whether to include cluster support)
5486 AC_ARG_WITH(cluster-support,
5487 [ --with-cluster-support Enable cluster extensions (default=no)])
5488 if test "x$with_cluster_support" = "xyes"; then
5489 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5496 #################################################
5497 # check for ACL support
5499 AC_MSG_CHECKING(whether to support ACLs)
5500 AC_ARG_WITH(acl-support,
5501 [ --with-acl-support Include ACL support (default=auto)],
5502 [ case "$withval" in
5504 with_acl_support="$withval"
5508 if test x"$with_acl_support" = x ; then
5509 with_acl_support="auto"
5512 AC_MSG_RESULT($with_acl_support)
5514 if test x"$with_acl_support" = x"no"; then
5515 AC_MSG_RESULT(Disabling ACL support)
5516 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5518 AC_MSG_NOTICE(checking whether ACL support is available:)
5521 AC_MSG_NOTICE(Using UnixWare ACLs)
5522 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5523 default_static_modules="$default_static_modules vfs_solarisacl"
5526 AC_MSG_NOTICE(Using solaris ACLs)
5527 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5528 ACL_LIBS="$ACL_LIBS -lsec"
5529 default_static_modules="$default_static_modules vfs_solarisacl"
5532 AC_MSG_NOTICE(Using HPUX ACLs)
5533 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5534 default_static_modules="$default_static_modules vfs_hpuxacl"
5537 AC_MSG_NOTICE(Using IRIX ACLs)
5538 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5539 default_static_modules="$default_static_modules vfs_irixacl"
5542 AC_MSG_NOTICE(Using AIX ACLs)
5543 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5544 default_static_modules="$default_static_modules vfs_aixacl"
5547 AC_MSG_NOTICE(Using Tru64 ACLs)
5548 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5549 ACL_LIBS="$ACL_LIBS -lpacl"
5550 default_static_modules="$default_static_modules vfs_tru64acl"
5553 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5554 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5557 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5560 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5563 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5565 LIBS="$LIBS $ACL_LIBS"
5567 #include <sys/types.h>
5568 #include <sys/acl.h>
5572 acl_entry_t *entry_p;
5573 return acl_get_entry(acl, entry_id, entry_p);
5575 [samba_cv_HAVE_POSIX_ACLS=yes],
5576 [samba_cv_HAVE_POSIX_ACLS=no])
5579 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5580 AC_MSG_NOTICE(Using posix ACLs)
5581 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5582 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5584 LIBS="$LIBS $ACL_LIBS"
5586 #include <sys/types.h>
5587 #include <sys/acl.h>
5589 acl_permset_t permset_d;
5591 return acl_get_perm_np(permset_d, perm);
5593 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5594 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5597 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5598 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5600 default_static_modules="$default_static_modules vfs_posixacl"
5602 AC_MSG_NOTICE(ACL support is not avaliable)
5603 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5607 fi # with_acl_support
5611 #################################################
5612 # check for AIO support
5614 AC_MSG_CHECKING(whether to support asynchronous io)
5615 AC_ARG_WITH(aio-support,
5616 [ --with-aio-support Include asynchronous io support (default=no)],
5617 [ case "$withval" in
5624 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5625 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5626 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5629 AC_TRY_LINK([#include <sys/types.h>
5631 [ struct aiocb a; return aio_read(&a);],
5632 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5634 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5637 AC_TRY_LINK([#include <sys/types.h>
5639 [ struct aiocb64 a; return aio_read64(&a);],
5640 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5642 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5643 AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5644 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5646 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5647 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5651 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5652 AC_MSG_CHECKING(for aio_read)
5653 AC_LINK_IFELSE([#include <aio.h>
5654 int main() { struct aiocb a; return aio_read(&a); }],
5655 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5656 [AC_MSG_RESULT(no)])
5658 AC_MSG_CHECKING(for aio_write)
5659 AC_LINK_IFELSE([#include <aio.h>
5660 int main() { struct aiocb a; return aio_write(&a); }],
5661 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5662 [AC_MSG_RESULT(no)])
5664 AC_MSG_CHECKING(for aio_fsync)
5665 AC_LINK_IFELSE([#include <aio.h>
5666 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5667 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5668 [AC_MSG_RESULT(no)])
5670 AC_MSG_CHECKING(for aio_return)
5671 AC_LINK_IFELSE([#include <aio.h>
5672 int main() { struct aiocb a; return aio_return(&a); }],
5673 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5674 [AC_MSG_RESULT(no)])
5676 AC_MSG_CHECKING(for aio_error)
5677 AC_LINK_IFELSE([#include <aio.h>
5678 int main() { struct aiocb a; return aio_error(&a); }],
5679 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5680 [AC_MSG_RESULT(no)])
5682 AC_MSG_CHECKING(for aio_cancel)
5683 AC_LINK_IFELSE([#include <aio.h>
5684 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5685 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5686 [AC_MSG_RESULT(no)])
5688 AC_MSG_CHECKING(for aio_suspend)
5689 AC_LINK_IFELSE([#include <aio.h>
5690 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5691 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5692 [AC_MSG_RESULT(no)])
5695 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5696 AC_MSG_CHECKING(for aio_read64)
5697 AC_LINK_IFELSE([#include <aio.h>
5698 int main() { struct aiocb a; return aio_read64(&a); }],
5699 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5700 [AC_MSG_RESULT(no)])
5702 AC_MSG_CHECKING(for aio_write64)
5703 AC_LINK_IFELSE([#include <aio.h>
5704 int main() { struct aiocb a; return aio_write64(&a); }],
5705 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5706 [AC_MSG_RESULT(no)])
5708 AC_MSG_CHECKING(for aio_fsync64)
5709 AC_LINK_IFELSE([#include <aio.h>
5710 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5711 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5712 [AC_MSG_RESULT(no)])
5714 AC_MSG_CHECKING(for aio_return64)
5715 AC_LINK_IFELSE([#include <aio.h>
5716 int main() { struct aiocb a; return aio_return64(&a); }],
5717 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5718 [AC_MSG_RESULT(no)])
5720 AC_MSG_CHECKING(for aio_error64)
5721 AC_LINK_IFELSE([#include <aio.h>
5722 int main() { struct aiocb a; return aio_error64(&a); }],
5723 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5724 [AC_MSG_RESULT(no)])
5726 AC_MSG_CHECKING(for aio_cancel64)
5727 AC_LINK_IFELSE([#include <aio.h>
5728 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5729 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5730 [AC_MSG_RESULT(no)])
5732 AC_MSG_CHECKING(for aio_suspend64)
5733 AC_LINK_IFELSE([#include <aio.h>
5734 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5735 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5736 [AC_MSG_RESULT(no)])
5743 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5746 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5750 #################################################
5751 # check for sendfile support
5753 with_sendfile_support=yes
5754 AC_MSG_CHECKING(whether to check to support sendfile)
5755 AC_ARG_WITH(sendfile-support,
5756 [ --with-sendfile-support Check for sendfile support (default=yes)],
5757 [ case "$withval" in
5764 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5765 AC_TRY_LINK([#include <sys/sendfile.h>],
5770 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5772 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5774 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5775 AC_TRY_LINK([#include <sys/sendfile.h>],
5780 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5782 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5784 # Try and cope with broken Linux sendfile....
5785 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5787 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5788 #undef _FILE_OFFSET_BITS
5790 #include <sys/sendfile.h>],
5795 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5797 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5799 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5800 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5801 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5802 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5803 elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5804 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5805 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5806 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5807 elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5808 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5809 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5815 *freebsd* | *dragonfly* )
5816 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5818 #include <sys/types.h>
5820 #include <sys/socket.h>
5821 #include <sys/uio.h>],
5823 int fromfd, tofd, ret, total=0;
5824 off_t offset, nwritten;
5827 hdr.headers = &hdtrl;
5829 hdr.trailers = NULL;
5831 hdtrl.iov_base = NULL;
5833 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5835 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5837 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5838 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5839 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5840 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5847 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5849 #include <sys/socket.h>
5850 #include <sys/uio.h>],
5854 struct iovec hdtrl[2];
5858 hdtrl[0].iov_base = 0;
5859 hdtrl[0].iov_len = 0;
5861 nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5863 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5864 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5865 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5866 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5867 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5872 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5874 #include <sys/socket.h>
5875 #include <sys/uio.h>],
5879 struct iovec hdtrl[2];
5883 hdtrl[0].iov_base = 0;
5884 hdtrl[0].iov_len = 0;
5886 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5888 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5889 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5890 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5891 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5892 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5899 AC_CHECK_LIB(sendfile,sendfilev)
5900 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5902 #include <sys/sendfile.h>],
5906 struct sendfilevec vec[2];
5912 vec[0].sfv_fd = SFV_FD_SELF;
5913 vec[0].sfv_flag = 0;
5918 vec[1].sfv_flag = 0;
5921 nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5923 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5925 if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5926 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5927 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5928 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5933 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5935 #include <sys/sendfile.h>],
5939 struct sendfilevec vec[2];
5945 vec[0].sfv_fd = SFV_FD_SELF;
5946 vec[0].sfv_flag = 0;
5951 vec[1].sfv_flag = 0;
5954 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5956 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5958 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5959 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5960 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5961 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5967 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5969 #include <sys/socket.h>],
5973 struct sf_parms hdtrl;
5977 hdtrl.header_data = 0;
5978 hdtrl.header_length = 0;
5979 hdtrl.file_descriptor = fromfd;
5980 hdtrl.file_offset = 0;
5981 hdtrl.file_bytes = 0;
5982 hdtrl.trailer_data = 0;
5983 hdtrl.trailer_length = 0;
5985 nwritten = send_file(&tofd, &hdtrl, 0);
5987 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5988 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5989 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5990 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5991 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
6007 ############################################
6008 # See if we have the Linux readahead syscall.
6010 AC_CACHE_CHECK([for Linux readahead],
6011 samba_cv_HAVE_LINUX_READAHEAD,[
6013 #if defined(HAVE_UNISTD_H)
6016 #include <fcntl.h>],
6017 [ssize_t err = readahead(0,0,0x80000);],
6018 samba_cv_HAVE_LINUX_READAHEAD=yes,
6019 samba_cv_HAVE_LINUX_READAHEAD=no)])
6021 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
6022 AC_DEFINE(HAVE_LINUX_READAHEAD,1,
6023 [Whether Linux readahead is available])
6026 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
6028 ############################################
6029 # See if we have the posix_fadvise syscall.
6031 AC_CACHE_CHECK([for posix_fadvise],
6032 samba_cv_HAVE_POSIX_FADVISE,[
6034 #if defined(HAVE_UNISTD_H)
6037 #include <fcntl.h>],
6038 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
6039 samba_cv_HAVE_POSIX_FADVISE=yes,
6040 samba_cv_HAVE_POSIX_FADVISE=no)])
6042 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
6043 AC_DEFINE(HAVE_POSIX_FADVISE,1,
6044 [Whether posix_fadvise is available])
6049 #################################################
6050 # Check whether winbind is supported on this platform. If so we need to
6051 # build and install client programs, sbin programs and shared libraries
6053 AC_MSG_CHECKING(whether to build winbind)
6055 # Initially, the value of $host_os decides whether winbind is supported
6059 # Define the winbind shared library name and any specific linker flags
6060 # it needs to be built with.
6062 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
6063 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
6064 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
6065 NSSSONAMEVERSIONSUFFIX=""
6066 WINBIND_NSS_PTHREAD=""
6070 NSSSONAMEVERSIONSUFFIX=".2"
6071 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
6074 # FreeBSD winbind client is implemented as a wrapper around
6075 # the Linux version.
6076 NSSSONAMEVERSIONSUFFIX=".1"
6077 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
6078 nsswitch/winbind_nss_linux.o"
6079 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
6080 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
6084 # NetBSD winbind client is implemented as a wrapper
6085 # around the Linux version. It needs getpwent_r() to
6086 # indicate libc's use of the correct nsdispatch API.
6088 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
6089 WINBIND_NSS_EXTRA_OBJS="\
6090 nsswitch/winbind_nss_netbsd.o \
6091 nsswitch/winbind_nss_linux.o"
6092 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
6093 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
6096 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6100 # IRIX has differently named shared libraries
6101 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
6102 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
6103 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
6106 # Solaris winbind client is implemented as a wrapper around
6107 # the Linux version.
6108 NSSSONAMEVERSIONSUFFIX=".1"
6109 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
6110 nsswitch/winbind_nss_linux.o"
6111 WINBIND_NSS_EXTRA_LIBS="-lsocket"
6114 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
6117 # AIX has even differently named shared libraries. No
6118 # WINS support has been implemented yet.
6119 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
6120 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6121 WINBIND_NSS="nsswitch/WINBIND"
6126 winbind_no_reason=", unsupported on $host_os"
6130 # Check the setting of --with-winbind
6132 AC_ARG_WITH(winbind,
6133 [ --with-winbind Build winbind (default, if supported by OS)],
6146 # We need unix domain sockets for winbind
6148 if test x"$HAVE_WINBIND" = x"yes"; then
6149 if test x"$samba_cv_unixsocket" = x"no"; then
6150 winbind_no_reason=", no unix domain socket support on $host_os"
6155 # Display test results
6157 if test x"$HAVE_WINBIND" = x"no"; then
6162 BUILD_LIBWBCLIENT_SHARED=yes
6164 AC_ARG_ENABLE(libwbclient-shared,
6165 [ --enable-libwbclient-shared Build libwbclient as shared object (default=yes, \"no\" only for --enable-developer)],
6166 [if eval "test x$enable_developer = xyes -a x$enable_libwbclient_shared = xno" ; then
6167 BUILD_LIBWBCLIENT_SHARED=no
6170 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6171 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6172 ## Only worry about libwbclient if we have shared library support
6174 LIBWBCLIENT_SHARED=bin/libwbclient.$SHLIBEXT
6175 LIBWBCLIENT=libwbclient
6176 INSTALL_LIBWBCLIENT=installlibwbclient
6177 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6178 WINBIND_LIBS="-lwbclient"
6179 LDFLAGS="$LDFLAGS -L./bin"
6181 LIBWBCLIENT_STATIC=bin/libwbclient.a
6184 if test x"$HAVE_WINBIND" = x"yes"; then
6186 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6188 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6189 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6190 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6191 PAM_MODULES="$PAM_MODULES pam_winbind"
6192 INSTALL_PAM_MODULES="installpammodules"
6193 UNINSTALL_PAM_MODULES="uninstallpammodules"
6196 AC_MSG_RESULT(no$winbind_no_reason)
6199 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
6200 AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
6202 AC_SUBST(WINBIND_NSS_PTHREAD)
6203 AC_SUBST(WINBIND_NSS)
6204 AC_SUBST(WINBIND_WINS_NSS)
6205 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6206 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6207 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
6208 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6210 AC_SUBST(WINBIND_KRB5_LOCATOR)
6212 # Solaris 10 does have new member in nss_XbyY_key
6213 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6214 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6215 [#include <nss_dbdefs.h>])
6217 # Solaris has some extra fields in struct passwd that need to be
6218 # initialised otherwise nscd crashes.
6220 AC_CHECK_MEMBER(struct passwd.pw_comment,
6221 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6224 AC_CHECK_MEMBER(struct passwd.pw_age,
6225 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6228 # AIX 4.3.x and 5.1 do not have as many members in
6229 # struct secmethod_table as AIX 5.2
6230 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6231 [#include <usersec.h>])
6232 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6233 [#include <usersec.h>])
6235 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6236 AC_TRY_COMPILE([#include <sys/types.h>
6237 #include <sys/socket.h>],
6240 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6242 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6243 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6244 AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6248 #################################################
6249 # Check to see if we should use the included popt
6251 AC_ARG_WITH(included-popt,
6252 [ --with-included-popt use bundled popt library, not from system],
6263 if test x"$INCLUDED_POPT" != x"yes"; then
6264 AC_CHECK_LIB(popt, poptGetContext,
6265 INCLUDED_POPT=no, INCLUDED_POPT=yes)
6268 AC_MSG_CHECKING(whether to use included popt)
6269 if test x"$INCLUDED_POPT" = x"yes"; then
6271 BUILD_POPT='$(POPT_OBJ)'
6272 POPTLIBS='$(POPT_OBJ)'
6273 FLAGS1="-I\$(srcdir)/popt"
6279 AC_SUBST(BUILD_POPT)
6283 #################################################
6284 # Check if user wants DNS service discovery support
6286 AC_ARG_ENABLE(dnssd,
6287 [ --enable-dnssd Enable DNS service discovery support (default=auto)])
6289 AC_SUBST(DNSSD_LIBS)
6290 if test x"$enable_dnssd" != x"no"; then
6291 have_dnssd_support=yes
6293 AC_CHECK_HEADERS(dns_sd.h)
6294 if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6295 have_dnssd_support=no
6298 # On Darwin the DNSSD API is in libc, but on other platforms it's
6299 # probably in -ldns_sd
6300 AC_CHECK_FUNCS(DNSServiceRegister)
6301 AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6302 if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6303 x"$ac_cv_lib_ext_DNSServiceRegister" != x"yes"; then
6304 have_dnssd_support=no
6307 if test x"$have_dnssd_support" = x"yes"; then
6308 AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6309 [Whether to enable DNS service discovery support])
6311 if test x"$enable_dnssd" = x"yes"; then
6312 AC_MSG_ERROR(DNS service discovery support not available)
6318 #################################################
6319 # Check to see if we should use the included iniparser
6321 AC_ARG_WITH(included-iniparser,
6322 [ --with-included-iniparser use bundled iniparser library, not from system],
6326 INCLUDED_INIPARSER=yes
6329 INCLUDED_INIPARSER=no
6333 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6334 AC_CHECK_LIB(iniparser, iniparser_load,
6335 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6338 AC_MSG_CHECKING(whether to use included iniparser)
6339 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6341 BUILD_INIPARSER='$(INIPARSER_OBJ)'
6343 FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6347 INIPARSERLIBS="-liniparser"
6349 AC_SUBST(BUILD_INIPARSER)
6350 AC_SUBST(INIPARSERLIBS)
6355 # Checks for the vfs_fileid module
6357 AC_CHECK_FUNC(getmntent)
6359 AC_CHECK_HEADERS(sys/statfs.h)
6361 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6362 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6364 #include <sys/types.h>
6365 #include <sys/statfs.h>
6369 fsid_t fsid = fsd.f_fsid;
6370 return statfs (".", &fsd);
6372 vfsfileid_cv_statfs=yes,
6373 vfsfileid_cv_statfs=no,
6374 vfsfileid_cv_statfs=cross)
6376 AC_MSG_RESULT($vfsfileid_cv_statfs)
6378 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6379 x"$vfsfileid_cv_statfs" = x"yes"; then
6380 default_shared_modules="$default_shared_modules vfs_fileid"
6383 # Checks for the vfs_fileid module
6386 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6388 eval MODULE_DEFAULT_$i=STATIC
6391 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6393 dnl Fall back to static if we cannot build shared libraries
6394 eval MODULE_DEFAULT_$i=STATIC
6396 if test $BLDSHARED = true; then
6397 eval MODULE_DEFAULT_$i=SHARED
6401 dnl Always built these modules static
6402 MODULE_rpc_spoolss=STATIC
6403 MODULE_rpc_srvsvc2=STATIC
6404 MODULE_idmap_tdb=STATIC
6405 MODULE_idmap_passdb=STATIC
6406 MODULE_idmap_nss=STATIC
6408 MODULE_nss_info_template=STATIC
6410 AC_ARG_WITH(static-modules,
6411 [ --with-static-modules=MODULES Comma-separated list of names of modules to statically link in],
6412 [ if test $withval; then
6413 for i in `echo $withval | sed -e 's/,/ /g'`
6415 eval MODULE_$i=STATIC
6419 AC_ARG_WITH(shared-modules,
6420 [ --with-shared-modules=MODULES Comma-separated list of names of modules to build shared],
6421 [ if test $withval; then
6422 for i in `echo $withval | sed -e 's/,/ /g'`
6424 eval MODULE_$i=SHARED
6428 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6429 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6430 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6431 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6432 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6435 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6436 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6437 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6438 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6439 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6440 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
6441 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6442 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6443 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6444 SMB_MODULE(rpc_srvsvc2, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc2.$SHLIBEXT", RPC)
6445 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6446 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
6447 SMB_MODULE(rpc_samr2, \$(RPC_SAMR_OBJ), "bin/librpc_samr2.$SHLIBEXT", RPC)
6448 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6449 SMB_SUBSYSTEM(RPC,smbd/server.o)
6451 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6452 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6453 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6454 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6455 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6456 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6457 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6458 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6460 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6461 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6463 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6464 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6465 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6466 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6467 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6469 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6470 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6471 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6472 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6473 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6474 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6475 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6476 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6478 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6479 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6480 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6481 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6482 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6483 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6484 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6485 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6486 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6487 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6488 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6489 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6490 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6491 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6492 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6493 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6494 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6495 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6496 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6497 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6498 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6499 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6500 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6501 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6502 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6503 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6504 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6505 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6506 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6507 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6508 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6509 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6510 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6511 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6512 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6515 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6517 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6519 #################################################
6520 # do extra things if we are running insure
6522 if test "${ac_cv_prog_CC}" = "insure"; then
6523 CPPFLAGS="$CPPFLAGS -D__INSURE__"
6526 #################################################
6527 # If run from the build farm, enable NASTY hacks
6528 #################################################
6529 AC_MSG_CHECKING(whether to enable build farm hacks)
6530 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6532 AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6537 #################################################
6538 # check for bad librt/libpthread interactions
6540 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6541 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6542 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6543 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6545 SMB_IF_RTSIGNAL_BUG(
6547 # Have RT_SIGNAL bug, need to check whether the problem will
6548 # affect anything we have configured.
6551 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6552 if test x"$rt_signal_lease_ok" = x"no" ; then
6557 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6558 if test x"$rt_signal_notify_ok" = x"no" ; then
6563 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6564 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6565 if test x"$rt_signal_aio_ok" = x"no" ; then
6570 if test x"$rt_do_error" = x"yes" ; then
6571 SMB_IS_LIBPTHREAD_LINKED(
6575 *** On this platforms, linking Samba against pthreads causes problems
6576 *** with the oplock and change notification mechanisms. You may be
6577 *** using pthreads as a side-effect of using the --with-aio-support
6578 *** or --with-profiling-data options. Please remove these and try again.
6585 *** On this platform, the oplock and change notification mechanisms do not
6586 *** appear to work. Please report this problem to samba-technical@samba.org
6587 *** and attach the config.log file from this directory.
6591 AC_MSG_ERROR(unable to use realtime signals on this platform)
6595 # no RT_SIGNAL bug, we are golden
6596 SMB_IS_LIBPTHREAD_LINKED(
6598 AC_MSG_WARN(using libpthreads - this may degrade performance)
6603 # cross compiling, I hope you know what you are doing
6609 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6610 LIB_REMOVE_USR_LIB(LDFLAGS)
6611 LIB_REMOVE_USR_LIB(LIBS)
6612 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6614 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6615 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6616 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6618 #################################################
6619 # Display summary of libraries detected
6621 AC_MSG_RESULT([Using libraries:])
6622 AC_MSG_RESULT([ LIBS = $LIBS])
6623 if test x"$with_ads_support" != x"no"; then
6624 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6626 if test x"$with_ldap_support" != x"no"; then
6627 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6629 if test x"$with_dnsupdate_support" != x"no"; then
6630 AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS])
6632 if test x"$have_dnssd_support" != x"no"; then
6633 AC_MSG_RESULT([ DNSSD_LIBS = $DNSSD_LIBS])
6635 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6637 #################################################
6638 # final configure stuff
6640 AC_MSG_CHECKING([configure summary])
6641 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6643 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6644 AC_MSG_WARN([cannot run when cross-compiling]))
6646 dnl Merge in developer cflags from now on
6647 AC_SUBST(DEVELOPER_CFLAGS)
6648 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
6649 CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6655 # Stuff the smbd-only libraries at the end of the smbd link
6656 # path (if we have them).
6657 SMBD_LIBS="$samba_dmapi_libs"
6660 AC_OUTPUT(Makefile library-versions
6661 script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6662 lib/netapi/examples/Makefile
6663 pkgconfig/smbclient.pc
6664 pkgconfig/wbclient.pc
6666 pkgconfig/smbsharemodes.pc
6669 #################################################
6670 # Print very concise instructions on building/use
6671 if test "x$enable_dmalloc" = xyes
6673 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
6674 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])