1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.53 or above
6 AC_INIT([Samba],[3],[samba-technical@samba.org])
8 AC_CONFIG_SRCDIR([include/includes.h])
9 AC_CONFIG_HEADER(include/config.h)
10 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
14 AC_MSG_WARN([\$PATH contains /usr/ucb - build errors may follow])
18 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
19 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
21 SAMBA_VERSION_GIT_COMMIT_FULLREV=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_GIT_COMMIT_FULLREV' | cut -d ' ' -f3- | cut -d '"' -f2`
22 if test -n "${SAMBA_VERSION_GIT_COMMIT_FULLREV}";then
23 echo "BUILD COMMIT REVISION: ${SAMBA_VERSION_GIT_COMMIT_FULLREV}"
25 SAMBA_VERSION_GIT_COMMIT_DATE=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_GIT_COMMIT_DATE' | cut -d ' ' -f3-`
26 if test -n "${SAMBA_VERSION_GIT_COMMIT_DATE}";then
27 echo "BUILD COMMIT DATE: ${SAMBA_VERSION_GIT_COMMIT_DATE}"
29 SAMBA_VERSION_GIT_COMMIT_TIME=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_GIT_COMMIT_TIME' | cut -d ' ' -f3-`
30 if test -n "${SAMBA_VERSION_GIT_COMMIT_TIME}";then
31 echo "BUILD COMMIT TIME: ${SAMBA_VERSION_GIT_COMMIT_TIME}"
33 # just to keep the build-farm gui happy for now...
34 echo "BUILD REVISION: ${SAMBA_VERSION_GIT_COMMIT_TIME}"
37 AC_LIBREPLACE_LOCATION_CHECKS
42 #################################################
43 # Directory handling stuff to support both the
44 # legacy SAMBA directories and FHS compliant
46 AC_PREFIX_DEFAULT(/usr/local/samba)
48 rootsbindir="\${SBINDIR}"
49 lockdir="\${VARDIR}/locks"
50 piddir="\${VARDIR}/locks"
51 test "${mandir}" || mandir="\${prefix}/man"
52 logfilebase="\${VARDIR}"
53 privatedir="\${prefix}/private"
54 test "${libdir}" || libdir="\${prefix}/lib"
55 pammodulesdir="\${LIBDIR}/security"
56 configdir="\${LIBDIR}"
57 swatdir="\${prefix}/swat"
58 codepagedir="\${LIBDIR}"
59 statedir="\${LOCKDIR}"
60 cachedir="\${LOCKDIR}"
63 [ --with-fhs Use FHS-compliant paths (default=no)],
66 lockdir="\${VARDIR}/lib/samba"
67 piddir="\${VARDIR}/run"
68 mandir="\${prefix}/share/man"
69 logfilebase="\${VARDIR}/log/samba"
70 privatedir="\${CONFIGDIR}/private"
71 test "${libdir}" || libdir="\${prefix}/lib/samba"
72 configdir="\${sysconfdir}/samba"
73 swatdir="\${DATADIR}/samba/swat"
74 codepagedir="\${LIBDIR}"
75 statedir="\${VARDIR}/lib/samba"
76 cachedir="\${VARDIR}/lib/samba"
77 AC_DEFINE(FHS_COMPATIBLE, 1, [Whether to use fully FHS-compatible paths])
81 #################################################
82 # set private directory location
83 AC_ARG_WITH(privatedir,
84 [ --with-privatedir=DIR Where to put smbpasswd ($ac_default_prefix/private)],
88 # Just in case anybody calls it without argument
90 AC_MSG_WARN([--with-privatedir called without argument - will use default])
97 #################################################
98 # set root sbin directory location
99 AC_ARG_WITH(rootsbindir,
100 [ --with-rootsbindir=DIR Which directory to use for root sbin ($ac_default_prefix/sbin)],
104 # Just in case anybody calls it without argument
106 AC_MSG_WARN([--with-rootsbindir called without argument - will use default])
109 rootsbindir="$withval"
113 #################################################
114 # set lock directory location
116 [ --with-lockdir=DIR Where to put lock files ($ac_default_prefix/var/locks)],
120 # Just in case anybody calls it without argument
122 AC_MSG_WARN([--with-lockdir called without argument - will use default])
129 #################################################
130 # set pid directory location
132 [ --with-piddir=DIR Where to put pid files ($ac_default_prefix/var/locks)],
136 # Just in case anybody calls it without argument
138 AC_MSG_WARN([--with-piddir called without argument - will use default])
145 #################################################
146 # set SWAT directory location
148 [ --with-swatdir=DIR Where to put SWAT files ($ac_default_prefix/swat)],
152 # Just in case anybody does it
154 AC_MSG_WARN([--with-swatdir called without argument - will use default])
161 #################################################
162 # set configuration directory location
163 AC_ARG_WITH(configdir,
164 [ --with-configdir=DIR Where to put configuration files ($libdir)],
168 # Just in case anybody does it
170 AC_MSG_WARN([--with-configdir called without argument - will use default])
177 #################################################
178 # set log directory location
179 AC_ARG_WITH(logfilebase,
180 [ --with-logfilebase=DIR Where to put log files ($VARDIR)],
184 # Just in case anybody does it
186 AC_MSG_WARN([--with-logfilebase called without argument - will use default])
189 logfilebase="$withval"
194 #################################################
195 # set ctdb source directory location
197 [ --with-ctdb=DIR Where to find ctdb sources],
200 AC_MSG_WARN([--with-ctdb called without argument])
207 #################################################
208 # set lib directory location
210 [ --with-libdir=DIR Where to put libdir ($libdir)],
214 # Just in case anybody does it
216 AC_MSG_WARN([--with-libdir without argument - will use default])
223 #################################################
224 # set PAM modules directory location
225 AC_ARG_WITH(pammodulesdir,
226 [ --with-pammodulesdir=DIR Which directory to use for PAM modules ($ac_default_prefix/$libdir/security)],
230 # Just in case anybody calls it without argument
232 AC_MSG_WARN([--with-pammodulesdir called without argument - will use default])
235 pammodulesdir="$withval"
239 #################################################
240 # set man directory location
242 [ --with-mandir=DIR Where to put man pages ($mandir)],
246 # Just in case anybody does it
248 AC_MSG_WARN([--with-mandir without argument - will use default])
256 [ --with-cfenc=HEADERDIR Use internal CoreFoundation encoding API
257 for optimization (Mac OS X/Darwin only)],
259 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
260 # Should have been in framework $withval/CoreFoundation.framework/Headers.
262 $withval/CoreFoundation/StringEncodings.subproj \
263 $withval/StringEncodings.subproj \
264 $withval/CoreFoundation.framework/Headers \
268 if test -r $d/CFStringEncodingConverter.h; then
269 ln -sfh $d include/CoreFoundation
274 AC_LIBREPLACE_CC_CHECKS
276 m4_include(lib/talloc/libtalloc.m4)
279 for obj in ${TALLOC_OBJ}; do
280 TALLOC_OBJS="${TALLOCOBJS} ${tallocdir}/${obj}"
282 AC_SUBST(TALLOC_OBJS)
284 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
285 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
286 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
287 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/tdb/include"
288 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
289 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
291 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
293 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
294 if test "x${srcdir-.}" != "x."; then
295 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
301 AC_SUBST(logfilebase)
307 AC_SUBST(codepagedir)
310 AC_SUBST(rootsbindir)
311 AC_SUBST(pammodulesdir)
313 dnl Unique-to-Samba variables we'll be playing with.
314 AC_SUBST(SAMBA_CPPFLAGS)
319 AC_SUBST(MODULE_EXPORTS)
320 AC_SUBST(DSO_EXPORTS)
324 AC_SUBST(PIE_LDFLAGS)
326 AC_SUBST(INSTALLLIBCMD_SH)
327 AC_SUBST(INSTALLLIBCMD_A)
328 AC_SUBST(UNINSTALLLIBCMD_SH)
329 AC_SUBST(UNINSTALLLIBCMD_A)
330 AC_SUBST(INSTALL_LIBADDNS)
331 AC_SUBST(UNINSTALL_LIBADDNS)
332 AC_SUBST(LIBADDNS_SHARED)
335 AC_SUBST(LIBTALLOC_STATIC_TARGET)
336 AC_SUBST(LIBTALLOC_SHARED_TARGET)
337 AC_SUBST(LIBTALLOC_SHARED)
338 AC_SUBST(LIBTALLOC_STATIC)
339 AC_SUBST(LIBTALLOC_LIBS)
341 AC_SUBST(INSTALL_LIBWBCLIENT)
342 AC_SUBST(UNINSTALL_LIBWBCLIENT)
343 AC_SUBST(LIBWBCLIENT_SHARED)
344 AC_SUBST(LIBWBCLIENT_STATIC)
345 AC_SUBST(LIBWBCLIENT)
346 AC_SUBST(WINBIND_LIBS)
348 AC_SUBST(LIBSAMBAUTIL_SHARED)
350 AC_SUBST(INSTALL_LIBSMBCLIENT)
351 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
352 AC_SUBST(LIBSMBCLIENT_SHARED)
353 AC_SUBST(LIBSMBCLIENT)
354 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
355 AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
356 AC_SUBST(LIBSMBSHAREMODES_SHARED)
357 AC_SUBST(LIBSMBSHAREMODES)
358 AC_SUBST(INSTALL_LIBNETAPI)
359 AC_SUBST(UNINSTALL_LIBNETAPI)
360 AC_SUBST(LIBNETAPI_SHARED)
365 AC_SUBST(PASSDB_LIBS)
370 AC_SUBST(PAM_MODULES)
371 AC_SUBST(INSTALL_PAM_MODULES)
372 AC_SUBST(UNINSTALL_PAM_MODULES)
373 AC_SUBST(NSS_MODULES)
374 AC_SUBST(EXTRA_BIN_PROGS)
375 AC_SUBST(SMBMOUNT_PROGS)
376 AC_SUBST(CIFSMOUNT_PROGS)
377 AC_SUBST(INSTALL_CIFSMOUNT)
378 AC_SUBST(UNINSTALL_CIFSMOUNT)
379 AC_SUBST(CIFSSPNEGO_PROGS)
380 AC_SUBST(INSTALL_CIFSSPNEGO)
381 AC_SUBST(UNINSTALL_CIFSSPNEGO)
382 AC_SUBST(EXTRA_SBIN_PROGS)
383 AC_SUBST(EXTRA_ALL_TARGETS)
384 AC_SUBST(CONFIG_LIBS)
387 ## check for --enable-debug first before checking CFLAGS before
388 ## so that we don't mix -O and -g
390 [ --enable-debug Turn on compiler debugging information (default=no)],
391 [if eval "test x$enable_debug = xyes"; then
392 CFLAGS="${CFLAGS} -g"
395 # compile with optimization and without debugging by default, but
396 # allow people to set their own preference.
397 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
398 # if it has no value. This prevent *very* large debug binaries from occurring
400 if test "x$CFLAGS" = x; then
404 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
406 m4_include(lib/socket_wrapper/config.m4)
407 m4_include(lib/nss_wrapper/config.m4)
409 SWAT_SBIN_TARGETS='bin/swat$(EXEEXT)'
410 SWAT_INSTALL_TARGETS=installswat
413 [ --enable-swat Build the SWAT tool (default=yes)],
415 case "$enable_swat" in
418 SWAT_INSTALL_TARGETS=''
423 AC_SUBST(SWAT_SBIN_TARGETS)
424 AC_SUBST(SWAT_INSTALL_TARGETS)
426 #################################################
427 # set prefix for 'make test'
429 AC_SUBST(selftest_prefix)
430 AC_ARG_WITH(selftest-prefix,
431 [ --with-selftest-prefix=DIR The prefix where make test will be run ($selftest_prefix)],
434 AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
437 selftest_prefix="$withval"
442 #################################################
443 # set path of samba4's smbtorture
445 AC_SUBST(smbtorture4_path)
446 AC_ARG_WITH(smbtorture4_path,
447 [ --with-smbtorture4-path=PATH The path to a samba4 smbtorture for make test (none)],
450 AC_MSG_ERROR([--with-smbtorture4-path should take a path])
453 smbtorture4_path="$withval"
454 if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
455 AC_MSG_ERROR(['$smbtorture_path' does not exist!])
461 AC_ARG_ENABLE(developer, [ --enable-developer Turn on developer warnings and debugging (default=no)],
462 [if eval "test x$enable_developer = xyes"; then
466 AC_ARG_ENABLE(krb5developer, [ --enable-krb5developer Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
467 [if eval "test x$enable_krb5developer = xyes"; then
472 # Probe the gcc version for extra CFLAGS. We always stash these in
473 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
474 # Makefile edit, avoiding the need to re-run configure.
475 if test x"$ac_cv_prog_gcc" = x"yes" ; then
476 DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
477 # Add -Wdeclaration-after-statement if compiler supports it
479 [that the C compiler understands -Wdeclaration-after-statement],
480 samba_cv_HAVE_Wdeclaration_after_statement, [
485 }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
486 samba_cv_HAVE_Wdeclaration_after_statement=yes,
487 samba_cv_HAVE_Wdeclaration_after_statement=no,
488 samba_cv_HAVE_Wdeclaration_after_statement=cross)
491 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
492 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
495 #-Werror-implicit-function-declaration
497 [that the C compiler understands -Werror-implicit-function-declaration],
498 samba_cv_HAVE_Werror_implicit_function_declaration, [
503 }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
504 samba_cv_HAVE_Werror_implicit_function_declaration=yes,
505 samba_cv_HAVE_Werror_implicit_function_declaration=no,
506 samba_cv_HAVE_Werror_implicit_function_declaration=cross)
508 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
509 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
512 # krb5developer is like developer, except we don't get
513 # -Wstrict-prototypes.
514 if test x"$krb5_developer" != x"$yes" ; then
515 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
519 AC_ARG_ENABLE(dmalloc, [ --enable-dmalloc Enable heap debugging [default=no]])
521 if test "x$enable_dmalloc" = xyes
523 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
524 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
525 [Define to check invariants around some common functions])
526 LIBS="$LIBS -ldmalloc"
529 #################################################
530 # check for a shared memory profiling support
531 AC_MSG_CHECKING(whether to use profiling)
532 AC_ARG_WITH(profiling-data,
533 [ --with-profiling-data Include gathering source code profile information (default=no)],
537 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
538 samba_cv_WITH_PROFILE=yes
542 samba_cv_WITH_PROFILE=no
548 dnl Checks for programs.
552 AC_PATH_PROG(PERL, perl)
554 AC_CHECK_TOOL(AR, ar)
556 dnl Check if we use GNU ld
560 dnl Certain versions of GNU ld the default is not to have the
561 dnl --allow-shlib-undefined flag defined. This causes a stackload of
562 dnl warnings when building modules.
563 if test "$ac_cv_prog_gnu_ld" = "yes"; then
564 ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
565 AC_MSG_CHECKING(GNU ld release date)
567 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'`
569 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
570 if test -n "$ac_cv_gnu_ld_date"; then
571 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
572 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
574 if test "$ac_cv_gnu_ld_date" -gt 20030101; then
575 ac_cv_gnu_ld_version_script=yes
578 AC_MSG_CHECKING(GNU ld release version)
580 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
581 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
582 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
584 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
585 AC_MSG_CHECKING(GNU ld release version major)
586 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
587 AC_MSG_CHECKING(GNU ld release version minor)
588 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
589 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
590 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
592 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
593 ac_cv_gnu_ld_version_script=yes
598 dnl look for executable suffix
601 dnl Check if C compiler understands -c and -o at the same time
603 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
610 dnl Check if the C compiler understands -Werror
611 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
616 }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
617 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
618 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
619 Werror_FLAGS="-Werror"
621 dnl Check if the C compiler understands -w2
622 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
627 }],[-w2],[$CPPFLAGS],[$LDFLAGS],
628 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
629 if test x"$samba_cv_HAVE_w2" = x"yes"; then
634 dnl Check if the C compiler understands volatile (it should, being ANSI).
635 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
636 AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
637 samba_cv_volatile=yes,samba_cv_volatile=no)])
638 if test x"$samba_cv_volatile" = x"yes"; then
639 AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
642 ############################################
643 # check if the compiler can handle negative enum values
644 # and don't truncate the values to INT_MAX
645 # a runtime test is needed here
647 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
651 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
653 enum negative_values v1 = NEGATIVE_VALUE;
654 unsigned v2 = NEGATIVE_VALUE;
656 if (v1 != 0xFFFFFFFF) {
657 printf("%u != 0xFFFFFFFF\n", v1);
660 if (v2 != 0xFFFFFFFF) {
661 printf("%u != 0xFFFFFFFF\n", v2);
668 SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
669 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
670 AC_MSG_WARN([using --unit-enums for pidl])
671 PIDL_ARGS="$PIDL_ARGS --uint-enums"
674 dnl Figure out the flags to support named structure initializers
676 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
678 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
679 AC_MSG_CHECKING(uname -s)
680 AC_MSG_RESULT(${UNAME_S})
682 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
683 AC_MSG_CHECKING(uname -r)
684 AC_MSG_RESULT(${UNAME_R})
686 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
687 AC_MSG_CHECKING(uname -m)
688 AC_MSG_RESULT(${UNAME_M})
690 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
691 AC_MSG_CHECKING(uname -p)
692 AC_MSG_RESULT(${UNAME_P})
694 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
695 AC_MSG_CHECKING(uname -i)
696 AC_MSG_RESULT(${UNAME_I})
698 dnl Add #include for broken IRIX header files
701 #TODO add to libreplace
702 if test x"$ac_cv_prog_gcc" != x"yes" ; then
703 dnl Fix sensible defaults for MIPSPro compilers. The
704 dnl error numbers are valid for the 7.3 compilers,
705 dnl hopefully also valid for the 7.4 series.
707 dnl Bugzilla 3801. Force an error on warning 1035
708 dnl so we don't incorrectly detect stdint.h. This
709 dnl warning is emitted for #error directives.
710 CFLAGS="$CFLAGS -diag_error 1035"
711 dnl 1209: Controlling expression is constant
712 dnl 1174: Function foo declared but never referenced
713 dnl 3201: Parameter foo was never referenced
714 CFLAGS="$CFLAGS -woff 1209,1174,3201"
722 dnl Add modules that have to be built by default here
723 dnl These have to be built static:
724 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_winreg rpc_initshutdown rpc_dssetup rpc_wkssvc rpc_svcctl2 rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc2 rpc_spoolss rpc_eventlog2 auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
726 dnl These are preferably build shared, and static if dlopen() is not available
727 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy vfs_shadow_copy2 charset_CP850 charset_CP437 auth_script vfs_readahead vfs_syncops vfs_xattr_tdb vfs_streams_xattr"
729 if test "x$developer" = xyes; then
730 default_static_modules="$default_static_modules rpc_rpcecho"
731 default_shared_modules="$default_shared_modules charset_weird"
735 # Config CPPFLAG settings for strange OS's that must be set
736 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
737 # case statement; its first reference must be unconditional.
742 # Defines needed for HPUX support.
743 # HPUX has bigcrypt but (sometimes?) doesn't use it for
744 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
748 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
754 # CRAY Unicos has broken const handling
756 AC_MSG_RESULT([disabling const])
757 CPPFLAGS="$CPPFLAGS -Dconst="
761 # AIX4.x doesn't even admit to having large
762 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
765 AC_MSG_RESULT([enabling large file support])
766 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
767 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
770 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
771 # to the existance of large files..
772 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
773 # recommendations on large file support, however it makes the
774 # compile work using gcc 2.7 and 2.8, whereas using the Sun
775 # recommendation makes the compile fail on gcc2.7. JRA.
777 # Solaris uses SYSV printing. Make sure to set that here. --jerry
780 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
782 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
783 AC_MSG_RESULT([no large file support])
786 AC_MSG_RESULT([enabling large file support])
787 if test "$ac_cv_prog_gcc" = yes; then
788 ${CC-cc} -v >conftest.c 2>&1
789 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
791 case "$ac_cv_gcc_compiler_version_number" in
792 *"gcc version 2.6"*|*"gcc version 2.7"*)
793 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
794 LDFLAGS="$LDFLAGS -lthread"
795 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
798 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
799 LDFLAGS="$LDFLAGS -lthread"
800 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
801 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
805 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
806 LDFLAGS="$LDFLAGS -lthread"
807 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
808 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
814 # IRIX uses SYSV printing. Make sure to set that here
817 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
819 *freebsd*|*dragonfly*)
820 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
823 # VOS may need to have POSIX support and System V compatibility enabled.
830 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
831 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
835 *-D_SYSV*|*-D_SVID_SOURCE*)
838 CPPFLAGS="$CPPFLAGS -D_SYSV"
839 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
843 # Tests needed for SINIX large file support.
846 if test $host = mips-sni-sysv4 ; then
847 AC_MSG_CHECKING([for LFS support])
848 old_CPPFLAGS="$CPPFLAGS"
849 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
853 #if _LFS64_LARGEFILE == 1
858 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
859 CPPFLAGS="$old_CPPFLAGS"
860 if test x$SINIX_LFS_SUPPORT = xyes ; then
861 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
862 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
863 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
864 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
865 LIBS="`getconf LFS64_LIBS` $LIBS"
867 AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
871 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
874 AC_MSG_CHECKING([for LFS support])
875 old_CPPFLAGS="$CPPFLAGS"
876 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
879 #include <sys/utsname.h>
883 #if _LFS64_LARGEFILE == 1
888 /* Ensure this is glibc 2.2 or higher */
889 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
890 int libc_major = __GLIBC__;
891 int libc_minor = __GLIBC_MINOR__;
899 /* Ensure this is kernel 2.4 or higher */
902 release = strdup(uts.release);
903 major = atoi(strsep(&release, "."));
904 minor = atoi(strsep(&release, "."));
906 if (major > 2 || (major == 2 && minor > 3))
913 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
914 CPPFLAGS="$old_CPPFLAGS"
915 if test x$LINUX_LFS_SUPPORT = xyes ; then
916 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
917 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
918 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
919 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
921 AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
925 # MacOS X is the *only* system that uses compose character in utf8. This
926 # is so horribly broken....
929 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
931 # Add a system specific charset module.
932 default_shared_modules="$default_shared_modules charset_macosxfs"
936 AC_MSG_CHECKING([for LFS support])
937 old_CPPFLAGS="$CPPFLAGS"
938 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
942 #if _LFS64_LARGEFILE == 1
947 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
948 CPPFLAGS="$old_CPPFLAGS"
949 if test x$GLIBC_LFS_SUPPORT = xyes ; then
950 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
951 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
952 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
954 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
959 AC_LIBREPLACE_BROKEN_CHECKS
961 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
964 for obj in ${LIBREPLACEOBJ}; do
965 LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
967 AC_SUBST(LIBREPLACE_OBJS)
969 # add -ldl to the global LIBS
970 LIBS="${LIBS} ${LIBDL}"
972 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)
973 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
974 AC_CHECK_HEADERS(limits.h float.h pthread.h)
975 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
976 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
977 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
978 AC_CHECK_HEADERS(sys/un.h ifaddrs.h)
979 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
980 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
981 AC_CHECK_HEADERS(sys/sysmacros.h)
982 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
983 AC_CHECK_HEADERS(langinfo.h locale.h)
984 AC_CHECK_HEADERS(xfs/libxfs.h)
985 AC_CHECK_HEADERS(netgroup.h)
987 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
993 ## These fail to compile on IRIX so just check for their presence
994 AC_CHECK_HEADERS(sys/mode.h,,,)
996 # Look for Darwin headers
997 old_CPPFLAGS="$CPPFLAGS"
998 CPPFLAGS="-Iinclude $CPPFLAGS"
999 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
1000 CPPFLAGS="$old_CPPFLAGS"
1002 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
1003 # subdirectory of headers.
1004 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
1006 # check for linux on amd64 since valgrind is not quite there yet
1011 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
1019 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
1020 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
1024 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
1025 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
1026 if test x"$ac_cv_header_shadow_h" = x"yes"; then
1027 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
1031 AC_CHECK_HEADERS(shadow.h)
1032 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
1033 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
1035 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
1036 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
1038 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
1040 # For experimental utmp support (lastlog on some BSD-like systems)
1041 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
1043 AC_CHECK_SIZEOF(int,cross)
1044 AC_CHECK_SIZEOF(long,cross)
1045 AC_CHECK_SIZEOF(long long,cross)
1046 AC_CHECK_SIZEOF(short,cross)
1061 AC_CHECK_TYPE(ino_t,unsigned)
1062 AC_CHECK_TYPE(loff_t,off_t)
1063 AC_CHECK_TYPE(offset_t,loff_t)
1064 AC_CHECK_TYPE(ssize_t, int)
1065 AC_CHECK_TYPE(wchar_t, unsigned short)
1066 AC_CHECK_TYPE(comparison_fn_t,
1067 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
1069 ############################################
1070 # for cups support we need libcups, and a handful of header files
1073 [ --enable-cups Turn on CUPS support (default=auto)])
1075 if test x$enable_cups != xno; then
1076 AC_PATH_PROG(CUPS_CONFIG, cups-config)
1078 if test "x$CUPS_CONFIG" != x; then
1079 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
1080 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
1081 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
1082 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
1083 elif test x"$enable_cups" = x"yes"; then
1084 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
1088 AC_ARG_ENABLE(iprint,
1089 [ --enable-iprint Turn on iPrint support (default=yes if cups is yes)])
1091 if test x$enable_iprint != xno; then
1092 if test "x$CUPS_CONFIG" != x; then
1093 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
1094 elif test x"$enable_iprint" = x"yes"; then
1095 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
1099 ############################################
1100 # check if the compiler will optimize out function calls
1101 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
1103 #include <stdio.h>],
1106 this_function_does_not_exist();
1112 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
1113 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
1114 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1117 ############################################
1118 # check for unix domain sockets
1119 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1121 #include <sys/types.h>
1124 #include <sys/socket.h>
1125 #include <sys/un.h>],
1127 struct sockaddr_un sunaddr;
1128 sunaddr.sun_family = AF_UNIX;
1130 samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1131 if test x"$samba_cv_unixsocket" = x"yes"; then
1132 AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1136 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1138 #include <sys/types.h>
1143 #include <signal.h>],[sig_atomic_t i = 0],
1144 samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1145 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1146 AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1149 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1151 #include <sys/types.h>
1156 #if TIME_WITH_SYS_TIME
1157 # include <sys/time.h>
1160 # if HAVE_SYS_TIME_H
1161 # include <sys/time.h>
1166 ],[struct timespec ts;],
1167 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1168 if test x"$samba_cv_struct_timespec" = x"yes"; then
1169 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1172 # stupid headers have the functions but no declaration. grrrr.
1173 AC_HAVE_DECL(errno, [#include <errno.h>])
1174 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1175 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1176 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1177 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1178 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1179 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1181 # and glibc has setresuid under linux but the function does
1182 # nothing until kernel 2.1.44! very dumb.
1183 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1184 AC_TRY_RUN([#include <errno.h>
1185 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1186 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1187 if test x"$samba_cv_have_setresuid" = x"yes"; then
1188 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1191 # Do the same check for setresguid...
1193 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1194 AC_TRY_RUN([#include <unistd.h>
1196 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1197 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1198 if test x"$samba_cv_have_setresgid" = x"yes"; then
1199 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1204 ###############################################
1205 # Readline included by default unless explicitly asked not to
1206 test "${with_readline+set}" != "set" && with_readline=yes
1208 # test for where we get readline() from
1209 AC_MSG_CHECKING(whether to use readline)
1210 AC_ARG_WITH(readline,
1211 [ --with-readline[=DIR] Look for readline include/libs in DIR (default=auto) ],
1212 [ case "$with_readline" in
1216 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1217 AC_CHECK_HEADERS(readline/history.h)
1219 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1220 for termlib in ncurses curses termcap terminfo termlib tinfo; do
1221 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1223 AC_CHECK_LIB(readline, rl_callback_handler_install,
1224 [TERMLIBS="-lreadline $TERMLIBS"
1225 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1226 break], [TERMLIBS=], $TERMLIBS)])
1234 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1235 # alternate readline path
1237 _cppflags=${CPPFLAGS}
1239 # Add additional search path
1240 LDFLAGS="-L$with_readline/lib $LDFLAGS"
1241 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1243 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1244 AC_CHECK_HEADERS(readline/history.h)
1246 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1247 for termlib in ncurses curses termcap terminfo termlib; do
1248 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1250 AC_CHECK_LIB(readline, rl_callback_handler_install,
1251 [TERMLDFLAGS="-L$with_readline/lib"
1252 TERMCPPFLAGS="-I$with_readline/include"
1253 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1254 TERMLIBS="-lreadline $TERMLIBS"
1255 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1256 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1264 AC_SUBST(TERMLDFLAGS)
1266 # The readline API changed slightly from readline3 to readline4, so
1267 # code will generate warnings on one of them unless we have a few
1269 AC_CHECK_LIB(readline, rl_completion_matches,
1270 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1271 [Do we have rl_completion_matches?])],
1275 # not all readline libs have rl_event_hook or history_list
1276 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1277 AC_CHECK_LIB(readline, history_list,
1278 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1282 # The following test taken from the cvs sources
1283 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1284 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1285 # libsocket.so which has a bad implementation of gethostbyname (it
1286 # only looks in /etc/hosts), so we only look for -lsocket if we need
1288 AC_CHECK_FUNCS(connect)
1289 if test x"$ac_cv_func_connect" = x"no"; then
1292 *) AC_CHECK_LIB(nsl_s, connect) ;;
1296 *) AC_CHECK_LIB(nsl, connect) ;;
1300 *) AC_CHECK_LIB(socket, connect) ;;
1304 *) AC_CHECK_LIB(inet, connect) ;;
1306 dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1307 dnl has been cached.
1308 if test x"$ac_cv_lib_socket_connect" = x"yes" ||
1309 test x"$ac_cv_lib_inet_connect" = x"yes"; then
1310 # ac_cv_func_connect=yes
1311 # don't! it would cause AC_CHECK_FUNC to succeed next time configure is run
1312 AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1316 ###############################################
1317 # test for where we get yp_get_default_domain() from
1318 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1319 AC_CHECK_FUNCS(yp_get_default_domain)
1321 # Check if we have execl, if not we need to compile smbrun.
1322 AC_CHECK_FUNCS(execl)
1323 if test x"$ac_cv_func_execl" = x"no"; then
1324 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1327 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1328 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1329 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1330 AC_CHECK_FUNCS(getrlimit fsync fdatasync memset strlcpy strlcat setpgid)
1331 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1332 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1333 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1334 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1335 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1336 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1337 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1338 AC_CHECK_FUNCS(getpwent_r)
1339 AC_CHECK_FUNCS(getdents getdents64)
1340 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1341 AC_CHECK_FUNCS(syslog vsyslog timegm)
1342 AC_CHECK_FUNCS(setlocale nl_langinfo)
1343 AC_CHECK_FUNCS(nanosleep)
1344 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1345 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1346 AC_CHECK_HEADERS(sys/mman.h)
1347 # setbuffer, shmget, shm_open are needed for smbtorture
1348 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1350 # Find a method of generating a stack trace
1351 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1352 AC_CHECK_FUNCS(backtrace_symbols)
1353 AC_CHECK_LIB(exc, trace_back_stack)
1355 echo -n "checking for GPFS GPL libs... "
1357 LIBS="$LIBS -lgpfs_gpl"
1358 AC_TRY_LINK([#include <gpfs_gpl.h>],
1359 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1360 samba_cv_HAVE_GPFS=yes,
1361 samba_cv_HAVE_GPFS=no)
1362 echo $samba_cv_HAVE_GPFS
1363 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1364 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1365 default_shared_modules="$default_shared_modules vfs_gpfs"
1369 # Note that all the libunwind symbols in the API are defined to internal
1370 # platform-specific version, so we must include libunwind.h before checking
1372 AC_MSG_CHECKING([for libunwind])
1375 UNWIND_ARCH="unknown"
1376 if test x"$UNAME_I" != x"unknown"; then
1377 UNWIND_ARCH="$UNAME_I"
1378 elif test x"$UNAME_M" != x"unknown"; then
1379 UNWIND_ARCH="$UNAME_M"
1380 elif test x"$UNAME_P" != x"unknown"; then
1381 UNWIND_ARCH="$UNAME_P"
1384 case "$UNWIND_ARCH" in
1386 # This probably won't link without
1387 # the platform-specific libunwind.
1388 LIBS="$LIBS -lunwind"
1391 # Add the platform-specific libunwind module.
1392 LIBS="$LIBS -lunwind -lunwind-x86"
1395 # Add the platform-specific libunwind module.
1396 # based on uname -i, uname -m or uname -p
1397 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1403 #ifdef HAVE_LIBUNWIND_H
1404 #include <libunwind.h>
1408 unw_context_t ctx; unw_cursor_t cur;
1409 char buf[256]; unw_word_t off;
1410 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1411 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1415 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1417 # If we have libunwind, test whether we also have libunwind-ptrace
1418 # which would let us unwind arbitrary processes.
1420 AC_CHECK_HEADERS(libunwind-ptrace.h)
1421 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1423 LIBUNWIND_PTRACE="-lunwind-ptrace";
1424 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1425 [Whether libunwind-ptrace.a is available.])
1427 [ LIBUNWIND_PTRACE="" ])
1436 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1437 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1438 AC_CHECK_HEADERS(sys/ptrace.h)
1439 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1442 #if HAVE_SYS_TYPES_H
1443 #include <sys/types.h>
1445 #if HAVE_SYS_PTRACE_H
1446 #include <sys/ptrace.h>
1450 int main(int argc, const char ** argv)
1452 pid_t me = (pid_t)-1;
1453 ptrace(PTRACE_ATTACH, me, 0, 0);
1454 ptrace(PTRACE_DETACH, me, 0, 0);
1460 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1461 [Whether the Linux ptrace(2) interface is available.])
1469 AC_SUBST(LIBUNWIND_PTRACE)
1471 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1472 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1473 AC_CHECK_FUNCS(__getcwd _getcwd)
1474 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1475 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1476 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1477 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1478 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1479 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1480 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1481 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1482 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1483 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1484 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1485 AC_CHECK_FUNCS(prctl)
1488 #ifdef HAVE_SYS_PRCTL_H
1489 #include <sys/prctl.h>
1492 [int i; i = prtcl(0); ],
1493 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1500 # glibc <= 2.3.2 has a broken getgrouplist
1503 #include <sys/utsname.h>
1505 /* glibc up to 2.3 has a broken getgrouplist */
1506 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1507 int libc_major = __GLIBC__;
1508 int libc_minor = __GLIBC_MINOR__;
1512 if ((libc_major == 2) && (libc_minor <= 3))
1517 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1518 if test x"$linux_getgrouplist_ok" = x"yes"; then
1519 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1523 AC_CHECK_FUNCS(getgrouplist)
1528 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1531 if test x$ac_cv_func_stat64 = xno ; then
1532 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1534 #if defined(HAVE_UNISTD_H)
1537 #include <sys/stat.h>
1538 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1539 AC_MSG_RESULT([$ac_cv_func_stat64])
1540 if test x$ac_cv_func_stat64 = xyes ; then
1541 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1545 if test x$ac_cv_func_lstat64 = xno ; then
1546 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1548 #if defined(HAVE_UNISTD_H)
1551 #include <sys/stat.h>
1552 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1553 AC_MSG_RESULT([$ac_cv_func_lstat64])
1554 if test x$ac_cv_func_lstat64 = xyes ; then
1555 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1559 if test x$ac_cv_func_fstat64 = xno ; then
1560 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1562 #if defined(HAVE_UNISTD_H)
1565 #include <sys/stat.h>
1566 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1567 AC_MSG_RESULT([$ac_cv_func_fstat64])
1568 if test x$ac_cv_func_fstat64 = xyes ; then
1569 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1573 #################################################
1574 # Check whether struct stat has timestamps with sub-second resolution.
1575 # At least IRIX and Solaris have these.
1578 # all of st_mtim, st_atim and st_ctim exist
1579 # all of the members are in fact of type struct timespec
1581 # There is some conflicting standards weirdness about whether we should use
1582 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1583 # prefer struct timespec.
1585 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1589 #if TIME_WITH_SYS_TIME
1590 # include <sys/time.h>
1593 # if HAVE_SYS_TIME_H
1594 # include <sys/time.h>
1599 #ifdef HAVE_SYS_STAT_H
1600 #include <sys/stat.h>
1605 struct stat s = {0};
1606 t.tv_sec = s.st_mtim.tv_sec;
1607 t.tv_nsec = s.st_mtim.tv_nsec;
1608 t.tv_sec = s.st_ctim.tv_sec;
1609 t.tv_nsec = s.st_ctim.tv_nsec;
1610 t.tv_sec = s.st_atim.tv_sec;
1611 t.tv_nsec = s.st_atim.tv_nsec;
1613 samba_stat_hires=yes, samba_stat_hires=no)
1616 if test x"$samba_stat_hires" = x"yes" ; then
1617 AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1618 AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1619 AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1620 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1621 [whether struct stat has sub-second timestamps])
1624 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1628 #if TIME_WITH_SYS_TIME
1629 # include <sys/time.h>
1632 # if HAVE_SYS_TIME_H
1633 # include <sys/time.h>
1638 #ifdef HAVE_SYS_STAT_H
1639 #include <sys/stat.h>
1644 struct stat s = {0};
1645 t.tv_sec = s.st_mtime;
1646 t.tv_nsec = s.st_mtimensec;
1647 t.tv_sec = s.st_ctime;
1648 t.tv_nsec = s.st_ctimensec;
1649 t.tv_sec = s.st_atime;
1650 t.tv_nsec = s.st_atimensec;
1652 samba_stat_hires=yes, samba_stat_hires=no)
1655 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1656 AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1657 AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1658 AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1659 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1660 [whether struct stat has sub-second timestamps without struct timespec])
1663 #####################################
1664 # needed for SRV lookups
1665 AC_CHECK_LIB(resolv, dn_expand)
1666 AC_CHECK_LIB(resolv, _dn_expand)
1667 AC_CHECK_LIB(resolv, __dn_expand)
1670 # Check for the functions putprpwnam, set_auth_parameters,
1671 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1672 # Needed for OSF1 and HPUX.
1675 AC_LIBTESTFUNC(security, putprpwnam)
1676 AC_LIBTESTFUNC(sec, putprpwnam)
1678 AC_LIBTESTFUNC(security, set_auth_parameters)
1679 AC_LIBTESTFUNC(sec, set_auth_parameters)
1681 # UnixWare 7.x has its getspnam in -lgen
1682 AC_LIBTESTFUNC(gen, getspnam)
1684 AC_LIBTESTFUNC(security, getspnam)
1685 AC_LIBTESTFUNC(sec, getspnam)
1687 AC_LIBTESTFUNC(security, bigcrypt)
1688 AC_LIBTESTFUNC(sec, bigcrypt)
1690 AC_LIBTESTFUNC(security, getprpwnam)
1691 AC_LIBTESTFUNC(sec, getprpwnam)
1693 AC_CHECK_FUNCS(strsignal)
1695 ############################################
1696 # Check if we have libattr
1699 AC_SEARCH_LIBS(getproplist, [proplist])
1700 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1701 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1702 AC_CHECK_FUNCS(sizeof_proplist_entry)
1705 AC_SEARCH_LIBS(getxattr, [attr])
1706 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1707 AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1708 AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1709 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1710 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1711 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1712 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1716 ########################################################
1717 # Check if attropen() is present if this is Solaris
1720 AC_CHECK_FUNCS(attropen)
1724 ########################################################
1725 # Do xattr functions take additional options like on Darwin?
1726 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1727 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1729 LIBS="$LIBS $ACL_LIBS"
1731 #include <sys/types.h>
1732 #if HAVE_ATTR_XATTR_H
1733 #include <attr/xattr.h>
1734 #elif HAVE_SYS_XATTR_H
1735 #include <sys/xattr.h>
1738 getxattr(0, 0, 0, 0, 0, 0);
1740 [smb_attr_cv_xattr_add_opt=yes],
1741 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1743 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1744 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1748 # Check if we have extattr
1750 *freebsd4* | *dragonfly* )
1751 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1754 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1755 AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1756 AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1757 AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1764 AC_ARG_ENABLE(pie, [ --enable-pie Turn on pie support if available (default=yes)])
1766 if test "x$enable_pie" != xno
1768 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1770 cat > conftest.c <<EOF
1772 main () { return 0;}
1774 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1782 if test x"${samba_cv_fpie}" = x"yes"
1789 # Assume non-shared by default and override below
1792 # these are the defaults, good for lots of systems
1797 SHLD="\${CC} \${CFLAGS}"
1798 PICFLAG="${PIE_CFLAGS}"
1802 # this bit needs to be modified for each OS that supports share libs
1803 # You need to specify how to create a shared library and
1804 # how to compile C code to produce PIC object files
1806 AC_MSG_CHECKING([ability to build shared libraries])
1808 # and these are for particular systems
1810 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux])
1812 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1813 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1815 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1817 DYNEXP="-Wl,--export-dynamic"
1819 SONAMEFLAG="-Wl,-soname="
1820 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1822 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1826 if test "${GCC}" = "yes"; then
1828 SONAMEFLAG="-Wl,-soname="
1829 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1834 ## ${CFLAGS} added for building 64-bit shared
1835 ## libs using Sun's Compiler
1836 LDSHFLAGS="-G \${CFLAGS}"
1838 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1839 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1841 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1844 SONAMEFLAG="-Wl,-h,"
1845 PICFLAG="-KPIC" # Is this correct for SunOS
1846 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1847 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1849 *netbsd* | *freebsd* | *dragonfly* )
1852 DYNEXP="-Wl,--export-dynamic"
1853 SONAMEFLAG="-Wl,-soname,"
1854 PICFLAG="-fPIC -DPIC"
1855 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1856 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1858 *openbsd*) BLDSHARED="true"
1860 DYNEXP="-Wl,-Bdynamic"
1861 SONAMEFLAG="-Wl,-soname,"
1863 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1864 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1866 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1868 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1872 LDSHFLAGS="-set_version sgi1.0 -shared"
1873 SONAMEFLAG="-soname "
1875 if test "${GCC}" = "yes"; then
1880 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1882 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1884 LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1885 DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1887 # as AIX code is always position independent...
1888 # .po will just create compile warnings, use po.o:
1889 if test "${GCC}" != "yes"; then
1890 ## for funky AIX compiler using strncpy()
1891 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1894 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1895 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1896 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1898 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1899 # Use special PIC flags for the native HP-UX compiler.
1902 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1903 SONAMEFLAG="-Wl,+h "
1905 if test "${GCC}" = "yes"; then
1908 PICFLAG="+z +ESnolit"
1910 if test "$host_cpu" = "ia64"; then
1913 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1916 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1918 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1919 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1921 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1922 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1924 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1927 SONAMEFLAG="-Wl,-soname,"
1929 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1930 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1932 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1933 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1935 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1938 SONAMEFLAG="-Wl,-soname,"
1940 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1942 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1943 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1945 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1946 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1948 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1950 *-univel-*) if [ test "$GCC" != yes ]; then
1951 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1956 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1958 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1961 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1962 if [ test "$GCC" != yes ]; then
1963 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1966 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1968 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1973 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1975 LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1977 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1979 # Since gcc doesn't fail on unrecognised options, the
1980 # PIE test incorrectly succeeds. Darwin gcc does not
1981 # actually support the PIE stuff.
1984 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1988 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1992 if test "$enable_shared" != "yes"; then
1996 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1997 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
2000 AC_MSG_RESULT($BLDSHARED)
2002 AC_MSG_CHECKING([LDFLAGS])
2003 AC_MSG_RESULT([$LDFLAGS])
2004 AC_MSG_CHECKING([DYNEXP])
2005 AC_MSG_RESULT([$DYNEXP])
2007 #######################################################
2008 # test whether building a shared library actually works
2009 if test $BLDSHARED = true; then
2011 AC_MSG_CHECKING([SHLD])
2012 AC_MSG_RESULT([$SHLD])
2013 AC_MSG_CHECKING([LDSHFLAGS])
2014 AC_MSG_RESULT([$LDSHFLAGS])
2016 AC_MSG_CHECKING([SHLIBEXT])
2017 AC_MSG_RESULT([$SHLIBEXT])
2018 AC_MSG_CHECKING([SONAMEFLAG])
2019 AC_MSG_RESULT([$SONAMEFLAG])
2021 AC_MSG_CHECKING([PICFLAG])
2022 AC_MSG_RESULT([$PICFLAG])
2024 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
2025 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
2027 AC_CACHE_CHECK([whether building shared libraries actually works],
2028 [ac_cv_shlib_works],[
2029 # try building a trivial shared library
2030 ac_cv_shlib_works=no
2031 # The $SHLD and $LDSHFLAGS variables may contain references to other
2032 # variables so they need to be eval'ed.
2033 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
2034 shlib.o ${srcdir-.}/tests/shlib.c && \
2035 `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
2036 shlib.o && ac_cv_shlib_works=yes
2037 rm -f "shlib.$SHLIBEXT" shlib.o
2040 if test $ac_cv_shlib_works = no; then
2045 if test x"$BLDSHARED" != x"true"; then
2046 LDSHFLAGS="shared-libraries-disabled"
2047 SONAMEFLAG="shared-libraries-disabled"
2048 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
2049 SHLD="shared-libraries-disabled"
2050 PICFLAG="${PIE_CFLAGS}"
2051 SHLIBEXT="shared_libraries_disabled"
2054 AC_MSG_CHECKING([used PICFLAG])
2055 AC_MSG_RESULT([$PICFLAG])
2057 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
2059 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
2063 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2064 AC_TRY_RUN([#include <stdio.h>
2065 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2066 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2067 if test x"$samba_cv_have_longlong" = x"yes"; then
2068 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2069 AC_CHECK_TYPE(intptr_t, unsigned long long)
2071 AC_CHECK_TYPE(intptr_t, unsigned long)
2075 # Check if the compiler supports the LL prefix on long long integers.
2078 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2079 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2080 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2081 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2082 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2086 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2087 AC_TRY_RUN([#include <time.h>
2088 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2089 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2090 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2091 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2094 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2095 AC_TRY_RUN([#include <stdio.h>
2096 #include <sys/stat.h>
2097 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2098 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2099 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2100 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2103 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2105 #if defined(HAVE_UNISTD_H)
2109 #include <sys/stat.h>
2110 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2111 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2112 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2113 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2116 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2118 #if defined(HAVE_UNISTD_H)
2122 #include <sys/stat.h>
2123 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2124 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2125 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2126 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2129 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2131 #if defined(HAVE_UNISTD_H)
2135 #include <sys/stat.h>
2136 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2137 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2138 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2139 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2142 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2144 #if defined(HAVE_UNISTD_H)
2148 #include <sys/stat.h>
2149 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2150 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2151 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2152 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2155 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2157 #if defined(HAVE_UNISTD_H)
2161 #include <sys/stat.h>
2162 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2163 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2164 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2165 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2168 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2170 #if defined(HAVE_UNISTD_H)
2173 #include <sys/types.h>
2174 #include <dirent.h>],
2176 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2177 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2178 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2181 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2183 #if defined(HAVE_UNISTD_H)
2186 #include <sys/types.h>
2187 #include <dirent.h>],
2188 [struct dirent64 de;],
2189 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2190 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2191 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2194 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2196 #if defined(HAVE_UNISTD_H)
2199 #include <sys/types.h>
2200 main() { dev_t dev; int i = major(dev); return 0; }],
2201 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2202 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2203 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2206 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2208 #if defined(HAVE_UNISTD_H)
2211 #include <sys/types.h>
2212 main() { dev_t dev; int i = minor(dev); return 0; }],
2213 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2214 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2215 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2218 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2220 #if defined(HAVE_UNISTD_H)
2223 #include <sys/types.h>
2224 main() { dev_t dev = makedev(1,2); return 0; }],
2225 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2226 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2227 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2230 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2231 AC_TRY_RUN([#include <stdio.h>
2232 main() { char c; c=250; exit((c > 0)?0:1); }],
2233 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2234 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2235 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2238 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2239 AC_TRY_COMPILE([#include <sys/types.h>
2240 #include <sys/socket.h>
2241 #include <netinet/in.h>],
2242 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2243 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2244 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2245 AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2248 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2249 AC_TRY_COMPILE([#include <sys/types.h>
2251 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2252 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2253 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2254 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2257 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2258 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2259 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2260 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2261 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2264 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2266 #include <sys/time.h>
2267 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2268 samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2269 samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2270 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2271 AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2274 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2276 # On some systems (eg. Linux) librt can pull in libpthread. We
2277 # don't want this to happen because libpthreads changes signal delivery
2278 # semantics in ways we are not prepared for. This breaks Linux oplocks
2279 # which rely on signals.
2281 AC_LIBTESTFUNC(rt, clock_gettime,
2283 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2284 [Whether clock_gettime is available])
2285 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2286 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2287 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2292 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2293 AC_TRY_LINK([#include <stdarg.h>
2294 va_list ap1,ap2;], [va_copy(ap1,ap2);],
2295 samba_cv_HAVE_VA_COPY=yes,
2296 samba_cv_HAVE_VA_COPY=no)])
2297 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2298 AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2300 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2301 AC_TRY_LINK([#include <stdarg.h>
2302 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2303 samba_cv_HAVE___VA_COPY=yes,
2304 samba_cv_HAVE___VA_COPY=no)])
2305 if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2306 AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2310 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2312 #include <sys/types.h>
2314 void foo(const char *format, ...) {
2319 va_start(ap, format);
2320 len = vsnprintf(buf, 0, format, ap);
2322 if (len != 5) exit(1);
2324 va_start(ap, format);
2325 len = vsnprintf(0, 0, format, ap);
2327 if (len != 5) exit(1);
2329 if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2333 main() { foo("hello"); }
2335 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2336 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2337 AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2340 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2341 AC_TRY_RUN([#include <sys/types.h>
2343 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2344 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2345 di->d_name[0] == 0) exit(0); exit(1);} ],
2346 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2347 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2348 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2351 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2352 AC_TRY_COMPILE([#include <sys/types.h>
2353 #include <utime.h>],
2354 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2355 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2356 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2357 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2361 # Check utmp details, but only if our OS offers utmp.h
2362 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2363 dnl utmp and utmpx come in many flavours
2364 dnl We need to check for many of them
2365 dnl But we don't need to do each and every one, because our code uses
2366 dnl mostly just the utmp (not utmpx) fields.
2368 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2370 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2371 AC_TRY_COMPILE([#include <sys/types.h>
2373 [struct utmp ut; ut.ut_name[0] = 'a';],
2374 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2375 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2376 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2379 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2380 AC_TRY_COMPILE([#include <sys/types.h>
2382 [struct utmp ut; ut.ut_user[0] = 'a';],
2383 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2384 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2385 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2388 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2389 AC_TRY_COMPILE([#include <sys/types.h>
2391 [struct utmp ut; ut.ut_id[0] = 'a';],
2392 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2393 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2394 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2397 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2398 AC_TRY_COMPILE([#include <sys/types.h>
2400 [struct utmp ut; ut.ut_host[0] = 'a';],
2401 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2402 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2403 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2406 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2407 AC_TRY_COMPILE([#include <sys/types.h>
2409 [struct utmp ut; time_t t; ut.ut_time = t;],
2410 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2411 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2412 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2415 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2416 AC_TRY_COMPILE([#include <sys/types.h>
2418 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2419 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2420 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2421 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2424 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2425 AC_TRY_COMPILE([#include <sys/types.h>
2427 [struct utmp ut; ut.ut_type = 0;],
2428 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2429 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2430 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2433 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2434 AC_TRY_COMPILE([#include <sys/types.h>
2436 [struct utmp ut; ut.ut_pid = 0;],
2437 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2438 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2439 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2442 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2443 AC_TRY_COMPILE([#include <sys/types.h>
2445 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2446 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2447 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2448 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2451 dnl Look for the IPv6 varient by preference. Many systems have both.
2452 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2453 AC_TRY_COMPILE([#include <sys/types.h>
2455 [struct utmp ut; ut.ut_addr_v6[0] = 0;],
2456 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2457 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2458 AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2461 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2462 AC_TRY_COMPILE([#include <sys/types.h>
2464 [struct utmp ut; ut.ut_addr = 0;],
2465 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2466 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2467 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2470 if test x$ac_cv_func_pututline = xyes ; then
2471 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2472 AC_TRY_COMPILE([#include <sys/types.h>
2474 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2475 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2476 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2477 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2481 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2482 AC_TRY_COMPILE([#include <sys/types.h>
2483 #include <utmpx.h>],
2484 [struct utmpx ux; ux.ut_syslen = 0;],
2485 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2486 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2487 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2494 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2495 AC_ARG_WITH(libiconv,
2496 [ --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2498 if test "$withval" = "no" ; then
2499 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2501 if test "$withval" != "yes" ; then
2503 ICONV_LOOK_DIRS="$withval"
2508 for i in $ICONV_LOOK_DIRS ; do
2511 save_LDFLAGS="$LDFLAGS"
2512 save_CPPFLAGS="$CPPFLAGS"
2514 iconv_current_LIBS=""
2515 iconv_current_LDFLAGS=""
2516 iconv_current_CPPFLAGS=""
2521 # This is here to handle -withval stuff for --with-libiconv
2522 # Perhaps we should always add a -L
2523 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2525 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2526 # installation paths. This gets a little tricky since we might have iconv
2527 # in both libiconv and in libc. In this case the jm_ICONV test will always
2528 # succeed when the header is found. To counter this, make sure the
2529 # library directory is there and check the ABI directory first (which
2530 # should be harmless on other systems.
2531 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2532 for l in "lib32" "lib" "lib/hpux32"; do
2533 if test -d "$i/$l" ; then
2534 LDFLAGS="$save_LDFLAGS -L$i/$l"
2536 export LDFLAGS LIBS CPPFLAGS
2537 # Try to find iconv(3)
2539 if test x"$ICONV_FOUND" = "xyes" ; then
2546 if test x"$ICONV_FOUND" = "xyes" ; then
2547 iconv_current_LDFLAGS="-L$i/$libext"
2548 iconv_current_CPPFLAGS="-I$i/include"
2550 if test x"$jm_cv_lib_iconv" != x; then
2551 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2553 # We found iconv in libc.
2554 iconv_current_LIBS=""
2559 if test x"$ICONV_FOUND" = "xyes" ; then
2561 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2562 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2563 LIBS="$save_LIBS $iconv_current_LIBS"
2564 export LDFLAGS LIBS CPPFLAGS
2566 default_dos_charset=no
2567 default_display_charset=no
2568 default_unix_charset=no
2570 # check for default dos charset name
2571 for j in CP850 IBM850 ; do
2573 default_dos_charset="$ICONV_CHARSET"
2574 if test x"$default_dos_charset" = x"$j"; then
2579 # check for default display charset name
2580 for j in ASCII 646 ; do
2582 default_display_charset="$ICONV_CHARSET"
2583 if test x"$default_display_charset" = x"$j"; then
2588 # check for default unix charset name
2589 for j in UTF-8 UTF8 ; do
2591 default_unix_charset="$ICONV_CHARSET"
2592 if test x"$default_unix_charset" = x"$j"; then
2597 if test "$default_dos_charset" != "no" -a \
2598 "$default_dos_charset" != "cross" -a \
2599 "$default_display_charset" != "no" -a \
2600 "$default_display_charset" != "cross" -a \
2601 "$default_unix_charset" != "no" -a \
2602 "$default_unix_charset" != "cross"
2604 samba_cv_HAVE_NATIVE_ICONV=yes
2606 if test "$default_dos_charset" = "cross" -o \
2607 "$default_display_charset" = "cross" -o \
2608 "$default_unix_charset" = "cross"
2610 samba_cv_HAVE_NATIVE_ICONV=cross
2612 samba_cv_HAVE_NATIVE_ICONV=no
2616 # At this point, we have a libiconv candidate. We know that
2617 # we have the right headers and libraries, but we don't know
2618 # whether it does the conversions we want. We can't test this
2619 # because we are cross-compiling. This is not necessarily a big
2620 # deal, since we can't guarantee that the results we get now will
2621 # match the results we get at runtime anyway.
2622 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2623 default_dos_charset="CP850"
2624 default_display_charset="ASCII"
2625 default_unix_charset="UTF-8"
2626 samba_cv_HAVE_NATIVE_ICONV=yes
2627 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2628 AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2631 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2633 CPPFLAGS=$save_CPPFLAGS
2634 LDFLAGS=$save_LDFLAGS
2637 if test x"$iconv_current_LIBS" != x; then
2638 LIBS="$LIBS $iconv_current_LIBS"
2641 # Add the flags we need to CPPFLAGS and LDFLAGS
2642 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2643 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2645 # Turn the #defines into string literals
2646 default_dos_charset="\"$default_dos_charset\""
2647 default_display_charset="\"$default_display_charset\""
2648 default_unix_charset="\"$default_unix_charset\""
2650 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2651 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2652 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2653 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2658 # We didn't find a working iconv, so keep going
2661 # We only need to clean these up here for the next pass through the loop
2662 CPPFLAGS=$save_CPPFLAGS
2663 LDFLAGS=$save_LDFLAGS
2665 export LDFLAGS LIBS CPPFLAGS
2670 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2671 AC_MSG_WARN([Sufficient support for iconv function was not found.
2672 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2673 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2674 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2675 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2679 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2681 #include <sys/types.h>
2684 #define F_GETLEASE 1025
2687 int fd = open("/dev/null", O_RDONLY);
2688 return fcntl(fd, F_GETLEASE, 0) == -1;
2691 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2692 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2693 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2696 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2698 #include <sys/types.h>
2702 #define F_NOTIFY 1026
2705 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2708 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2709 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2710 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2713 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2714 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2715 AC_CHECK_FUNC(inotify_init)
2716 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2718 samba_cv_HAVE_INOTIFY=yes,
2719 samba_cv_HAVE_INOTIFY=no,
2720 samba_cv_HAVE_INOTIFY=cross)
2722 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2723 AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2726 #################################################
2727 # Check if FAM notifications are available. For FAM info, see
2728 # http://oss.sgi.com/projects/fam/
2729 # http://savannah.nongnu.org/projects/fam/
2731 [ --enable-fam Turn on FAM support (default=auto)])
2733 if test x$enable_fam != xno; then
2734 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2735 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2736 # On IRIX, libfam requires libC, but other FAM implementations
2737 # might not need it.
2738 AC_CHECK_LIB(fam, FAMOpen2,
2739 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2740 [samba_cv_HAVE_LIBFAM=no])
2742 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2744 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2745 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2746 [samba_cv_HAVE_LIBFAM=no])
2747 unset samba_fam_xtra
2751 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2752 default_shared_modules="$default_shared_modules vfs_notify_fam"
2753 AC_TRY_COMPILE([#include <fam.h>],
2754 [FAMCodes code = FAMChanged;],
2755 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2756 [Whether fam.h contains a typedef for enum FAMCodes]),
2760 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2761 AC_MSG_ERROR(FAM support requested but FAM library not available )
2765 AC_SUBST(SMB_FAM_LIBS)
2767 #################################################
2768 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2770 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2772 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2773 # Theoretically it should work with AIX JFS2 too but this needs testing
2774 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2775 default_shared_modules="$default_shared_modules vfs_tsmsm"
2778 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2780 #include <sys/types.h>
2783 #include <sys/file.h>
2785 #define LOCK_MAND 32
2786 #define LOCK_READ 64
2789 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2792 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2793 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2794 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2798 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2799 AC_TRY_COMPILE([#include <sys/types.h>
2800 #include <fcntl.h>],
2801 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2802 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2803 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2804 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2807 #################################################
2808 # Check for POSIX capability support
2810 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2811 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2814 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2817 AC_LIBTESTFUNC(cap, cap_get_proc)
2819 AC_CACHE_CHECK([for POSIX capabilities],
2820 samba_cv_HAVE_POSIX_CAPABILITIES,
2823 #include <sys/types.h>
2824 #include <sys/capability.h>
2827 cap_value_t vals[1];
2828 if (!(cap = cap_get_proc()))
2830 vals[0] = CAP_CHOWN;
2831 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2835 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2836 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2837 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2840 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2841 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2842 [Whether POSIX capabilities are available])
2850 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2851 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2854 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2855 AC_TRY_COMPILE([#include <sys/types.h>
2856 #if defined(HAVE_RPC_RPC_H)
2857 #include <rpc/rpc.h>
2860 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2861 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2862 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2865 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2866 AC_TRY_COMPILE([#include <sys/types.h>
2867 #if defined(HAVE_RPC_RPC_H)
2868 #include <rpc/rpc.h>
2871 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2872 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2873 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2876 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2877 AC_TRY_COMPILE([#include <sys/types.h>
2878 #if defined(HAVE_RPC_RPC_H)
2879 #include <rpc/rpc.h>
2882 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2883 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2884 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2887 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2888 AC_TRY_COMPILE([#include <sys/types.h>
2889 #if defined(HAVE_RPC_RPC_H)
2890 #include <rpc/rpc.h>
2893 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2894 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2895 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2899 dnl Some systems (SCO) have a problem including
2900 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2901 dnl as a #define in <prot.h> and as part of an enum
2905 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2906 AC_TRY_COMPILE([#include <sys/types.h>
2907 #ifdef HAVE_SYS_SECURITY_H
2908 #include <sys/security.h>
2910 #endif /* HAVE_SYS_SECURITY_H */
2911 #if defined(HAVE_RPC_RPC_H)
2912 #include <rpc/rpc.h>
2915 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2916 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2917 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2920 AC_MSG_CHECKING([for test routines])
2921 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2923 AC_MSG_ERROR([cant find test code. Aborting config]),
2924 AC_MSG_WARN([cannot run when cross-compiling]))
2926 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2927 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2928 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2929 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2930 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2933 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2934 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2935 samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2936 samba_cv_HAVE_WORKING_AF_LOCAL=no,
2937 samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2938 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2940 AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2943 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2944 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2945 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2946 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2947 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2950 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2951 AC_TRY_RUN([#include <stdlib.h>
2952 #include <sys/types.h>
2953 #include <sys/stat.h>
2957 char tpl[20]="/tmp/test.XXXXXX";
2958 int fd = mkstemp(tpl);
2959 if (fd == -1) exit(1);
2961 if (fstat(fd, &st) != 0) exit(1);
2962 if ((st.st_mode & 0777) != 0600) exit(1);
2965 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2966 samba_cv_HAVE_SECURE_MKSTEMP=no,
2967 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2968 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2969 AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2972 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2973 AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
2974 [samba_cv_HAVE_BROKEN_READDIR=no],
2975 [samba_cv_HAVE_BROKEN_READDIR=yes],
2976 [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2978 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2979 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2981 #include "${srcdir-.}/lib/repdir.c"
2982 #include "${srcdir-.}/tests/os2_delete.c"],
2983 samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2986 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2987 AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2990 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2991 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2992 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2993 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2994 AC_CHECK_FUNCS(getpagesize)
2996 dnl test for getifaddrs and freeifaddrs
2997 AC_CACHE_CHECK([for getifaddrs and freeifaddrs],samba_cv_HAVE_GETIFADDRS,[
2999 #include <sys/socket.h>
3000 #include <sys/types.h>
3001 #include <netinet/in.h>
3002 #include <arpa/inet.h>
3003 #include <ifaddrs.h>
3004 #include <netdb.h>],
3006 struct ifaddrs *ifp = NULL;
3007 int ret = getifaddrs (&ifp);
3010 samba_cv_HAVE_GETIFADDRS=yes,samba_cv_HAVE_GETIFADDRS=no)])
3011 if test x"$samba_cv_HAVE_GETIFADDRS" = x"yes"; then
3012 AC_DEFINE(HAVE_GETIFADDRS,1,[Whether the system has getifaddrs])
3013 AC_DEFINE(HAVE_FREEIFADDRS,1,[Whether the system has freeifaddrs])
3017 # look for a method of finding the list of network interfaces
3019 AC_CACHE_CHECK([for iface getifaddrs],samba_cv_HAVE_IFACE_GETIFADDRS,[
3020 SAVE_CPPFLAGS="$CPPFLAGS"
3021 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3023 #define NO_CONFIG_H 1
3024 #define HAVE_IFACE_GETIFADDRS 1
3025 #define AUTOCONF_TEST 1
3026 #include "${srcdir-.}/lib/replace/replace.c"
3027 #include "${srcdir-.}/lib/interfaces.c"],
3028 samba_cv_HAVE_IFACE_GETIFADDRS=yes,samba_cv_HAVE_IFACE_GETIFADDRS=no,samba_cv_HAVE_IFACE_GETIFADDRS=cross)])
3029 CPPFLAGS="$SAVE_CPPFLAGS"
3030 if test x"$samba_cv_HAVE_IFACE_GETIFADDRS" = x"yes"; then
3031 iface=yes;AC_DEFINE(HAVE_IFACE_GETIFADDRS,1,[Whether iface getifaddrs is available])
3034 if test $iface = no; then
3035 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
3036 SAVE_CPPFLAGS="$CPPFLAGS"
3037 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3039 #define NO_CONFIG_H 1
3040 #define HAVE_IFACE_IFCONF 1
3041 #define AUTOCONF_TEST 1
3042 #define SOCKET_WRAPPER_NOT_REPLACE
3043 #include "${srcdir-.}/lib/replace/replace.c"
3044 #include "${srcdir-.}/lib/interfaces.c"],
3045 samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
3046 CPPFLAGS="$SAVE_CPPFLAGS"
3047 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
3048 iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
3052 if test $iface = no; then
3053 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
3054 SAVE_CPPFLAGS="$CPPFLAGS"
3055 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3057 #define NO_CONFIG_H 1
3058 #define HAVE_IFACE_IFREQ 1
3059 #define AUTOCONF_TEST 1
3060 #define SOCKET_WRAPPER_NOT_REPLACE
3061 #include "${srcdir-.}/lib/replace/replace.c"
3062 #include "${srcdir-.}/lib/replace/getaddrinfo.c"
3063 #include "${srcdir-.}/lib/replace/snprintf.c"
3064 #include "${srcdir-.}/lib/interfaces.c"],
3065 samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
3066 CPPFLAGS="$SAVE_CPPFLAGS"
3067 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
3068 iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
3072 if test $iface = no; then
3073 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
3074 SAVE_CPPFLAGS="$CPPFLAGS"
3075 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3077 #define NO_CONFIG_H 1
3078 #define HAVE_IFACE_AIX 1
3079 #define AUTOCONF_TEST 1
3080 #undef _XOPEN_SOURCE_EXTENDED
3081 #define SOCKET_WRAPPER_NOT_REPLACE
3082 #include "${srcdir-.}/lib/replace/replace.c"
3083 #include "${srcdir-.}/lib/replace/snprintf.c"
3084 #include "${srcdir-.}/lib/interfaces.c"],
3085 samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
3086 CPPFLAGS="$SAVE_CPPFLAGS"
3087 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
3088 iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
3093 AC_CACHE_CHECK([for ipv6 support],samba_cv_HAVE_IPV6,[
3095 #include <stdlib.h> /* for NULL */
3096 #include <sys/socket.h>
3097 #include <sys/types.h>
3098 #include <netdb.h>],
3100 struct sockaddr_storage sa_store;
3101 struct addrinfo *ai = NULL;
3102 struct in6_addr in6addr;
3103 int s = socket(AF_INET6, SOCK_STREAM, 0);
3104 int ret = getaddrinfo(NULL, NULL, NULL, &ai);
3106 const char *es = gai_strerror(ret);
3110 samba_cv_HAVE_IPV6=yes,samba_cv_HAVE_IPV6=no)])
3111 if test x"$samba_cv_HAVE_IPV6" = x"yes"; then
3112 AC_DEFINE(HAVE_IPV6,1,[Whether the system has IPv6 support])
3115 ################################################
3116 # look for a method of setting the effective uid
3118 if test $seteuid = no; then
3119 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
3121 #define AUTOCONF_TEST 1
3122 #define USE_SETRESUID 1
3123 #include "confdefs.h"
3124 #include "${srcdir-.}/lib/util_sec.c"],
3125 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
3126 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
3127 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
3132 if test $seteuid = no; then
3133 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
3135 #define AUTOCONF_TEST 1
3136 #define USE_SETREUID 1
3137 #include "confdefs.h"
3138 #include "${srcdir-.}/lib/util_sec.c"],
3139 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
3140 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
3141 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
3145 if test $seteuid = no; then
3146 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
3148 #define AUTOCONF_TEST 1
3149 #define USE_SETEUID 1
3150 #include "confdefs.h"
3151 #include "${srcdir-.}/lib/util_sec.c"],
3152 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
3153 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
3154 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
3158 if test $seteuid = no; then
3159 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
3161 #define AUTOCONF_TEST 1
3162 #define USE_SETUIDX 1
3163 #include "confdefs.h"
3164 #include "${srcdir-.}/lib/util_sec.c"],
3165 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
3166 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
3167 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
3171 AC_CACHE_CHECK([for the Darwin initgroups system call],
3172 samba_cv_DARWIN_INITGROUPS,
3174 #include <sys/syscall.h>
3177 [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
3178 samba_cv_DARWIN_INITGROUPS=yes,
3179 samba_cv_DARWIN_INITGROUPS=no)
3182 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
3183 AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
3184 [Whether to use the Darwin-specific initgroups system call])
3187 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
3188 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
3189 samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
3190 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
3191 AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
3194 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
3195 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
3196 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
3197 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
3198 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
3201 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
3202 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
3203 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
3204 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
3205 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
3210 dnl Don't check for 64 bit fcntl locking if we know that the
3211 dnl glibc2.1 broken check has succeeded.
3214 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
3216 #if defined(HAVE_UNISTD_H)
3226 #ifdef HAVE_SYS_FCNTL_H
3227 #include <sys/fcntl.h>
3229 main() { struct flock64 fl64;
3230 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3236 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3238 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3239 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3243 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3244 AC_TRY_COMPILE([#include <sys/types.h>
3245 #include <sys/stat.h>
3246 #include <unistd.h>],
3247 [struct stat st; st.st_blocks = 0;],
3248 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3249 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3250 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3253 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3254 AC_TRY_COMPILE([#include <sys/types.h>
3255 #include <sys/stat.h>
3256 #include <unistd.h>],
3257 [struct stat st; st.st_blksize = 0;],
3258 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3259 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3260 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3263 AC_CACHE_CHECK([for st_flags in struct stat],
3264 samba_cv_HAVE_STAT_ST_FLAGS,
3266 AC_TRY_COMPILE([#include <sys/types.h>
3267 #include <sys/stat.h>
3268 #include <unistd.h>],
3269 [struct stat st; st.st_flags = 0;],
3270 samba_cv_HAVE_STAT_ST_FLAGS=yes,
3271 samba_cv_HAVE_STAT_ST_FLAGS=no,
3272 samba_cv_HAVE_STAT_ST_FLAGS=cross)
3275 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3276 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3277 [Whether the stat struct has a st_flags member])
3280 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3282 #include <sys/types.h>
3283 #include <sys/acl.h>
3284 #if defined(HAVE_RPCSVC_NIS_H)
3285 #include <rpcsvc/nis.h>
3288 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3289 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3290 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3293 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3298 char *newpath = realpath("/tmp", NULL);
3299 exit ((newpath != NULL) ? 0 : 1);
3302 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3303 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3304 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3307 #################################################
3308 # check for AFS clear-text auth support
3309 samba_cv_WITH_AFS=no
3310 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3312 [ --with-afs Include AFS clear-text auth support (default=no) ],
3313 [ case "$withval" in
3315 AC_MSG_RESULT($withval)
3316 samba_cv_WITH_AFS=$withval
3325 ####################################################
3326 # check for Linux-specific AFS fake-kaserver support
3327 samba_cv_WITH_FAKE_KASERVER=no
3328 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3329 AC_ARG_WITH(fake-kaserver,
3330 [ --with-fake-kaserver Include AFS fake-kaserver support (default=no) ],
3331 [ case "$withval" in
3333 AC_MSG_RESULT($withval)
3334 samba_cv_WITH_FAKE_KASERVER=$withval
3343 #################################################
3344 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3345 if test x"$samba_cv_WITH_AFS" != x"no" ||
3346 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3348 # see if this box has the afs-headers in /usr/include/afs
3349 AC_MSG_CHECKING(for /usr/include/afs)
3350 if test -d /usr/include/afs; then
3351 CFLAGS="$CFLAGS -I/usr/include/afs"
3352 CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3360 AC_CHECK_HEADERS(afs.h afs/afs.h)
3361 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3362 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3363 test x"$samba_cv_WITH_AFS" = x"auto"; then
3364 AC_MSG_WARN([AFS cannot be supported without afs.h])
3366 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3369 have_afs_headers=yes
3373 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3374 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3377 #################################################
3378 # check whether to compile AFS/NT ACL mapping module
3379 samba_cv_WITH_VFS_AFSACL=no
3380 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3381 AC_ARG_WITH(vfs-afsacl,
3382 [ --with-vfs-afsacl Include AFS to NT ACL mapping module (default=no) ],
3383 [ case "$withval" in
3385 AC_MSG_RESULT($withval)
3386 samba_cv_WITH_VFS_AFSACL=yes
3395 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3396 default_shared_modules="$default_shared_modules vfs_afsacl"
3399 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3400 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3403 #################################################
3404 # check for the DFS clear-text auth system
3405 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3407 [ --with-dce-dfs Include DCE/DFS clear-text auth support (default=no)],
3408 [ case "$withval" in
3411 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3420 ########################################################
3421 # Compile with LDAP support?
3423 with_ldap_support=auto
3424 AC_MSG_CHECKING([for LDAP support])
3427 [ --with-ldap LDAP support (default yes)],
3428 [ case "$withval" in
3430 with_ldap_support=$withval
3434 AC_MSG_RESULT($with_ldap_support)
3439 AC_SUBST(SMBLDAPUTIL)
3443 if test x"$with_ldap_support" != x"no"; then
3445 ##################################################################
3446 # first test for ldap.h and lber.h
3447 # (ldap.h is required for this test)
3448 AC_CHECK_HEADERS(ldap.h lber.h)
3450 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3451 if test x"$with_ldap_support" = x"yes"; then
3452 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3454 AC_MSG_WARN(ldap.h is needed for LDAP support)
3457 with_ldap_support=no
3460 ##################################################################
3461 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3462 # unsigned int in include/includes.h
3465 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3466 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3467 with_ldap_support=yes
3470 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3471 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3472 if test x"$with_ldap_support" = x"yes"; then
3473 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3475 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3477 with_ldap_support=no
3483 if test x"$with_ldap_support" != x"no"; then
3486 ##################################################################
3487 # we might need the lber lib on some systems. To avoid link errors
3488 # this test must be before the libldap test
3489 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3491 ########################################################
3492 # If ber_sockbuf_add_io() is available we can add
3493 # SASL wrapping hooks
3494 AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3496 AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3497 AC_TRY_COMPILE([#include <ldap.h>],
3498 [int val = LDAP_OPT_SOCKBUF;],
3499 samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3500 samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3502 if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3503 x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3504 AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3507 #######################################################
3508 # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3509 # ldap logging and print it out in the samba logs
3510 AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3511 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3512 [AC_TRY_COMPILE([#include <lber.h>],
3513 [int val = LBER_OPT_LOG_PRINT_FN;],
3514 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3515 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3517 if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3518 AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3519 [Support for LDAP/LBER logging interception])
3522 ########################################################
3523 # now see if we can find the ldap libs in standard paths
3524 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3526 ########################################################
3527 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3528 # Check found in pam_ldap 145.
3529 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3531 LIBS="$LIBS $LDAP_LIBS"
3532 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3536 [ldap_set_rebind_proc(0, 0, 0);],
3537 [smb_ldap_cv_ldap_set_rebind_proc=3],
3538 [smb_ldap_cv_ldap_set_rebind_proc=2]
3542 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3544 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3546 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3547 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3548 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3549 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3550 default_shared_modules="$default_shared_modules";
3551 SMBLDAP="lib/smbldap.o"
3552 SMBLDAPUTIL="lib/smbldap_util.o"
3553 with_ldap_support=yes
3554 AC_MSG_CHECKING(whether LDAP support is used)
3557 if test x"$with_ldap_support" = x"yes"; then
3558 AC_MSG_ERROR(libldap is needed for LDAP support)
3560 AC_MSG_WARN(libldap is needed for LDAP support)
3564 with_ldap_support=no
3570 #################################################
3571 # active directory support
3573 with_ads_support=auto
3574 AC_MSG_CHECKING([for Active Directory and krb5 support])
3577 [ --with-ads Active Directory support (default auto)],
3578 [ case "$withval" in
3580 with_ads_support="$withval"
3584 AC_MSG_RESULT($with_ads_support)
3589 if test x"$with_ldap_support" != x"yes"; then
3591 if test x"$with_ads_support" = x"yes"; then
3592 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3593 elif test x"$with_ads_support" = x"auto"; then
3594 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3600 # Check to see whether there is enough LDAP functionality to be able
3601 # to build AD support.
3603 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3606 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3608 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3609 if test x"$with_ads_support" = x"yes"; then
3610 AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3611 elif test x"$with_ads_support" = x"auto"; then
3612 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3618 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3620 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3621 if test x"$with_ads_support" = x"yes"; then
3622 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3623 elif test x"$with_ads_support" = x"auto"; then
3624 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3632 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3634 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3635 if test x"$with_ads_support" = x"yes"; then
3636 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3637 elif test x"$with_ads_support" = x"auto"; then
3638 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3645 if test x"$with_ads_support" != x"no"; then
3647 # Do no harm to the values of CFLAGS and LIBS while testing for
3650 if test x$FOUND_KRB5 = x"no"; then
3651 #################################################
3652 # check for location of Kerberos 5 install
3653 AC_MSG_CHECKING(for kerberos 5 install path)
3655 [ --with-krb5=base-dir Locate Kerberos 5 support (default=/usr)],
3656 [ case "$withval" in
3658 AC_MSG_RESULT(no krb5-path given)
3665 AC_MSG_RESULT($withval)
3666 KRB5_CFLAGS="-I$withval/include"
3667 KRB5_CPPFLAGS="-I$withval/include"
3668 KRB5_LDFLAGS="-L$withval/lib"
3670 if test -x "$withval/bin/krb5-config"; then
3671 KRB5CONFIG=$withval/bin/krb5-config
3675 AC_MSG_RESULT(no krb5-path given)
3679 #################################################
3680 # check for krb5-config from recent MIT and Heimdal kerberos 5
3681 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3682 AC_MSG_CHECKING(for working krb5-config)
3683 if test -x "$KRB5CONFIG"; then
3684 ac_save_CFLAGS=$CFLAGS
3685 CFLAGS="";export CFLAGS
3686 ac_save_LDFLAGS=$LDFLAGS
3687 LDFLAGS="";export LDFLAGS
3688 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3689 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3690 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3691 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3692 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3693 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3697 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3700 if test x$FOUND_KRB5 = x"no"; then
3701 #################################################
3702 # see if this box has the SuSE location for the heimdal krb implementation
3703 AC_MSG_CHECKING(for /usr/include/heimdal)
3704 if test -d /usr/include/heimdal; then
3705 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3706 KRB5_CFLAGS="-I/usr/include/heimdal"
3707 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3708 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3712 KRB5_CFLAGS="-I/usr/include/heimdal"
3713 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3722 if test x$FOUND_KRB5 = x"no"; then
3723 #################################################
3724 # see if this box has the RedHat location for kerberos
3725 AC_MSG_CHECKING(for /usr/kerberos)
3726 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3727 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3728 KRB5_CFLAGS="-I/usr/kerberos/include"
3729 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3737 if test x$FOUND_KRB5 = x"no"; then
3738 #################################################
3739 # see if this box has the OpenBSD location for heimdal krb5
3740 AC_MSG_CHECKING(for /usr/include/kerberosV)
3741 if test -d /usr/include/kerberosV; then
3742 KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3743 KRB5_LIBS="-lcrypto"
3751 ac_save_CFLAGS=$CFLAGS
3752 ac_save_CPPFLAGS=$CPPFLAGS
3753 ac_save_LDFLAGS=$LDFLAGS
3755 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3756 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3757 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3759 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3761 # now check for krb5.h. Some systems have the libraries without the headers!
3762 # note that this check is done here to allow for different kerberos
3764 AC_CHECK_HEADERS(krb5.h)
3766 if test x"$ac_cv_header_krb5_h" = x"no"; then
3768 # Give a warning if AD support was not explicitly requested,
3769 # i.e with_ads_support = auto, otherwise die with an error.
3771 if test x"$with_ads_support" = x"yes"; then
3772 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3774 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3777 # Turn off AD support and restore CFLAGS and LIBS variables
3779 with_ads_support="no"
3781 CFLAGS=$ac_save_CFLAGS
3782 CPPFLAGS=$ac_save_CPPFLAGS
3783 LDFLAGS=$ac_save_LDFLAGS
3785 AC_CHECK_HEADERS(krb5/locate_plugin.h)
3786 if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3787 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3788 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3792 # Now we have determined whether we really want ADS support
3794 if test x"$with_ads_support" != x"no"; then
3799 # now check for gssapi headers. This is also done here to allow for
3800 # different kerberos include paths
3801 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3803 ##################################################################
3804 # we might need the k5crypto and com_err libraries on some systems
3805 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3806 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3809 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3810 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3811 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3813 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3814 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3816 ########################################################
3817 # now see if we can find the krb5 libs in standard paths
3818 # or as specified above
3819 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3820 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3822 ########################################################
3823 # now see if we can find the gssapi libs in standard paths
3824 if test x"$have_gssapi" != x"yes"; then
3825 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3828 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3829 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3830 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3831 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3832 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3833 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3834 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3835 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3836 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3837 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3838 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3839 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3840 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3841 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3842 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3843 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3844 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3845 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3846 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3847 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3848 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3849 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3850 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3851 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3852 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3853 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3854 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3855 AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3856 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3857 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3858 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3859 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3860 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3861 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3862 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3863 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3864 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3865 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3866 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3867 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3868 AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3870 LIBS="$KRB5_LIBS $LIBS"
3872 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3873 smb_krb5_ticket_has_keyinfo,
3882 krb5_enctype enctype;
3884 enctype = ticket.enc_part.enctype;
3885 kvno = ticket.enc_part.kvno;
3887 [ smb_krb5_ticket_has_keyinfo=yes ],
3888 [ smb_krb5_ticket_has_keyinfo=no ])
3891 if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3892 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3893 [Whether the krb5_ticket structure contains the kvno and enctype])
3896 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3897 smb_krb5_creds_opt_free_context,
3903 krb5_get_init_creds_opt *opt = NULL;
3904 krb5_get_init_creds_opt_free(ctx, opt);
3906 [smb_krb5_creds_opt_free_context=yes],
3907 [smb_krb5_creds_opt_free_context=no]
3911 if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3912 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3913 [Whether krb5_get_init_creds_opt_free takes a context argument])
3916 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3919 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3920 [smb_krb5_verify_checksum=7],
3921 [smb_krb5_verify_checksum=6],
3924 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3926 AC_CACHE_CHECK([for checksum in krb5_checksum],
3927 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3928 AC_TRY_COMPILE([#include <krb5.h>],
3929 [krb5_checksum cksum; cksum.checksum.length = 0;],
3930 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3931 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3933 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3934 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3935 [Whether the krb5_checksum struct has a checksum property])
3938 AC_CACHE_CHECK([for etype in EncryptedData],
3939 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3940 AC_TRY_COMPILE([#include <krb5.h>],
3941 [EncryptedData edata; edata.etype = 0;],
3942 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3943 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3945 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3946 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3947 [Whether the EncryptedData struct has a etype property])
3950 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3951 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3952 AC_TRY_COMPILE([#include <krb5.h>],
3953 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3954 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3955 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3957 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3958 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3959 [Whether the krb5_ap_req struct has a ticket pointer])
3962 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3963 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3964 AC_TRY_COMPILE([#include <krb5.h>],
3965 [krb5_error err; err.e_data = NULL;],
3966 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3967 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3969 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3970 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3971 [Whether the krb5_error struct has a e_data pointer])
3974 AC_CACHE_CHECK([for krb5_crypto type],
3975 samba_cv_HAVE_KRB5_CRYPTO,[
3976 AC_TRY_COMPILE([#include <krb5.h>],
3977 [krb5_crypto crypto;],
3978 samba_cv_HAVE_KRB5_CRYPTO=yes,
3979 samba_cv_HAVE_KRB5_CRYPTO=no)])
3981 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3982 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3983 [Whether the type krb5_crypto exists])
3986 AC_CACHE_CHECK([for krb5_encrypt_block type],
3987 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3988 AC_TRY_COMPILE([#include <krb5.h>],
3989 [krb5_encrypt_block block;],
3990 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3991 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3993 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3994 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3995 [Whether the type krb5_encrypt_block exists])
3998 AC_CACHE_CHECK([for addrtype in krb5_address],
3999 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
4000 AC_TRY_COMPILE([#include <krb5.h>],
4001 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
4002 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
4003 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
4005 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
4006 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
4007 [Whether the krb5_address struct has a addrtype property])
4010 AC_CACHE_CHECK([for addr_type in krb5_address],
4011 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
4012 AC_TRY_COMPILE([#include <krb5.h>],
4013 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
4014 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
4015 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
4017 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
4018 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
4019 [Whether the krb5_address struct has a addr_type property])
4022 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
4023 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
4024 [AC_TRY_COMPILE([#include <krb5.h>],
4025 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
4026 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
4028 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
4029 AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
4030 [Whether the krb5_ticket struct has a enc_part2 property])
4033 AC_CACHE_CHECK([for keyblock in krb5_creds],
4034 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
4035 AC_TRY_COMPILE([#include <krb5.h>],
4036 [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
4037 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
4038 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
4040 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
4041 AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
4042 [Whether the krb5_creds struct has a keyblock property])
4045 AC_CACHE_CHECK([for session in krb5_creds],
4046 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
4047 AC_TRY_COMPILE([#include <krb5.h>],
4048 [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
4049 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
4050 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
4052 if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
4053 AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
4054 [Whether the krb5_creds struct has a session property])
4057 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
4058 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
4059 AC_TRY_COMPILE([#include <krb5.h>],
4060 [krb5_keyblock key; key.keyvalue.data = NULL;],
4061 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
4062 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
4064 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
4065 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
4066 [Whether the krb5_keyblock struct has a keyvalue property])
4069 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
4070 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
4071 AC_TRY_COMPILE([#include <krb5.h>],
4072 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
4073 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
4074 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
4075 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
4076 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
4077 AC_TRY_COMPILE([#include <krb5.h>],
4078 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
4079 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
4080 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
4081 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
4082 # w.r.t. arcfour and windows, so we must not enable it here
4083 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
4084 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
4085 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
4086 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
4089 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
4090 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
4091 AC_TRY_COMPILE([#include <krb5.h>],
4092 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
4093 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
4094 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
4096 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
4097 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
4098 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
4101 AC_CACHE_CHECK([for KV5M_KEYTAB],
4102 samba_cv_HAVE_KV5M_KEYTAB,[
4103 AC_TRY_COMPILE([#include <krb5.h>],
4104 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
4105 samba_cv_HAVE_KV5M_KEYTAB=yes,
4106 samba_cv_HAVE_KV5M_KEYTAB=no)])
4108 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
4109 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
4110 [Whether the KV5M_KEYTAB option is available])
4113 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
4114 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
4115 AC_TRY_COMPILE([#include <krb5.h>],
4116 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
4117 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
4118 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
4120 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
4121 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
4122 [Whether KRB5_KU_OTHER_CKSUM is available])
4125 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
4126 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
4127 AC_TRY_COMPILE([#include <krb5.h>],
4128 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
4129 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
4130 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
4132 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
4133 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
4134 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
4137 AC_CACHE_CHECK([for the krb5_princ_component macro],
4138 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
4139 AC_TRY_LINK([#include <krb5.h>],
4140 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
4141 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
4142 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
4144 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
4145 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
4146 [Whether krb5_princ_component is available])
4149 AC_CACHE_CHECK([for key in krb5_keytab_entry],
4150 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
4151 AC_TRY_COMPILE([#include <krb5.h>],
4152 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
4153 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
4154 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
4156 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
4157 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
4158 [Whether krb5_keytab_entry has key member])
4161 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
4162 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
4163 AC_TRY_COMPILE([#include <krb5.h>],
4164 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4165 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4166 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4168 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4169 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4170 [Whether krb5_keytab_entry has keyblock member])
4173 AC_CACHE_CHECK([for magic in krb5_address],
4174 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4175 AC_TRY_COMPILE([#include <krb5.h>],
4176 [krb5_address addr; addr.magic = 0;],
4177 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4178 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4180 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4181 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4182 [Whether the krb5_address struct has a magic property])
4185 AC_CACHE_CHECK([for WRFILE: keytab support],
4186 samba_cv_HAVE_WRFILE_KEYTAB,[
4191 krb5_context context;
4194 krb5_init_context(&context);
4195 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4197 samba_cv_HAVE_WRFILE_KEYTAB=yes,
4198 samba_cv_HAVE_WRFILE_KEYTAB=no)])
4200 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4201 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4202 [Whether the WRFILE:-keytab is supported])
4205 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4206 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4207 AC_TRY_COMPILE([#include <krb5.h>],
4209 krb5_context context;
4210 krb5_principal principal;
4211 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4212 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4213 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4215 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4216 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4217 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4220 AC_CACHE_CHECK([for krb5_addresses type],
4221 samba_cv_HAVE_KRB5_ADDRESSES,[
4222 AC_TRY_COMPILE([#include <krb5.h>],
4223 [krb5_addresses addr;],
4224 samba_cv_HAVE_KRB5_ADDRESSES=yes,
4225 samba_cv_HAVE_KRB5_ADDRESSES=no)])
4227 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4228 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4229 [Whether the type krb5_addresses type exists])
4232 AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4233 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4234 AC_TRY_COMPILE([#include <krb5.h>],
4236 krb5_mk_error(0,0,0);],
4237 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4238 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4240 if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4241 AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4242 [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4245 if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4246 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4247 smb_krb5_enctype_to_string_takes_krb5_context_arg,[
4251 krb5_context context = NULL;
4253 krb5_enctype_to_string(context, 1, &str);
4254 if (str) free (str);
4257 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4258 smb_krb5_enctype_to_string_takes_krb5_context_arg=yes,
4259 smb_krb5_enctype_to_string_takes_krb5_context_arg=no)])
4261 if test x"$smb_krb5_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4262 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4263 [whether krb5_enctype_to_string takes krb5_context argument])
4266 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4267 smb_krb5_enctype_to_string_takes_size_t_arg,[
4272 krb5_enctype_to_string(1, buf, 256);
4275 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4276 smb_krb5_enctype_to_string_takes_size_t_arg=yes,
4277 smb_krb5_enctype_to_string_takes_size_t_arg=no)])
4279 if test x"$smb_krb5_enctype_to_string_takes_size_t_arg" = x"yes"; then
4280 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4281 [whether krb5_enctype_to_string takes size_t argument])
4285 AC_CACHE_CHECK([for krb5_principal_get_realm],
4286 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4287 AC_TRY_LINK([#include <krb5.h>],
4288 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4289 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4290 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4292 if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4293 AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4294 [Whether the function krb5_principal_get_realm is defined])
4297 AC_CACHE_CHECK([for krb5_princ_realm],
4298 samba_cv_HAVE_KRB5_PRINC_REALM,[
4299 AC_TRY_LINK([#include <krb5.h>],
4300 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4301 samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4302 samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4304 if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4305 AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4306 [Whether the macro krb5_princ_realm is defined])
4311 # Now the decisions whether we can support krb5
4313 # NOTE: all tests should be done before this block!
4316 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4317 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4321 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4322 x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4324 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4328 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4329 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4331 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4335 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4336 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4338 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4342 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4343 x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4345 AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4349 if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
4351 # We only need the following functions if we can't get the enctype
4352 # and kvno out of the ticket directly (ie. on Heimdal).
4354 if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4356 AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4360 if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4362 AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4368 if test x"$use_ads" = x"yes"; then
4369 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4370 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4371 if test x"$have_gssapi" = x"yes"; then
4372 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4375 if test x"$with_ads_support" = x"yes"; then
4376 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4378 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4380 AC_REMOVE_DEFINE(HAVE_KRB5_H)
4381 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4382 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4383 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4387 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4388 AC_MSG_RESULT([$use_ads])
4390 LIBS="$ac_save_LIBS"
4393 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4394 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4397 ########################################################
4398 # Compile with DNS Updates support?
4400 with_dnsupdate_support=no
4401 AC_MSG_CHECKING([whether to enable DNS Updates support])
4403 AC_ARG_WITH(dnsupdate,
4404 [ --with-dnsupdate Enable DNS Updates support (default no)],
4405 [ case "$withval" in
4407 with_dnsupdate_support=$withval
4411 AC_MSG_RESULT($with_dnsupdate_support)
4413 if test x"$with_dnsupdate_support" != x"no"; then
4415 ################################################################
4416 # first test for Active Directory support being enabled
4417 #if test x"$with_ads_support" = x"no"; then
4418 # AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4419 # with_dnsupdate_support=no
4421 ##################################################################
4422 # then test for uuid.h (necessary to generate unique DNS keynames
4423 # (uuid.h is required for this test)
4424 AC_CHECK_HEADERS(uuid/uuid.h)
4426 if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4427 if test x"$with_dnsupdate_support" = x"yes"; then
4428 AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4430 AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4432 with_dnsupdate_support=no
4436 if test x"$with_dnsupdate_support" != x"no"; then
4438 ########################################################
4439 # Now see if we can find the uuid libs in standard paths
4440 # On some systems, the uuid API is in libc, so we have to
4441 # be careful not to insert a spurious -luuid.
4444 AC_LIBTESTFUNC(uuid, uuid_generate,
4449 SMB_REMOVE_LIB(uuid)
4453 with_dnsupdate_support=yes
4454 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4457 if test x"$with_dnsupdate_support" = x"yes"; then
4458 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4460 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4462 with_dnsupdate_support=no
4466 #################################################
4467 # check for automount support
4468 AC_MSG_CHECKING(whether to use automount)
4469 AC_ARG_WITH(automount,
4470 [ --with-automount Include automount support (default=no)],
4471 [ case "$withval" in
4474 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4483 #################################################
4484 # check for smbmount support
4485 AC_MSG_CHECKING(whether to use smbmount)
4486 AC_ARG_WITH(smbmount,
4487 [ --with-smbmount Include smbmount (Linux only) support (default=no)],
4488 [ case "$withval" in
4493 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
4494 SMBMOUNT_PROGS="bin/smbmount bin/smbmnt bin/smbumount"
4497 AC_MSG_ERROR(not on a linux system!)
4508 #################################################
4509 # check for mount- and umount.cifs support
4511 INSTALL_CIFSMOUNT=""
4512 UNINSTALL_CIFSMOUNT=""
4513 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4514 AC_ARG_WITH(cifsmount,
4515 [ --with-cifsmount Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
4516 [ case "$withval" in
4524 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4525 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4526 INSTALL_CIFSMOUNT="installcifsmount"
4527 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4530 AC_MSG_ERROR(not on a linux system!)
4535 [ case "$host_os" in
4538 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4539 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4540 INSTALL_CIFSMOUNT="installcifsmount"
4541 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4549 #################################################
4550 # check for cifs.spnego support
4551 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4553 INSTALL_CIFSSPNEGO=""
4554 UNINSTALL_CIFSSPNEGO=""
4555 AC_MSG_CHECKING(whether to build cifs.spnego)
4556 AC_ARG_WITH(cifsspnego,
4557 [ --with-cifsspnego Include cifs.spnego (Linux only) support (default=no)],
4558 [ case "$withval" in
4565 if test x"$use_ads" != x"yes"; then
4566 AC_MSG_ERROR(ADS support should be enabled for building cifs.spnego)
4567 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4568 AC_MSG_ERROR(keyutils package is required for cifs.spnego)
4571 AC_DEFINE(WITH_CIFSSPNEGO,1,[whether to build cifs.spnego])
4572 CIFSSPNEGO_PROGS="bin/cifs.spnego"
4573 INSTALL_CIFSSPNEGO="installcifsspnego"
4574 UNINSTALL_CIFSSPNEGO="uninstallcifsspnego"
4578 AC_MSG_ERROR(not on a linux system!)
4589 #################################################
4590 # Check for a PAM clear-text auth, accounts, password
4591 # and session support. Most PAM implementations keep their
4592 # headers in /usr/include/security. Darwin keeps its in
4595 with_pam_for_crypt=no
4597 AC_MSG_CHECKING(whether to try PAM support)
4599 [ --with-pam Include PAM support (default=no)],
4600 [ case "$withval" in
4606 AC_MSG_RESULT([$try_pam])
4609 create_pam_modules=no
4610 if test x"${try_pam}" != x"no";then
4612 create_pam_modules=yes
4614 # Most systems have PAM headers in /usr/include/security, but Darwin
4615 # has them in /usr/include/pam.
4616 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4617 if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4618 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4619 if test x"${try_pam}" = x"yes";then
4620 AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4623 create_pam_modules=no
4626 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4627 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4628 if test x"${try_pam}" = x"yes";then
4629 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4632 create_pam_modules=no
4635 AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4636 #if HAVE_SECURITY_PAM_APPL_H
4637 #include <security/pam_appl.h>
4639 #if HAVE_PAM_PAM_APPL_H
4640 #include <pam/pam_appl.h>
4643 if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4644 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4645 if test x"${try_pam}" = x"yes";then
4646 AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4648 create_pam_modules=no
4651 if test x"$use_pam" = x"yes"; then
4652 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4653 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4654 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4655 with_pam_for_crypt=yes
4657 if test x"$create_pam_modules" = x"yes"; then
4658 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4659 # this checks are optional,
4660 # we don't care about the results here
4661 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4662 AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4663 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4665 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4668 AC_MSG_CHECKING(whether to use PAM support)
4669 AC_MSG_RESULT([$use_pam])
4671 AC_MSG_CHECKING(whether to have PAM MODULES support)
4672 AC_MSG_RESULT([$create_pam_modules])
4675 #################################################
4676 # check for pam_smbpass support
4678 INSTALL_PAM_MODULES=""
4679 UNINSTALL_PAM_MODULES=""
4680 AC_MSG_CHECKING(whether to use pam_smbpass)
4681 AC_ARG_WITH(pam_smbpass,
4682 [ --with-pam_smbpass Build PAM module for authenticating against passdb backends (default=no)],
4683 [ case "$withval" in
4687 # Conditions under which pam_smbpass should not be built.
4689 if test x"$BLDSHARED" != x"true"; then
4690 AC_MSG_ERROR([No support for shared modules])
4691 elif test x"$create_pam_modules" != x"yes"; then
4692 AC_MSG_ERROR([No support for PAM MODULES])
4694 PAM_MODULES="pam_smbpass"
4695 INSTALL_PAM_MODULES="installpammodules"
4696 UNINSTALL_PAM_MODULES="uninstallpammodules"
4707 ###############################################
4708 # test for where we get crypt() from
4709 AC_SEARCH_LIBS(crypt, [crypt],
4710 [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4711 AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4714 ## moved after the check for -lcrypt in order to
4715 ## ensure that the necessary libraries are included
4716 ## check checking for truncated salt. Wrapped by the
4717 ## $with_pam_for_crypt variable as above --jerry
4719 if test $with_pam_for_crypt = no; then
4720 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4722 LIBS="$AUTH_LIBS $LIBS"
4723 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4724 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4725 LIBS="$crypt_LIBS"])
4726 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4727 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4731 #################################################
4732 # check for a NISPLUS_HOME support
4733 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4734 AC_ARG_WITH(nisplus-home,
4735 [ --with-nisplus-home Include NISPLUS_HOME support (default=no)],
4736 [ case "$withval" in
4739 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4748 #################################################
4749 # check for syslog logging
4750 AC_MSG_CHECKING(whether to use syslog logging)
4752 [ --with-syslog Include experimental SYSLOG support (default=no)],
4753 [ case "$withval" in
4756 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4765 #################################################
4766 # check for experimental disk-quotas support
4768 samba_cv_WITH_QUOTAS=auto
4769 samba_cv_TRY_QUOTAS=no
4770 samba_cv_RUN_QUOTA_TESTS=auto
4771 samba_cv_WITH_SYS_QUOTAS=auto
4772 samba_cv_TRY_SYS_QUOTAS=auto
4773 samba_cv_SYSQUOTA_FOUND=no
4775 AC_MSG_CHECKING(whether to try disk-quotas support)
4777 [ --with-quotas Include disk-quota support (default=no)],
4778 [ case "$withval" in
4781 samba_cv_WITH_QUOTAS=yes
4782 samba_cv_TRY_QUOTAS=yes
4783 samba_cv_RUN_QUOTA_TESTS=yes
4784 #set sys quotas to auto in this case
4785 samba_cv_TRY_SYS_QUOTAS=auto
4789 samba_cv_WITH_QUOTAS=auto
4790 samba_cv_TRY_QUOTAS=auto
4791 samba_cv_RUN_QUOTA_TESTS=auto
4792 #set sys quotas to auto in this case
4793 samba_cv_TRY_SYS_QUOTAS=auto
4797 samba_cv_WITH_QUOTAS=no
4798 samba_cv_TRY_QUOTAS=no
4799 samba_cv_RUN_QUOTA_TESTS=no
4802 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4805 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4808 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4809 AC_ARG_WITH(sys-quotas,
4810 [ --with-sys-quotas Include lib/sysquotas.c support (default=auto)],
4811 [ case "$withval" in
4814 samba_cv_WITH_SYS_QUOTAS=yes
4815 samba_cv_TRY_SYS_QUOTAS=yes
4816 samba_cv_RUN_QUOTA_TESTS=yes
4820 samba_cv_WITH_SYS_QUOTAS=auto
4821 samba_cv_TRY_SYS_QUOTAS=auto
4822 samba_cv_RUN_QUOTA_TESTS=auto
4826 samba_cv_WITH_SYS_QUOTAS=no
4827 samba_cv_TRY_SYS_QUOTAS=no
4830 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4833 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4836 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4837 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4841 samba_cv_TRY_SYS_QUOTAS=yes
4842 samba_cv_RUN_QUOTA_TESTS=yes
4846 samba_cv_TRY_SYS_QUOTAS=no
4851 #############################################
4852 # only check for quota stuff if --with-quotas
4853 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4856 # on linux we didn't need to test we have builtin support
4858 samba_cv_SYSQUOTA_FOUND=yes
4859 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4860 samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4861 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4864 AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4865 samba_cv_found_xfs_header=yes
4866 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4870 # need to set this define when using static linking (BUG 1473)
4871 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4877 # some broken header files need this
4878 AC_CHECK_HEADER(asm/types.h,[
4879 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4880 AC_ADD_INCLUDE(<asm/types.h>)
4883 # For quotas on Veritas VxFS filesystems
4884 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4886 # For quotas on Linux XFS filesystems
4887 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4889 # For sys/quota.h and linux/quota.h
4890 AC_CHECK_HEADERS(sys/quota.h)
4892 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4893 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4894 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4896 #include "confdefs.h"
4897 #ifdef HAVE_SYS_TYPES_H
4898 #include <sys/types.h>
4900 #ifdef HAVE_ASM_TYPES_H
4901 #include <asm/types.h>
4903 #include <sys/quota.h>
4904 ],[int i = Q_XGETQUOTA;],
4905 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4906 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4907 samba_cv_found_xfs_header=yes
4911 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4912 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4914 #include "confdefs.h"
4915 #ifdef HAVE_SYS_QUOTA_H
4916 #include <sys/quota.h>
4920 D.dqb_fsoftlimit = 0;],
4921 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4922 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4923 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4927 # look for a working quota system
4929 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4930 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4932 #define HAVE_QUOTACTL_4A 1
4933 #define AUTOCONF_TEST 1
4934 #include "confdefs.h"
4935 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4936 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4937 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4938 samba_cv_SYSQUOTA_FOUND=yes;
4939 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4940 samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4944 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4945 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4947 #define HAVE_QUOTACTL_4B 1
4948 #define AUTOCONF_TEST 1
4949 #include "confdefs.h"
4950 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4951 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4952 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4953 echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4954 samba_cv_SYSQUOTA_FOUND=yes;
4955 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4956 samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4960 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4961 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4963 #define HAVE_QUOTACTL_3 1
4964 #define AUTOCONF_TEST 1
4965 #include "confdefs.h"
4966 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4967 samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4968 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4969 echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4970 samba_cv_SYSQUOTA_FOUND=yes;
4971 AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4972 samba_cv_sysquotas_file="lib/sysquotas_3.c"
4976 #################################################
4977 # check for mntent.h and struct mntent
4978 AC_CHECK_HEADERS(mntent.h)
4979 #################################################
4980 # check for setmntent,getmntent,endmntent
4981 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4983 #################################################
4984 # check for devnm.h and struct mntent
4985 AC_CHECK_HEADERS(devnm.h)
4986 #################################################
4988 AC_CHECK_FUNCS(devnm)
4990 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4991 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4992 # if --with-sys-quotas=yes then build it
4993 # you have can use the get/set quota command smb.conf
4995 samba_cv_SYSQUOTA_FOUND=auto
4997 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4998 # if --with-sys-quotas=yes then build it
4999 # you have can use the get/set quota command smb.conf
5001 samba_cv_TRY_SYS_QUOTAS=auto
5005 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
5006 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
5007 SAVE_CPPFLAGS="$CPPFLAGS"
5008 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5010 #include "confdefs.h"
5011 #define NO_PROTO_H 1
5012 #define NO_CONFIG_H 1
5013 #define HAVE_SYS_QUOTAS 1
5014 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
5015 #include "${srcdir-.}/lib/sysquotas.c"
5016 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
5017 CPPFLAGS="$SAVE_CPPFLAGS"
5019 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
5020 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
5021 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
5022 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5023 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
5024 samba_cv_WE_USE_SYS_QUOTAS=yes
5032 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
5033 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
5034 SAVE_CPPFLAGS="$CPPFLAGS"
5035 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5037 #include "confdefs.h"
5038 #define NO_PROTO_H 1
5039 #define NO_CONFIG_H 1
5040 #define HAVE_SYS_QUOTAS 1
5041 #define HAVE_XFS_QUOTAS 1
5042 #include "${srcdir-.}/lib/sysquotas_xfs.c"
5043 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
5044 CPPFLAGS="$SAVE_CPPFLAGS"
5046 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
5047 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
5048 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
5053 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
5054 SAVE_CPPFLAGS="$CPPFLAGS"
5055 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5057 #include "confdefs.h"
5058 #define NO_PROTO_H 1
5059 #define NO_CONFIG_H 1
5060 #include "${srcdir-.}/smbd/quotas.c"
5061 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
5062 CPPFLAGS="$SAVE_CPPFLAGS"
5064 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
5065 AC_MSG_CHECKING(whether to use the old quota support)
5066 if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
5067 if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
5068 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5078 ####################
5079 # End of quota check samba_cv_RUN_QUOTA_TESTS
5082 #################################################
5083 # check for experimental utmp accounting
5085 AC_MSG_CHECKING(whether to support utmp accounting)
5088 [ --with-utmp Include utmp accounting (default, if supported by OS)],
5089 [ case "$withval" in
5099 # utmp requires utmp.h
5100 # Note similar check earlier, when checking utmp details.
5102 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
5103 utmp_no_reason=", no utmp.h on $host_os"
5107 # Display test results
5109 if test x"$WITH_UTMP" = x"yes"; then
5111 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
5113 AC_MSG_RESULT(no$utmp_no_reason)
5118 UNINSTALLLIBCMD_SH=:
5121 if test $BLDSHARED = true; then
5122 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
5123 UNINSTALLLIBCMD_SH="rm -f"
5125 if test $enable_static = yes; then
5126 INSTALLLIBCMD_A="\$(INSTALLCMD)"
5127 UNINSTALLLIBCMD_A="rm -f"
5130 #################################################
5131 # --with-static-libs=LIBS:
5132 # link (internal) libs dynamically or statically?
5134 # If a subsystem is built as a library then this controls whether they are
5135 # linked into Samba targets statically or dynamically:
5137 # * If we build the shared library at all, we link dynamically by default.
5139 # * We only link statically if we don't build shared or if the library
5140 # appears in the --with-static-libs configure option.
5143 # --with-static-libs=talloc makes use of libtalloc.a instead
5144 # of linking the dynamic variant with -ltalloc.
5146 # NOTE: This option only affects libraries that we do not only build
5147 # but that samba also links against as libraries (as opposed to linking
5148 # the plain object files. - This has to be configured in Makefile.in.
5149 # So in particular it does not harm to give invalid or unknown names here.
5152 AC_ARG_WITH([static-libs],
5153 [AC_HELP_STRING([--with-static-libs=LIBS],
5154 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
5155 [AS_IF([test $withval],
5156 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
5157 [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
5158 eval LIB_$lib=STATIC
5162 #################################################
5163 # should we build libtalloc?
5164 LIBTALLOC_SHARED_TARGET=bin/libtalloc.$SHLIBEXT
5165 LIBTALLOC_STATIC_TARGET=bin/libtalloc.a
5170 AC_MSG_CHECKING(whether to build the libtalloc shared library)
5171 AC_ARG_WITH(libtalloc,
5172 [AS_HELP_STRING([--with-libtalloc],
5173 [Build the libtalloc shared library (default=yes if shared libs supported)])],
5180 samba_cv_with_libtalloc=yes
5185 # if unspecified, default is to built it if possible.
5186 samba_cv_with_libtalloc=yes
5190 if test x"$samba_cv_with_libtalloc" = "xyes" -a $BLDSHARED = true; then
5191 LIBTALLOC_SHARED=$LIBTALLOC_SHARED_TARGET
5193 if test x"$LIB_TALLOC" = "xSTATIC" ; then
5194 LIBTALLOC_STATIC=$LIBTALLOC_STATIC_TARGET
5196 LIBTALLOC_LIBS=-ltalloc
5200 AC_MSG_RESULT(no shared library support -- will supply static library)
5202 if test $enable_static = yes; then
5203 LIBTALLOC_STATIC=$LIBTALLOC_STATIC_TARGET
5207 #################################################
5208 # should we build libnetapi?
5210 UNINSTALL_LIBNETAPI=
5213 AC_MSG_CHECKING(whether to build the libnetapi shared library)
5214 AC_ARG_WITH(libnetapi,
5215 [ --with-libnetapi Build the libnetapi shared library (default=yes if shared libs supported)],
5216 [ case "$withval" in
5221 if test $BLDSHARED = true; then
5222 LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
5227 AC_MSG_RESULT(no shared library support -- will supply static library)
5229 if test $enable_static = yes; then
5232 INSTALL_LIBNETAPI=installlibnetapi
5233 UNINSTALL_LIBNETAPI=uninstalllibnetapi
5237 # if unspecified, default is to built it if possible.
5238 if test $BLDSHARED = true; then
5239 LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
5244 AC_MSG_RESULT(no shared library support -- will supply static library)
5246 if test $enable_static = yes; then
5249 INSTALL_LIBNETAPI=installlibnetapi
5252 #################################################
5253 # should we build libaddns?
5258 AC_MSG_CHECKING(whether to build the libaddns shared library)
5259 AC_ARG_WITH(libaddns,
5260 [ --with-libaddns Build the libaddns shared library (default=no undefined API)],
5261 [ case "$withval" in
5266 if test $BLDSHARED = true; then
5267 LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
5272 AC_MSG_RESULT(no shared library support -- will supply static library)
5274 if test $enable_static = yes; then
5277 INSTALL_LIBADDNS=installlibaddns
5278 UNINSTALL_LIBADDNS=uninstalllibaddns
5284 #################################################
5285 # should we build libsmbclient?
5287 INSTALL_LIBSMBCLIENT=
5288 UNINSTALL_LIBSMBCLIENT=
5289 LIBSMBCLIENT_SHARED=
5291 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
5292 AC_ARG_WITH(libsmbclient,
5293 [ --with-libsmbclient Build the libsmbclient shared library (default=yes if shared libs supported)],
5294 [ case "$withval" in
5299 if test $BLDSHARED = true; then
5300 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
5301 LIBSMBCLIENT=libsmbclient
5305 AC_MSG_RESULT(no shared library support -- will supply static library)
5307 if test $enable_static = yes; then
5308 LIBSMBCLIENT=libsmbclient
5310 INSTALL_LIBSMBCLIENT=installclientlib
5311 UNINSTALL_LIBSMBCLIENT=uninstallclientlib
5315 # if unspecified, default is to built it if possible.
5316 if test $BLDSHARED = true; then
5317 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
5318 LIBSMBCLIENT=libsmbclient
5322 AC_MSG_RESULT(no shared library support -- will supply static library)
5324 if test $enable_static = yes; then
5325 LIBSMBCLIENT=libsmbclient
5327 INSTALL_LIBSMBCLIENT=installclientlib
5328 UNINSTALL_LIBSMBCLIENT=uninstallclientlib
5331 INSTALL_LIBSMBSHAREMODES=
5332 LIBSMBSHAREMODES_SHARED=
5334 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
5335 AC_ARG_WITH(libsmbsharemodes,
5336 [ --with-libsmbsharemodes Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
5337 [ case "$withval" in
5342 if test $BLDSHARED = true; then
5343 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
5344 LIBSMBSHAREMODES=libsmbsharemodes
5348 AC_MSG_RESULT(no shared library support -- will supply static library)
5350 if test $enable_static = yes; then
5351 LIBSMBSHAREMODES=libsmbsharemodes
5353 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
5354 UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
5358 # if unspecified, default is to built it if possible.
5359 if test $BLDSHARED = true; then
5360 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
5361 LIBSMBSHAREMODES=libsmbsharemodes
5365 AC_MSG_RESULT(no shared library support -- will supply static library)
5367 if test $enable_static = yes; then
5368 LIBSMBSHAREMODES=libsmbsharemodes
5370 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
5374 #################################################
5375 # these tests are taken from the GNU fileutils package
5376 AC_CHECKING(how to get filesystem space usage)
5379 # Test for statvfs64.
5380 if test $space = no; then
5382 AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
5384 #if defined(HAVE_UNISTD_H)
5387 #include <sys/types.h>
5388 #include <sys/statvfs.h>
5391 struct statvfs64 fsd;
5392 exit (statvfs64 (".", &fsd));
5394 fu_cv_sys_stat_statvfs64=yes,
5395 fu_cv_sys_stat_statvfs64=no,
5396 fu_cv_sys_stat_statvfs64=cross)])
5397 if test $fu_cv_sys_stat_statvfs64 = yes; then
5399 AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
5403 # Perform only the link test since it seems there are no variants of the
5404 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
5405 # because that got a false positive on SCO OSR5. Adding the declaration
5406 # of a `struct statvfs' causes this test to fail (as it should) on such
5407 # systems. That system is reported to work fine with STAT_STATFS4 which
5408 # is what it gets when this test fails.
5409 if test $space = no; then
5411 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5412 [AC_TRY_LINK([#include <sys/types.h>
5413 #include <sys/statvfs.h>],
5414 [struct statvfs fsd; statvfs (0, &fsd);],
5415 fu_cv_sys_stat_statvfs=yes,
5416 fu_cv_sys_stat_statvfs=no)])
5417 if test $fu_cv_sys_stat_statvfs = yes; then
5419 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5423 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5424 # This is not the case on ancient Linux systems.
5426 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5427 AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5428 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5429 if test x"$samba_cv_fsid_int" = x"yes"; then
5430 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5433 if test $space = no; then
5434 # DEC Alpha running OSF/1
5435 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5436 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5438 #include <sys/param.h>
5439 #include <sys/types.h>
5440 #include <sys/mount.h>
5445 exit (statfs (".", &fsd, sizeof (struct statfs)));
5447 fu_cv_sys_stat_statfs3_osf1=yes,
5448 fu_cv_sys_stat_statfs3_osf1=no,
5449 fu_cv_sys_stat_statfs3_osf1=no)])
5450 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5451 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5453 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5457 if test $space = no; then
5459 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5460 member (AIX, 4.3BSD)])
5461 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5463 #ifdef HAVE_SYS_PARAM_H
5464 #include <sys/param.h>
5466 #ifdef HAVE_SYS_MOUNT_H
5467 #include <sys/mount.h>
5469 #ifdef HAVE_SYS_VFS_H
5470 #include <sys/vfs.h>
5476 exit (statfs (".", &fsd));
5478 fu_cv_sys_stat_statfs2_bsize=yes,
5479 fu_cv_sys_stat_statfs2_bsize=no,
5480 fu_cv_sys_stat_statfs2_bsize=no)])
5481 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5482 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5484 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5488 if test $space = no; then
5490 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5491 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5492 [AC_TRY_RUN([#include <sys/types.h>
5493 #include <sys/statfs.h>
5497 exit (statfs (".", &fsd, sizeof fsd, 0));
5499 fu_cv_sys_stat_statfs4=yes,
5500 fu_cv_sys_stat_statfs4=no,
5501 fu_cv_sys_stat_statfs4=no)])
5502 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5503 if test $fu_cv_sys_stat_statfs4 = yes; then
5505 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5509 if test $space = no; then
5511 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5512 member (4.4BSD and NetBSD)])
5513 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5514 [AC_TRY_RUN([#include <sys/types.h>
5515 #ifdef HAVE_SYS_PARAM_H
5516 #include <sys/param.h>
5518 #ifdef HAVE_SYS_MOUNT_H
5519 #include <sys/mount.h>
5525 exit (statfs (".", &fsd));
5527 fu_cv_sys_stat_statfs2_fsize=yes,
5528 fu_cv_sys_stat_statfs2_fsize=no,
5529 fu_cv_sys_stat_statfs2_fsize=no)])
5530 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5531 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5533 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5537 if test $space = no; then
5539 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5540 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5541 [AC_TRY_RUN([#include <sys/types.h>
5542 #ifdef HAVE_SYS_PARAM_H
5543 #include <sys/param.h>
5545 #ifdef HAVE_SYS_MOUNT_H
5546 #include <sys/mount.h>
5548 #ifdef HAVE_SYS_FS_TYPES_H
5549 #include <sys/fs_types.h>
5554 /* Ultrix's statfs returns 1 for success,
5555 0 for not mounted, -1 for failure. */
5556 exit (statfs (".", &fsd) != 1);
5558 fu_cv_sys_stat_fs_data=yes,
5559 fu_cv_sys_stat_fs_data=no,
5560 fu_cv_sys_stat_fs_data=no)])
5561 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5562 if test $fu_cv_sys_stat_fs_data = yes; then
5564 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5569 # As a gating factor for large file support, in order to
5570 # use <4GB files we must have the following minimal support
5572 # long long, and a 64 bit off_t or off64_t.
5573 # If we don't have all of these then disable large
5576 AC_MSG_CHECKING([if large file support can be enabled])
5578 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5579 #include <sys/types.h>
5585 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5586 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5587 AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5589 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5591 #################################################
5592 # check for cluster extensions
5594 AC_MSG_CHECKING(whether to include cluster support)
5595 AC_ARG_WITH(cluster-support,
5596 [ --with-cluster-support Enable cluster extensions (default=no)])
5597 if test "x$with_cluster_support" = "xyes"; then
5598 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5605 #################################################
5606 # check for ACL support
5608 AC_MSG_CHECKING(whether to support ACLs)
5609 AC_ARG_WITH(acl-support,
5610 [ --with-acl-support Include ACL support (default=auto)],
5611 [ case "$withval" in
5613 with_acl_support="$withval"
5617 if test x"$with_acl_support" = x ; then
5618 with_acl_support="auto"
5621 AC_MSG_RESULT($with_acl_support)
5623 if test x"$with_acl_support" = x"no"; then
5624 AC_MSG_RESULT(Disabling ACL support)
5625 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5627 AC_MSG_NOTICE(checking whether ACL support is available:)
5630 AC_MSG_NOTICE(Using UnixWare ACLs)
5631 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5632 default_static_modules="$default_static_modules vfs_solarisacl"
5635 AC_MSG_NOTICE(Using solaris ACLs)
5636 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5637 ACL_LIBS="$ACL_LIBS -lsec"
5638 default_static_modules="$default_static_modules vfs_solarisacl"
5641 AC_MSG_NOTICE(Using HPUX ACLs)
5642 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5643 default_static_modules="$default_static_modules vfs_hpuxacl"
5646 AC_MSG_NOTICE(Using IRIX ACLs)
5647 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5648 default_static_modules="$default_static_modules vfs_irixacl"
5651 AC_MSG_NOTICE(Using AIX ACLs)
5652 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5653 default_static_modules="$default_static_modules vfs_aixacl"
5656 AC_MSG_NOTICE(Using Tru64 ACLs)
5657 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5658 ACL_LIBS="$ACL_LIBS -lpacl"
5659 default_static_modules="$default_static_modules vfs_tru64acl"
5662 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5663 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5666 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5669 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5672 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5674 LIBS="$LIBS $ACL_LIBS"
5676 #include <sys/types.h>
5677 #include <sys/acl.h>
5681 acl_entry_t *entry_p;
5682 return acl_get_entry(acl, entry_id, entry_p);
5684 [samba_cv_HAVE_POSIX_ACLS=yes],
5685 [samba_cv_HAVE_POSIX_ACLS=no])
5688 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5689 AC_MSG_NOTICE(Using posix ACLs)
5690 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5691 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5693 LIBS="$LIBS $ACL_LIBS"
5695 #include <sys/types.h>
5696 #include <sys/acl.h>
5698 acl_permset_t permset_d;
5700 return acl_get_perm_np(permset_d, perm);
5702 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5703 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5706 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5707 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5709 default_static_modules="$default_static_modules vfs_posixacl"
5711 AC_MSG_NOTICE(ACL support is not avaliable)
5712 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5716 fi # with_acl_support
5720 #################################################
5721 # check for AIO support
5723 AC_MSG_CHECKING(whether to support asynchronous io)
5724 AC_ARG_WITH(aio-support,
5725 [ --with-aio-support Include asynchronous io support (default=no)],
5726 [ case "$withval" in
5733 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5734 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5735 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5738 AC_TRY_LINK([#include <sys/types.h>
5740 [ struct aiocb a; return aio_read(&a);],
5741 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5743 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5746 AC_TRY_LINK([#include <sys/types.h>
5748 [ struct aiocb64 a; return aio_read64(&a);],
5749 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5751 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5752 AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5753 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5755 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5756 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5760 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5761 AC_MSG_CHECKING(for aio_read)
5762 AC_LINK_IFELSE([#include <aio.h>
5763 int main() { struct aiocb a; return aio_read(&a); }],
5764 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5765 [AC_MSG_RESULT(no)])
5767 AC_MSG_CHECKING(for aio_write)
5768 AC_LINK_IFELSE([#include <aio.h>
5769 int main() { struct aiocb a; return aio_write(&a); }],
5770 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5771 [AC_MSG_RESULT(no)])
5773 AC_MSG_CHECKING(for aio_fsync)
5774 AC_LINK_IFELSE([#include <aio.h>
5775 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5776 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5777 [AC_MSG_RESULT(no)])
5779 AC_MSG_CHECKING(for aio_return)
5780 AC_LINK_IFELSE([#include <aio.h>
5781 int main() { struct aiocb a; return aio_return(&a); }],
5782 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5783 [AC_MSG_RESULT(no)])
5785 AC_MSG_CHECKING(for aio_error)
5786 AC_LINK_IFELSE([#include <aio.h>
5787 int main() { struct aiocb a; return aio_error(&a); }],
5788 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5789 [AC_MSG_RESULT(no)])
5791 AC_MSG_CHECKING(for aio_cancel)
5792 AC_LINK_IFELSE([#include <aio.h>
5793 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5794 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5795 [AC_MSG_RESULT(no)])
5797 AC_MSG_CHECKING(for aio_suspend)
5798 AC_LINK_IFELSE([#include <aio.h>
5799 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5800 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5801 [AC_MSG_RESULT(no)])
5804 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5805 AC_MSG_CHECKING(for aio_read64)
5806 AC_LINK_IFELSE([#include <aio.h>
5807 int main() { struct aiocb a; return aio_read64(&a); }],
5808 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5809 [AC_MSG_RESULT(no)])
5811 AC_MSG_CHECKING(for aio_write64)
5812 AC_LINK_IFELSE([#include <aio.h>
5813 int main() { struct aiocb a; return aio_write64(&a); }],
5814 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5815 [AC_MSG_RESULT(no)])
5817 AC_MSG_CHECKING(for aio_fsync64)
5818 AC_LINK_IFELSE([#include <aio.h>
5819 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5820 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5821 [AC_MSG_RESULT(no)])
5823 AC_MSG_CHECKING(for aio_return64)
5824 AC_LINK_IFELSE([#include <aio.h>
5825 int main() { struct aiocb a; return aio_return64(&a); }],
5826 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5827 [AC_MSG_RESULT(no)])
5829 AC_MSG_CHECKING(for aio_error64)
5830 AC_LINK_IFELSE([#include <aio.h>
5831 int main() { struct aiocb a; return aio_error64(&a); }],
5832 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5833 [AC_MSG_RESULT(no)])
5835 AC_MSG_CHECKING(for aio_cancel64)
5836 AC_LINK_IFELSE([#include <aio.h>
5837 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5838 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5839 [AC_MSG_RESULT(no)])
5841 AC_MSG_CHECKING(for aio_suspend64)
5842 AC_LINK_IFELSE([#include <aio.h>
5843 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5844 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5845 [AC_MSG_RESULT(no)])
5852 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5855 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5859 #################################################
5860 # check for sendfile support
5862 with_sendfile_support=yes
5863 AC_MSG_CHECKING(whether to check to support sendfile)
5864 AC_ARG_WITH(sendfile-support,
5865 [ --with-sendfile-support Check for sendfile support (default=yes)],
5866 [ case "$withval" in
5873 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5874 AC_TRY_LINK([#include <sys/sendfile.h>],
5879 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5881 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5883 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5884 AC_TRY_LINK([#include <sys/sendfile.h>],
5889 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5891 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5893 # Try and cope with broken Linux sendfile....
5894 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5896 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5897 #undef _FILE_OFFSET_BITS
5899 #include <sys/sendfile.h>],
5904 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5906 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5908 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5909 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5910 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5911 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5912 elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5913 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5914 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5915 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5916 elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5917 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5918 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5924 *freebsd* | *dragonfly* )
5925 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5927 #include <sys/types.h>
5929 #include <sys/socket.h>
5930 #include <sys/uio.h>],
5932 int fromfd, tofd, ret, total=0;
5933 off_t offset, nwritten;
5936 hdr.headers = &hdtrl;
5938 hdr.trailers = NULL;
5940 hdtrl.iov_base = NULL;
5942 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5944 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5946 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5947 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5948 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5949 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5956 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5958 #include <sys/socket.h>
5959 #include <sys/uio.h>],
5963 struct iovec hdtrl[2];
5967 hdtrl[0].iov_base = 0;
5968 hdtrl[0].iov_len = 0;
5970 nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5972 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5973 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5974 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5975 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5976 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5981 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5983 #include <sys/socket.h>
5984 #include <sys/uio.h>],
5988 struct iovec hdtrl[2];
5992 hdtrl[0].iov_base = 0;
5993 hdtrl[0].iov_len = 0;
5995 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5997 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5998 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5999 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
6000 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
6001 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
6008 AC_CHECK_LIB(sendfile,sendfilev)
6009 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
6011 #include <sys/sendfile.h>],
6015 struct sendfilevec vec[2];
6021 vec[0].sfv_fd = SFV_FD_SELF;
6022 vec[0].sfv_flag = 0;
6027 vec[1].sfv_flag = 0;
6030 nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
6032 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
6034 if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
6035 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
6036 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
6037 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
6042 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
6044 #include <sys/sendfile.h>],
6048 struct sendfilevec vec[2];
6054 vec[0].sfv_fd = SFV_FD_SELF;
6055 vec[0].sfv_flag = 0;
6060 vec[1].sfv_flag = 0;
6063 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
6065 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
6067 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
6068 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
6069 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
6070 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
6076 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
6078 #include <sys/socket.h>],
6082 struct sf_parms hdtrl;
6086 hdtrl.header_data = 0;
6087 hdtrl.header_length = 0;
6088 hdtrl.file_descriptor = fromfd;
6089 hdtrl.file_offset = 0;
6090 hdtrl.file_bytes = 0;
6091 hdtrl.trailer_data = 0;
6092 hdtrl.trailer_length = 0;
6094 nwritten = send_file(&tofd, &hdtrl, 0);
6096 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
6097 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
6098 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
6099 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
6100 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
6116 ############################################
6117 # See if we have the Linux readahead syscall.
6119 AC_CACHE_CHECK([for Linux readahead],
6120 samba_cv_HAVE_LINUX_READAHEAD,[
6122 #if defined(HAVE_UNISTD_H)
6125 #include <fcntl.h>],
6126 [ssize_t err = readahead(0,0,0x80000);],
6127 samba_cv_HAVE_LINUX_READAHEAD=yes,
6128 samba_cv_HAVE_LINUX_READAHEAD=no)])
6130 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
6131 AC_DEFINE(HAVE_LINUX_READAHEAD,1,
6132 [Whether Linux readahead is available])
6135 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
6137 ############################################
6138 # See if we have the posix_fadvise syscall.
6140 AC_CACHE_CHECK([for posix_fadvise],
6141 samba_cv_HAVE_POSIX_FADVISE,[
6143 #if defined(HAVE_UNISTD_H)
6146 #include <fcntl.h>],
6147 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
6148 samba_cv_HAVE_POSIX_FADVISE=yes,
6149 samba_cv_HAVE_POSIX_FADVISE=no)])
6151 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
6152 AC_DEFINE(HAVE_POSIX_FADVISE,1,
6153 [Whether posix_fadvise is available])
6158 #################################################
6159 # Check whether winbind is supported on this platform. If so we need to
6160 # build and install client programs, sbin programs and shared libraries
6162 AC_MSG_CHECKING(whether to build winbind)
6164 # Initially, the value of $host_os decides whether winbind is supported
6168 # Define the winbind shared library name and any specific linker flags
6169 # it needs to be built with.
6171 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
6172 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
6173 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
6174 NSSSONAMEVERSIONSUFFIX=""
6175 WINBIND_NSS_PTHREAD=""
6179 NSSSONAMEVERSIONSUFFIX=".2"
6180 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
6183 # FreeBSD winbind client is implemented as a wrapper around
6184 # the Linux version.
6185 NSSSONAMEVERSIONSUFFIX=".1"
6186 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
6187 nsswitch/winbind_nss_linux.o"
6188 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
6189 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
6193 # NetBSD winbind client is implemented as a wrapper
6194 # around the Linux version. It needs getpwent_r() to
6195 # indicate libc's use of the correct nsdispatch API.
6197 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
6198 WINBIND_NSS_EXTRA_OBJS="\
6199 nsswitch/winbind_nss_netbsd.o \
6200 nsswitch/winbind_nss_linux.o"
6201 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
6202 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
6205 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6209 # IRIX has differently named shared libraries
6210 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
6211 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
6212 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
6215 # Solaris winbind client is implemented as a wrapper around
6216 # the Linux version.
6217 NSSSONAMEVERSIONSUFFIX=".1"
6218 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
6219 nsswitch/winbind_nss_linux.o"
6220 WINBIND_NSS_EXTRA_LIBS="-lsocket"
6223 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
6226 # AIX has even differently named shared libraries. No
6227 # WINS support has been implemented yet.
6228 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
6229 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6230 WINBIND_NSS="nsswitch/WINBIND"
6235 winbind_no_reason=", unsupported on $host_os"
6239 # Check the setting of --with-winbind
6241 AC_ARG_WITH(winbind,
6242 [ --with-winbind Build winbind (default, if supported by OS)],
6255 # We need unix domain sockets for winbind
6257 if test x"$HAVE_WINBIND" = x"yes"; then
6258 if test x"$samba_cv_unixsocket" = x"no"; then
6259 winbind_no_reason=", no unix domain socket support on $host_os"
6264 # Display test results
6266 if test x"$HAVE_WINBIND" = x"no"; then
6271 BUILD_LIBWBCLIENT_SHARED=yes
6273 AC_ARG_ENABLE(libwbclient-shared,
6274 [ --enable-libwbclient-shared Build libwbclient as shared object (default=yes, \"no\" only for --enable-developer)],
6275 [if eval "test x$enable_developer = xyes -a x$enable_libwbclient_shared = xno" ; then
6276 BUILD_LIBWBCLIENT_SHARED=no
6279 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6280 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6281 ## Only worry about libwbclient if we have shared library support
6283 LIBWBCLIENT_SHARED=bin/libwbclient.$SHLIBEXT
6284 LIBWBCLIENT=libwbclient
6285 INSTALL_LIBWBCLIENT=installlibwbclient
6286 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6287 WINBIND_LIBS="-lwbclient"
6288 LDFLAGS="$LDFLAGS -L./bin"
6290 LIBWBCLIENT_STATIC=bin/libwbclient.a
6293 if test x"$HAVE_WINBIND" = x"yes"; then
6295 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6297 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6298 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6299 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6300 PAM_MODULES="$PAM_MODULES pam_winbind"
6301 INSTALL_PAM_MODULES="installpammodules"
6302 UNINSTALL_PAM_MODULES="uninstallpammodules"
6305 AC_MSG_RESULT(no$winbind_no_reason)
6308 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
6309 AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
6311 AC_SUBST(WINBIND_NSS_PTHREAD)
6312 AC_SUBST(WINBIND_NSS)
6313 AC_SUBST(WINBIND_WINS_NSS)
6314 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6315 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6316 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
6317 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6319 AC_SUBST(WINBIND_KRB5_LOCATOR)
6321 # Solaris 10 does have new member in nss_XbyY_key
6322 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6323 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6324 [#include <nss_dbdefs.h>])
6326 # Solaris has some extra fields in struct passwd that need to be
6327 # initialised otherwise nscd crashes.
6329 AC_CHECK_MEMBER(struct passwd.pw_comment,
6330 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6333 AC_CHECK_MEMBER(struct passwd.pw_age,
6334 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6337 # AIX 4.3.x and 5.1 do not have as many members in
6338 # struct secmethod_table as AIX 5.2
6339 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6340 [#include <usersec.h>])
6341 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6342 [#include <usersec.h>])
6344 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6345 AC_TRY_COMPILE([#include <sys/types.h>
6346 #include <sys/socket.h>],
6349 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6351 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6352 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6353 AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6357 #################################################
6358 # Check to see if we should use the included popt
6360 AC_ARG_WITH(included-popt,
6361 [ --with-included-popt use bundled popt library, not from system],
6372 if test x"$INCLUDED_POPT" != x"yes"; then
6373 AC_CHECK_LIB(popt, poptGetContext,
6374 INCLUDED_POPT=no, INCLUDED_POPT=yes)
6377 AC_MSG_CHECKING(whether to use included popt)
6378 if test x"$INCLUDED_POPT" = x"yes"; then
6380 BUILD_POPT='$(POPT_OBJ)'
6381 POPTLIBS='$(POPT_OBJ)'
6382 FLAGS1="-I\$(srcdir)/popt"
6388 AC_SUBST(BUILD_POPT)
6392 #################################################
6393 # Check if user wants DNS service discovery support
6395 AC_ARG_ENABLE(dnssd,
6396 [ --enable-dnssd Enable DNS service discovery support (default=auto)])
6398 AC_SUBST(DNSSD_LIBS)
6399 if test x"$enable_dnssd" != x"no"; then
6400 have_dnssd_support=yes
6402 AC_CHECK_HEADERS(dns_sd.h)
6403 if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6404 have_dnssd_support=no
6407 # On Darwin the DNSSD API is in libc, but on other platforms it's
6408 # probably in -ldns_sd
6409 AC_CHECK_FUNCS(DNSServiceRegister)
6410 AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6411 if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6412 x"$ac_cv_lib_ext_DNSServiceRegister" != x"yes"; then
6413 have_dnssd_support=no
6416 if test x"$have_dnssd_support" = x"yes"; then
6417 AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6418 [Whether to enable DNS service discovery support])
6420 if test x"$enable_dnssd" = x"yes"; then
6421 AC_MSG_ERROR(DNS service discovery support not available)
6427 #################################################
6428 # Check to see if we should use the included iniparser
6430 AC_ARG_WITH(included-iniparser,
6431 [ --with-included-iniparser use bundled iniparser library, not from system],
6435 INCLUDED_INIPARSER=yes
6438 INCLUDED_INIPARSER=no
6442 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6443 AC_CHECK_LIB(iniparser, iniparser_load,
6444 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6447 AC_MSG_CHECKING(whether to use included iniparser)
6448 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6450 BUILD_INIPARSER='$(INIPARSER_OBJ)'
6452 FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6456 INIPARSERLIBS="-liniparser"
6458 AC_SUBST(BUILD_INIPARSER)
6459 AC_SUBST(INIPARSERLIBS)
6464 # Checks for the vfs_fileid module
6466 AC_CHECK_FUNC(getmntent)
6468 AC_CHECK_HEADERS(sys/statfs.h)
6470 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6471 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6473 #include <sys/types.h>
6474 #include <sys/statfs.h>
6478 fsid_t fsid = fsd.f_fsid;
6479 return statfs (".", &fsd);
6481 vfsfileid_cv_statfs=yes,
6482 vfsfileid_cv_statfs=no,
6483 vfsfileid_cv_statfs=cross)
6485 AC_MSG_RESULT($vfsfileid_cv_statfs)
6487 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6488 x"$vfsfileid_cv_statfs" = x"yes"; then
6489 default_shared_modules="$default_shared_modules vfs_fileid"
6492 # Checks for the vfs_fileid module
6495 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6497 eval MODULE_DEFAULT_$i=STATIC
6500 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6502 dnl Fall back to static if we cannot build shared libraries
6503 eval MODULE_DEFAULT_$i=STATIC
6505 if test $BLDSHARED = true; then
6506 eval MODULE_DEFAULT_$i=SHARED
6510 dnl Always built these modules static
6511 MODULE_rpc_spoolss=STATIC
6512 MODULE_rpc_srvsvc2=STATIC
6513 MODULE_idmap_tdb=STATIC
6514 MODULE_idmap_passdb=STATIC
6515 MODULE_idmap_nss=STATIC
6517 MODULE_nss_info_template=STATIC
6519 AC_ARG_WITH(static-modules,
6520 [ --with-static-modules=MODULES Comma-separated list of names of modules to statically link in],
6521 [ if test $withval; then
6522 for i in `echo $withval | sed -e 's/,/ /g'`
6524 eval MODULE_$i=STATIC
6528 AC_ARG_WITH(shared-modules,
6529 [ --with-shared-modules=MODULES Comma-separated list of names of modules to build shared],
6530 [ if test $withval; then
6531 for i in `echo $withval | sed -e 's/,/ /g'`
6533 eval MODULE_$i=SHARED
6537 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6538 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6539 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6540 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6541 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6544 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6545 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6546 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6547 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6548 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6549 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
6550 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6551 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6552 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6553 SMB_MODULE(rpc_srvsvc2, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc2.$SHLIBEXT", RPC)
6554 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6555 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
6556 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6557 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6558 SMB_SUBSYSTEM(RPC,smbd/server.o)
6560 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6561 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6562 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6563 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6564 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6565 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6566 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6567 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6569 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6570 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6572 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6573 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6574 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6575 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6576 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6578 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6579 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6580 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6581 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6582 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6583 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6584 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6585 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6587 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6588 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6589 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6590 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6591 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6592 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6593 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6594 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6595 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6596 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6597 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6598 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6599 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6600 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6601 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6602 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6603 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6604 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6605 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6606 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6607 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6608 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6609 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6610 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6611 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6612 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6613 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6614 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6615 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6616 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6617 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6618 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6619 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6620 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6621 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6624 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6626 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6628 #################################################
6629 # do extra things if we are running insure
6631 if test "${ac_cv_prog_CC}" = "insure"; then
6632 CPPFLAGS="$CPPFLAGS -D__INSURE__"
6635 #################################################
6636 # If run from the build farm, enable NASTY hacks
6637 #################################################
6638 AC_MSG_CHECKING(whether to enable build farm hacks)
6639 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6641 AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6646 #################################################
6647 # check for bad librt/libpthread interactions
6649 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6650 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6651 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6652 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6654 SMB_IF_RTSIGNAL_BUG(
6656 # Have RT_SIGNAL bug, need to check whether the problem will
6657 # affect anything we have configured.
6660 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6661 if test x"$rt_signal_lease_ok" = x"no" ; then
6666 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6667 if test x"$rt_signal_notify_ok" = x"no" ; then
6672 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6673 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6674 if test x"$rt_signal_aio_ok" = x"no" ; then
6679 if test x"$rt_do_error" = x"yes" ; then
6680 SMB_IS_LIBPTHREAD_LINKED(
6684 *** On this platforms, linking Samba against pthreads causes problems
6685 *** with the oplock and change notification mechanisms. You may be
6686 *** using pthreads as a side-effect of using the --with-aio-support
6687 *** or --with-profiling-data options. Please remove these and try again.
6694 *** On this platform, the oplock and change notification mechanisms do not
6695 *** appear to work. Please report this problem to samba-technical@samba.org
6696 *** and attach the config.log file from this directory.
6700 AC_MSG_ERROR(unable to use realtime signals on this platform)
6704 # no RT_SIGNAL bug, we are golden
6705 SMB_IS_LIBPTHREAD_LINKED(
6707 AC_MSG_WARN(using libpthreads - this may degrade performance)
6712 # cross compiling, I hope you know what you are doing
6718 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6719 LIB_REMOVE_USR_LIB(LDFLAGS)
6720 LIB_REMOVE_USR_LIB(LIBS)
6721 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6723 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6724 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6725 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6727 #################################################
6728 # Display summary of libraries detected
6730 AC_MSG_RESULT([Using libraries:])
6731 AC_MSG_RESULT([ LIBS = $LIBS])
6732 if test x"$with_ads_support" != x"no"; then
6733 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6735 if test x"$with_ldap_support" != x"no"; then
6736 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6738 if test x"$with_dnsupdate_support" != x"no"; then
6739 AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS])
6741 if test x"$have_dnssd_support" != x"no"; then
6742 AC_MSG_RESULT([ DNSSD_LIBS = $DNSSD_LIBS])
6744 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6746 #################################################
6747 # final configure stuff
6749 AC_MSG_CHECKING([configure summary])
6750 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6752 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6753 AC_MSG_WARN([cannot run when cross-compiling]))
6755 dnl Merge in developer cflags from now on
6756 AC_SUBST(DEVELOPER_CFLAGS)
6757 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
6758 CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6764 # Stuff the smbd-only libraries at the end of the smbd link
6765 # path (if we have them).
6766 SMBD_LIBS="$samba_dmapi_libs"
6769 AC_OUTPUT(Makefile library-versions
6770 script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6771 lib/netapi/examples/Makefile
6772 pkgconfig/smbclient.pc
6773 pkgconfig/wbclient.pc
6775 pkgconfig/smbsharemodes.pc
6778 #################################################
6779 # Print very concise instructions on building/use
6780 if test "x$enable_dmalloc" = xyes
6782 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
6783 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])