1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.53 or above
5 AC_INIT(include/includes.h)
6 AC_CONFIG_HEADER(include/config.h)
7 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
11 AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
15 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
16 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
18 SAMBA_VERSION_GIT_COMMIT_FULLREV=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_GIT_COMMIT_FULLREV' | cut -d ' ' -f3- | cut -d '"' -f2`
19 if test -n "${SAMBA_VERSION_GIT_COMMIT_FULLREV}";then
20 echo "BUILD COMMIT REVISION: ${SAMBA_VERSION_GIT_COMMIT_FULLREV}"
22 SAMBA_VERSION_GIT_COMMIT_DATE=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_GIT_COMMIT_DATE' | cut -d ' ' -f3-`
23 if test -n "${SAMBA_VERSION_GIT_COMMIT_DATE}";then
24 echo "BUILD COMMIT DATE: ${SAMBA_VERSION_GIT_COMMIT_DATE}"
26 SAMBA_VERSION_GIT_COMMIT_TIME=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_GIT_COMMIT_TIME' | cut -d ' ' -f3-`
27 if test -n "${SAMBA_VERSION_GIT_COMMIT_TIME}";then
28 echo "BUILD COMMIT TIME: ${SAMBA_VERSION_GIT_COMMIT_TIME}"
30 # just to keep the build-farm gui happy for now...
31 echo "BUILD REVISION: ${SAMBA_VERSION_GIT_COMMIT_TIME}"
34 AC_LIBREPLACE_LOCATION_CHECKS
39 #################################################
40 # Directory handling stuff to support both the
41 # legacy SAMBA directories and FHS compliant
43 AC_PREFIX_DEFAULT(/usr/local/samba)
45 rootsbindir="\${SBINDIR}"
46 lockdir="\${VARDIR}/locks"
47 piddir="\${VARDIR}/locks"
48 test "${mandir}" || mandir="\${prefix}/man"
49 logfilebase="\${VARDIR}"
50 privatedir="\${prefix}/private"
51 test "${libdir}" || libdir="\${prefix}/lib"
52 pammodulesdir="\${LIBDIR}/security"
53 configdir="\${LIBDIR}"
54 swatdir="\${prefix}/swat"
55 codepagedir="\${LIBDIR}"
56 statedir="\${LOCKDIR}"
57 cachedir="\${LOCKDIR}"
60 [ --with-fhs Use FHS-compliant paths (default=no)],
63 lockdir="\${VARDIR}/lib/samba"
64 piddir="\${VARDIR}/run"
65 mandir="\${prefix}/share/man"
66 logfilebase="\${VARDIR}/log/samba"
67 privatedir="\${CONFIGDIR}/private"
68 test "${libdir}" || libdir="\${prefix}/lib/samba"
69 configdir="\${sysconfdir}/samba"
70 swatdir="\${DATADIR}/samba/swat"
71 codepagedir="\${LIBDIR}"
72 statedir="\${VARDIR}/lib/samba"
73 cachedir="\${VARDIR}/lib/samba"
74 AC_DEFINE(FHS_COMPATIBLE, 1, [Whether to use fully FHS-compatible paths])
78 #################################################
79 # set private directory location
80 AC_ARG_WITH(privatedir,
81 [ --with-privatedir=DIR Where to put smbpasswd ($ac_default_prefix/private)],
85 # Just in case anybody calls it without argument
87 AC_MSG_WARN([--with-privatedir called without argument - will use default])
94 #################################################
95 # set root sbin directory location
96 AC_ARG_WITH(rootsbindir,
97 [ --with-rootsbindir=DIR Which directory to use for root sbin ($ac_default_prefix/sbin)],
101 # Just in case anybody calls it without argument
103 AC_MSG_WARN([--with-rootsbindir called without argument - will use default])
106 rootsbindir="$withval"
110 #################################################
111 # set lock directory location
113 [ --with-lockdir=DIR Where to put lock files ($ac_default_prefix/var/locks)],
117 # Just in case anybody calls it without argument
119 AC_MSG_WARN([--with-lockdir called without argument - will use default])
126 #################################################
127 # set pid directory location
129 [ --with-piddir=DIR Where to put pid files ($ac_default_prefix/var/locks)],
133 # Just in case anybody calls it without argument
135 AC_MSG_WARN([--with-piddir called without argument - will use default])
142 #################################################
143 # set SWAT directory location
145 [ --with-swatdir=DIR Where to put SWAT files ($ac_default_prefix/swat)],
149 # Just in case anybody does it
151 AC_MSG_WARN([--with-swatdir called without argument - will use default])
158 #################################################
159 # set configuration directory location
160 AC_ARG_WITH(configdir,
161 [ --with-configdir=DIR Where to put configuration files ($libdir)],
165 # Just in case anybody does it
167 AC_MSG_WARN([--with-configdir called without argument - will use default])
174 #################################################
175 # set log directory location
176 AC_ARG_WITH(logfilebase,
177 [ --with-logfilebase=DIR Where to put log files ($VARDIR)],
181 # Just in case anybody does it
183 AC_MSG_WARN([--with-logfilebase called without argument - will use default])
186 logfilebase="$withval"
191 #################################################
192 # set ctdb source directory location
194 [ --with-ctdb=DIR Where to find ctdb sources],
197 AC_MSG_WARN([--with-ctdb called without argument])
204 #################################################
205 # set lib directory location
207 [ --with-libdir=DIR Where to put libdir ($libdir)],
211 # Just in case anybody does it
213 AC_MSG_WARN([--with-libdir without argument - will use default])
220 #################################################
221 # set PAM modules directory location
222 AC_ARG_WITH(pammodulesdir,
223 [ --with-pammodulesdir=DIR Which directory to use for PAM modules ($ac_default_prefix/$libdir/security)],
227 # Just in case anybody calls it without argument
229 AC_MSG_WARN([--with-pammodulesdir called without argument - will use default])
232 pammodulesdir="$withval"
236 #################################################
237 # set man directory location
239 [ --with-mandir=DIR Where to put man pages ($mandir)],
243 # Just in case anybody does it
245 AC_MSG_WARN([--with-mandir without argument - will use default])
253 [ --with-cfenc=HEADERDIR Use internal CoreFoundation encoding API
254 for optimization (Mac OS X/Darwin only)],
256 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
257 # Should have been in framework $withval/CoreFoundation.framework/Headers.
259 $withval/CoreFoundation/StringEncodings.subproj \
260 $withval/StringEncodings.subproj \
261 $withval/CoreFoundation.framework/Headers \
265 if test -r $d/CFStringEncodingConverter.h; then
266 ln -sfh $d include/CoreFoundation
271 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
272 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
273 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/talloc"
274 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/tdb/include"
275 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
276 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
278 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
280 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
281 if test "x${srcdir-.}" != "x."; then
282 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
288 AC_SUBST(logfilebase)
294 AC_SUBST(codepagedir)
297 AC_SUBST(rootsbindir)
298 AC_SUBST(pammodulesdir)
300 dnl Unique-to-Samba variables we'll be playing with.
301 AC_SUBST(SAMBA_CPPFLAGS)
306 AC_SUBST(MODULE_EXPORTS)
307 AC_SUBST(DSO_EXPORTS)
311 AC_SUBST(PIE_LDFLAGS)
313 AC_SUBST(INSTALLLIBCMD_SH)
314 AC_SUBST(INSTALLLIBCMD_A)
315 AC_SUBST(UNINSTALLLIBCMD_SH)
316 AC_SUBST(UNINSTALLLIBCMD_A)
317 AC_SUBST(INSTALL_LIBADDNS)
318 AC_SUBST(UNINSTALL_LIBADDNS)
319 AC_SUBST(LIBADDNS_SHARED)
322 AC_SUBST(INSTALL_LIBWBCLIENT)
323 AC_SUBST(UNINSTALL_LIBWBCLIENT)
324 AC_SUBST(LIBWBCLIENT_SHARED)
325 AC_SUBST(LIBWBCLIENT_STATIC)
326 AC_SUBST(LIBWBCLIENT)
327 AC_SUBST(WINBIND_LIBS)
329 AC_SUBST(LIBSAMBAUTIL_SHARED)
331 AC_SUBST(INSTALL_LIBSMBCLIENT)
332 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
333 AC_SUBST(LIBSMBCLIENT_SHARED)
334 AC_SUBST(LIBSMBCLIENT)
335 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
336 AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
337 AC_SUBST(LIBSMBSHAREMODES_SHARED)
338 AC_SUBST(LIBSMBSHAREMODES)
339 AC_SUBST(INSTALL_LIBNETAPI)
340 AC_SUBST(UNINSTALL_LIBNETAPI)
341 AC_SUBST(LIBNETAPI_SHARED)
346 AC_SUBST(PASSDB_LIBS)
351 AC_SUBST(PAM_MODULES)
352 AC_SUBST(INSTALL_PAM_MODULES)
353 AC_SUBST(UNINSTALL_PAM_MODULES)
354 AC_SUBST(NSS_MODULES)
355 AC_SUBST(EXTRA_BIN_PROGS)
356 AC_SUBST(SMBMOUNT_PROGS)
357 AC_SUBST(CIFSMOUNT_PROGS)
358 AC_SUBST(INSTALL_CIFSMOUNT)
359 AC_SUBST(UNINSTALL_CIFSMOUNT)
360 AC_SUBST(CIFSSPNEGO_PROGS)
361 AC_SUBST(INSTALL_CIFSSPNEGO)
362 AC_SUBST(UNINSTALL_CIFSSPNEGO)
363 AC_SUBST(EXTRA_SBIN_PROGS)
364 AC_SUBST(EXTRA_ALL_TARGETS)
365 AC_SUBST(CONFIG_LIBS)
368 ## check for --enable-debug first before checking CFLAGS before
369 ## so that we don't mix -O and -g
371 [ --enable-debug Turn on compiler debugging information (default=no)],
372 [if eval "test x$enable_debug = xyes"; then
373 CFLAGS="${CFLAGS} -g"
376 # compile with optimization and without debugging by default, but
377 # allow people to set their own preference.
378 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
379 # if it has no value. This prevent *very* large debug binaries from occurring
381 if test "x$CFLAGS" = x; then
385 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
387 AC_LIBREPLACE_CC_CHECKS
389 m4_include(lib/socket_wrapper/config.m4)
390 m4_include(lib/nss_wrapper/config.m4)
392 SWAT_SBIN_TARGETS='bin/swat$(EXEEXT)'
393 SWAT_INSTALL_TARGETS=installswat
396 [ --enable-swat Build the SWAT tool (default=yes)],
398 case "$enable_swat" in
401 SWAT_INSTALL_TARGETS=''
406 AC_SUBST(SWAT_SBIN_TARGETS)
407 AC_SUBST(SWAT_INSTALL_TARGETS)
409 #################################################
410 # set prefix for 'make test'
412 AC_SUBST(selftest_prefix)
413 AC_ARG_WITH(selftest-prefix,
414 [ --with-selftest-prefix=DIR The prefix where make test will be run ($selftest_prefix)],
417 AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
420 selftest_prefix="$withval"
425 #################################################
426 # set path of samba4's smbtorture
428 AC_SUBST(smbtorture4_path)
429 AC_ARG_WITH(smbtorture4_path,
430 [ --with-smbtorture4-path=PATH The path to a samba4 smbtorture for make test (none)],
433 AC_MSG_ERROR([--with-smbtorture4-path should take a path])
436 smbtorture4_path="$withval"
437 if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
438 AC_MSG_ERROR(['$smbtorture_path' does not exist!])
444 AC_ARG_ENABLE(developer, [ --enable-developer Turn on developer warnings and debugging (default=no)],
445 [if eval "test x$enable_developer = xyes"; then
449 AC_ARG_ENABLE(krb5developer, [ --enable-krb5developer Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
450 [if eval "test x$enable_krb5developer = xyes"; then
455 # Probe the gcc version for extra CFLAGS. We always stash these in
456 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
457 # Makefile edit, avoiding the need to re-run configure.
458 if test x"$ac_cv_prog_gcc" = x"yes" ; then
459 DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
460 # Add -Wdeclaration-after-statement if compiler supports it
462 [that the C compiler understands -Wdeclaration-after-statement],
463 samba_cv_HAVE_Wdeclaration_after_statement, [
468 }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
469 samba_cv_HAVE_Wdeclaration_after_statement=yes,
470 samba_cv_HAVE_Wdeclaration_after_statement=no,
471 samba_cv_HAVE_Wdeclaration_after_statement=cross)
474 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
475 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
478 #-Werror-implicit-function-declaration
480 [that the C compiler understands -Werror-implicit-function-declaration],
481 samba_cv_HAVE_Werror_implicit_function_declaration, [
486 }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
487 samba_cv_HAVE_Werror_implicit_function_declaration=yes,
488 samba_cv_HAVE_Werror_implicit_function_declaration=no,
489 samba_cv_HAVE_Werror_implicit_function_declaration=cross)
491 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
492 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
495 # krb5developer is like developer, except we don't get
496 # -Wstrict-prototypes.
497 if test x"$krb5_developer" != x"$yes" ; then
498 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
502 AC_ARG_ENABLE(dmalloc, [ --enable-dmalloc Enable heap debugging [default=no]])
504 if test "x$enable_dmalloc" = xyes
506 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
507 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
508 [Define to check invariants around some common functions])
509 LIBS="$LIBS -ldmalloc"
512 #################################################
513 # check for a shared memory profiling support
514 AC_MSG_CHECKING(whether to use profiling)
515 AC_ARG_WITH(profiling-data,
516 [ --with-profiling-data Include gathering source code profile information (default=no)],
520 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
521 samba_cv_WITH_PROFILE=yes
525 samba_cv_WITH_PROFILE=no
531 dnl Checks for programs.
535 AC_PATH_PROG(PERL, perl)
537 AC_CHECK_TOOL(AR, ar)
539 dnl Check if we use GNU ld
543 dnl Certain versions of GNU ld the default is not to have the
544 dnl --allow-shlib-undefined flag defined. This causes a stackload of
545 dnl warnings when building modules.
546 if test "$ac_cv_prog_gnu_ld" = "yes"; then
547 ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
548 AC_MSG_CHECKING(GNU ld release date)
550 ac_cv_gnu_ld_date=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
552 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
553 if test -n "$ac_cv_gnu_ld_date"; then
554 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
555 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
557 if test "$ac_cv_gnu_ld_date" -gt 20030101; then
558 ac_cv_gnu_ld_version_script=yes
561 AC_MSG_CHECKING(GNU ld release version)
563 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
564 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
565 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
567 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
568 AC_MSG_CHECKING(GNU ld release version major)
569 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
570 AC_MSG_CHECKING(GNU ld release version minor)
571 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
572 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
573 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
575 if test "$ac_cv_gnu_ld_vernr_major" -gt 2 || test "$ac_cv_gnu_l= d_vernr_major"=2 && test "$ac_cv_gnu_ld_vernr_minor" -ge 12; then
576 ac_cv_gnu_ld_version_script=yes
581 dnl look for executable suffix
584 dnl Check if C compiler understands -c and -o at the same time
586 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
593 dnl Check if the C compiler understands -Werror
594 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
599 }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
600 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
601 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
602 Werror_FLAGS="-Werror"
604 dnl Check if the C compiler understands -w2
605 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
610 }],[-w2],[$CPPFLAGS],[$LDFLAGS],
611 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
612 if test x"$samba_cv_HAVE_w2" = x"yes"; then
617 dnl Check if the C compiler understands volatile (it should, being ANSI).
618 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
619 AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
620 samba_cv_volatile=yes,samba_cv_volatile=no)])
621 if test x"$samba_cv_volatile" = x"yes"; then
622 AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
625 ############################################
626 # check if the compiler can handle negative enum values
627 # and don't truncate the values to INT_MAX
628 # a runtime test is needed here
630 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
634 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
636 enum negative_values v1 = NEGATIVE_VALUE;
637 unsigned v2 = NEGATIVE_VALUE;
639 if (v1 != 0xFFFFFFFF) {
640 printf("%u != 0xFFFFFFFF\n", v1);
643 if (v2 != 0xFFFFFFFF) {
644 printf("%u != 0xFFFFFFFF\n", v2);
651 SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
652 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
653 AC_MSG_WARN([using --unit-enums for pidl])
654 PIDL_ARGS="$PIDL_ARGS --uint-enums"
657 dnl Figure out the flags to support named structure initializers
659 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
661 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
662 AC_MSG_CHECKING(uname -s)
663 AC_MSG_RESULT(${UNAME_S})
665 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
666 AC_MSG_CHECKING(uname -r)
667 AC_MSG_RESULT(${UNAME_R})
669 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
670 AC_MSG_CHECKING(uname -m)
671 AC_MSG_RESULT(${UNAME_M})
673 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
674 AC_MSG_CHECKING(uname -p)
675 AC_MSG_RESULT(${UNAME_P})
677 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
678 AC_MSG_CHECKING(uname -i)
679 AC_MSG_RESULT(${UNAME_I})
681 dnl Add #include for broken IRIX header files
684 #TODO add to libreplace
685 if test x"$ac_cv_prog_gcc" != x"yes" ; then
686 dnl Fix sensible defaults for MIPSPro compilers. The
687 dnl error numbers are valid for the 7.3 compilers,
688 dnl hopefully also valid for the 7.4 series.
690 dnl Bugzilla 3801. Force an error on warning 1035
691 dnl so we don't incorrectly detect stdint.h. This
692 dnl warning is emitted for #error directives.
693 CFLAGS="$CFLAGS -diag_error 1035"
694 dnl 1209: Controlling expression is constant
695 dnl 1174: Function foo declared but never referenced
696 dnl 3201: Parameter foo was never referenced
697 CFLAGS="$CFLAGS -woff 1209,1174,3201"
705 dnl Add modules that have to be built by default here
706 dnl These have to be built static:
707 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_winreg rpc_initshutdown rpc_lsa_ds rpc_wkssvc rpc_svcctl2 rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc2 rpc_spoolss rpc_eventlog2 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
709 dnl These are preferably build shared, and static if dlopen() is not available
710 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy charset_CP850 charset_CP437 auth_script vfs_readahead vfs_syncops"
712 if test "x$developer" = xyes; then
713 default_static_modules="$default_static_modules rpc_rpcecho"
714 default_shared_modules="$default_shared_modules charset_weird"
718 # Config CPPFLAG settings for strange OS's that must be set
719 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
720 # case statement; its first reference must be unconditional.
725 # Defines needed for HPUX support.
726 # HPUX has bigcrypt but (sometimes?) doesn't use it for
727 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
731 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
737 # CRAY Unicos has broken const handling
739 AC_MSG_RESULT([disabling const])
740 CPPFLAGS="$CPPFLAGS -Dconst="
744 # AIX4.x doesn't even admit to having large
745 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
748 AC_MSG_RESULT([enabling large file support])
749 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
750 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
753 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
754 # to the existance of large files..
755 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
756 # recommendations on large file support, however it makes the
757 # compile work using gcc 2.7 and 2.8, whereas using the Sun
758 # recommendation makes the compile fail on gcc2.7. JRA.
760 # Solaris uses SYSV printing. Make sure to set that here. --jerry
763 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
765 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
766 AC_MSG_RESULT([no large file support])
769 AC_MSG_RESULT([enabling large file support])
770 if test "$ac_cv_prog_gcc" = yes; then
771 ${CC-cc} -v >conftest.c 2>&1
772 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
774 case "$ac_cv_gcc_compiler_version_number" in
775 *"gcc version 2.6"*|*"gcc version 2.7"*)
776 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
777 LDFLAGS="$LDFLAGS -lthread"
778 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
781 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
782 LDFLAGS="$LDFLAGS -lthread"
783 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
784 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
788 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
789 LDFLAGS="$LDFLAGS -lthread"
790 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
791 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
797 # IRIX uses SYSV printing. Make sure to set that here
800 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
802 *freebsd*|*dragonfly*)
803 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
806 # VOS may need to have POSIX support and System V compatibility enabled.
813 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
814 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
818 *-D_SYSV*|*-D_SVID_SOURCE*)
821 CPPFLAGS="$CPPFLAGS -D_SYSV"
822 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
826 # Tests needed for SINIX large file support.
829 if test $host = mips-sni-sysv4 ; then
830 AC_MSG_CHECKING([for LFS support])
831 old_CPPFLAGS="$CPPFLAGS"
832 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
836 #if _LFS64_LARGEFILE == 1
841 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
842 CPPFLAGS="$old_CPPFLAGS"
843 if test x$SINIX_LFS_SUPPORT = xyes ; then
844 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
845 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
846 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
847 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
848 LIBS="`getconf LFS64_LIBS` $LIBS"
850 AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
854 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
857 AC_MSG_CHECKING([for LFS support])
858 old_CPPFLAGS="$CPPFLAGS"
859 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
862 #include <sys/utsname.h>
866 #if _LFS64_LARGEFILE == 1
871 /* Ensure this is glibc 2.2 or higher */
872 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
873 int libc_major = __GLIBC__;
874 int libc_minor = __GLIBC_MINOR__;
882 /* Ensure this is kernel 2.4 or higher */
885 release = strdup(uts.release);
886 major = atoi(strsep(&release, "."));
887 minor = atoi(strsep(&release, "."));
889 if (major > 2 || (major == 2 && minor > 3))
896 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
897 CPPFLAGS="$old_CPPFLAGS"
898 if test x$LINUX_LFS_SUPPORT = xyes ; then
899 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
900 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
901 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
902 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
904 AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
908 # MacOS X is the *only* system that uses compose character in utf8. This
909 # is so horribly broken....
912 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
914 # Add a system specific charset module.
915 default_shared_modules="$default_shared_modules charset_macosxfs"
919 AC_MSG_CHECKING([for LFS support])
920 old_CPPFLAGS="$CPPFLAGS"
921 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
925 #if _LFS64_LARGEFILE == 1
930 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
931 CPPFLAGS="$old_CPPFLAGS"
932 if test x$GLIBC_LFS_SUPPORT = xyes ; then
933 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
934 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
935 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
937 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
942 AC_LIBREPLACE_BROKEN_CHECKS
944 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
947 for obj in ${LIBREPLACEOBJ}; do
948 LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
950 AC_SUBST(LIBREPLACE_OBJS)
952 # add -ldl to the global LIBS
953 LIBS="${LIBS} ${LIBDL}"
955 AC_CHECK_HEADERS(aio.h arpa/inet.h sys/fcntl.h sys/select.h fcntl.h sys/time.h sys/unistd.h rpc/nettype.h)
956 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
957 AC_CHECK_HEADERS(limits.h float.h pthread.h)
958 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
959 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
960 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
961 AC_CHECK_HEADERS(sys/un.h ifaddrs.h)
962 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
963 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
964 AC_CHECK_HEADERS(sys/sysmacros.h)
965 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
966 AC_CHECK_HEADERS(langinfo.h locale.h)
967 AC_CHECK_HEADERS(xfs/libxfs.h)
969 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
975 ## These fail to compile on IRIX so just check for their presence
976 AC_CHECK_HEADERS(sys/mode.h,,,)
978 # Look for Darwin headers
979 old_CPPFLAGS="$CPPFLAGS"
980 CPPFLAGS="-Iinclude $CPPFLAGS"
981 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
982 CPPFLAGS="$old_CPPFLAGS"
984 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
985 # subdirectory of headers.
986 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
988 # check for linux on amd64 since valgrind is not quite there yet
993 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
1001 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
1002 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
1006 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
1007 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
1008 if test x"$ac_cv_header_shadow_h" = x"yes"; then
1009 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
1013 AC_CHECK_HEADERS(shadow.h)
1014 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
1015 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
1017 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
1018 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
1020 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
1022 # For experimental utmp support (lastlog on some BSD-like systems)
1023 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
1025 AC_CHECK_SIZEOF(int,cross)
1026 AC_CHECK_SIZEOF(long,cross)
1027 AC_CHECK_SIZEOF(long long,cross)
1028 AC_CHECK_SIZEOF(short,cross)
1043 AC_CHECK_TYPE(ino_t,unsigned)
1044 AC_CHECK_TYPE(loff_t,off_t)
1045 AC_CHECK_TYPE(offset_t,loff_t)
1046 AC_CHECK_TYPE(ssize_t, int)
1047 AC_CHECK_TYPE(wchar_t, unsigned short)
1048 AC_CHECK_TYPE(comparison_fn_t,
1049 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
1051 ############################################
1052 # for cups support we need libcups, and a handful of header files
1055 [ --enable-cups Turn on CUPS support (default=auto)])
1057 if test x$enable_cups != xno; then
1058 AC_PATH_PROG(CUPS_CONFIG, cups-config)
1060 if test "x$CUPS_CONFIG" != x; then
1061 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
1062 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
1063 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
1064 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
1065 elif test x"$enable_cups" = x"yes"; then
1066 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
1070 AC_ARG_ENABLE(iprint,
1071 [ --enable-iprint Turn on iPrint support (default=yes if cups is yes)])
1073 if test x$enable_iprint != xno; then
1074 if test "x$CUPS_CONFIG" != x; then
1075 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
1076 elif test x"$enable_iprint" = x"yes"; then
1077 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
1081 ############################################
1082 # check if the compiler will optimize out function calls
1083 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
1085 #include <stdio.h>],
1088 this_function_does_not_exist();
1094 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
1095 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
1096 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1099 ############################################
1100 # check for unix domain sockets
1101 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1103 #include <sys/types.h>
1106 #include <sys/socket.h>
1107 #include <sys/un.h>],
1109 struct sockaddr_un sunaddr;
1110 sunaddr.sun_family = AF_UNIX;
1112 samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1113 if test x"$samba_cv_unixsocket" = x"yes"; then
1114 AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1118 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1120 #include <sys/types.h>
1125 #include <signal.h>],[sig_atomic_t i = 0],
1126 samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1127 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1128 AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1131 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1133 #include <sys/types.h>
1138 #if TIME_WITH_SYS_TIME
1139 # include <sys/time.h>
1142 # if HAVE_SYS_TIME_H
1143 # include <sys/time.h>
1148 ],[struct timespec ts;],
1149 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1150 if test x"$samba_cv_struct_timespec" = x"yes"; then
1151 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1154 # stupid headers have the functions but no declaration. grrrr.
1155 AC_HAVE_DECL(errno, [#include <errno.h>])
1156 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1157 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1158 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1159 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1160 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1161 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1163 # and glibc has setresuid under linux but the function does
1164 # nothing until kernel 2.1.44! very dumb.
1165 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1166 AC_TRY_RUN([#include <errno.h>
1167 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1168 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1169 if test x"$samba_cv_have_setresuid" = x"yes"; then
1170 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1173 # Do the same check for setresguid...
1175 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1176 AC_TRY_RUN([#include <unistd.h>
1178 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1179 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1180 if test x"$samba_cv_have_setresgid" = x"yes"; then
1181 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1186 ###############################################
1187 # Readline included by default unless explicitly asked not to
1188 test "${with_readline+set}" != "set" && with_readline=yes
1190 # test for where we get readline() from
1191 AC_MSG_CHECKING(whether to use readline)
1192 AC_ARG_WITH(readline,
1193 [ --with-readline[=DIR] Look for readline include/libs in DIR (default=auto) ],
1194 [ case "$with_readline" in
1198 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1199 AC_CHECK_HEADERS(readline/history.h)
1201 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1202 for termlib in ncurses curses termcap terminfo termlib tinfo; do
1203 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1205 AC_CHECK_LIB(readline, rl_callback_handler_install,
1206 [TERMLIBS="-lreadline $TERMLIBS"
1207 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1208 break], [TERMLIBS=], $TERMLIBS)])
1216 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1217 # alternate readline path
1219 _cppflags=${CPPFLAGS}
1221 # Add additional search path
1222 LDFLAGS="-L$with_readline/lib $LDFLAGS"
1223 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1225 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1226 AC_CHECK_HEADERS(readline/history.h)
1228 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1229 for termlib in ncurses curses termcap terminfo termlib; do
1230 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1232 AC_CHECK_LIB(readline, rl_callback_handler_install,
1233 [TERMLDFLAGS="-L$with_readline/lib"
1234 TERMCPPFLAGS="-I$with_readline/include"
1235 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1236 TERMLIBS="-lreadline $TERMLIBS"
1237 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1238 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1246 AC_SUBST(TERMLDFLAGS)
1248 # The readline API changed slightly from readline3 to readline4, so
1249 # code will generate warnings on one of them unless we have a few
1251 AC_CHECK_LIB(readline, rl_completion_matches,
1252 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1253 [Do we have rl_completion_matches?])],
1257 # not all readline libs have rl_event_hook or history_list
1258 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1259 AC_CHECK_LIB(readline, history_list,
1260 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1264 # The following test taken from the cvs sources
1265 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1266 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1267 # libsocket.so which has a bad implementation of gethostbyname (it
1268 # only looks in /etc/hosts), so we only look for -lsocket if we need
1270 AC_CHECK_FUNCS(connect)
1271 if test x"$ac_cv_func_connect" = x"no"; then
1274 *) AC_CHECK_LIB(nsl_s, connect) ;;
1278 *) AC_CHECK_LIB(nsl, connect) ;;
1282 *) AC_CHECK_LIB(socket, connect) ;;
1286 *) AC_CHECK_LIB(inet, connect) ;;
1288 dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1289 dnl has been cached.
1290 if test x"$ac_cv_lib_socket_connect" = x"yes" ||
1291 test x"$ac_cv_lib_inet_connect" = x"yes"; then
1292 # ac_cv_func_connect=yes
1293 # don't! it would cause AC_CHECK_FUNC to succeed next time configure is run
1294 AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1298 ###############################################
1299 # test for where we get yp_get_default_domain() from
1300 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1301 AC_CHECK_FUNCS(yp_get_default_domain)
1303 # Check if we have execl, if not we need to compile smbrun.
1304 AC_CHECK_FUNCS(execl)
1305 if test x"$ac_cv_func_execl" = x"no"; then
1306 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1309 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1310 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1311 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1312 AC_CHECK_FUNCS(getrlimit fsync fdatasync memset strlcpy strlcat setpgid)
1313 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1314 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1315 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1316 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1317 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1318 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1319 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1320 AC_CHECK_FUNCS(getpwent_r)
1321 AC_CHECK_FUNCS(getdents getdents64)
1322 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1323 AC_CHECK_FUNCS(syslog vsyslog timegm)
1324 AC_CHECK_FUNCS(setlocale nl_langinfo)
1325 AC_CHECK_FUNCS(nanosleep)
1326 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1327 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1328 AC_CHECK_HEADERS(sys/mman.h)
1329 # setbuffer, shmget, shm_open are needed for smbtorture
1330 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1332 # Find a method of generating a stack trace
1333 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1334 AC_CHECK_FUNCS(backtrace_symbols)
1335 AC_CHECK_LIB(exc, trace_back_stack)
1337 echo -n "checking for GPFS GPL libs... "
1339 LIBS="$LIBS -lgpfs_gpl"
1340 AC_TRY_LINK([#include <gpfs_gpl.h>],
1341 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1342 samba_cv_HAVE_GPFS=yes,
1343 samba_cv_HAVE_GPFS=no)
1344 echo $samba_cv_HAVE_GPFS
1345 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1346 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1347 default_shared_modules="$default_shared_modules vfs_gpfs"
1351 # Note that all the libunwind symbols in the API are defined to internal
1352 # platform-specific version, so we must include libunwind.h before checking
1354 AC_MSG_CHECKING([for libunwind])
1357 UNWIND_ARCH="unknown"
1358 if test x"$UNAME_I" != x"unknown"; then
1359 UNWIND_ARCH="$UNAME_I"
1360 elif test x"$UNAME_M" != x"unknown"; then
1361 UNWIND_ARCH="$UNAME_M"
1362 elif test x"$UNAME_P" != x"unknown"; then
1363 UNWIND_ARCH="$UNAME_P"
1366 case "$UNWIND_ARCH" in
1368 # This probably won't link without
1369 # the platform-specific libunwind.
1370 LIBS="$LIBS -lunwind"
1373 # Add the platform-specific libunwind module.
1374 LIBS="$LIBS -lunwind -lunwind-x86"
1377 # Add the platform-specific libunwind module.
1378 # based on uname -i, uname -m or uname -p
1379 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1385 #ifdef HAVE_LIBUNWIND_H
1386 #include <libunwind.h>
1390 unw_context_t ctx; unw_cursor_t cur;
1391 char buf[256]; unw_word_t off;
1392 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1393 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1397 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1399 # If we have libunwind, test whether we also have libunwind-ptrace
1400 # which would let us unwind arbitrary processes.
1402 AC_CHECK_HEADERS(libunwind-ptrace.h)
1403 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1405 LIBUNWIND_PTRACE="-lunwind-ptrace";
1406 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1407 [Whether libunwind-ptrace.a is available.])
1409 [ LIBUNWIND_PTRACE="" ])
1418 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1419 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1420 AC_CHECK_HEADERS(sys/ptrace.h)
1421 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1424 #if HAVE_SYS_TYPES_H
1425 #include <sys/types.h>
1427 #if HAVE_SYS_PTRACE_H
1428 #include <sys/ptrace.h>
1432 int main(int argc, const char ** argv)
1434 pid_t me = (pid_t)-1;
1435 ptrace(PTRACE_ATTACH, me, 0, 0);
1436 ptrace(PTRACE_DETACH, me, 0, 0);
1442 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1443 [Whether the Linux ptrace(2) interface is available.])
1451 AC_SUBST(LIBUNWIND_PTRACE)
1453 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1454 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1455 AC_CHECK_FUNCS(__getcwd _getcwd)
1456 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1457 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1458 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1459 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1460 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1461 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1462 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1463 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1464 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1465 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1466 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1467 AC_CHECK_FUNCS(prctl)
1470 #ifdef HAVE_SYS_PRCTL_H
1471 #include <sys/prctl.h>
1474 [int i; i = prtcl(0); ],
1475 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1482 # glibc <= 2.3.2 has a broken getgrouplist
1485 #include <sys/utsname.h>
1487 /* glibc up to 2.3 has a broken getgrouplist */
1488 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1489 int libc_major = __GLIBC__;
1490 int libc_minor = __GLIBC_MINOR__;
1494 if ((libc_major == 2) && (libc_minor <= 3))
1499 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1500 if test x"$linux_getgrouplist_ok" = x"yes"; then
1501 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1505 AC_CHECK_FUNCS(getgrouplist)
1510 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1513 if test x$ac_cv_func_stat64 = xno ; then
1514 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1516 #if defined(HAVE_UNISTD_H)
1519 #include <sys/stat.h>
1520 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1521 AC_MSG_RESULT([$ac_cv_func_stat64])
1522 if test x$ac_cv_func_stat64 = xyes ; then
1523 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1527 if test x$ac_cv_func_lstat64 = xno ; then
1528 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1530 #if defined(HAVE_UNISTD_H)
1533 #include <sys/stat.h>
1534 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1535 AC_MSG_RESULT([$ac_cv_func_lstat64])
1536 if test x$ac_cv_func_lstat64 = xyes ; then
1537 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1541 if test x$ac_cv_func_fstat64 = xno ; then
1542 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1544 #if defined(HAVE_UNISTD_H)
1547 #include <sys/stat.h>
1548 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1549 AC_MSG_RESULT([$ac_cv_func_fstat64])
1550 if test x$ac_cv_func_fstat64 = xyes ; then
1551 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1555 #################################################
1556 # Check whether struct stat has timestamps with sub-second resolution.
1557 # At least IRIX and Solaris have these.
1560 # all of st_mtim, st_atim and st_ctim exist
1561 # all of the members are in fact of type struct timespec
1563 # There is some conflicting standards weirdness about whether we should use
1564 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1565 # prefer struct timespec.
1567 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1571 #if TIME_WITH_SYS_TIME
1572 # include <sys/time.h>
1575 # if HAVE_SYS_TIME_H
1576 # include <sys/time.h>
1581 #ifdef HAVE_SYS_STAT_H
1582 #include <sys/stat.h>
1587 struct stat s = {0};
1588 t.tv_sec = s.st_mtim.tv_sec;
1589 t.tv_nsec = s.st_mtim.tv_nsec;
1590 t.tv_sec = s.st_ctim.tv_sec;
1591 t.tv_nsec = s.st_ctim.tv_nsec;
1592 t.tv_sec = s.st_atim.tv_sec;
1593 t.tv_nsec = s.st_atim.tv_nsec;
1595 samba_stat_hires=yes, samba_stat_hires=no)
1598 if test x"$samba_stat_hires" = x"yes" ; then
1599 AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1600 AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1601 AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1602 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1603 [whether struct stat has sub-second timestamps])
1606 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1610 #if TIME_WITH_SYS_TIME
1611 # include <sys/time.h>
1614 # if HAVE_SYS_TIME_H
1615 # include <sys/time.h>
1620 #ifdef HAVE_SYS_STAT_H
1621 #include <sys/stat.h>
1626 struct stat s = {0};
1627 t.tv_sec = s.st_mtime;
1628 t.tv_nsec = s.st_mtimensec;
1629 t.tv_sec = s.st_ctime;
1630 t.tv_nsec = s.st_ctimensec;
1631 t.tv_sec = s.st_atime;
1632 t.tv_nsec = s.st_atimensec;
1634 samba_stat_hires=yes, samba_stat_hires=no)
1637 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1638 AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1639 AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1640 AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1641 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1642 [whether struct stat has sub-second timestamps without struct timespec])
1645 #####################################
1646 # needed for SRV lookups
1647 AC_CHECK_LIB(resolv, dn_expand)
1648 AC_CHECK_LIB(resolv, _dn_expand)
1649 AC_CHECK_LIB(resolv, __dn_expand)
1652 # Check for the functions putprpwnam, set_auth_parameters,
1653 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1654 # Needed for OSF1 and HPUX.
1657 AC_LIBTESTFUNC(security, putprpwnam)
1658 AC_LIBTESTFUNC(sec, putprpwnam)
1660 AC_LIBTESTFUNC(security, set_auth_parameters)
1661 AC_LIBTESTFUNC(sec, set_auth_parameters)
1663 # UnixWare 7.x has its getspnam in -lgen
1664 AC_LIBTESTFUNC(gen, getspnam)
1666 AC_LIBTESTFUNC(security, getspnam)
1667 AC_LIBTESTFUNC(sec, getspnam)
1669 AC_LIBTESTFUNC(security, bigcrypt)
1670 AC_LIBTESTFUNC(sec, bigcrypt)
1672 AC_LIBTESTFUNC(security, getprpwnam)
1673 AC_LIBTESTFUNC(sec, getprpwnam)
1675 AC_CHECK_FUNCS(strsignal)
1677 ############################################
1678 # Check if we have libattr
1681 AC_SEARCH_LIBS(getproplist, [proplist])
1682 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1683 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1684 AC_CHECK_FUNCS(sizeof_proplist_entry)
1687 AC_SEARCH_LIBS(getxattr, [attr])
1688 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1689 AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1690 AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1691 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1692 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1693 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1694 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1698 ########################################################
1699 # Check if attropen() is present if this is Solaris
1702 AC_CHECK_FUNCS(attropen)
1706 ########################################################
1707 # Do xattr functions take additional options like on Darwin?
1708 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1709 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1711 LIBS="$LIBS $ACL_LIBS"
1713 #include <sys/types.h>
1714 #if HAVE_ATTR_XATTR_H
1715 #include <attr/xattr.h>
1716 #elif HAVE_SYS_XATTR_H
1717 #include <sys/xattr.h>
1720 getxattr(0, 0, 0, 0, 0, 0);
1722 [smb_attr_cv_xattr_add_opt=yes],
1723 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1725 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1726 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1730 # Check if we have extattr
1732 *freebsd4* | *dragonfly* )
1733 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1736 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1737 AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1738 AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1739 AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1746 AC_ARG_ENABLE(pie, [ --enable-pie Turn on pie support if available (default=yes)])
1748 if test "x$enable_pie" != xno
1750 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1752 cat > conftest.c <<EOF
1754 main () { return 0;}
1756 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1764 if test x"${samba_cv_fpie}" = x"yes"
1771 # Assume non-shared by default and override below
1774 # these are the defaults, good for lots of systems
1779 SHLD="\${CC} \${CFLAGS}"
1780 PICFLAG="${PIE_CFLAGS}"
1784 # this bit needs to be modified for each OS that supports share libs
1785 # You need to specify how to create a shared library and
1786 # how to compile C code to produce PIC object files
1788 AC_MSG_CHECKING([ability to build shared libraries])
1790 # and these are for particular systems
1792 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux])
1794 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1795 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1797 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1799 DYNEXP="-Wl,--export-dynamic"
1801 SONAMEFLAG="-Wl,-soname="
1802 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1804 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1808 if test "${GCC}" = "yes"; then
1810 SONAMEFLAG="-Wl,-soname="
1811 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1816 ## ${CFLAGS} added for building 64-bit shared
1817 ## libs using Sun's Compiler
1818 LDSHFLAGS="-G \${CFLAGS}"
1820 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1821 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1823 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1826 SONAMEFLAG="-Wl,-h,"
1827 PICFLAG="-KPIC" # Is this correct for SunOS
1828 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1829 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1831 *netbsd* | *freebsd* | *dragonfly* )
1834 DYNEXP="-Wl,--export-dynamic"
1835 SONAMEFLAG="-Wl,-soname,"
1836 PICFLAG="-fPIC -DPIC"
1837 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1838 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1840 *openbsd*) BLDSHARED="true"
1842 DYNEXP="-Wl,-Bdynamic"
1843 SONAMEFLAG="-Wl,-soname,"
1845 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1846 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1848 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1850 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1854 LDSHFLAGS="-set_version sgi1.0 -shared"
1855 SONAMEFLAG="-soname "
1857 if test "${GCC}" = "yes"; then
1862 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1864 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1866 LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1867 DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1869 # as AIX code is always position independent...
1870 # .po will just create compile warnings, use po.o:
1871 if test "${GCC}" != "yes"; then
1872 ## for funky AIX compiler using strncpy()
1873 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1876 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1877 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1878 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1880 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1881 # Use special PIC flags for the native HP-UX compiler.
1884 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1885 SONAMEFLAG="-Wl,+h "
1887 if test "${GCC}" = "yes"; then
1890 PICFLAG="+z +ESnolit"
1892 if test "$host_cpu" = "ia64"; then
1895 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1898 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1900 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1901 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1903 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1904 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1906 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1909 SONAMEFLAG="-Wl,-soname,"
1911 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1912 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1914 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1915 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1917 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1920 SONAMEFLAG="-Wl,-soname,"
1922 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1924 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1925 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1927 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1928 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1930 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1932 *-univel-*) if [ test "$GCC" != yes ]; then
1933 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1938 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1940 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1943 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1944 if [ test "$GCC" != yes ]; then
1945 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1948 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1950 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1955 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1957 LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1959 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1961 # Since gcc doesn't fail on unrecognised options, the
1962 # PIE test incorrectly succeeds. Darwin gcc does not
1963 # actually support the PIE stuff.
1966 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1970 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1974 if test "$enable_shared" != "yes"; then
1978 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1979 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1982 AC_MSG_RESULT($BLDSHARED)
1984 AC_MSG_CHECKING([LDFLAGS])
1985 AC_MSG_RESULT([$LDFLAGS])
1986 AC_MSG_CHECKING([DYNEXP])
1987 AC_MSG_RESULT([$DYNEXP])
1989 #######################################################
1990 # test whether building a shared library actually works
1991 if test $BLDSHARED = true; then
1993 AC_MSG_CHECKING([SHLD])
1994 AC_MSG_RESULT([$SHLD])
1995 AC_MSG_CHECKING([LDSHFLAGS])
1996 AC_MSG_RESULT([$LDSHFLAGS])
1998 AC_MSG_CHECKING([SHLIBEXT])
1999 AC_MSG_RESULT([$SHLIBEXT])
2000 AC_MSG_CHECKING([SONAMEFLAG])
2001 AC_MSG_RESULT([$SONAMEFLAG])
2003 AC_MSG_CHECKING([PICFLAG])
2004 AC_MSG_RESULT([$PICFLAG])
2006 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
2007 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
2009 AC_CACHE_CHECK([whether building shared libraries actually works],
2010 [ac_cv_shlib_works],[
2011 # try building a trivial shared library
2012 ac_cv_shlib_works=no
2013 # The $SHLD and $LDSHFLAGS variables may contain references to other
2014 # variables so they need to be eval'ed.
2015 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
2016 shlib.o ${srcdir-.}/tests/shlib.c && \
2017 `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
2018 shlib.o && ac_cv_shlib_works=yes
2019 rm -f "shlib.$SHLIBEXT" shlib.o
2022 if test $ac_cv_shlib_works = no; then
2027 if test x"$BLDSHARED" != x"true"; then
2028 LDSHFLAGS="shared-libraries-disabled"
2029 SONAMEFLAG="shared-libraries-disabled"
2030 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
2031 SHLD="shared-libraries-disabled"
2032 PICFLAG="${PIE_CFLAGS}"
2033 SHLIBEXT="shared_libraries_disabled"
2036 AC_MSG_CHECKING([used PICFLAG])
2037 AC_MSG_RESULT([$PICFLAG])
2039 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
2041 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
2045 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2046 AC_TRY_RUN([#include <stdio.h>
2047 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2048 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2049 if test x"$samba_cv_have_longlong" = x"yes"; then
2050 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2051 AC_CHECK_TYPE(intptr_t, unsigned long long)
2053 AC_CHECK_TYPE(intptr_t, unsigned long)
2057 # Check if the compiler supports the LL prefix on long long integers.
2060 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2061 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2062 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2063 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2064 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2068 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2069 AC_TRY_RUN([#include <time.h>
2070 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2071 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2072 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2073 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2076 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2077 AC_TRY_RUN([#include <stdio.h>
2078 #include <sys/stat.h>
2079 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2080 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2081 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2082 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2085 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2087 #if defined(HAVE_UNISTD_H)
2091 #include <sys/stat.h>
2092 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2093 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2094 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2095 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2098 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2100 #if defined(HAVE_UNISTD_H)
2104 #include <sys/stat.h>
2105 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2106 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2107 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2108 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2111 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2113 #if defined(HAVE_UNISTD_H)
2117 #include <sys/stat.h>
2118 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2119 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2120 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2121 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2124 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2126 #if defined(HAVE_UNISTD_H)
2130 #include <sys/stat.h>
2131 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2132 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2133 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2134 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2137 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2139 #if defined(HAVE_UNISTD_H)
2143 #include <sys/stat.h>
2144 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2145 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2146 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2147 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2150 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2152 #if defined(HAVE_UNISTD_H)
2155 #include <sys/types.h>
2156 #include <dirent.h>],
2158 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2159 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2160 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2163 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2165 #if defined(HAVE_UNISTD_H)
2168 #include <sys/types.h>
2169 #include <dirent.h>],
2170 [struct dirent64 de;],
2171 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2172 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2173 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2176 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2178 #if defined(HAVE_UNISTD_H)
2181 #include <sys/types.h>
2182 main() { dev_t dev; int i = major(dev); return 0; }],
2183 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2184 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2185 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2188 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2190 #if defined(HAVE_UNISTD_H)
2193 #include <sys/types.h>
2194 main() { dev_t dev; int i = minor(dev); return 0; }],
2195 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2196 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2197 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2200 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2202 #if defined(HAVE_UNISTD_H)
2205 #include <sys/types.h>
2206 main() { dev_t dev = makedev(1,2); return 0; }],
2207 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2208 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2209 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2212 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2213 AC_TRY_RUN([#include <stdio.h>
2214 main() { char c; c=250; exit((c > 0)?0:1); }],
2215 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2216 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2217 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2220 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2221 AC_TRY_COMPILE([#include <sys/types.h>
2222 #include <sys/socket.h>
2223 #include <netinet/in.h>],
2224 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2225 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2226 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2227 AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2230 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2231 AC_TRY_COMPILE([#include <sys/types.h>
2233 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2234 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2235 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2236 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2239 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2240 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2241 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2242 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2243 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2246 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2248 #include <sys/time.h>
2249 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2250 samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2251 samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2252 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2253 AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2256 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2258 # On some systems (eg. Linux) librt can pull in libpthread. We
2259 # don't want this to happen because libpthreads changes signal delivery
2260 # semantics in ways we are not prepared for. This breaks Linux oplocks
2261 # which rely on signals.
2263 AC_LIBTESTFUNC(rt, clock_gettime,
2265 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2266 [Whether clock_gettime is available])
2267 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2268 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2269 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2274 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2275 AC_TRY_LINK([#include <stdarg.h>
2276 va_list ap1,ap2;], [va_copy(ap1,ap2);],
2277 samba_cv_HAVE_VA_COPY=yes,
2278 samba_cv_HAVE_VA_COPY=no)])
2279 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2280 AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2282 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2283 AC_TRY_LINK([#include <stdarg.h>
2284 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2285 samba_cv_HAVE___VA_COPY=yes,
2286 samba_cv_HAVE___VA_COPY=no)])
2287 if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2288 AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2292 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2294 #include <sys/types.h>
2296 void foo(const char *format, ...) {
2301 va_start(ap, format);
2302 len = vsnprintf(buf, 0, format, ap);
2304 if (len != 5) exit(1);
2306 va_start(ap, format);
2307 len = vsnprintf(0, 0, format, ap);
2309 if (len != 5) exit(1);
2311 if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2315 main() { foo("hello"); }
2317 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2318 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2319 AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2322 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2323 AC_TRY_RUN([#include <sys/types.h>
2325 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2326 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2327 di->d_name[0] == 0) exit(0); exit(1);} ],
2328 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2329 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2330 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2333 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2334 AC_TRY_COMPILE([#include <sys/types.h>
2335 #include <utime.h>],
2336 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2337 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2338 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2339 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2343 # Check utmp details, but only if our OS offers utmp.h
2344 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2345 dnl utmp and utmpx come in many flavours
2346 dnl We need to check for many of them
2347 dnl But we don't need to do each and every one, because our code uses
2348 dnl mostly just the utmp (not utmpx) fields.
2350 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2352 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2353 AC_TRY_COMPILE([#include <sys/types.h>
2355 [struct utmp ut; ut.ut_name[0] = 'a';],
2356 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2357 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2358 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2361 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2362 AC_TRY_COMPILE([#include <sys/types.h>
2364 [struct utmp ut; ut.ut_user[0] = 'a';],
2365 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2366 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2367 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2370 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2371 AC_TRY_COMPILE([#include <sys/types.h>
2373 [struct utmp ut; ut.ut_id[0] = 'a';],
2374 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2375 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2376 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2379 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2380 AC_TRY_COMPILE([#include <sys/types.h>
2382 [struct utmp ut; ut.ut_host[0] = 'a';],
2383 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2384 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2385 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2388 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2389 AC_TRY_COMPILE([#include <sys/types.h>
2391 [struct utmp ut; time_t t; ut.ut_time = t;],
2392 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2393 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2394 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2397 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2398 AC_TRY_COMPILE([#include <sys/types.h>
2400 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2401 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2402 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2403 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2406 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2407 AC_TRY_COMPILE([#include <sys/types.h>
2409 [struct utmp ut; ut.ut_type = 0;],
2410 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2411 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2412 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2415 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2416 AC_TRY_COMPILE([#include <sys/types.h>
2418 [struct utmp ut; ut.ut_pid = 0;],
2419 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2420 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2421 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2424 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2425 AC_TRY_COMPILE([#include <sys/types.h>
2427 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2428 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2429 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2430 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2433 dnl Look for the IPv6 varient by preference. Many systems have both.
2434 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2435 AC_TRY_COMPILE([#include <sys/types.h>
2437 [struct utmp ut; ut.ut_addr_v6[0] = 0;],
2438 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2439 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2440 AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2443 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2444 AC_TRY_COMPILE([#include <sys/types.h>
2446 [struct utmp ut; ut.ut_addr = 0;],
2447 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2448 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2449 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2452 if test x$ac_cv_func_pututline = xyes ; then
2453 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2454 AC_TRY_COMPILE([#include <sys/types.h>
2456 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2457 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2458 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2459 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2463 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2464 AC_TRY_COMPILE([#include <sys/types.h>
2465 #include <utmpx.h>],
2466 [struct utmpx ux; ux.ut_syslen = 0;],
2467 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2468 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2469 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2476 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2477 AC_ARG_WITH(libiconv,
2478 [ --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2480 if test "$withval" = "no" ; then
2481 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2483 if test "$withval" != "yes" ; then
2485 ICONV_LOOK_DIRS="$withval"
2490 for i in $ICONV_LOOK_DIRS ; do
2493 save_LDFLAGS="$LDFLAGS"
2494 save_CPPFLAGS="$CPPFLAGS"
2496 iconv_current_LIBS=""
2497 iconv_current_LDFLAGS=""
2498 iconv_current_CPPFLAGS=""
2503 # This is here to handle -withval stuff for --with-libiconv
2504 # Perhaps we should always add a -L
2505 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2507 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2508 # installation paths. This gets a little tricky since we might have iconv
2509 # in both libiconv and in libc. In this case the jm_ICONV test will always
2510 # succeed when the header is found. To counter this, make sure the
2511 # library directory is there and check the ABI directory first (which
2512 # should be harmless on other systems.
2513 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2514 for l in "lib32" "lib" "lib/hpux32"; do
2515 if test -d "$i/$l" ; then
2516 LDFLAGS="$save_LDFLAGS -L$i/$l"
2518 export LDFLAGS LIBS CPPFLAGS
2519 # Try to find iconv(3)
2521 if test x"$ICONV_FOUND" = "xyes" ; then
2528 if test x"$ICONV_FOUND" = "xyes" ; then
2529 iconv_current_LDFLAGS="-L$i/$libext"
2530 iconv_current_CPPFLAGS="-I$i/include"
2532 if test x"$jm_cv_lib_iconv" != x; then
2533 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2535 # We found iconv in libc.
2536 iconv_current_LIBS=""
2541 if test x"$ICONV_FOUND" = "xyes" ; then
2543 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2544 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2545 LIBS="$save_LIBS $iconv_current_LIBS"
2546 export LDFLAGS LIBS CPPFLAGS
2548 default_dos_charset=no
2549 default_display_charset=no
2550 default_unix_charset=no
2552 # check for default dos charset name
2553 for j in CP850 IBM850 ; do
2555 default_dos_charset="$ICONV_CHARSET"
2556 if test x"$default_dos_charset" = x"$j"; then
2561 # check for default display charset name
2562 for j in ASCII 646 ; do
2564 default_display_charset="$ICONV_CHARSET"
2565 if test x"$default_display_charset" = x"$j"; then
2570 # check for default unix charset name
2571 for j in UTF-8 UTF8 ; do
2573 default_unix_charset="$ICONV_CHARSET"
2574 if test x"$default_unix_charset" = x"$j"; then
2579 if test "$default_dos_charset" != "no" -a \
2580 "$default_dos_charset" != "cross" -a \
2581 "$default_display_charset" != "no" -a \
2582 "$default_display_charset" != "cross" -a \
2583 "$default_unix_charset" != "no" -a \
2584 "$default_unix_charset" != "cross"
2586 samba_cv_HAVE_NATIVE_ICONV=yes
2588 if test "$default_dos_charset" = "cross" -o \
2589 "$default_display_charset" = "cross" -o \
2590 "$default_unix_charset" = "cross"
2592 samba_cv_HAVE_NATIVE_ICONV=cross
2594 samba_cv_HAVE_NATIVE_ICONV=no
2598 # At this point, we have a libiconv candidate. We know that
2599 # we have the right headers and libraries, but we don't know
2600 # whether it does the conversions we want. We can't test this
2601 # because we are cross-compiling. This is not necessarily a big
2602 # deal, since we can't guarantee that the results we get now will
2603 # match the results we get at runtime anyway.
2604 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2605 default_dos_charset="CP850"
2606 default_display_charset="ASCII"
2607 default_unix_charset="UTF-8"
2608 samba_cv_HAVE_NATIVE_ICONV=yes
2609 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2610 AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2613 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2615 CPPFLAGS=$save_CPPFLAGS
2616 LDFLAGS=$save_LDFLAGS
2619 if test x"$iconv_current_LIBS" != x; then
2620 LIBS="$LIBS $iconv_current_LIBS"
2623 # Add the flags we need to CPPFLAGS and LDFLAGS
2624 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2625 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2627 # Turn the #defines into string literals
2628 default_dos_charset="\"$default_dos_charset\""
2629 default_display_charset="\"$default_display_charset\""
2630 default_unix_charset="\"$default_unix_charset\""
2632 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2633 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2634 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2635 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2640 # We didn't find a working iconv, so keep going
2643 # We only need to clean these up here for the next pass through the loop
2644 CPPFLAGS=$save_CPPFLAGS
2645 LDFLAGS=$save_LDFLAGS
2647 export LDFLAGS LIBS CPPFLAGS
2652 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2653 AC_MSG_WARN([Sufficient support for iconv function was not found.
2654 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2655 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2656 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2657 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2661 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2663 #include <sys/types.h>
2666 #define F_GETLEASE 1025
2669 int fd = open("/dev/null", O_RDONLY);
2670 return fcntl(fd, F_GETLEASE, 0) == -1;
2673 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2674 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2675 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2678 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2680 #include <sys/types.h>
2684 #define F_NOTIFY 1026
2687 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2690 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2691 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2692 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2695 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2696 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2697 AC_CHECK_FUNC(inotify_init)
2698 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2700 samba_cv_HAVE_INOTIFY=yes,
2701 samba_cv_HAVE_INOTIFY=no,
2702 samba_cv_HAVE_INOTIFY=cross)
2704 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2705 AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2708 #################################################
2709 # Check if FAM notifications are available. For FAM info, see
2710 # http://oss.sgi.com/projects/fam/
2711 # http://savannah.nongnu.org/projects/fam/
2713 [ --enable-fam Turn on FAM support (default=auto)])
2715 if test x$enable_fam != xno; then
2716 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2717 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2718 # On IRIX, libfam requires libC, but other FAM implementations
2719 # might not need it.
2720 AC_CHECK_LIB(fam, FAMOpen2,
2721 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2722 [samba_cv_HAVE_LIBFAM=no])
2724 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2726 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2727 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2728 [samba_cv_HAVE_LIBFAM=no])
2729 unset samba_fam_xtra
2733 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2734 default_shared_modules="$default_shared_modules vfs_notify_fam"
2735 AC_TRY_COMPILE([#include <fam.h>],
2736 [FAMCodes code = FAMChanged;],
2737 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2738 [Whether fam.h contains a typedef for enum FAMCodes]),
2742 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2743 AC_MSG_ERROR(FAM support requested but FAM library not available )
2747 AC_SUBST(SMB_FAM_LIBS)
2749 #################################################
2750 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2752 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2754 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2756 #include <sys/types.h>
2759 #include <sys/file.h>
2761 #define LOCK_MAND 32
2762 #define LOCK_READ 64
2765 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2768 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2769 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2770 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2774 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2775 AC_TRY_COMPILE([#include <sys/types.h>
2776 #include <fcntl.h>],
2777 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2778 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2779 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2780 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2783 #################################################
2784 # Check for POSIX capability support
2786 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2787 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2790 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2793 AC_LIBTESTFUNC(cap, cap_get_proc)
2795 AC_CACHE_CHECK([for POSIX capabilities],
2796 samba_cv_HAVE_POSIX_CAPABILITIES,
2799 #include <sys/types.h>
2800 #include <sys/capability.h>
2803 cap_value_t vals[1];
2804 if (!(cap = cap_get_proc()))
2806 vals[0] = CAP_CHOWN;
2807 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2811 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2812 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2813 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2816 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2817 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2818 [Whether POSIX capabilities are available])
2826 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2827 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2830 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2831 AC_TRY_COMPILE([#include <sys/types.h>
2832 #if defined(HAVE_RPC_RPC_H)
2833 #include <rpc/rpc.h>
2836 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2837 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2838 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2841 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2842 AC_TRY_COMPILE([#include <sys/types.h>
2843 #if defined(HAVE_RPC_RPC_H)
2844 #include <rpc/rpc.h>
2847 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2848 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2849 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2852 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2853 AC_TRY_COMPILE([#include <sys/types.h>
2854 #if defined(HAVE_RPC_RPC_H)
2855 #include <rpc/rpc.h>
2858 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2859 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2860 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2863 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2864 AC_TRY_COMPILE([#include <sys/types.h>
2865 #if defined(HAVE_RPC_RPC_H)
2866 #include <rpc/rpc.h>
2869 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2870 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2871 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2875 dnl Some systems (SCO) have a problem including
2876 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2877 dnl as a #define in <prot.h> and as part of an enum
2881 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2882 AC_TRY_COMPILE([#include <sys/types.h>
2883 #ifdef HAVE_SYS_SECURITY_H
2884 #include <sys/security.h>
2886 #endif /* HAVE_SYS_SECURITY_H */
2887 #if defined(HAVE_RPC_RPC_H)
2888 #include <rpc/rpc.h>
2891 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2892 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2893 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2896 AC_MSG_CHECKING([for test routines])
2897 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2899 AC_MSG_ERROR([cant find test code. Aborting config]),
2900 AC_MSG_WARN([cannot run when cross-compiling]))
2902 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2903 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2904 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2905 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2906 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2909 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2910 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2911 samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2912 samba_cv_HAVE_WORKING_AF_LOCAL=no,
2913 samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2914 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2916 AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2919 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2920 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2921 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2922 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2923 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2926 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2927 AC_TRY_RUN([#include <stdlib.h>
2928 #include <sys/types.h>
2929 #include <sys/stat.h>
2933 char tpl[20]="/tmp/test.XXXXXX";
2934 int fd = mkstemp(tpl);
2935 if (fd == -1) exit(1);
2937 if (fstat(fd, &st) != 0) exit(1);
2938 if ((st.st_mode & 0777) != 0600) exit(1);
2941 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2942 samba_cv_HAVE_SECURE_MKSTEMP=no,
2943 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2944 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2945 AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2948 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2949 AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
2950 [samba_cv_HAVE_BROKEN_READDIR=no],
2951 [samba_cv_HAVE_BROKEN_READDIR=yes],
2952 [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2954 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2955 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2957 #include "${srcdir-.}/lib/repdir.c"
2958 #include "${srcdir-.}/tests/os2_delete.c"],
2959 samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2962 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2963 AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2966 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2967 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2968 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2969 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2970 AC_CHECK_FUNCS(getpagesize)
2972 dnl test for getifaddrs and freeifaddrs
2973 AC_CACHE_CHECK([for getifaddrs and freeifaddrs],samba_cv_HAVE_GETIFADDRS,[
2975 #include <sys/socket.h>
2976 #include <sys/types.h>
2977 #include <netinet/in.h>
2978 #include <arpa/inet.h>
2979 #include <ifaddrs.h>
2980 #include <netdb.h>],
2982 struct ifaddrs *ifp = NULL;
2983 int ret = getifaddrs (&ifp);
2986 samba_cv_HAVE_GETIFADDRS=yes,samba_cv_HAVE_GETIFADDRS=no)])
2987 if test x"$samba_cv_HAVE_GETIFADDRS" = x"yes"; then
2988 AC_DEFINE(HAVE_GETIFADDRS,1,[Whether the system has getifaddrs])
2989 AC_DEFINE(HAVE_FREEIFADDRS,1,[Whether the system has freeifaddrs])
2993 # look for a method of finding the list of network interfaces
2995 AC_CACHE_CHECK([for iface getifaddrs],samba_cv_HAVE_IFACE_GETIFADDRS,[
2996 SAVE_CPPFLAGS="$CPPFLAGS"
2997 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2999 #define NO_CONFIG_H 1
3000 #define HAVE_IFACE_GETIFADDRS 1
3001 #define AUTOCONF_TEST 1
3002 #include "${srcdir-.}/lib/replace/replace.c"
3003 #include "${srcdir-.}/lib/interfaces.c"],
3004 samba_cv_HAVE_IFACE_GETIFADDRS=yes,samba_cv_HAVE_IFACE_GETIFADDRS=no,samba_cv_HAVE_IFACE_GETIFADDRS=cross)])
3005 CPPFLAGS="$SAVE_CPPFLAGS"
3006 if test x"$samba_cv_HAVE_IFACE_GETIFADDRS" = x"yes"; then
3007 iface=yes;AC_DEFINE(HAVE_IFACE_GETIFADDRS,1,[Whether iface getifaddrs is available])
3010 if test $iface = no; then
3011 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
3012 SAVE_CPPFLAGS="$CPPFLAGS"
3013 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3015 #define NO_CONFIG_H 1
3016 #define HAVE_IFACE_IFCONF 1
3017 #define AUTOCONF_TEST 1
3018 #define SOCKET_WRAPPER_NOT_REPLACE
3019 #include "${srcdir-.}/lib/replace/replace.c"
3020 #include "${srcdir-.}/lib/interfaces.c"],
3021 samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
3022 CPPFLAGS="$SAVE_CPPFLAGS"
3023 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
3024 iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
3028 if test $iface = no; then
3029 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
3030 SAVE_CPPFLAGS="$CPPFLAGS"
3031 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3033 #define NO_CONFIG_H 1
3034 #define HAVE_IFACE_IFREQ 1
3035 #define AUTOCONF_TEST 1
3036 #define SOCKET_WRAPPER_NOT_REPLACE
3037 #include "${srcdir-.}/lib/replace/replace.c"
3038 #include "${srcdir-.}/lib/replace/getaddrinfo.c"
3039 #include "${srcdir-.}/lib/replace/snprintf.c"
3040 #include "${srcdir-.}/lib/interfaces.c"],
3041 samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
3042 CPPFLAGS="$SAVE_CPPFLAGS"
3043 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
3044 iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
3049 AC_TRY_COMPILE([#include <sys/socket.h>],[
3050 struct sockaddr_storage s; s.__ss_family = 0],
3051 samba_cv_have_aix_sockaddr_storage=yes,samba_cv_have_aix_sockaddr_storage=no)
3053 if test x"$samba_cv_have_aix_sockaddr_storage" = x"yes"; then
3054 AC_DEFINE(HAVE_AIX_SOCKADDR_STORAGE, 1, [Whether struct sockaddr_storage has __sa_family])
3057 if test $iface = no; then
3058 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
3059 SAVE_CPPFLAGS="$CPPFLAGS"
3060 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3062 #define NO_CONFIG_H 1
3063 #define HAVE_IFACE_AIX 1
3064 #define AUTOCONF_TEST 1
3065 #undef _XOPEN_SOURCE_EXTENDED
3066 #define SOCKET_WRAPPER_NOT_REPLACE
3067 #include "${srcdir-.}/lib/replace/replace.c"
3068 #include "${srcdir-.}/lib/replace/snprintf.c"
3069 #include "${srcdir-.}/lib/interfaces.c"],
3070 samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
3071 CPPFLAGS="$SAVE_CPPFLAGS"
3072 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
3073 iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
3078 AC_CACHE_CHECK([for ipv6 support],samba_cv_HAVE_IPV6,[
3080 #include <stdlib.h> /* for NULL */
3081 #include <sys/socket.h>
3082 #include <sys/types.h>
3083 #include <netdb.h>],
3085 struct sockaddr_storage sa_store;
3086 struct addrinfo *ai = NULL;
3087 struct in6_addr in6addr;
3088 int s = socket(AF_INET6, SOCK_STREAM, 0);
3089 int ret = getaddrinfo(NULL, NULL, NULL, &ai);
3091 const char *es = gai_strerror(ret);
3095 samba_cv_HAVE_IPV6=yes,samba_cv_HAVE_IPV6=no)])
3096 if test x"$samba_cv_HAVE_IPV6" = x"yes"; then
3097 AC_DEFINE(HAVE_IPV6,1,[Whether the system has IPv6 support])
3100 ################################################
3101 # look for a method of setting the effective uid
3103 if test $seteuid = no; then
3104 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
3106 #define AUTOCONF_TEST 1
3107 #define USE_SETRESUID 1
3108 #include "confdefs.h"
3109 #include "${srcdir-.}/lib/util_sec.c"],
3110 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
3111 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
3112 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
3117 if test $seteuid = no; then
3118 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
3120 #define AUTOCONF_TEST 1
3121 #define USE_SETREUID 1
3122 #include "confdefs.h"
3123 #include "${srcdir-.}/lib/util_sec.c"],
3124 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
3125 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
3126 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
3130 if test $seteuid = no; then
3131 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
3133 #define AUTOCONF_TEST 1
3134 #define USE_SETEUID 1
3135 #include "confdefs.h"
3136 #include "${srcdir-.}/lib/util_sec.c"],
3137 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
3138 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
3139 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
3143 if test $seteuid = no; then
3144 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
3146 #define AUTOCONF_TEST 1
3147 #define USE_SETUIDX 1
3148 #include "confdefs.h"
3149 #include "${srcdir-.}/lib/util_sec.c"],
3150 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
3151 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
3152 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
3156 AC_CACHE_CHECK([for the Darwin initgroups system call],
3157 samba_cv_DARWIN_INITGROUPS,
3159 #include <sys/syscall.h>
3162 [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
3163 samba_cv_DARWIN_INITGROUPS=yes,
3164 samba_cv_DARWIN_INITGROUPS=no)
3167 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
3168 AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
3169 [Whether to use the Darwin-specific initgroups system call])
3172 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
3173 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
3174 samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
3175 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
3176 AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
3179 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
3180 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
3181 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
3182 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
3183 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
3186 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
3187 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
3188 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
3189 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
3190 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
3195 dnl Don't check for 64 bit fcntl locking if we know that the
3196 dnl glibc2.1 broken check has succeeded.
3199 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
3201 #if defined(HAVE_UNISTD_H)
3211 #ifdef HAVE_SYS_FCNTL_H
3212 #include <sys/fcntl.h>
3214 main() { struct flock64 fl64;
3215 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3221 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3223 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3224 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3228 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3229 AC_TRY_COMPILE([#include <sys/types.h>
3230 #include <sys/stat.h>
3231 #include <unistd.h>],
3232 [struct stat st; st.st_blocks = 0;],
3233 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3234 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3235 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3238 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3239 AC_TRY_COMPILE([#include <sys/types.h>
3240 #include <sys/stat.h>
3241 #include <unistd.h>],
3242 [struct stat st; st.st_blksize = 0;],
3243 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3244 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3245 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3248 AC_CACHE_CHECK([for st_flags in struct stat],
3249 samba_cv_HAVE_STAT_ST_FLAGS,
3251 AC_TRY_COMPILE([#include <sys/types.h>
3252 #include <sys/stat.h>
3253 #include <unistd.h>],
3254 [struct stat st; st.st_flags = 0;],
3255 samba_cv_HAVE_STAT_ST_FLAGS=yes,
3256 samba_cv_HAVE_STAT_ST_FLAGS=no,
3257 samba_cv_HAVE_STAT_ST_FLAGS=cross)
3260 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3261 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3262 [Whether the stat struct has a st_flags member])
3265 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3267 #include <sys/types.h>
3268 #include <sys/acl.h>
3269 #if defined(HAVE_RPCSVC_NIS_H)
3270 #include <rpcsvc/nis.h>
3273 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3274 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3275 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3278 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3283 char *newpath = realpath("/tmp", NULL);
3284 exit ((newpath != NULL) ? 0 : 1);
3287 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3288 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3289 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3292 #################################################
3293 # check for AFS clear-text auth support
3294 samba_cv_WITH_AFS=no
3295 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3297 [ --with-afs Include AFS clear-text auth support (default=no) ],
3298 [ case "$withval" in
3300 AC_MSG_RESULT($withval)
3301 samba_cv_WITH_AFS=$withval
3310 ####################################################
3311 # check for Linux-specific AFS fake-kaserver support
3312 samba_cv_WITH_FAKE_KASERVER=no
3313 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3314 AC_ARG_WITH(fake-kaserver,
3315 [ --with-fake-kaserver Include AFS fake-kaserver support (default=no) ],
3316 [ case "$withval" in
3318 AC_MSG_RESULT($withval)
3319 samba_cv_WITH_FAKE_KASERVER=$withval
3328 #################################################
3329 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3330 if test x"$samba_cv_WITH_AFS" != x"no" ||
3331 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3333 # see if this box has the afs-headers in /usr/include/afs
3334 AC_MSG_CHECKING(for /usr/include/afs)
3335 if test -d /usr/include/afs; then
3336 CFLAGS="$CFLAGS -I/usr/include/afs"
3337 CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3345 AC_CHECK_HEADERS(afs.h afs/afs.h)
3346 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3347 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3348 test x"$samba_cv_WITH_AFS" = x"auto"; then
3349 AC_MSG_WARN([AFS cannot be supported without afs.h])
3351 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3354 have_afs_headers=yes
3358 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3359 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3362 #################################################
3363 # check whether to compile AFS/NT ACL mapping module
3364 samba_cv_WITH_VFS_AFSACL=no
3365 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3366 AC_ARG_WITH(vfs-afsacl,
3367 [ --with-vfs-afsacl Include AFS to NT ACL mapping module (default=no) ],
3368 [ case "$withval" in
3370 AC_MSG_RESULT($withval)
3371 samba_cv_WITH_VFS_AFSACL=yes
3380 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3381 default_shared_modules="$default_shared_modules vfs_afsacl"
3384 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3385 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3388 #################################################
3389 # check for the DFS clear-text auth system
3390 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3392 [ --with-dce-dfs Include DCE/DFS clear-text auth support (default=no)],
3393 [ case "$withval" in
3396 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3405 ########################################################
3406 # Compile with LDAP support?
3408 with_ldap_support=auto
3409 AC_MSG_CHECKING([for LDAP support])
3412 [ --with-ldap LDAP support (default yes)],
3413 [ case "$withval" in
3415 with_ldap_support=$withval
3419 AC_MSG_RESULT($with_ldap_support)
3424 AC_SUBST(SMBLDAPUTIL)
3428 if test x"$with_ldap_support" != x"no"; then
3430 ##################################################################
3431 # first test for ldap.h and lber.h
3432 # (ldap.h is required for this test)
3433 AC_CHECK_HEADERS(ldap.h lber.h)
3435 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3436 if test x"$with_ldap_support" = x"yes"; then
3437 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3439 AC_MSG_WARN(ldap.h is needed for LDAP support)
3442 with_ldap_support=no
3445 ##################################################################
3446 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3447 # unsigned int in include/includes.h
3450 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3451 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3452 with_ldap_support=yes
3455 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3456 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3457 if test x"$with_ldap_support" = x"yes"; then
3458 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3460 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3462 with_ldap_support=no
3468 if test x"$with_ldap_support" != x"no"; then
3471 ##################################################################
3472 # we might need the lber lib on some systems. To avoid link errors
3473 # this test must be before the libldap test
3474 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3476 ########################################################
3477 # If ber_sockbuf_add_io() is available we can add
3478 # SASL wrapping hooks
3479 AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3481 AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3482 AC_TRY_COMPILE([#include <ldap.h>],
3483 [int val = LDAP_OPT_SOCKBUF;],
3484 samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3485 samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3487 if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3488 x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3489 AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3492 ########################################################
3493 # now see if we can find the ldap libs in standard paths
3494 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3496 ########################################################
3497 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3498 # Check found in pam_ldap 145.
3499 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3501 LIBS="$LIBS $LDAP_LIBS"
3502 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3506 [ldap_set_rebind_proc(0, 0, 0);],
3507 [smb_ldap_cv_ldap_set_rebind_proc=3],
3508 [smb_ldap_cv_ldap_set_rebind_proc=2]
3512 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3514 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3516 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3517 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3518 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3519 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3520 default_shared_modules="$default_shared_modules";
3521 SMBLDAP="lib/smbldap.o"
3522 SMBLDAPUTIL="lib/smbldap_util.o"
3523 with_ldap_support=yes
3524 AC_MSG_CHECKING(whether LDAP support is used)
3527 if test x"$with_ldap_support" = x"yes"; then
3528 AC_MSG_ERROR(libldap is needed for LDAP support)
3530 AC_MSG_WARN(libldap is needed for LDAP support)
3534 with_ldap_support=no
3540 #################################################
3541 # active directory support
3543 with_ads_support=auto
3544 AC_MSG_CHECKING([for Active Directory and krb5 support])
3547 [ --with-ads Active Directory support (default auto)],
3548 [ case "$withval" in
3550 with_ads_support="$withval"
3554 AC_MSG_RESULT($with_ads_support)
3559 if test x"$with_ldap_support" != x"yes"; then
3561 if test x"$with_ads_support" = x"yes"; then
3562 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3563 elif test x"$with_ads_support" = x"auto"; then
3564 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3570 # Check to see whether there is enough LDAP functionality to be able
3571 # to build AD support.
3573 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3576 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3578 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3579 if test x"$with_ads_support" = x"yes"; then
3580 AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3581 elif test x"$with_ads_support" = x"auto"; then
3582 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3588 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3590 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3591 if test x"$with_ads_support" = x"yes"; then
3592 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3593 elif test x"$with_ads_support" = x"auto"; then
3594 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3602 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3604 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3605 if test x"$with_ads_support" = x"yes"; then
3606 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3607 elif test x"$with_ads_support" = x"auto"; then
3608 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3615 if test x"$with_ads_support" != x"no"; then
3617 # Do no harm to the values of CFLAGS and LIBS while testing for
3620 if test x$FOUND_KRB5 = x"no"; then
3621 #################################################
3622 # check for location of Kerberos 5 install
3623 AC_MSG_CHECKING(for kerberos 5 install path)
3625 [ --with-krb5=base-dir Locate Kerberos 5 support (default=/usr)],
3626 [ case "$withval" in
3628 AC_MSG_RESULT(no krb5-path given)
3635 AC_MSG_RESULT($withval)
3636 KRB5_CFLAGS="-I$withval/include"
3637 KRB5_CPPFLAGS="-I$withval/include"
3638 KRB5_LDFLAGS="-L$withval/lib"
3640 if test -x "$withval/bin/krb5-config"; then
3641 KRB5CONFIG=$withval/bin/krb5-config
3645 AC_MSG_RESULT(no krb5-path given)
3649 #################################################
3650 # check for krb5-config from recent MIT and Heimdal kerberos 5
3651 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3652 AC_MSG_CHECKING(for working krb5-config)
3653 if test -x "$KRB5CONFIG"; then
3654 ac_save_CFLAGS=$CFLAGS
3655 CFLAGS="";export CFLAGS
3656 ac_save_LDFLAGS=$LDFLAGS
3657 LDFLAGS="";export LDFLAGS
3658 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3659 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3660 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3661 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3662 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3663 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3667 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3670 if test x$FOUND_KRB5 = x"no"; then
3671 #################################################
3672 # see if this box has the SuSE location for the heimdal krb implementation
3673 AC_MSG_CHECKING(for /usr/include/heimdal)
3674 if test -d /usr/include/heimdal; then
3675 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3676 KRB5_CFLAGS="-I/usr/include/heimdal"
3677 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3678 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3682 KRB5_CFLAGS="-I/usr/include/heimdal"
3683 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3692 if test x$FOUND_KRB5 = x"no"; then
3693 #################################################
3694 # see if this box has the RedHat location for kerberos
3695 AC_MSG_CHECKING(for /usr/kerberos)
3696 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3697 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3698 KRB5_CFLAGS="-I/usr/kerberos/include"
3699 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3707 if test x$FOUND_KRB5 = x"no"; then
3708 #################################################
3709 # see if this box has the OpenBSD location for heimdal krb5
3710 AC_MSG_CHECKING(for /usr/include/kerberosV)
3711 if test -d /usr/include/kerberosV; then
3712 KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3713 KRB5_LIBS="-lcrypto"
3721 ac_save_CFLAGS=$CFLAGS
3722 ac_save_CPPFLAGS=$CPPFLAGS
3723 ac_save_LDFLAGS=$LDFLAGS
3725 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3726 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3727 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3729 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3731 # now check for krb5.h. Some systems have the libraries without the headers!
3732 # note that this check is done here to allow for different kerberos
3734 AC_CHECK_HEADERS(krb5.h)
3736 if test x"$ac_cv_header_krb5_h" = x"no"; then
3738 # Give a warning if AD support was not explicitly requested,
3739 # i.e with_ads_support = auto, otherwise die with an error.
3741 if test x"$with_ads_support" = x"yes"; then
3742 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3744 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3747 # Turn off AD support and restore CFLAGS and LIBS variables
3749 with_ads_support="no"
3751 CFLAGS=$ac_save_CFLAGS
3752 CPPFLAGS=$ac_save_CPPFLAGS
3753 LDFLAGS=$ac_save_LDFLAGS
3755 AC_CHECK_HEADERS(krb5/locate_plugin.h)
3756 if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3757 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3758 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3762 # Now we have determined whether we really want ADS support
3764 if test x"$with_ads_support" != x"no"; then
3769 # now check for gssapi headers. This is also done here to allow for
3770 # different kerberos include paths
3771 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3773 ##################################################################
3774 # we might need the k5crypto and com_err libraries on some systems
3775 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3776 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3779 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3780 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3781 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3783 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3784 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3786 ########################################################
3787 # now see if we can find the krb5 libs in standard paths
3788 # or as specified above
3789 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3790 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3792 ########################################################
3793 # now see if we can find the gssapi libs in standard paths
3794 if test x"$have_gssapi" != x"yes"; then
3795 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3798 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3799 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3800 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3801 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3802 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3803 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3804 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3805 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3806 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3807 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3808 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3809 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3810 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3811 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3812 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3813 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3814 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3815 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3816 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3817 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3818 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3819 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3820 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3821 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3822 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3823 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3824 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3825 AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3826 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3827 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3828 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3829 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3830 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3831 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3832 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3833 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3834 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3835 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3836 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3837 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3838 AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3840 LIBS="$KRB5_LIBS $LIBS"
3842 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3843 smb_krb5_ticket_has_keyinfo,
3852 krb5_enctype enctype;
3854 enctype = ticket.enc_part.enctype;
3855 kvno = ticket.enc_part.kvno;
3857 [ smb_krb5_ticket_has_keyinfo=yes ],
3858 [ smb_krb5_ticket_has_keyinfo=no ])
3861 if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3862 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3863 [Whether the krb5_ticket structure contains the kvno and enctype])
3866 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3867 smb_krb5_creds_opt_free_context,
3873 krb5_get_init_creds_opt *opt = NULL;
3874 krb5_get_init_creds_opt_free(ctx, opt);
3876 [smb_krb5_creds_opt_free_context=yes],
3877 [smb_krb5_creds_opt_free_context=no]
3881 if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3882 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3883 [Whether krb5_get_init_creds_opt_free takes a context argument])
3886 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3889 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3890 [smb_krb5_verify_checksum=7],
3891 [smb_krb5_verify_checksum=6],
3894 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3896 AC_CACHE_CHECK([for checksum in krb5_checksum],
3897 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3898 AC_TRY_COMPILE([#include <krb5.h>],
3899 [krb5_checksum cksum; cksum.checksum.length = 0;],
3900 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3901 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3903 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3904 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3905 [Whether the krb5_checksum struct has a checksum property])
3908 AC_CACHE_CHECK([for etype in EncryptedData],
3909 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3910 AC_TRY_COMPILE([#include <krb5.h>],
3911 [EncryptedData edata; edata.etype = 0;],
3912 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3913 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3915 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3916 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3917 [Whether the EncryptedData struct has a etype property])
3920 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3921 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3922 AC_TRY_COMPILE([#include <krb5.h>],
3923 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3924 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3925 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3927 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3928 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3929 [Whether the krb5_ap_req struct has a ticket pointer])
3932 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3933 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3934 AC_TRY_COMPILE([#include <krb5.h>],
3935 [krb5_error err; err.e_data = NULL;],
3936 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3937 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3939 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3940 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3941 [Whether the krb5_error struct has a e_data pointer])
3944 AC_CACHE_CHECK([for krb5_crypto type],
3945 samba_cv_HAVE_KRB5_CRYPTO,[
3946 AC_TRY_COMPILE([#include <krb5.h>],
3947 [krb5_crypto crypto;],
3948 samba_cv_HAVE_KRB5_CRYPTO=yes,
3949 samba_cv_HAVE_KRB5_CRYPTO=no)])
3951 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3952 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3953 [Whether the type krb5_crypto exists])
3956 AC_CACHE_CHECK([for krb5_encrypt_block type],
3957 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3958 AC_TRY_COMPILE([#include <krb5.h>],
3959 [krb5_encrypt_block block;],
3960 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3961 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3963 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3964 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3965 [Whether the type krb5_encrypt_block exists])
3968 AC_CACHE_CHECK([for addrtype in krb5_address],
3969 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3970 AC_TRY_COMPILE([#include <krb5.h>],
3971 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3972 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3973 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3975 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3976 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3977 [Whether the krb5_address struct has a addrtype property])
3980 AC_CACHE_CHECK([for addr_type in krb5_address],
3981 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3982 AC_TRY_COMPILE([#include <krb5.h>],
3983 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3984 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3985 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3987 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3988 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3989 [Whether the krb5_address struct has a addr_type property])
3992 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3993 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3994 [AC_TRY_COMPILE([#include <krb5.h>],
3995 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3996 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3998 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3999 AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
4000 [Whether the krb5_ticket struct has a enc_part2 property])
4003 AC_CACHE_CHECK([for keyblock in krb5_creds],
4004 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
4005 AC_TRY_COMPILE([#include <krb5.h>],
4006 [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
4007 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
4008 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
4010 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
4011 AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
4012 [Whether the krb5_creds struct has a keyblock property])
4015 AC_CACHE_CHECK([for session in krb5_creds],
4016 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
4017 AC_TRY_COMPILE([#include <krb5.h>],
4018 [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
4019 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
4020 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
4022 if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
4023 AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
4024 [Whether the krb5_creds struct has a session property])
4027 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
4028 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
4029 AC_TRY_COMPILE([#include <krb5.h>],
4030 [krb5_keyblock key; key.keyvalue.data = NULL;],
4031 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
4032 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
4034 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
4035 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
4036 [Whether the krb5_keyblock struct has a keyvalue property])
4039 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
4040 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
4041 AC_TRY_COMPILE([#include <krb5.h>],
4042 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
4043 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
4044 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
4045 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
4046 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
4047 AC_TRY_COMPILE([#include <krb5.h>],
4048 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
4049 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
4050 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
4051 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
4052 # w.r.t. arcfour and windows, so we must not enable it here
4053 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
4054 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
4055 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
4056 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
4059 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
4060 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
4061 AC_TRY_COMPILE([#include <krb5.h>],
4062 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
4063 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
4064 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
4066 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
4067 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
4068 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
4071 AC_CACHE_CHECK([for KV5M_KEYTAB],
4072 samba_cv_HAVE_KV5M_KEYTAB,[
4073 AC_TRY_COMPILE([#include <krb5.h>],
4074 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
4075 samba_cv_HAVE_KV5M_KEYTAB=yes,
4076 samba_cv_HAVE_KV5M_KEYTAB=no)])
4078 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
4079 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
4080 [Whether the KV5M_KEYTAB option is available])
4083 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
4084 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
4085 AC_TRY_COMPILE([#include <krb5.h>],
4086 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
4087 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
4088 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
4090 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
4091 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
4092 [Whether KRB5_KU_OTHER_CKSUM is available])
4095 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
4096 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
4097 AC_TRY_COMPILE([#include <krb5.h>],
4098 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
4099 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
4100 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
4102 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
4103 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
4104 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
4107 AC_CACHE_CHECK([for the krb5_princ_component macro],
4108 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
4109 AC_TRY_LINK([#include <krb5.h>],
4110 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
4111 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
4112 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
4114 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
4115 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
4116 [Whether krb5_princ_component is available])
4119 AC_CACHE_CHECK([for key in krb5_keytab_entry],
4120 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
4121 AC_TRY_COMPILE([#include <krb5.h>],
4122 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
4123 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
4124 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
4126 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
4127 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
4128 [Whether krb5_keytab_entry has key member])
4131 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
4132 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
4133 AC_TRY_COMPILE([#include <krb5.h>],
4134 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4135 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4136 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4138 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4139 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4140 [Whether krb5_keytab_entry has keyblock member])
4143 AC_CACHE_CHECK([for magic in krb5_address],
4144 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4145 AC_TRY_COMPILE([#include <krb5.h>],
4146 [krb5_address addr; addr.magic = 0;],
4147 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4148 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4150 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4151 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4152 [Whether the krb5_address struct has a magic property])
4155 AC_CACHE_CHECK([for WRFILE: keytab support],
4156 samba_cv_HAVE_WRFILE_KEYTAB,[
4161 krb5_context context;
4164 krb5_init_context(&context);
4165 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4167 samba_cv_HAVE_WRFILE_KEYTAB=yes,
4168 samba_cv_HAVE_WRFILE_KEYTAB=no)])
4170 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4171 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4172 [Whether the WRFILE:-keytab is supported])
4175 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4176 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4177 AC_TRY_COMPILE([#include <krb5.h>],
4179 krb5_context context;
4180 krb5_principal principal;
4181 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4182 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4183 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4185 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4186 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4187 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4190 AC_CACHE_CHECK([for krb5_addresses type],
4191 samba_cv_HAVE_KRB5_ADDRESSES,[
4192 AC_TRY_COMPILE([#include <krb5.h>],
4193 [krb5_addresses addr;],
4194 samba_cv_HAVE_KRB5_ADDRESSES=yes,
4195 samba_cv_HAVE_KRB5_ADDRESSES=no)])
4197 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4198 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4199 [Whether the type krb5_addresses type exists])
4202 AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4203 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4204 AC_TRY_COMPILE([#include <krb5.h>],
4206 krb5_mk_error(0,0,0);],
4207 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4208 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4210 if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4211 AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4212 [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4215 if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4216 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4217 smb_krb5_enctype_to_string_takes_krb5_context_arg,[
4221 krb5_context context = NULL;
4223 krb5_enctype_to_string(context, 1, &str);
4224 if (str) free (str);
4227 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4228 smb_krb5_enctype_to_string_takes_krb5_context_arg=yes,
4229 smb_krb5_enctype_to_string_takes_krb5_context_arg=no)])
4231 if test x"$smb_krb5_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4232 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4233 [whether krb5_enctype_to_string takes krb5_context argument])
4236 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4237 smb_krb5_enctype_to_string_takes_size_t_arg,[
4242 krb5_enctype_to_string(1, buf, 256);
4245 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4246 smb_krb5_enctype_to_string_takes_size_t_arg=yes,
4247 smb_krb5_enctype_to_string_takes_size_t_arg=no)])
4249 if test x"$smb_krb5_enctype_to_string_takes_size_t_arg" = x"yes"; then
4250 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4251 [whether krb5_enctype_to_string takes size_t argument])
4255 AC_CACHE_CHECK([for krb5_principal_get_realm],
4256 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4257 AC_TRY_LINK([#include <krb5.h>],
4258 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4259 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4260 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4262 if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4263 AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4264 [Whether the function krb5_principal_get_realm is defined])
4267 AC_CACHE_CHECK([for krb5_princ_realm],
4268 samba_cv_HAVE_KRB5_PRINC_REALM,[
4269 AC_TRY_LINK([#include <krb5.h>],
4270 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4271 samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4272 samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4274 if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4275 AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4276 [Whether the macro krb5_princ_realm is defined])
4281 # Now the decisions whether we can support krb5
4283 # NOTE: all tests should be done before this block!
4286 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4287 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4291 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4292 x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4294 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4298 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4299 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4301 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4305 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4306 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4308 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4312 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4313 x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4315 AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4319 if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
4321 # We only need the following functions if we can't get the enctype
4322 # and kvno out of the ticket directly (ie. on Heimdal).
4324 if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4326 AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4330 if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4332 AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4338 if test x"$use_ads" = x"yes"; then
4339 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4340 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4341 if test x"$have_gssapi" = x"yes"; then
4342 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4345 if test x"$with_ads_support" = x"yes"; then
4346 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4348 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4350 AC_REMOVE_DEFINE(HAVE_KRB5_H)
4351 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4352 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4353 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4357 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4358 AC_MSG_RESULT([$use_ads])
4360 LIBS="$ac_save_LIBS"
4363 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4364 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4367 ########################################################
4368 # Compile with DNS Updates support?
4370 with_dnsupdate_support=no
4371 AC_MSG_CHECKING([whether to enable DNS Updates support])
4373 AC_ARG_WITH(dnsupdate,
4374 [ --with-dnsupdate Enable DNS Updates support (default no)],
4375 [ case "$withval" in
4377 with_dnsupdate_support=$withval
4381 AC_MSG_RESULT($with_dnsupdate_support)
4383 if test x"$with_dnsupdate_support" != x"no"; then
4385 ################################################################
4386 # first test for Active Directory support being enabled
4387 #if test x"$with_ads_support" = x"no"; then
4388 # AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4389 # with_dnsupdate_support=no
4391 ##################################################################
4392 # then test for uuid.h (necessary to generate unique DNS keynames
4393 # (uuid.h is required for this test)
4394 AC_CHECK_HEADERS(uuid/uuid.h)
4396 if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4397 if test x"$with_dnsupdate_support" = x"yes"; then
4398 AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4400 AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4402 with_dnsupdate_support=no
4406 if test x"$with_dnsupdate_support" != x"no"; then
4408 ########################################################
4409 # Now see if we can find the uuid libs in standard paths
4410 # On some systems, the uuid API is in libc, so we have to
4411 # be careful not to insert a spurious -luuid.
4414 AC_LIBTESTFUNC(uuid, uuid_generate,
4419 SMB_REMOVE_LIB(uuid)
4423 with_dnsupdate_support=yes
4424 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4427 if test x"$with_dnsupdate_support" = x"yes"; then
4428 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4430 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4432 with_dnsupdate_support=no
4436 #################################################
4437 # check for automount support
4438 AC_MSG_CHECKING(whether to use automount)
4439 AC_ARG_WITH(automount,
4440 [ --with-automount Include automount support (default=no)],
4441 [ case "$withval" in
4444 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4453 #################################################
4454 # check for smbmount support
4455 AC_MSG_CHECKING(whether to use smbmount)
4456 AC_ARG_WITH(smbmount,
4457 [ --with-smbmount Include smbmount (Linux only) support (default=no)],
4458 [ case "$withval" in
4463 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
4464 SMBMOUNT_PROGS="bin/smbmount bin/smbmnt bin/smbumount"
4467 AC_MSG_ERROR(not on a linux system!)
4478 #################################################
4479 # check for mount- and umount.cifs support
4481 INSTALL_CIFSMOUNT=""
4482 UNINSTALL_CIFSMOUNT=""
4483 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4484 AC_ARG_WITH(cifsmount,
4485 [ --with-cifsmount Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
4486 [ case "$withval" in
4494 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4495 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4496 INSTALL_CIFSMOUNT="installcifsmount"
4497 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4500 AC_MSG_ERROR(not on a linux system!)
4505 [ case "$host_os" in
4508 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4509 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4510 INSTALL_CIFSMOUNT="installcifsmount"
4511 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4519 #################################################
4520 # check for cifs.spnego support
4521 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4523 INSTALL_CIFSSPNEGO=""
4524 UNINSTALL_CIFSSPNEGO=""
4525 AC_MSG_CHECKING(whether to build cifs.spnego)
4526 AC_ARG_WITH(cifsspnego,
4527 [ --with-cifsspnego Include cifs.spnego (Linux only) support (default=no)],
4528 [ case "$withval" in
4535 if test x"$use_ads" != x"yes"; then
4536 AC_MSG_ERROR(ADS support should be enabled for building cifs.spnego)
4537 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4538 AC_MSG_ERROR(keyutils package is required for cifs.spnego)
4541 AC_DEFINE(WITH_CIFSSPNEGO,1,[whether to build cifs.spnego])
4542 CIFSSPNEGO_PROGS="bin/cifs.spnego"
4543 INSTALL_CIFSSPNEGO="installcifsspnego"
4544 UNINSTALL_CIFSSPNEGO="uninstallcifsspnego"
4548 AC_MSG_ERROR(not on a linux system!)
4559 #################################################
4560 # Check for a PAM clear-text auth, accounts, password
4561 # and session support. Most PAM implementations keep their
4562 # headers in /usr/include/security. Darwin keeps its in
4565 with_pam_for_crypt=no
4567 AC_MSG_CHECKING(whether to try PAM support)
4569 [ --with-pam Include PAM support (default=no)],
4570 [ case "$withval" in
4576 AC_MSG_RESULT([$try_pam])
4579 create_pam_modules=no
4580 if test x"${try_pam}" != x"no";then
4582 create_pam_modules=yes
4584 # Most systems have PAM headers in /usr/include/security, but Darwin
4585 # has them in /usr/include/pam.
4586 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4587 if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4588 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4589 if test x"${try_pam}" = x"yes";then
4590 AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4593 create_pam_modules=no
4596 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4597 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4598 if test x"${try_pam}" = x"yes";then
4599 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4602 create_pam_modules=no
4605 AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4606 #if HAVE_SECURITY_PAM_APPL_H
4607 #include <security/pam_appl.h>
4609 #if HAVE_PAM_PAM_APPL_H
4610 #include <pam/pam_appl.h>
4613 if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4614 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4615 if test x"${try_pam}" = x"yes";then
4616 AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4618 create_pam_modules=no
4621 if test x"$use_pam" = x"yes"; then
4622 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4623 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4624 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4625 with_pam_for_crypt=yes
4627 if test x"$create_pam_modules" = x"yes"; then
4628 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4629 # this checks are optional,
4630 # we don't care about the results here
4631 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4632 AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4633 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4635 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4638 AC_MSG_CHECKING(whether to use PAM support)
4639 AC_MSG_RESULT([$use_pam])
4641 AC_MSG_CHECKING(whether to have PAM MODULES support)
4642 AC_MSG_RESULT([$create_pam_modules])
4645 #################################################
4646 # check for pam_smbpass support
4648 INSTALL_PAM_MODULES=""
4649 UNINSTALL_PAM_MODULES=""
4650 AC_MSG_CHECKING(whether to use pam_smbpass)
4651 AC_ARG_WITH(pam_smbpass,
4652 [ --with-pam_smbpass Build PAM module for authenticating against passdb backends (default=no)],
4653 [ case "$withval" in
4657 # Conditions under which pam_smbpass should not be built.
4659 if test x"$BLDSHARED" != x"true"; then
4660 AC_MSG_ERROR([No support for shared modules])
4661 elif test x"$create_pam_modules" != x"yes"; then
4662 AC_MSG_ERROR([No support for PAM MODULES])
4664 PAM_MODULES="pam_smbpass"
4665 INSTALL_PAM_MODULES="installpammodules"
4666 UNINSTALL_PAM_MODULES="uninstallpammodules"
4677 ###############################################
4678 # test for where we get crypt() from
4679 AC_SEARCH_LIBS(crypt, [crypt],
4680 [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4681 AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4684 ## moved after the check for -lcrypt in order to
4685 ## ensure that the necessary libraries are included
4686 ## check checking for truncated salt. Wrapped by the
4687 ## $with_pam_for_crypt variable as above --jerry
4689 if test $with_pam_for_crypt = no; then
4690 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4692 LIBS="$AUTH_LIBS $LIBS"
4693 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4694 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4695 LIBS="$crypt_LIBS"])
4696 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4697 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4701 #################################################
4702 # check for a NISPLUS_HOME support
4703 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4704 AC_ARG_WITH(nisplus-home,
4705 [ --with-nisplus-home Include NISPLUS_HOME support (default=no)],
4706 [ case "$withval" in
4709 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4718 #################################################
4719 # check for syslog logging
4720 AC_MSG_CHECKING(whether to use syslog logging)
4722 [ --with-syslog Include experimental SYSLOG support (default=no)],
4723 [ case "$withval" in
4726 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4735 #################################################
4736 # check for experimental disk-quotas support
4738 samba_cv_WITH_QUOTAS=auto
4739 samba_cv_TRY_QUOTAS=no
4740 samba_cv_RUN_QUOTA_TESTS=auto
4741 samba_cv_WITH_SYS_QUOTAS=auto
4742 samba_cv_TRY_SYS_QUOTAS=auto
4743 samba_cv_SYSQUOTA_FOUND=no
4745 AC_MSG_CHECKING(whether to try disk-quotas support)
4747 [ --with-quotas Include disk-quota support (default=no)],
4748 [ case "$withval" in
4751 samba_cv_WITH_QUOTAS=yes
4752 samba_cv_TRY_QUOTAS=yes
4753 samba_cv_RUN_QUOTA_TESTS=yes
4754 #set sys quotas to auto in this case
4755 samba_cv_TRY_SYS_QUOTAS=auto
4759 samba_cv_WITH_QUOTAS=auto
4760 samba_cv_TRY_QUOTAS=auto
4761 samba_cv_RUN_QUOTA_TESTS=auto
4762 #set sys quotas to auto in this case
4763 samba_cv_TRY_SYS_QUOTAS=auto
4767 samba_cv_WITH_QUOTAS=no
4768 samba_cv_TRY_QUOTAS=no
4769 samba_cv_RUN_QUOTA_TESTS=no
4772 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4775 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4778 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4779 AC_ARG_WITH(sys-quotas,
4780 [ --with-sys-quotas Include lib/sysquotas.c support (default=auto)],
4781 [ case "$withval" in
4784 samba_cv_WITH_SYS_QUOTAS=yes
4785 samba_cv_TRY_SYS_QUOTAS=yes
4786 samba_cv_RUN_QUOTA_TESTS=yes
4790 samba_cv_WITH_SYS_QUOTAS=auto
4791 samba_cv_TRY_SYS_QUOTAS=auto
4792 samba_cv_RUN_QUOTA_TESTS=auto
4796 samba_cv_WITH_SYS_QUOTAS=no
4797 samba_cv_TRY_SYS_QUOTAS=no
4800 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4803 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4806 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4807 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4811 samba_cv_TRY_SYS_QUOTAS=yes
4812 samba_cv_RUN_QUOTA_TESTS=yes
4816 samba_cv_TRY_SYS_QUOTAS=no
4821 #############################################
4822 # only check for quota stuff if --with-quotas
4823 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4826 # on linux we didn't need to test we have builtin support
4828 samba_cv_SYSQUOTA_FOUND=yes
4829 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4830 samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4831 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4834 AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4835 samba_cv_found_xfs_header=yes
4836 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4840 # need to set this define when using static linking (BUG 1473)
4841 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4847 # some broken header files need this
4848 AC_CHECK_HEADER(asm/types.h,[
4849 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4850 AC_ADD_INCLUDE(<asm/types.h>)
4853 # For quotas on Veritas VxFS filesystems
4854 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4856 # For quotas on Linux XFS filesystems
4857 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4859 # For sys/quota.h and linux/quota.h
4860 AC_CHECK_HEADERS(sys/quota.h)
4862 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4863 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4864 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4866 #include "confdefs.h"
4867 #ifdef HAVE_SYS_TYPES_H
4868 #include <sys/types.h>
4870 #ifdef HAVE_ASM_TYPES_H
4871 #include <asm/types.h>
4873 #include <sys/quota.h>
4874 ],[int i = Q_XGETQUOTA;],
4875 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4876 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4877 samba_cv_found_xfs_header=yes
4881 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4882 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4884 #include "confdefs.h"
4885 #ifdef HAVE_SYS_QUOTA_H
4886 #include <sys/quota.h>
4890 D.dqb_fsoftlimit = 0;],
4891 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4892 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4893 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4897 # look for a working quota system
4899 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4900 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4902 #define HAVE_QUOTACTL_4A 1
4903 #define AUTOCONF_TEST 1
4904 #include "confdefs.h"
4905 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4906 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4907 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4908 samba_cv_SYSQUOTA_FOUND=yes;
4909 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4910 samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4914 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4915 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4917 #define HAVE_QUOTACTL_4B 1
4918 #define AUTOCONF_TEST 1
4919 #include "confdefs.h"
4920 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4921 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4922 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4923 echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4924 samba_cv_SYSQUOTA_FOUND=yes;
4925 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4926 samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4930 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4931 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4933 #define HAVE_QUOTACTL_3 1
4934 #define AUTOCONF_TEST 1
4935 #include "confdefs.h"
4936 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4937 samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4938 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4939 echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4940 samba_cv_SYSQUOTA_FOUND=yes;
4941 AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4942 samba_cv_sysquotas_file="lib/sysquotas_3.c"
4946 #################################################
4947 # check for mntent.h and struct mntent
4948 AC_CHECK_HEADERS(mntent.h)
4949 #################################################
4950 # check for setmntent,getmntent,endmntent
4951 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4953 #################################################
4954 # check for devnm.h and struct mntent
4955 AC_CHECK_HEADERS(devnm.h)
4956 #################################################
4958 AC_CHECK_FUNCS(devnm)
4960 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4961 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4962 # if --with-sys-quotas=yes then build it
4963 # you have can use the get/set quota command smb.conf
4965 samba_cv_SYSQUOTA_FOUND=auto
4967 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4968 # if --with-sys-quotas=yes then build it
4969 # you have can use the get/set quota command smb.conf
4971 samba_cv_TRY_SYS_QUOTAS=auto
4975 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4976 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4977 SAVE_CPPFLAGS="$CPPFLAGS"
4978 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4980 #include "confdefs.h"
4981 #define NO_PROTO_H 1
4982 #define NO_CONFIG_H 1
4983 #define HAVE_SYS_QUOTAS 1
4984 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4985 #include "${srcdir-.}/lib/sysquotas.c"
4986 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4987 CPPFLAGS="$SAVE_CPPFLAGS"
4989 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4990 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4991 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4992 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4993 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4994 samba_cv_WE_USE_SYS_QUOTAS=yes
5002 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
5003 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
5004 SAVE_CPPFLAGS="$CPPFLAGS"
5005 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5007 #include "confdefs.h"
5008 #define NO_PROTO_H 1
5009 #define NO_CONFIG_H 1
5010 #define HAVE_SYS_QUOTAS 1
5011 #define HAVE_XFS_QUOTAS 1
5012 #include "${srcdir-.}/lib/sysquotas_xfs.c"
5013 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
5014 CPPFLAGS="$SAVE_CPPFLAGS"
5016 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
5017 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
5018 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
5023 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
5024 SAVE_CPPFLAGS="$CPPFLAGS"
5025 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5027 #include "confdefs.h"
5028 #define NO_PROTO_H 1
5029 #define NO_CONFIG_H 1
5030 #include "${srcdir-.}/smbd/quotas.c"
5031 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
5032 CPPFLAGS="$SAVE_CPPFLAGS"
5034 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
5035 AC_MSG_CHECKING(whether to use the old quota support)
5036 if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
5037 if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
5038 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5048 ####################
5049 # End of quota check samba_cv_RUN_QUOTA_TESTS
5052 #################################################
5053 # check for experimental utmp accounting
5055 AC_MSG_CHECKING(whether to support utmp accounting)
5058 [ --with-utmp Include utmp accounting (default, if supported by OS)],
5059 [ case "$withval" in
5069 # utmp requires utmp.h
5070 # Note similar check earlier, when checking utmp details.
5072 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
5073 utmp_no_reason=", no utmp.h on $host_os"
5077 # Display test results
5079 if test x"$WITH_UTMP" = x"yes"; then
5081 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
5083 AC_MSG_RESULT(no$utmp_no_reason)
5088 UNINSTALLLIBCMD_SH=:
5091 if test $BLDSHARED = true; then
5092 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
5093 UNINSTALLLIBCMD_SH="rm -f"
5095 if test $enable_static = yes; then
5096 INSTALLLIBCMD_A="\$(INSTALLCMD)"
5097 UNINSTALLLIBCMD_A="rm -f"
5100 #################################################
5101 # should we build libnetapi?
5103 UNINSTALL_LIBNETAPI=
5106 AC_MSG_CHECKING(whether to build the libnetapi shared library)
5107 AC_ARG_WITH(libnetapi,
5108 [ --with-libnetapi Build the libnetapi shared library (default=yes if shared libs supported)],
5109 [ case "$withval" in
5114 if test $BLDSHARED = true; then
5115 LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
5120 AC_MSG_RESULT(no shared library support -- will supply static library)
5122 if test $enable_static = yes; then
5125 INSTALL_LIBNETAPI=installlibnetapi
5126 UNINSTALL_LIBNETAPI=uninstalllibnetapi
5130 # if unspecified, default is to built it if possible.
5131 if test $BLDSHARED = true; then
5132 LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
5137 AC_MSG_RESULT(no shared library support -- will supply static library)
5139 if test $enable_static = yes; then
5142 INSTALL_LIBNETAPI=installlibnetapi
5145 #################################################
5146 # should we build libaddns?
5151 AC_MSG_CHECKING(whether to build the libaddns shared library)
5152 AC_ARG_WITH(libaddns,
5153 [ --with-libaddns Build the libaddns shared library (default=no undefined API)],
5154 [ case "$withval" in
5159 if test $BLDSHARED = true; then
5160 LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
5165 AC_MSG_RESULT(no shared library support -- will supply static library)
5167 if test $enable_static = yes; then
5170 INSTALL_LIBADDNS=installlibaddns
5171 UNINSTALL_LIBADDNS=uninstalllibaddns
5177 #################################################
5178 # should we build libsmbclient?
5180 INSTALL_LIBSMBCLIENT=
5181 UNINSTALL_LIBSMBCLIENT=
5182 LIBSMBCLIENT_SHARED=
5184 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
5185 AC_ARG_WITH(libsmbclient,
5186 [ --with-libsmbclient Build the libsmbclient shared library (default=yes if shared libs supported)],
5187 [ case "$withval" in
5192 if test $BLDSHARED = true; then
5193 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
5194 LIBSMBCLIENT=libsmbclient
5198 AC_MSG_RESULT(no shared library support -- will supply static library)
5200 if test $enable_static = yes; then
5201 LIBSMBCLIENT=libsmbclient
5203 INSTALL_LIBSMBCLIENT=installclientlib
5204 UNINSTALL_LIBSMBCLIENT=uninstallclientlib
5208 # if unspecified, default is to built it if possible.
5209 if test $BLDSHARED = true; then
5210 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
5211 LIBSMBCLIENT=libsmbclient
5215 AC_MSG_RESULT(no shared library support -- will supply static library)
5217 if test $enable_static = yes; then
5218 LIBSMBCLIENT=libsmbclient
5220 INSTALL_LIBSMBCLIENT=installclientlib
5221 UNINSTALL_LIBSMBCLIENT=uninstallclientlib
5224 INSTALL_LIBSMBSHAREMODES=
5225 LIBSMBSHAREMODES_SHARED=
5227 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
5228 AC_ARG_WITH(libsmbsharemodes,
5229 [ --with-libsmbsharemodes Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
5230 [ case "$withval" in
5235 if test $BLDSHARED = true; then
5236 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
5237 LIBSMBSHAREMODES=libsmbsharemodes
5241 AC_MSG_RESULT(no shared library support -- will supply static library)
5243 if test $enable_static = yes; then
5244 LIBSMBSHAREMODES=libsmbsharemodes
5246 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
5247 UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
5251 # if unspecified, default is to built it if possible.
5252 if test $BLDSHARED = true; then
5253 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
5254 LIBSMBSHAREMODES=libsmbsharemodes
5258 AC_MSG_RESULT(no shared library support -- will supply static library)
5260 if test $enable_static = yes; then
5261 LIBSMBSHAREMODES=libsmbsharemodes
5263 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
5267 #################################################
5268 # these tests are taken from the GNU fileutils package
5269 AC_CHECKING(how to get filesystem space usage)
5272 # Test for statvfs64.
5273 if test $space = no; then
5275 AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
5277 #if defined(HAVE_UNISTD_H)
5280 #include <sys/types.h>
5281 #include <sys/statvfs.h>
5284 struct statvfs64 fsd;
5285 exit (statvfs64 (".", &fsd));
5287 fu_cv_sys_stat_statvfs64=yes,
5288 fu_cv_sys_stat_statvfs64=no,
5289 fu_cv_sys_stat_statvfs64=cross)])
5290 if test $fu_cv_sys_stat_statvfs64 = yes; then
5292 AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
5296 # Perform only the link test since it seems there are no variants of the
5297 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
5298 # because that got a false positive on SCO OSR5. Adding the declaration
5299 # of a `struct statvfs' causes this test to fail (as it should) on such
5300 # systems. That system is reported to work fine with STAT_STATFS4 which
5301 # is what it gets when this test fails.
5302 if test $space = no; then
5304 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5305 [AC_TRY_LINK([#include <sys/types.h>
5306 #include <sys/statvfs.h>],
5307 [struct statvfs fsd; statvfs (0, &fsd);],
5308 fu_cv_sys_stat_statvfs=yes,
5309 fu_cv_sys_stat_statvfs=no)])
5310 if test $fu_cv_sys_stat_statvfs = yes; then
5312 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5316 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5317 # This is not the case on ancient Linux systems.
5319 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5320 AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5321 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5322 if test x"$samba_cv_fsid_int" = x"yes"; then
5323 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5326 if test $space = no; then
5327 # DEC Alpha running OSF/1
5328 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5329 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5331 #include <sys/param.h>
5332 #include <sys/types.h>
5333 #include <sys/mount.h>
5338 exit (statfs (".", &fsd, sizeof (struct statfs)));
5340 fu_cv_sys_stat_statfs3_osf1=yes,
5341 fu_cv_sys_stat_statfs3_osf1=no,
5342 fu_cv_sys_stat_statfs3_osf1=no)])
5343 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5344 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5346 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5350 if test $space = no; then
5352 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5353 member (AIX, 4.3BSD)])
5354 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5356 #ifdef HAVE_SYS_PARAM_H
5357 #include <sys/param.h>
5359 #ifdef HAVE_SYS_MOUNT_H
5360 #include <sys/mount.h>
5362 #ifdef HAVE_SYS_VFS_H
5363 #include <sys/vfs.h>
5369 exit (statfs (".", &fsd));
5371 fu_cv_sys_stat_statfs2_bsize=yes,
5372 fu_cv_sys_stat_statfs2_bsize=no,
5373 fu_cv_sys_stat_statfs2_bsize=no)])
5374 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5375 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5377 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5381 if test $space = no; then
5383 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5384 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5385 [AC_TRY_RUN([#include <sys/types.h>
5386 #include <sys/statfs.h>
5390 exit (statfs (".", &fsd, sizeof fsd, 0));
5392 fu_cv_sys_stat_statfs4=yes,
5393 fu_cv_sys_stat_statfs4=no,
5394 fu_cv_sys_stat_statfs4=no)])
5395 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5396 if test $fu_cv_sys_stat_statfs4 = yes; then
5398 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5402 if test $space = no; then
5404 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5405 member (4.4BSD and NetBSD)])
5406 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5407 [AC_TRY_RUN([#include <sys/types.h>
5408 #ifdef HAVE_SYS_PARAM_H
5409 #include <sys/param.h>
5411 #ifdef HAVE_SYS_MOUNT_H
5412 #include <sys/mount.h>
5418 exit (statfs (".", &fsd));
5420 fu_cv_sys_stat_statfs2_fsize=yes,
5421 fu_cv_sys_stat_statfs2_fsize=no,
5422 fu_cv_sys_stat_statfs2_fsize=no)])
5423 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5424 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5426 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5430 if test $space = no; then
5432 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5433 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5434 [AC_TRY_RUN([#include <sys/types.h>
5435 #ifdef HAVE_SYS_PARAM_H
5436 #include <sys/param.h>
5438 #ifdef HAVE_SYS_MOUNT_H
5439 #include <sys/mount.h>
5441 #ifdef HAVE_SYS_FS_TYPES_H
5442 #include <sys/fs_types.h>
5447 /* Ultrix's statfs returns 1 for success,
5448 0 for not mounted, -1 for failure. */
5449 exit (statfs (".", &fsd) != 1);
5451 fu_cv_sys_stat_fs_data=yes,
5452 fu_cv_sys_stat_fs_data=no,
5453 fu_cv_sys_stat_fs_data=no)])
5454 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5455 if test $fu_cv_sys_stat_fs_data = yes; then
5457 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5462 # As a gating factor for large file support, in order to
5463 # use <4GB files we must have the following minimal support
5465 # long long, and a 64 bit off_t or off64_t.
5466 # If we don't have all of these then disable large
5469 AC_MSG_CHECKING([if large file support can be enabled])
5471 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5472 #include <sys/types.h>
5478 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5479 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5480 AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5482 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5484 #################################################
5485 # check for cluster extensions
5487 AC_MSG_CHECKING(whether to include cluster support)
5488 AC_ARG_WITH(cluster-support,
5489 [ --with-cluster-support Enable cluster extensions (default=no)])
5490 if test "x$with_cluster_support" = "xyes"; then
5491 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5498 #################################################
5499 # check for ACL support
5501 AC_MSG_CHECKING(whether to support ACLs)
5502 AC_ARG_WITH(acl-support,
5503 [ --with-acl-support Include ACL support (default=auto)],
5504 [ case "$withval" in
5506 with_acl_support="$withval"
5510 if test x"$with_acl_support" = x ; then
5511 with_acl_support="auto"
5514 AC_MSG_RESULT($with_acl_support)
5516 if test x"$with_acl_support" = x"no"; then
5517 AC_MSG_RESULT(Disabling ACL support)
5518 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5520 AC_MSG_NOTICE(checking whether ACL support is available:)
5523 AC_MSG_NOTICE(Using UnixWare ACLs)
5524 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5525 default_static_modules="$default_static_modules vfs_solarisacl"
5528 AC_MSG_NOTICE(Using solaris ACLs)
5529 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5530 ACL_LIBS="$ACL_LIBS -lsec"
5531 default_static_modules="$default_static_modules vfs_solarisacl"
5534 AC_MSG_NOTICE(Using HPUX ACLs)
5535 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5536 default_static_modules="$default_static_modules vfs_hpuxacl"
5539 AC_MSG_NOTICE(Using IRIX ACLs)
5540 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5541 default_static_modules="$default_static_modules vfs_irixacl"
5544 AC_MSG_NOTICE(Using AIX ACLs)
5545 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5546 default_static_modules="$default_static_modules vfs_aixacl"
5549 AC_MSG_NOTICE(Using Tru64 ACLs)
5550 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5551 ACL_LIBS="$ACL_LIBS -lpacl"
5552 default_static_modules="$default_static_modules vfs_tru64acl"
5555 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5556 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5559 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5562 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5565 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5567 LIBS="$LIBS $ACL_LIBS"
5569 #include <sys/types.h>
5570 #include <sys/acl.h>
5574 acl_entry_t *entry_p;
5575 return acl_get_entry(acl, entry_id, entry_p);
5577 [samba_cv_HAVE_POSIX_ACLS=yes],
5578 [samba_cv_HAVE_POSIX_ACLS=no])
5581 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5582 AC_MSG_NOTICE(Using posix ACLs)
5583 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5584 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5586 LIBS="$LIBS $ACL_LIBS"
5588 #include <sys/types.h>
5589 #include <sys/acl.h>
5591 acl_permset_t permset_d;
5593 return acl_get_perm_np(permset_d, perm);
5595 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5596 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5599 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5600 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5602 default_static_modules="$default_static_modules vfs_posixacl"
5604 AC_MSG_NOTICE(ACL support is not avaliable)
5605 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5609 fi # with_acl_support
5613 #################################################
5614 # check for AIO support
5616 AC_MSG_CHECKING(whether to support asynchronous io)
5617 AC_ARG_WITH(aio-support,
5618 [ --with-aio-support Include asynchronous io support (default=no)],
5619 [ case "$withval" in
5626 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5627 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5628 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5631 AC_TRY_LINK([#include <sys/types.h>
5633 [ struct aiocb a; return aio_read(&a);],
5634 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5636 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5639 AC_TRY_LINK([#include <sys/types.h>
5641 [ struct aiocb64 a; return aio_read64(&a);],
5642 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5644 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5645 AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5646 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5648 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5649 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5653 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5654 AC_MSG_CHECKING(for aio_read)
5655 AC_LINK_IFELSE([#include <aio.h>
5656 int main() { struct aiocb a; return aio_read(&a); }],
5657 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5658 [AC_MSG_RESULT(no)])
5660 AC_MSG_CHECKING(for aio_write)
5661 AC_LINK_IFELSE([#include <aio.h>
5662 int main() { struct aiocb a; return aio_write(&a); }],
5663 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5664 [AC_MSG_RESULT(no)])
5666 AC_MSG_CHECKING(for aio_fsync)
5667 AC_LINK_IFELSE([#include <aio.h>
5668 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5669 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5670 [AC_MSG_RESULT(no)])
5672 AC_MSG_CHECKING(for aio_return)
5673 AC_LINK_IFELSE([#include <aio.h>
5674 int main() { struct aiocb a; return aio_return(&a); }],
5675 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5676 [AC_MSG_RESULT(no)])
5678 AC_MSG_CHECKING(for aio_error)
5679 AC_LINK_IFELSE([#include <aio.h>
5680 int main() { struct aiocb a; return aio_error(&a); }],
5681 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5682 [AC_MSG_RESULT(no)])
5684 AC_MSG_CHECKING(for aio_cancel)
5685 AC_LINK_IFELSE([#include <aio.h>
5686 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5687 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5688 [AC_MSG_RESULT(no)])
5690 AC_MSG_CHECKING(for aio_suspend)
5691 AC_LINK_IFELSE([#include <aio.h>
5692 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5693 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5694 [AC_MSG_RESULT(no)])
5697 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5698 AC_MSG_CHECKING(for aio_read64)
5699 AC_LINK_IFELSE([#include <aio.h>
5700 int main() { struct aiocb a; return aio_read64(&a); }],
5701 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5702 [AC_MSG_RESULT(no)])
5704 AC_MSG_CHECKING(for aio_write64)
5705 AC_LINK_IFELSE([#include <aio.h>
5706 int main() { struct aiocb a; return aio_write64(&a); }],
5707 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5708 [AC_MSG_RESULT(no)])
5710 AC_MSG_CHECKING(for aio_fsync64)
5711 AC_LINK_IFELSE([#include <aio.h>
5712 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5713 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5714 [AC_MSG_RESULT(no)])
5716 AC_MSG_CHECKING(for aio_return64)
5717 AC_LINK_IFELSE([#include <aio.h>
5718 int main() { struct aiocb a; return aio_return64(&a); }],
5719 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5720 [AC_MSG_RESULT(no)])
5722 AC_MSG_CHECKING(for aio_error64)
5723 AC_LINK_IFELSE([#include <aio.h>
5724 int main() { struct aiocb a; return aio_error64(&a); }],
5725 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5726 [AC_MSG_RESULT(no)])
5728 AC_MSG_CHECKING(for aio_cancel64)
5729 AC_LINK_IFELSE([#include <aio.h>
5730 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5731 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5732 [AC_MSG_RESULT(no)])
5734 AC_MSG_CHECKING(for aio_suspend64)
5735 AC_LINK_IFELSE([#include <aio.h>
5736 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5737 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5738 [AC_MSG_RESULT(no)])
5745 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5748 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5752 #################################################
5753 # check for sendfile support
5755 with_sendfile_support=yes
5756 AC_MSG_CHECKING(whether to check to support sendfile)
5757 AC_ARG_WITH(sendfile-support,
5758 [ --with-sendfile-support Check for sendfile support (default=yes)],
5759 [ case "$withval" in
5766 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5767 AC_TRY_LINK([#include <sys/sendfile.h>],
5772 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5774 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5776 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5777 AC_TRY_LINK([#include <sys/sendfile.h>],
5782 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5784 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5786 # Try and cope with broken Linux sendfile....
5787 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5789 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5790 #undef _FILE_OFFSET_BITS
5792 #include <sys/sendfile.h>],
5797 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5799 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5801 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5802 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5803 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5804 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5805 elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5806 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5807 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5808 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5809 elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5810 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5811 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5817 *freebsd* | *dragonfly* )
5818 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5820 #include <sys/types.h>
5822 #include <sys/socket.h>
5823 #include <sys/uio.h>],
5825 int fromfd, tofd, ret, total=0;
5826 off_t offset, nwritten;
5829 hdr.headers = &hdtrl;
5831 hdr.trailers = NULL;
5833 hdtrl.iov_base = NULL;
5835 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5837 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5839 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5840 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5841 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5842 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5849 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5851 #include <sys/socket.h>
5852 #include <sys/uio.h>],
5856 struct iovec hdtrl[2];
5860 hdtrl[0].iov_base = 0;
5861 hdtrl[0].iov_len = 0;
5863 nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5865 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5866 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5867 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5868 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5869 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5874 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5876 #include <sys/socket.h>
5877 #include <sys/uio.h>],
5881 struct iovec hdtrl[2];
5885 hdtrl[0].iov_base = 0;
5886 hdtrl[0].iov_len = 0;
5888 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5890 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5891 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5892 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5893 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5894 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5901 AC_CHECK_LIB(sendfile,sendfilev)
5902 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5904 #include <sys/sendfile.h>],
5908 struct sendfilevec vec[2];
5914 vec[0].sfv_fd = SFV_FD_SELF;
5915 vec[0].sfv_flag = 0;
5920 vec[1].sfv_flag = 0;
5923 nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5925 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5927 if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5928 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5929 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5930 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5935 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5937 #include <sys/sendfile.h>],
5941 struct sendfilevec vec[2];
5947 vec[0].sfv_fd = SFV_FD_SELF;
5948 vec[0].sfv_flag = 0;
5953 vec[1].sfv_flag = 0;
5956 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5958 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5960 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5961 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5962 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5963 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5969 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5971 #include <sys/socket.h>],
5975 struct sf_parms hdtrl;
5979 hdtrl.header_data = 0;
5980 hdtrl.header_length = 0;
5981 hdtrl.file_descriptor = fromfd;
5982 hdtrl.file_offset = 0;
5983 hdtrl.file_bytes = 0;
5984 hdtrl.trailer_data = 0;
5985 hdtrl.trailer_length = 0;
5987 nwritten = send_file(&tofd, &hdtrl, 0);
5989 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5990 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5991 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5992 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5993 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
6009 ############################################
6010 # See if we have the Linux readahead syscall.
6012 AC_CACHE_CHECK([for Linux readahead],
6013 samba_cv_HAVE_LINUX_READAHEAD,[
6015 #if defined(HAVE_UNISTD_H)
6018 #include <fcntl.h>],
6019 [ssize_t err = readahead(0,0,0x80000);],
6020 samba_cv_HAVE_LINUX_READAHEAD=yes,
6021 samba_cv_HAVE_LINUX_READAHEAD=no)])
6023 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
6024 AC_DEFINE(HAVE_LINUX_READAHEAD,1,
6025 [Whether Linux readahead is available])
6028 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
6030 ############################################
6031 # See if we have the posix_fadvise syscall.
6033 AC_CACHE_CHECK([for posix_fadvise],
6034 samba_cv_HAVE_POSIX_FADVISE,[
6036 #if defined(HAVE_UNISTD_H)
6039 #include <fcntl.h>],
6040 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
6041 samba_cv_HAVE_POSIX_FADVISE=yes,
6042 samba_cv_HAVE_POSIX_FADVISE=no)])
6044 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
6045 AC_DEFINE(HAVE_POSIX_FADVISE,1,
6046 [Whether posix_fadvise is available])
6051 #################################################
6052 # Check whether winbind is supported on this platform. If so we need to
6053 # build and install client programs, sbin programs and shared libraries
6055 AC_MSG_CHECKING(whether to build winbind)
6057 # Initially, the value of $host_os decides whether winbind is supported
6061 # Define the winbind shared library name and any specific linker flags
6062 # it needs to be built with.
6064 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
6065 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
6066 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
6067 NSSSONAMEVERSIONSUFFIX=""
6068 WINBIND_NSS_PTHREAD=""
6072 NSSSONAMEVERSIONSUFFIX=".2"
6073 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
6076 # FreeBSD winbind client is implemented as a wrapper around
6077 # the Linux version.
6078 NSSSONAMEVERSIONSUFFIX=".1"
6079 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
6080 nsswitch/winbind_nss_linux.o"
6081 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
6082 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
6086 # NetBSD winbind client is implemented as a wrapper
6087 # around the Linux version. It needs getpwent_r() to
6088 # indicate libc's use of the correct nsdispatch API.
6090 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
6091 WINBIND_NSS_EXTRA_OBJS="\
6092 nsswitch/winbind_nss_netbsd.o \
6093 nsswitch/winbind_nss_linux.o"
6094 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
6095 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
6098 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6102 # IRIX has differently named shared libraries
6103 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
6104 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
6105 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
6108 # Solaris winbind client is implemented as a wrapper around
6109 # the Linux version.
6110 NSSSONAMEVERSIONSUFFIX=".1"
6111 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
6112 nsswitch/winbind_nss_linux.o"
6113 WINBIND_NSS_EXTRA_LIBS="-lsocket"
6116 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
6119 # AIX has even differently named shared libraries. No
6120 # WINS support has been implemented yet.
6121 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
6122 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6123 WINBIND_NSS="nsswitch/WINBIND"
6128 winbind_no_reason=", unsupported on $host_os"
6132 # Check the setting of --with-winbind
6134 AC_ARG_WITH(winbind,
6135 [ --with-winbind Build winbind (default, if supported by OS)],
6148 # We need unix domain sockets for winbind
6150 if test x"$HAVE_WINBIND" = x"yes"; then
6151 if test x"$samba_cv_unixsocket" = x"no"; then
6152 winbind_no_reason=", no unix domain socket support on $host_os"
6157 # Display test results
6159 if test x"$HAVE_WINBIND" = x"no"; then
6164 BUILD_LIBWBCLIENT_SHARED=yes
6166 AC_ARG_ENABLE(libwbclient-shared,
6167 [ --enable-libwbclient-shared Build libwbclient as shared object (default=yes, \"no\" only for --enable-developer)],
6168 [if eval "test x$enable_developer = xyes -a x$enable_libwbclient_shared = xno" ; then
6169 BUILD_LIBWBCLIENT_SHARED=no
6172 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6173 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6174 ## Only worry about libwbclient if we have shared library support
6176 LIBWBCLIENT_SHARED=bin/libwbclient.$SHLIBEXT
6177 LIBWBCLIENT=libwbclient
6178 INSTALL_LIBWBCLIENT=installlibwbclient
6179 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6180 WINBIND_LIBS="-lwbclient"
6181 LDFLAGS="$LDFLAGS -L./bin"
6183 LIBWBCLIENT_STATIC=bin/libwbclient.a
6186 if test x"$HAVE_WINBIND" = x"yes"; then
6188 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6190 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6191 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6192 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6193 PAM_MODULES="$PAM_MODULES pam_winbind"
6194 INSTALL_PAM_MODULES="installpammodules"
6195 UNINSTALL_PAM_MODULES="uninstallpammodules"
6198 AC_MSG_RESULT(no$winbind_no_reason)
6201 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
6202 AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
6204 AC_SUBST(WINBIND_NSS_PTHREAD)
6205 AC_SUBST(WINBIND_NSS)
6206 AC_SUBST(WINBIND_WINS_NSS)
6207 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6208 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6209 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
6210 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6212 AC_SUBST(WINBIND_KRB5_LOCATOR)
6214 # Solaris 10 does have new member in nss_XbyY_key
6215 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6216 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6217 [#include <nss_dbdefs.h>])
6219 # Solaris has some extra fields in struct passwd that need to be
6220 # initialised otherwise nscd crashes.
6222 AC_CHECK_MEMBER(struct passwd.pw_comment,
6223 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6226 AC_CHECK_MEMBER(struct passwd.pw_age,
6227 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6230 # AIX 4.3.x and 5.1 do not have as many members in
6231 # struct secmethod_table as AIX 5.2
6232 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6233 [#include <usersec.h>])
6234 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6235 [#include <usersec.h>])
6237 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6238 AC_TRY_COMPILE([#include <sys/types.h>
6239 #include <sys/socket.h>],
6242 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6244 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6245 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6246 AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6250 #################################################
6251 # Check to see if we should use the included popt
6253 AC_ARG_WITH(included-popt,
6254 [ --with-included-popt use bundled popt library, not from system],
6265 if test x"$INCLUDED_POPT" != x"yes"; then
6266 AC_CHECK_LIB(popt, poptGetContext,
6267 INCLUDED_POPT=no, INCLUDED_POPT=yes)
6270 AC_MSG_CHECKING(whether to use included popt)
6271 if test x"$INCLUDED_POPT" = x"yes"; then
6273 BUILD_POPT='$(POPT_OBJ)'
6274 POPTLIBS='$(POPT_OBJ)'
6275 FLAGS1="-I\$(srcdir)/popt"
6281 AC_SUBST(BUILD_POPT)
6285 #################################################
6286 # Check if user wants DNS service discovery support
6288 AC_ARG_ENABLE(dnssd,
6289 [ --enable-dnssd Enable DNS service discovery support (default=auto)])
6291 AC_SUBST(DNSSD_LIBS)
6292 if test x"$enable_dnssd" != x"no"; then
6293 have_dnssd_support=yes
6295 AC_CHECK_HEADERS(dns_sd.h)
6296 if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6297 have_dnssd_support=no
6300 # On Darwin the DNSSD API is in libc, but on other platforms it's
6301 # probably in -ldns_sd
6302 AC_CHECK_FUNCS(DNSServiceRegister)
6303 AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6304 if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6305 x"$ac_cv_lib_ext_DNSServiceRegister" != x"yes"; then
6306 have_dnssd_support=no
6309 if test x"$have_dnssd_support" = x"yes"; then
6310 AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6311 [Whether to enable DNS service discovery support])
6313 if test x"$enable_dnssd" = x"yes"; then
6314 AC_MSG_ERROR(DNS service discovery support not available)
6320 #################################################
6321 # Check to see if we should use the included iniparser
6323 AC_ARG_WITH(included-iniparser,
6324 [ --with-included-iniparser use bundled iniparser library, not from system],
6328 INCLUDED_INIPARSER=yes
6331 INCLUDED_INIPARSER=no
6335 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6336 AC_CHECK_LIB(iniparser, iniparser_load,
6337 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6340 AC_MSG_CHECKING(whether to use included iniparser)
6341 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6343 BUILD_INIPARSER='$(INIPARSER_OBJ)'
6345 FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6349 INIPARSERLIBS="-liniparser"
6351 AC_SUBST(BUILD_INIPARSER)
6352 AC_SUBST(INIPARSERLIBS)
6357 # Checks for the vfs_fileid module
6359 AC_CHECK_FUNC(getmntent)
6361 AC_CHECK_HEADERS(sys/statfs.h)
6363 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6364 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6366 #include <sys/types.h>
6367 #include <sys/statfs.h>
6371 fsid_t fsid = fsd.f_fsid;
6372 return statfs (".", &fsd);
6374 vfsfileid_cv_statfs=yes,
6375 vfsfileid_cv_statfs=no,
6376 vfsfileid_cv_statfs=cross)
6378 AC_MSG_RESULT($vfsfileid_cv_statfs)
6380 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6381 x"$vfsfileid_cv_statfs" = x"yes"; then
6382 default_shared_modules="$default_shared_modules vfs_fileid"
6385 # Checks for the vfs_fileid module
6388 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6390 eval MODULE_DEFAULT_$i=STATIC
6393 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6395 dnl Fall back to static if we cannot build shared libraries
6396 eval MODULE_DEFAULT_$i=STATIC
6398 if test $BLDSHARED = true; then
6399 eval MODULE_DEFAULT_$i=SHARED
6403 dnl Always built these modules static
6404 MODULE_rpc_spoolss=STATIC
6405 MODULE_rpc_srvsvc2=STATIC
6406 MODULE_idmap_tdb=STATIC
6407 MODULE_idmap_passdb=STATIC
6408 MODULE_idmap_nss=STATIC
6410 MODULE_nss_info_template=STATIC
6412 AC_ARG_WITH(static-modules,
6413 [ --with-static-modules=MODULES Comma-separated list of names of modules to statically link in],
6414 [ if test $withval; then
6415 for i in `echo $withval | sed -e 's/,/ /g'`
6417 eval MODULE_$i=STATIC
6421 AC_ARG_WITH(shared-modules,
6422 [ --with-shared-modules=MODULES Comma-separated list of names of modules to build shared],
6423 [ if test $withval; then
6424 for i in `echo $withval | sed -e 's/,/ /g'`
6426 eval MODULE_$i=SHARED
6430 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6431 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6432 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6433 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6434 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6437 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6438 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6439 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6440 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
6441 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6442 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
6443 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6444 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6445 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6446 SMB_MODULE(rpc_srvsvc2, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc2.$SHLIBEXT", RPC)
6447 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6448 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
6449 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6450 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6451 SMB_SUBSYSTEM(RPC,smbd/server.o)
6453 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6454 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6455 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6456 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6457 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6458 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6459 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6461 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6462 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6464 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6465 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6466 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6467 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6468 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6470 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6471 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6472 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6473 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6474 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6475 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6476 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6477 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6479 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6480 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6481 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6482 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6483 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6484 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6485 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6486 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6487 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6488 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6489 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6490 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6491 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6492 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6493 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6494 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6495 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6496 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6497 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6498 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6499 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6500 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6501 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6502 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6503 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6504 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6505 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6506 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6507 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6508 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6511 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6513 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6515 #################################################
6516 # do extra things if we are running insure
6518 if test "${ac_cv_prog_CC}" = "insure"; then
6519 CPPFLAGS="$CPPFLAGS -D__INSURE__"
6522 #################################################
6523 # If run from the build farm, enable NASTY hacks
6524 #################################################
6525 AC_MSG_CHECKING(whether to enable build farm hacks)
6526 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6528 AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6533 #################################################
6534 # check for bad librt/libpthread interactions
6536 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6537 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6538 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6539 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6541 SMB_IF_RTSIGNAL_BUG(
6543 # Have RT_SIGNAL bug, need to check whether the problem will
6544 # affect anything we have configured.
6547 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6548 if test x"$rt_signal_lease_ok" = x"no" ; then
6553 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6554 if test x"$rt_signal_notify_ok" = x"no" ; then
6559 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6560 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6561 if test x"$rt_signal_aio_ok" = x"no" ; then
6566 if test x"$rt_do_error" = x"yes" ; then
6567 SMB_IS_LIBPTHREAD_LINKED(
6571 *** On this platforms, linking Samba against pthreads causes problems
6572 *** with the oplock and change notification mechanisms. You may be
6573 *** using pthreads as a side-effect of using the --with-aio-support
6574 *** or --with-profiling-data options. Please remove these and try again.
6581 *** On this platform, the oplock and change notification mechanisms do not
6582 *** appear to work. Please report this problem to samba-technical@samba.org
6583 *** and attach the config.log file from this directory.
6587 AC_MSG_ERROR(unable to use realtime signals on this platform)
6591 # no RT_SIGNAL bug, we are golden
6592 SMB_IS_LIBPTHREAD_LINKED(
6594 AC_MSG_WARN(using libpthreads - this may degrade performance)
6599 # cross compiling, I hope you know what you are doing
6605 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6606 LIB_REMOVE_USR_LIB(LDFLAGS)
6607 LIB_REMOVE_USR_LIB(LIBS)
6608 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6610 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6611 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6612 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6614 #################################################
6615 # Display summary of libraries detected
6617 AC_MSG_RESULT([Using libraries:])
6618 AC_MSG_RESULT([ LIBS = $LIBS])
6619 if test x"$with_ads_support" != x"no"; then
6620 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6622 if test x"$with_ldap_support" != x"no"; then
6623 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6625 if test x"$with_dnsupdate_support" != x"no"; then
6626 AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS])
6628 if test x"$have_dnssd_support" != x"no"; then
6629 AC_MSG_RESULT([ DNSSD_LIBS = $DNSSD_LIBS])
6631 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6633 #################################################
6634 # final configure stuff
6636 AC_MSG_CHECKING([configure summary])
6637 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6639 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6640 AC_MSG_WARN([cannot run when cross-compiling]))
6642 dnl Merge in developer cflags from now on
6643 AC_SUBST(DEVELOPER_CFLAGS)
6644 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
6645 CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6651 # Stuff the smbd-only libraries at the end of the smbd link
6652 # path (if we have them).
6653 SMBD_LIBS="$samba_dmapi_libs"
6656 AC_OUTPUT(Makefile library-versions
6657 script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6658 lib/netapi/examples/Makefile
6659 pkgconfig/smbclient.pc pkgconfig/netapi.pc pkgconfig/smbsharemodes.pc
6662 #################################################
6663 # Print very concise instructions on building/use
6664 if test "x$enable_dmalloc" = xyes
6666 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
6667 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])