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 [AS_HELP_STRING([--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 [AS_HELP_STRING([--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 [AS_HELP_STRING([--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 [AS_HELP_STRING([--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 [AS_HELP_STRING([--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 [AS_HELP_STRING([--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 [AS_HELP_STRING([--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 [AS_HELP_STRING([--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 [AS_HELP_STRING([--with-ctdb=DIR], [Where to find ctdb sources])],
200 AC_MSG_WARN([--with-ctdb called without argument])
207 #################################################
208 # set lib directory location
210 [AS_HELP_STRING([--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 [AS_HELP_STRING([--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 [AS_HELP_STRING([--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 [AS_HELP_STRING([--with-cfenc=HEADERDIR], [Use internal CoreFoundation encoding API for optimization (Mac OS X/Darwin only)])],
258 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
259 # Should have been in framework $withval/CoreFoundation.framework/Headers.
261 $withval/CoreFoundation/StringEncodings.subproj \
262 $withval/StringEncodings.subproj \
263 $withval/CoreFoundation.framework/Headers \
267 if test -r $d/CFStringEncodingConverter.h; then
268 ln -sfh $d include/CoreFoundation
273 AC_LIBREPLACE_CC_CHECKS
275 m4_include(lib/talloc/libtalloc.m4)
278 for obj in ${TALLOC_OBJ}; do
279 TALLOC_OBJS="${TALLOCOBJS} ${tallocdir}/${obj}"
281 AC_SUBST(TALLOC_OBJS)
283 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
284 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
285 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} ${TALLOC_CFLAGS}"
286 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/tdb/include"
287 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
288 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
290 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
292 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
293 if test "x${srcdir-.}" != "x."; then
294 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
300 AC_SUBST(logfilebase)
306 AC_SUBST(codepagedir)
309 AC_SUBST(rootsbindir)
310 AC_SUBST(pammodulesdir)
312 dnl Unique-to-Samba variables we'll be playing with.
313 AC_SUBST(SAMBA_CPPFLAGS)
318 AC_SUBST(MODULE_EXPORTS)
319 AC_SUBST(DSO_EXPORTS)
323 AC_SUBST(PIE_LDFLAGS)
325 AC_SUBST(INSTALLLIBCMD_SH)
326 AC_SUBST(INSTALLLIBCMD_A)
327 AC_SUBST(UNINSTALLLIBCMD_SH)
328 AC_SUBST(UNINSTALLLIBCMD_A)
329 AC_SUBST(INSTALL_LIBADDNS)
330 AC_SUBST(UNINSTALL_LIBADDNS)
331 AC_SUBST(LIBADDNS_SHARED)
334 AC_SUBST(LIBTALLOC_STATIC_TARGET)
335 AC_SUBST(LIBTALLOC_SHARED_TARGET)
336 AC_SUBST(LIBTALLOC_SHARED)
337 AC_SUBST(LIBTALLOC_STATIC)
338 AC_SUBST(LIBTALLOC_LIBS)
340 AC_SUBST(INSTALL_LIBWBCLIENT)
341 AC_SUBST(UNINSTALL_LIBWBCLIENT)
342 AC_SUBST(LIBWBCLIENT_SHARED)
343 AC_SUBST(LIBWBCLIENT_STATIC)
344 AC_SUBST(LIBWBCLIENT)
345 AC_SUBST(WINBIND_LIBS)
347 AC_SUBST(LIBSAMBAUTIL_SHARED)
349 AC_SUBST(INSTALL_LIBSMBCLIENT)
350 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
351 AC_SUBST(LIBSMBCLIENT_SHARED)
352 AC_SUBST(LIBSMBCLIENT)
353 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
354 AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
355 AC_SUBST(LIBSMBSHAREMODES_SHARED)
356 AC_SUBST(LIBSMBSHAREMODES)
357 AC_SUBST(INSTALL_LIBNETAPI)
358 AC_SUBST(UNINSTALL_LIBNETAPI)
359 AC_SUBST(LIBNETAPI_SHARED)
364 AC_SUBST(PASSDB_LIBS)
369 AC_SUBST(PAM_MODULES)
370 AC_SUBST(INSTALL_PAM_MODULES)
371 AC_SUBST(UNINSTALL_PAM_MODULES)
372 AC_SUBST(NSS_MODULES)
373 AC_SUBST(EXTRA_BIN_PROGS)
374 AC_SUBST(SMBMOUNT_PROGS)
375 AC_SUBST(CIFSMOUNT_PROGS)
376 AC_SUBST(INSTALL_CIFSMOUNT)
377 AC_SUBST(UNINSTALL_CIFSMOUNT)
378 AC_SUBST(CIFSSPNEGO_PROGS)
379 AC_SUBST(INSTALL_CIFSSPNEGO)
380 AC_SUBST(UNINSTALL_CIFSSPNEGO)
381 AC_SUBST(EXTRA_SBIN_PROGS)
382 AC_SUBST(EXTRA_ALL_TARGETS)
383 AC_SUBST(CONFIG_LIBS)
386 ## check for --enable-debug first before checking CFLAGS before
387 ## so that we don't mix -O and -g
389 [AS_HELP_STRING([--enable-debug], [Turn on compiler debugging information (default=no)])],
390 [if eval "test x$enable_debug = xyes"; then
391 CFLAGS="${CFLAGS} -g"
394 # compile with optimization and without debugging by default, but
395 # allow people to set their own preference.
396 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
397 # if it has no value. This prevent *very* large debug binaries from occurring
399 if test "x$CFLAGS" = x; then
403 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
405 m4_include(lib/socket_wrapper/config.m4)
406 m4_include(lib/nss_wrapper/config.m4)
408 SWAT_SBIN_TARGETS='bin/swat$(EXEEXT)'
409 SWAT_INSTALL_TARGETS=installswat
412 [AS_HELP_STRING([--enable-swat], [Build the SWAT tool (default=yes)])],
414 case "$enable_swat" in
417 SWAT_INSTALL_TARGETS=''
422 AC_SUBST(SWAT_SBIN_TARGETS)
423 AC_SUBST(SWAT_INSTALL_TARGETS)
425 #################################################
426 # set prefix for 'make test'
428 AC_SUBST(selftest_prefix)
429 AC_ARG_WITH(selftest-prefix,
430 [AS_HELP_STRING([--with-selftest-prefix=DIR], [The prefix where make test will be run ($selftest_prefix)])],
433 AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
436 selftest_prefix="$withval"
441 #################################################
442 # set path of samba4's smbtorture
444 AC_SUBST(smbtorture4_path)
445 AC_ARG_WITH(smbtorture4_path,
446 [AS_HELP_STRING([--with-smbtorture4-path=PATH], [The path to a samba4 smbtorture for make test (none)])],
449 AC_MSG_ERROR([--with-smbtorture4-path should take a path])
452 smbtorture4_path="$withval"
453 if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
454 AC_MSG_ERROR(['$smbtorture_path' does not exist!])
460 AC_ARG_ENABLE(developer, [AS_HELP_STRING([--enable-developer], [Turn on developer warnings and debugging (default=no)])],
461 [if eval "test x$enable_developer = xyes"; then
465 AC_ARG_ENABLE(krb5developer, [AS_HELP_STRING([--enable-krb5developer], [Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)])],
466 [if eval "test x$enable_krb5developer = xyes"; then
471 # Probe the gcc version for extra CFLAGS. We always stash these in
472 # DEVELOPER_CFLAGS, so that you can turn them on and off with a simple
473 # Makefile edit, avoiding the need to re-run configure.
474 if test x"$ac_cv_prog_gcc" = x"yes" ; then
475 DEVELOPER_CFLAGS="-g -Wall -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
476 # Add -Wdeclaration-after-statement if compiler supports it
478 [that the C compiler understands -Wdeclaration-after-statement],
479 samba_cv_HAVE_Wdeclaration_after_statement, [
484 }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
485 samba_cv_HAVE_Wdeclaration_after_statement=yes,
486 samba_cv_HAVE_Wdeclaration_after_statement=no,
487 samba_cv_HAVE_Wdeclaration_after_statement=cross)
490 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
491 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Wdeclaration-after-statement"
494 #-Werror-implicit-function-declaration
496 [that the C compiler understands -Werror-implicit-function-declaration],
497 samba_cv_HAVE_Werror_implicit_function_declaration, [
502 }],[-Werror-implicit-function-declaration],[$CPPFLAGS],[$LDFLAGS],
503 samba_cv_HAVE_Werror_implicit_function_declaration=yes,
504 samba_cv_HAVE_Werror_implicit_function_declaration=no,
505 samba_cv_HAVE_Werror_implicit_function_declaration=cross)
507 if test x"$samba_cv_HAVE_Werror_implicit_function_declaration" = x"yes"; then
508 DEVELOPER_CFLAGS="${DEVELOPER_CFLAGS} -Werror-implicit-function-declaration"
511 # krb5developer is like developer, except we don't get
512 # -Wstrict-prototypes.
513 if test x"$krb5_developer" != x"$yes" ; then
514 DEVELOPER_CFLAGS="$DEVELOPER_CFLAGS -Wstrict-prototypes"
518 AC_ARG_ENABLE(dmalloc, [AS_HELP_STRING([--enable-dmalloc], [Enable heap debugging [default=no]])])
520 if test "x$enable_dmalloc" = xyes
522 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
523 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
524 [Define to check invariants around some common functions])
525 LIBS="$LIBS -ldmalloc"
528 #################################################
529 # check for a shared memory profiling support
530 AC_MSG_CHECKING(whether to use profiling)
531 AC_ARG_WITH(profiling-data,
532 [AS_HELP_STRING([--with-profiling-data], [Include gathering source code profile information (default=no)])],
536 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
537 samba_cv_WITH_PROFILE=yes
541 samba_cv_WITH_PROFILE=no
547 dnl Checks for programs.
551 AC_PATH_PROG(PERL, perl)
553 AC_CHECK_TOOL(AR, ar)
555 dnl Check if we use GNU ld
559 dnl Certain versions of GNU ld the default is not to have the
560 dnl --allow-shlib-undefined flag defined. This causes a stackload of
561 dnl warnings when building modules.
562 if test "$ac_cv_prog_gnu_ld" = "yes"; then
563 ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
564 AC_MSG_CHECKING(GNU ld release date)
566 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'`
568 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
569 if test -n "$ac_cv_gnu_ld_date"; then
570 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
571 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
573 if test "$ac_cv_gnu_ld_date" -gt 20030101; then
574 ac_cv_gnu_ld_version_script=yes
577 AC_MSG_CHECKING(GNU ld release version)
579 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
580 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
581 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
583 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
584 AC_MSG_CHECKING(GNU ld release version major)
585 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
586 AC_MSG_CHECKING(GNU ld release version minor)
587 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
588 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
589 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
591 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
592 ac_cv_gnu_ld_version_script=yes
597 dnl look for executable suffix
600 dnl Check if C compiler understands -c and -o at the same time
602 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
609 dnl Check if the C compiler understands -Werror
610 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
615 }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
616 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
617 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
618 Werror_FLAGS="-Werror"
620 dnl Check if the C compiler understands -w2
621 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
626 }],[-w2],[$CPPFLAGS],[$LDFLAGS],
627 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
628 if test x"$samba_cv_HAVE_w2" = x"yes"; then
633 dnl Check if the C compiler understands volatile (it should, being ANSI).
634 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
635 AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
636 samba_cv_volatile=yes,samba_cv_volatile=no)])
637 if test x"$samba_cv_volatile" = x"yes"; then
638 AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
641 ############################################
642 # check if the compiler can handle negative enum values
643 # and don't truncate the values to INT_MAX
644 # a runtime test is needed here
646 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
650 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
652 enum negative_values v1 = NEGATIVE_VALUE;
653 unsigned v2 = NEGATIVE_VALUE;
655 if (v1 != 0xFFFFFFFF) {
656 printf("%u != 0xFFFFFFFF\n", v1);
659 if (v2 != 0xFFFFFFFF) {
660 printf("%u != 0xFFFFFFFF\n", v2);
667 SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
668 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
669 AC_MSG_WARN([using --unit-enums for pidl])
670 PIDL_ARGS="$PIDL_ARGS --uint-enums"
673 dnl Figure out the flags to support named structure initializers
675 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
677 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
678 AC_MSG_CHECKING(uname -s)
679 AC_MSG_RESULT(${UNAME_S})
681 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
682 AC_MSG_CHECKING(uname -r)
683 AC_MSG_RESULT(${UNAME_R})
685 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
686 AC_MSG_CHECKING(uname -m)
687 AC_MSG_RESULT(${UNAME_M})
689 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
690 AC_MSG_CHECKING(uname -p)
691 AC_MSG_RESULT(${UNAME_P})
693 UNAME_I=`(uname -i) 2>/dev/null` || UNAME_I="unknown"
694 AC_MSG_CHECKING(uname -i)
695 AC_MSG_RESULT(${UNAME_I})
697 dnl Add #include for broken IRIX header files
700 #TODO add to libreplace
701 if test x"$ac_cv_prog_gcc" != x"yes" ; then
702 dnl Fix sensible defaults for MIPSPro compilers. The
703 dnl error numbers are valid for the 7.3 compilers,
704 dnl hopefully also valid for the 7.4 series.
706 dnl Bugzilla 3801. Force an error on warning 1035
707 dnl so we don't incorrectly detect stdint.h. This
708 dnl warning is emitted for #error directives.
709 CFLAGS="$CFLAGS -diag_error 1035"
710 dnl 1209: Controlling expression is constant
711 dnl 1174: Function foo declared but never referenced
712 dnl 3201: Parameter foo was never referenced
713 CFLAGS="$CFLAGS -woff 1209,1174,3201"
721 dnl Add modules that have to be built by default here
722 dnl These have to be built static:
723 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"
725 dnl These are preferably build shared, and static if dlopen() is not available
726 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"
728 if test "x$developer" = xyes; then
729 default_static_modules="$default_static_modules rpc_rpcecho"
730 default_shared_modules="$default_shared_modules charset_weird"
734 # Config CPPFLAG settings for strange OS's that must be set
735 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
736 # case statement; its first reference must be unconditional.
741 # Defines needed for HPUX support.
742 # HPUX has bigcrypt but (sometimes?) doesn't use it for
743 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
747 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
753 # CRAY Unicos has broken const handling
755 AC_MSG_RESULT([disabling const])
756 CPPFLAGS="$CPPFLAGS -Dconst="
760 # AIX4.x doesn't even admit to having large
761 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
764 AC_MSG_RESULT([enabling large file support])
765 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
766 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
769 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
770 # to the existance of large files..
771 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
772 # recommendations on large file support, however it makes the
773 # compile work using gcc 2.7 and 2.8, whereas using the Sun
774 # recommendation makes the compile fail on gcc2.7. JRA.
776 # Solaris uses SYSV printing. Make sure to set that here. --jerry
779 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
781 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
782 AC_MSG_RESULT([no large file support])
785 AC_MSG_RESULT([enabling large file support])
786 if test "$ac_cv_prog_gcc" = yes; then
787 ${CC-cc} -v >conftest.c 2>&1
788 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
790 case "$ac_cv_gcc_compiler_version_number" in
791 *"gcc version 2.6"*|*"gcc version 2.7"*)
792 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
793 LDFLAGS="$LDFLAGS -lthread"
794 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
797 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
798 LDFLAGS="$LDFLAGS -lthread"
799 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
800 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
804 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
805 LDFLAGS="$LDFLAGS -lthread"
806 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
807 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
813 # IRIX uses SYSV printing. Make sure to set that here
816 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
818 *freebsd*|*dragonfly*)
819 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
822 # VOS may need to have POSIX support and System V compatibility enabled.
829 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
830 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
834 *-D_SYSV*|*-D_SVID_SOURCE*)
837 CPPFLAGS="$CPPFLAGS -D_SYSV"
838 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
842 # Tests needed for SINIX large file support.
845 if test $host = mips-sni-sysv4 ; then
846 AC_MSG_CHECKING([for LFS support])
847 old_CPPFLAGS="$CPPFLAGS"
848 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
852 #if _LFS64_LARGEFILE == 1
857 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
858 CPPFLAGS="$old_CPPFLAGS"
859 if test x$SINIX_LFS_SUPPORT = xyes ; then
860 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
861 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
862 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
863 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
864 LIBS="`getconf LFS64_LIBS` $LIBS"
866 AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
870 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
873 AC_MSG_CHECKING([for LFS support])
874 old_CPPFLAGS="$CPPFLAGS"
875 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
878 #include <sys/utsname.h>
882 #if _LFS64_LARGEFILE == 1
887 /* Ensure this is glibc 2.2 or higher */
888 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
889 int libc_major = __GLIBC__;
890 int libc_minor = __GLIBC_MINOR__;
898 /* Ensure this is kernel 2.4 or higher */
901 release = strdup(uts.release);
902 major = atoi(strsep(&release, "."));
903 minor = atoi(strsep(&release, "."));
905 if (major > 2 || (major == 2 && minor > 3))
912 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
913 CPPFLAGS="$old_CPPFLAGS"
914 if test x$LINUX_LFS_SUPPORT = xyes ; then
915 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
916 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
917 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
918 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
920 AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
924 # MacOS X is the *only* system that uses compose character in utf8. This
925 # is so horribly broken....
928 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
930 # Add a system specific charset module.
931 default_shared_modules="$default_shared_modules charset_macosxfs"
935 AC_MSG_CHECKING([for LFS support])
936 old_CPPFLAGS="$CPPFLAGS"
937 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
941 #if _LFS64_LARGEFILE == 1
946 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
947 CPPFLAGS="$old_CPPFLAGS"
948 if test x$GLIBC_LFS_SUPPORT = xyes ; then
949 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
950 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
951 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
953 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
958 AC_LIBREPLACE_BROKEN_CHECKS
960 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
963 for obj in ${LIBREPLACEOBJ}; do
964 LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
966 AC_SUBST(LIBREPLACE_OBJS)
968 # add -ldl to the global LIBS
969 LIBS="${LIBS} ${LIBDL}"
971 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)
972 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
973 AC_CHECK_HEADERS(limits.h float.h pthread.h)
974 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
975 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
976 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
977 AC_CHECK_HEADERS(sys/un.h ifaddrs.h)
978 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
979 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
980 AC_CHECK_HEADERS(sys/sysmacros.h)
981 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
982 AC_CHECK_HEADERS(langinfo.h locale.h)
983 AC_CHECK_HEADERS(xfs/libxfs.h)
984 AC_CHECK_HEADERS(netgroup.h)
986 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
992 ## These fail to compile on IRIX so just check for their presence
993 AC_CHECK_HEADERS(sys/mode.h,,,)
995 # Look for Darwin headers
996 old_CPPFLAGS="$CPPFLAGS"
997 CPPFLAGS="-Iinclude $CPPFLAGS"
998 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
999 CPPFLAGS="$old_CPPFLAGS"
1001 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
1002 # subdirectory of headers.
1003 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
1005 # check for linux on amd64 since valgrind is not quite there yet
1010 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
1018 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
1019 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
1023 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
1024 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
1025 if test x"$ac_cv_header_shadow_h" = x"yes"; then
1026 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
1030 AC_CHECK_HEADERS(shadow.h)
1031 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
1032 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
1034 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
1035 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
1037 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
1039 # For experimental utmp support (lastlog on some BSD-like systems)
1040 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
1042 AC_CHECK_SIZEOF(int,cross)
1043 AC_CHECK_SIZEOF(long,cross)
1044 AC_CHECK_SIZEOF(long long,cross)
1045 AC_CHECK_SIZEOF(short,cross)
1060 AC_CHECK_TYPE(ino_t,unsigned)
1061 AC_CHECK_TYPE(loff_t,off_t)
1062 AC_CHECK_TYPE(offset_t,loff_t)
1063 AC_CHECK_TYPE(ssize_t, int)
1064 AC_CHECK_TYPE(wchar_t, unsigned short)
1065 AC_CHECK_TYPE(comparison_fn_t,
1066 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
1068 ############################################
1069 # for cups support we need libcups, and a handful of header files
1072 [AS_HELP_STRING([--enable-cups], [Turn on CUPS support (default=auto)])])
1074 if test x$enable_cups != xno; then
1075 AC_PATH_PROG(CUPS_CONFIG, cups-config)
1077 if test "x$CUPS_CONFIG" != x; then
1078 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
1079 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
1080 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
1081 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
1082 elif test x"$enable_cups" = x"yes"; then
1083 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
1087 AC_ARG_ENABLE(iprint,
1088 [AS_HELP_STRING([--enable-iprint], [Turn on iPrint support (default=yes if cups is yes)])])
1090 if test x$enable_iprint != xno; then
1091 if test "x$CUPS_CONFIG" != x; then
1092 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
1093 elif test x"$enable_iprint" = x"yes"; then
1094 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
1098 ############################################
1099 # check if the compiler will optimize out function calls
1100 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
1102 #include <stdio.h>],
1105 this_function_does_not_exist();
1111 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
1112 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
1113 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1116 ############################################
1117 # check for unix domain sockets
1118 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1120 #include <sys/types.h>
1123 #include <sys/socket.h>
1124 #include <sys/un.h>],
1126 struct sockaddr_un sunaddr;
1127 sunaddr.sun_family = AF_UNIX;
1129 samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1130 if test x"$samba_cv_unixsocket" = x"yes"; then
1131 AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1135 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1137 #include <sys/types.h>
1142 #include <signal.h>],[sig_atomic_t i = 0],
1143 samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1144 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1145 AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1148 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1150 #include <sys/types.h>
1155 #if TIME_WITH_SYS_TIME
1156 # include <sys/time.h>
1159 # if HAVE_SYS_TIME_H
1160 # include <sys/time.h>
1165 ],[struct timespec ts;],
1166 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1167 if test x"$samba_cv_struct_timespec" = x"yes"; then
1168 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1171 # stupid headers have the functions but no declaration. grrrr.
1172 AC_HAVE_DECL(errno, [#include <errno.h>])
1173 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1174 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1175 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1176 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1177 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1178 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1180 # and glibc has setresuid under linux but the function does
1181 # nothing until kernel 2.1.44! very dumb.
1182 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1183 AC_TRY_RUN([#include <errno.h>
1184 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1185 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1186 if test x"$samba_cv_have_setresuid" = x"yes"; then
1187 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1190 # Do the same check for setresguid...
1192 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1193 AC_TRY_RUN([#include <unistd.h>
1195 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1196 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1197 if test x"$samba_cv_have_setresgid" = x"yes"; then
1198 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1203 ###############################################
1204 # Readline included by default unless explicitly asked not to
1205 test "${with_readline+set}" != "set" && with_readline=yes
1207 # test for where we get readline() from
1208 AC_MSG_CHECKING(whether to use readline)
1209 AC_ARG_WITH(readline,
1210 [AS_HELP_STRING([--with-readline[=DIR]], [Look for readline include/libs in DIR (default=auto)])],
1211 [ case "$with_readline" in
1215 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1216 AC_CHECK_HEADERS(readline/history.h)
1218 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1219 for termlib in ncurses curses termcap terminfo termlib tinfo; do
1220 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1222 AC_CHECK_LIB(readline, rl_callback_handler_install,
1223 [TERMLIBS="-lreadline $TERMLIBS"
1224 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1225 break], [TERMLIBS=], $TERMLIBS)])
1233 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1234 # alternate readline path
1236 _cppflags=${CPPFLAGS}
1238 # Add additional search path
1239 LDFLAGS="-L$with_readline/lib $LDFLAGS"
1240 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1242 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1243 AC_CHECK_HEADERS(readline/history.h)
1245 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1246 for termlib in ncurses curses termcap terminfo termlib; do
1247 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1249 AC_CHECK_LIB(readline, rl_callback_handler_install,
1250 [TERMLDFLAGS="-L$with_readline/lib"
1251 TERMCPPFLAGS="-I$with_readline/include"
1252 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1253 TERMLIBS="-lreadline $TERMLIBS"
1254 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1255 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1263 AC_SUBST(TERMLDFLAGS)
1265 # The readline API changed slightly from readline3 to readline4, so
1266 # code will generate warnings on one of them unless we have a few
1268 AC_CHECK_LIB(readline, rl_completion_matches,
1269 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1270 [Do we have rl_completion_matches?])],
1274 # not all readline libs have rl_event_hook or history_list
1275 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1276 AC_CHECK_LIB(readline, history_list,
1277 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1281 # The following test taken from the cvs sources
1282 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1283 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1284 # libsocket.so which has a bad implementation of gethostbyname (it
1285 # only looks in /etc/hosts), so we only look for -lsocket if we need
1287 AC_CHECK_FUNCS(connect)
1288 if test x"$ac_cv_func_connect" = x"no"; then
1291 *) AC_CHECK_LIB(nsl_s, connect) ;;
1295 *) AC_CHECK_LIB(nsl, connect) ;;
1299 *) AC_CHECK_LIB(socket, connect) ;;
1303 *) AC_CHECK_LIB(inet, connect) ;;
1305 dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1306 dnl has been cached.
1307 if test x"$ac_cv_lib_socket_connect" = x"yes" ||
1308 test x"$ac_cv_lib_inet_connect" = x"yes"; then
1309 # ac_cv_func_connect=yes
1310 # don't! it would cause AC_CHECK_FUNC to succeed next time configure is run
1311 AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1315 ###############################################
1316 # test for where we get yp_get_default_domain() from
1317 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1318 AC_CHECK_FUNCS(yp_get_default_domain)
1320 # Check if we have execl, if not we need to compile smbrun.
1321 AC_CHECK_FUNCS(execl)
1322 if test x"$ac_cv_func_execl" = x"no"; then
1323 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1326 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown lchown chmod fchmod chroot link mknod mknod64)
1327 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1328 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1329 AC_CHECK_FUNCS(getrlimit fsync fdatasync memset strlcpy strlcat setpgid)
1330 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1331 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1332 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1333 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1334 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1335 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1336 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1337 AC_CHECK_FUNCS(getpwent_r)
1338 AC_CHECK_FUNCS(getdents getdents64)
1339 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1340 AC_CHECK_FUNCS(syslog vsyslog timegm)
1341 AC_CHECK_FUNCS(setlocale nl_langinfo)
1342 AC_CHECK_FUNCS(nanosleep)
1343 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1344 AC_CHECK_FUNCS(memalign posix_memalign hstrerror)
1345 AC_CHECK_HEADERS(sys/mman.h)
1346 # setbuffer, shmget, shm_open are needed for smbtorture
1347 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1349 # Find a method of generating a stack trace
1350 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1351 AC_CHECK_FUNCS(backtrace_symbols)
1352 AC_CHECK_LIB(exc, trace_back_stack)
1354 echo -n "checking for GPFS GPL libs... "
1356 LIBS="$LIBS -lgpfs_gpl"
1357 AC_TRY_LINK([#include <gpfs_gpl.h>],
1358 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1359 samba_cv_HAVE_GPFS=yes,
1360 samba_cv_HAVE_GPFS=no)
1361 echo $samba_cv_HAVE_GPFS
1362 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1363 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1364 default_shared_modules="$default_shared_modules vfs_gpfs"
1368 # Note that all the libunwind symbols in the API are defined to internal
1369 # platform-specific version, so we must include libunwind.h before checking
1371 AC_MSG_CHECKING([for libunwind])
1374 UNWIND_ARCH="unknown"
1375 if test x"$UNAME_I" != x"unknown"; then
1376 UNWIND_ARCH="$UNAME_I"
1377 elif test x"$UNAME_M" != x"unknown"; then
1378 UNWIND_ARCH="$UNAME_M"
1379 elif test x"$UNAME_P" != x"unknown"; then
1380 UNWIND_ARCH="$UNAME_P"
1383 case "$UNWIND_ARCH" in
1385 # This probably won't link without
1386 # the platform-specific libunwind.
1387 LIBS="$LIBS -lunwind"
1390 # Add the platform-specific libunwind module.
1391 LIBS="$LIBS -lunwind -lunwind-x86"
1394 # Add the platform-specific libunwind module.
1395 # based on uname -i, uname -m or uname -p
1396 LIBS="$LIBS -lunwind -lunwind-$UNWIND_ARCH"
1402 #ifdef HAVE_LIBUNWIND_H
1403 #include <libunwind.h>
1407 unw_context_t ctx; unw_cursor_t cur;
1408 char buf[256]; unw_word_t off;
1409 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1410 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1414 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1416 # If we have libunwind, test whether we also have libunwind-ptrace
1417 # which would let us unwind arbitrary processes.
1419 AC_CHECK_HEADERS(libunwind-ptrace.h)
1420 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1422 LIBUNWIND_PTRACE="-lunwind-ptrace";
1423 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1424 [Whether libunwind-ptrace.a is available.])
1426 [ LIBUNWIND_PTRACE="" ])
1435 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1436 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1437 AC_CHECK_HEADERS(sys/ptrace.h)
1438 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1441 #if HAVE_SYS_TYPES_H
1442 #include <sys/types.h>
1444 #if HAVE_SYS_PTRACE_H
1445 #include <sys/ptrace.h>
1449 int main(int argc, const char ** argv)
1451 pid_t me = (pid_t)-1;
1452 ptrace(PTRACE_ATTACH, me, 0, 0);
1453 ptrace(PTRACE_DETACH, me, 0, 0);
1459 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1460 [Whether the Linux ptrace(2) interface is available.])
1468 AC_SUBST(LIBUNWIND_PTRACE)
1470 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1471 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1472 AC_CHECK_FUNCS(__getcwd _getcwd)
1473 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1474 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1475 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1476 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1477 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1478 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1479 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1480 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1481 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1482 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1483 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1484 AC_CHECK_FUNCS(prctl)
1487 #ifdef HAVE_SYS_PRCTL_H
1488 #include <sys/prctl.h>
1491 [int i; i = prtcl(0); ],
1492 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1499 # glibc <= 2.3.2 has a broken getgrouplist
1502 #include <sys/utsname.h>
1504 /* glibc up to 2.3 has a broken getgrouplist */
1505 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1506 int libc_major = __GLIBC__;
1507 int libc_minor = __GLIBC_MINOR__;
1511 if ((libc_major == 2) && (libc_minor <= 3))
1516 ], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
1517 if test x"$linux_getgrouplist_ok" = x"yes"; then
1518 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1522 AC_CHECK_FUNCS(getgrouplist)
1527 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1530 if test x$ac_cv_func_stat64 = xno ; then
1531 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1533 #if defined(HAVE_UNISTD_H)
1536 #include <sys/stat.h>
1537 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1538 AC_MSG_RESULT([$ac_cv_func_stat64])
1539 if test x$ac_cv_func_stat64 = xyes ; then
1540 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1544 if test x$ac_cv_func_lstat64 = xno ; then
1545 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1547 #if defined(HAVE_UNISTD_H)
1550 #include <sys/stat.h>
1551 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1552 AC_MSG_RESULT([$ac_cv_func_lstat64])
1553 if test x$ac_cv_func_lstat64 = xyes ; then
1554 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1558 if test x$ac_cv_func_fstat64 = xno ; then
1559 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1561 #if defined(HAVE_UNISTD_H)
1564 #include <sys/stat.h>
1565 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1566 AC_MSG_RESULT([$ac_cv_func_fstat64])
1567 if test x$ac_cv_func_fstat64 = xyes ; then
1568 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1572 #################################################
1573 # Check whether struct stat has timestamps with sub-second resolution.
1574 # At least IRIX and Solaris have these.
1577 # all of st_mtim, st_atim and st_ctim exist
1578 # all of the members are in fact of type struct timespec
1580 # There is some conflicting standards weirdness about whether we should use
1581 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1582 # prefer struct timespec.
1584 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1588 #if TIME_WITH_SYS_TIME
1589 # include <sys/time.h>
1592 # if HAVE_SYS_TIME_H
1593 # include <sys/time.h>
1598 #ifdef HAVE_SYS_STAT_H
1599 #include <sys/stat.h>
1604 struct stat s = {0};
1605 t.tv_sec = s.st_mtim.tv_sec;
1606 t.tv_nsec = s.st_mtim.tv_nsec;
1607 t.tv_sec = s.st_ctim.tv_sec;
1608 t.tv_nsec = s.st_ctim.tv_nsec;
1609 t.tv_sec = s.st_atim.tv_sec;
1610 t.tv_nsec = s.st_atim.tv_nsec;
1612 samba_stat_hires=yes, samba_stat_hires=no)
1615 if test x"$samba_stat_hires" = x"yes" ; then
1616 AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1617 AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1618 AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1619 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1620 [whether struct stat has sub-second timestamps])
1623 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1627 #if TIME_WITH_SYS_TIME
1628 # include <sys/time.h>
1631 # if HAVE_SYS_TIME_H
1632 # include <sys/time.h>
1637 #ifdef HAVE_SYS_STAT_H
1638 #include <sys/stat.h>
1643 struct stat s = {0};
1644 t.tv_sec = s.st_mtime;
1645 t.tv_nsec = s.st_mtimensec;
1646 t.tv_sec = s.st_ctime;
1647 t.tv_nsec = s.st_ctimensec;
1648 t.tv_sec = s.st_atime;
1649 t.tv_nsec = s.st_atimensec;
1651 samba_stat_hires=yes, samba_stat_hires=no)
1654 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1655 AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1656 AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1657 AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1658 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1659 [whether struct stat has sub-second timestamps without struct timespec])
1662 #####################################
1663 # needed for SRV lookups
1664 AC_CHECK_LIB(resolv, dn_expand)
1665 AC_CHECK_LIB(resolv, _dn_expand)
1666 AC_CHECK_LIB(resolv, __dn_expand)
1669 # Check for the functions putprpwnam, set_auth_parameters,
1670 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1671 # Needed for OSF1 and HPUX.
1674 AC_LIBTESTFUNC(security, putprpwnam)
1675 AC_LIBTESTFUNC(sec, putprpwnam)
1677 AC_LIBTESTFUNC(security, set_auth_parameters)
1678 AC_LIBTESTFUNC(sec, set_auth_parameters)
1680 # UnixWare 7.x has its getspnam in -lgen
1681 AC_LIBTESTFUNC(gen, getspnam)
1683 AC_LIBTESTFUNC(security, getspnam)
1684 AC_LIBTESTFUNC(sec, getspnam)
1686 AC_LIBTESTFUNC(security, bigcrypt)
1687 AC_LIBTESTFUNC(sec, bigcrypt)
1689 AC_LIBTESTFUNC(security, getprpwnam)
1690 AC_LIBTESTFUNC(sec, getprpwnam)
1692 AC_CHECK_FUNCS(strsignal)
1694 ############################################
1695 # Check if we have libattr
1698 AC_SEARCH_LIBS(getproplist, [proplist])
1699 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1700 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1701 AC_CHECK_FUNCS(sizeof_proplist_entry)
1704 AC_SEARCH_LIBS(getxattr, [attr])
1705 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1706 AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1707 AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1708 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1709 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1710 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1711 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1715 ########################################################
1716 # Check if attropen() is present if this is Solaris
1719 AC_CHECK_FUNCS(attropen)
1723 ########################################################
1724 # Do xattr functions take additional options like on Darwin?
1725 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1726 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1728 LIBS="$LIBS $ACL_LIBS"
1730 #include <sys/types.h>
1731 #if HAVE_ATTR_XATTR_H
1732 #include <attr/xattr.h>
1733 #elif HAVE_SYS_XATTR_H
1734 #include <sys/xattr.h>
1737 getxattr(0, 0, 0, 0, 0, 0);
1739 [smb_attr_cv_xattr_add_opt=yes],
1740 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1742 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1743 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1747 # Check if we have extattr
1749 *freebsd4* | *dragonfly* )
1750 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1753 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1754 AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1755 AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1756 AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1763 AC_ARG_ENABLE(pie, [AS_HELP_STRING([--enable-pie], [Turn on pie support if available (default=yes)])])
1765 if test "x$enable_pie" != xno
1767 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1769 cat > conftest.c <<EOF
1771 main () { return 0;}
1773 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1781 if test x"${samba_cv_fpie}" = x"yes"
1788 # Assume non-shared by default and override below
1791 # these are the defaults, good for lots of systems
1796 SHLD="\${CC} \${CFLAGS}"
1797 PICFLAG="${PIE_CFLAGS}"
1801 # this bit needs to be modified for each OS that supports share libs
1802 # You need to specify how to create a shared library and
1803 # how to compile C code to produce PIC object files
1805 AC_MSG_CHECKING([ability to build shared libraries])
1807 # and these are for particular systems
1809 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux])
1811 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1812 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1814 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1816 DYNEXP="-Wl,--export-dynamic"
1818 SONAMEFLAG="-Wl,-soname="
1819 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1821 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1825 if test "${GCC}" = "yes"; then
1827 SONAMEFLAG="-Wl,-soname="
1828 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1833 ## ${CFLAGS} added for building 64-bit shared
1834 ## libs using Sun's Compiler
1835 LDSHFLAGS="-G \${CFLAGS}"
1837 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1838 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1840 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1843 SONAMEFLAG="-Wl,-h,"
1844 PICFLAG="-KPIC" # Is this correct for SunOS
1845 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1846 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1848 *netbsd* | *freebsd* | *dragonfly* )
1851 DYNEXP="-Wl,--export-dynamic"
1852 SONAMEFLAG="-Wl,-soname,"
1853 PICFLAG="-fPIC -DPIC"
1854 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1855 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1857 *openbsd*) BLDSHARED="true"
1859 DYNEXP="-Wl,-Bdynamic"
1860 SONAMEFLAG="-Wl,-soname,"
1862 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1863 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1865 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1867 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1871 LDSHFLAGS="-set_version sgi1.0 -shared"
1872 SONAMEFLAG="-soname "
1874 if test "${GCC}" = "yes"; then
1879 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1881 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1883 LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1884 DYNEXP="-Wl,-brtl,-bexpfull,-bbigtoc"
1886 # as AIX code is always position independent...
1887 # .po will just create compile warnings, use po.o:
1888 if test "${GCC}" != "yes"; then
1889 ## for funky AIX compiler using strncpy()
1890 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1893 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1894 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1895 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1897 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1898 # Use special PIC flags for the native HP-UX compiler.
1901 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1902 SONAMEFLAG="-Wl,+h "
1904 if test "${GCC}" = "yes"; then
1907 PICFLAG="+z +ESnolit"
1909 if test "$host_cpu" = "ia64"; then
1912 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1915 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1917 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1918 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1920 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1921 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1923 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1926 SONAMEFLAG="-Wl,-soname,"
1928 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1929 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1931 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1932 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1934 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1937 SONAMEFLAG="-Wl,-soname,"
1939 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1941 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1942 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1944 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1945 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1947 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1949 *-univel-*) if [ test "$GCC" != yes ]; then
1950 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1955 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1957 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1960 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1961 if [ test "$GCC" != yes ]; then
1962 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1965 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1967 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1972 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1974 LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1976 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/exports/modules-darwin.syms"
1978 # Since gcc doesn't fail on unrecognised options, the
1979 # PIE test incorrectly succeeds. Darwin gcc does not
1980 # actually support the PIE stuff.
1983 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1987 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1991 if test "$enable_shared" != "yes"; then
1995 if test "$enable_shared" = yes -a "${ac_cv_gnu_ld_version_script}" = yes; then
1996 DSO_EXPORTS=\$\(DSO_EXPORTS_CMD\)
1999 AC_MSG_RESULT($BLDSHARED)
2001 AC_MSG_CHECKING([LDFLAGS])
2002 AC_MSG_RESULT([$LDFLAGS])
2003 AC_MSG_CHECKING([DYNEXP])
2004 AC_MSG_RESULT([$DYNEXP])
2006 #######################################################
2007 # test whether building a shared library actually works
2008 if test $BLDSHARED = true; then
2010 AC_MSG_CHECKING([SHLD])
2011 AC_MSG_RESULT([$SHLD])
2012 AC_MSG_CHECKING([LDSHFLAGS])
2013 AC_MSG_RESULT([$LDSHFLAGS])
2015 AC_MSG_CHECKING([SHLIBEXT])
2016 AC_MSG_RESULT([$SHLIBEXT])
2017 AC_MSG_CHECKING([SONAMEFLAG])
2018 AC_MSG_RESULT([$SONAMEFLAG])
2020 AC_MSG_CHECKING([PICFLAG])
2021 AC_MSG_RESULT([$PICFLAG])
2023 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
2024 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
2026 AC_CACHE_CHECK([whether building shared libraries actually works],
2027 [ac_cv_shlib_works],[
2028 # try building a trivial shared library
2029 ac_cv_shlib_works=no
2030 # The $SHLD and $LDSHFLAGS variables may contain references to other
2031 # variables so they need to be eval'ed.
2032 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
2033 shlib.o ${srcdir-.}/tests/shlib.c && \
2034 `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
2035 shlib.o && ac_cv_shlib_works=yes
2036 rm -f "shlib.$SHLIBEXT" shlib.o
2039 if test $ac_cv_shlib_works = no; then
2044 if test x"$BLDSHARED" != x"true"; then
2045 LDSHFLAGS="shared-libraries-disabled"
2046 SONAMEFLAG="shared-libraries-disabled"
2047 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
2048 SHLD="shared-libraries-disabled"
2049 PICFLAG="${PIE_CFLAGS}"
2050 SHLIBEXT="shared_libraries_disabled"
2053 AC_MSG_CHECKING([used PICFLAG])
2054 AC_MSG_RESULT([$PICFLAG])
2056 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
2058 AC_LIBREPLACE_RUNTIME_LIB_PATH_VAR
2062 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
2063 AC_TRY_RUN([#include <stdio.h>
2064 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
2065 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
2066 if test x"$samba_cv_have_longlong" = x"yes"; then
2067 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
2068 AC_CHECK_TYPE(intptr_t, unsigned long long)
2070 AC_CHECK_TYPE(intptr_t, unsigned long)
2074 # Check if the compiler supports the LL prefix on long long integers.
2077 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
2078 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
2079 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
2080 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
2081 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
2085 AC_CACHE_CHECK([for 64 bit time_t],samba_cv_SIZEOF_TIME_T,[
2086 AC_TRY_RUN([#include <time.h>
2087 main() { exit((sizeof(time_t) == 8) ? 0 : 1); }],
2088 samba_cv_SIZEOF_TIME_T=yes,samba_cv_SIZEOF_TIME_T=no,samba_cv_SIZEOF_TIME_T=cross)])
2089 if test x"$samba_cv_SIZEOF_TIME_T" = x"yes"; then
2090 AC_DEFINE(SIZEOF_TIME_T,8,[The size of the 'time_t' type])
2093 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
2094 AC_TRY_RUN([#include <stdio.h>
2095 #include <sys/stat.h>
2096 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
2097 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
2098 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
2099 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
2102 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
2104 #if defined(HAVE_UNISTD_H)
2108 #include <sys/stat.h>
2109 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2110 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2111 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2112 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2115 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2117 #if defined(HAVE_UNISTD_H)
2121 #include <sys/stat.h>
2122 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2123 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2124 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2125 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2128 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2130 #if defined(HAVE_UNISTD_H)
2134 #include <sys/stat.h>
2135 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2136 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2137 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2138 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2141 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2143 #if defined(HAVE_UNISTD_H)
2147 #include <sys/stat.h>
2148 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2149 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2150 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2151 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2154 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2156 #if defined(HAVE_UNISTD_H)
2160 #include <sys/stat.h>
2161 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2162 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2163 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2164 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2167 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2169 #if defined(HAVE_UNISTD_H)
2172 #include <sys/types.h>
2173 #include <dirent.h>],
2175 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2176 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2177 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2180 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2182 #if defined(HAVE_UNISTD_H)
2185 #include <sys/types.h>
2186 #include <dirent.h>],
2187 [struct dirent64 de;],
2188 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2189 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2190 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2193 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2195 #if defined(HAVE_UNISTD_H)
2198 #include <sys/types.h>
2199 main() { dev_t dev; int i = major(dev); return 0; }],
2200 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2201 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2202 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2205 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2207 #if defined(HAVE_UNISTD_H)
2210 #include <sys/types.h>
2211 main() { dev_t dev; int i = minor(dev); return 0; }],
2212 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2213 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2214 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2217 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2219 #if defined(HAVE_UNISTD_H)
2222 #include <sys/types.h>
2223 main() { dev_t dev = makedev(1,2); return 0; }],
2224 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2225 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2226 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2229 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2230 AC_TRY_RUN([#include <stdio.h>
2231 main() { char c; c=250; exit((c > 0)?0:1); }],
2232 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2233 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2234 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2237 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2238 AC_TRY_COMPILE([#include <sys/types.h>
2239 #include <sys/socket.h>
2240 #include <netinet/in.h>],
2241 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2242 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2243 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2244 AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2247 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2248 AC_TRY_COMPILE([#include <sys/types.h>
2250 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2251 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2252 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2253 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2256 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2257 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2258 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2259 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2260 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2263 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2265 #include <sys/time.h>
2266 #include <unistd.h>], [struct timeval tv; return gettimeofday(&tv, NULL);],
2267 samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,
2268 samba_cv_HAVE_GETTIMEOFDAY_TZ=no)])
2269 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2270 AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday takes a tz argument])
2273 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2275 # On some systems (eg. Linux) librt can pull in libpthread. We
2276 # don't want this to happen because libpthreads changes signal delivery
2277 # semantics in ways we are not prepared for. This breaks Linux oplocks
2278 # which rely on signals.
2280 AC_LIBTESTFUNC(rt, clock_gettime,
2282 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2283 [Whether clock_gettime is available])
2284 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2285 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2286 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2291 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2292 AC_TRY_LINK([#include <stdarg.h>
2293 va_list ap1,ap2;], [va_copy(ap1,ap2);],
2294 samba_cv_HAVE_VA_COPY=yes,
2295 samba_cv_HAVE_VA_COPY=no)])
2296 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2297 AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2299 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2300 AC_TRY_LINK([#include <stdarg.h>
2301 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2302 samba_cv_HAVE___VA_COPY=yes,
2303 samba_cv_HAVE___VA_COPY=no)])
2304 if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2305 AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2309 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2311 #include <sys/types.h>
2313 void foo(const char *format, ...) {
2318 va_start(ap, format);
2319 len = vsnprintf(buf, 0, format, ap);
2321 if (len != 5) exit(1);
2323 va_start(ap, format);
2324 len = vsnprintf(0, 0, format, ap);
2326 if (len != 5) exit(1);
2328 if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2332 main() { foo("hello"); }
2334 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2335 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2336 AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2339 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2340 AC_TRY_RUN([#include <sys/types.h>
2342 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2343 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2344 di->d_name[0] == 0) exit(0); exit(1);} ],
2345 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2346 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2347 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2350 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2351 AC_TRY_COMPILE([#include <sys/types.h>
2352 #include <utime.h>],
2353 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2354 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2355 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2356 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2360 # Check utmp details, but only if our OS offers utmp.h
2361 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2362 dnl utmp and utmpx come in many flavours
2363 dnl We need to check for many of them
2364 dnl But we don't need to do each and every one, because our code uses
2365 dnl mostly just the utmp (not utmpx) fields.
2367 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2369 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2370 AC_TRY_COMPILE([#include <sys/types.h>
2372 [struct utmp ut; ut.ut_name[0] = 'a';],
2373 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2374 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2375 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2378 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2379 AC_TRY_COMPILE([#include <sys/types.h>
2381 [struct utmp ut; ut.ut_user[0] = 'a';],
2382 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2383 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2384 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2387 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2388 AC_TRY_COMPILE([#include <sys/types.h>
2390 [struct utmp ut; ut.ut_id[0] = 'a';],
2391 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2392 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2393 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2396 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2397 AC_TRY_COMPILE([#include <sys/types.h>
2399 [struct utmp ut; ut.ut_host[0] = 'a';],
2400 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2401 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2402 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2405 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2406 AC_TRY_COMPILE([#include <sys/types.h>
2408 [struct utmp ut; time_t t; ut.ut_time = t;],
2409 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2410 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2411 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2414 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2415 AC_TRY_COMPILE([#include <sys/types.h>
2417 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2418 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2419 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2420 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2423 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2424 AC_TRY_COMPILE([#include <sys/types.h>
2426 [struct utmp ut; ut.ut_type = 0;],
2427 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2428 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2429 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2432 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2433 AC_TRY_COMPILE([#include <sys/types.h>
2435 [struct utmp ut; ut.ut_pid = 0;],
2436 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2437 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2438 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2441 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2442 AC_TRY_COMPILE([#include <sys/types.h>
2444 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2445 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2446 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2447 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2450 dnl Look for the IPv6 varient by preference. Many systems have both.
2451 AC_CACHE_CHECK([for ut_addr_v6 in utmp],samba_cv_HAVE_UT_UT_ADDR_V6,[
2452 AC_TRY_COMPILE([#include <sys/types.h>
2454 [struct utmp ut; ut.ut_addr_v6[0] = 0;],
2455 samba_cv_HAVE_UT_UT_ADDR_V6=yes,samba_cv_HAVE_UT_UT_ADDR_V6=no,samba_cv_HAVE_UT_UT_ADDR_V6=cross)])
2456 if test x"$samba_cv_HAVE_UT_UT_ADDR_V6" = x"yes"; then
2457 AC_DEFINE(HAVE_UT_UT_ADDR_V6,1,[Whether the utmp struct has a property ut_addr_v6])
2460 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2461 AC_TRY_COMPILE([#include <sys/types.h>
2463 [struct utmp ut; ut.ut_addr = 0;],
2464 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2465 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2466 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2469 if test x$ac_cv_func_pututline = xyes ; then
2470 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2471 AC_TRY_COMPILE([#include <sys/types.h>
2473 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2474 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2475 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2476 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2480 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2481 AC_TRY_COMPILE([#include <sys/types.h>
2482 #include <utmpx.h>],
2483 [struct utmpx ux; ux.ut_syslen = 0;],
2484 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2485 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2486 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2493 ICONV_LOOK_DIRS="/usr /usr/local /sw /opt"
2494 AC_ARG_WITH(libiconv,
2495 [AS_HELP_STRING([--with-libiconv=BASEDIR], [Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto)])],
2497 if test "$withval" = "no" ; then
2498 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2500 if test "$withval" != "yes" ; then
2502 ICONV_LOOK_DIRS="$withval"
2507 for i in $ICONV_LOOK_DIRS ; do
2510 save_LDFLAGS="$LDFLAGS"
2511 save_CPPFLAGS="$CPPFLAGS"
2513 iconv_current_LIBS=""
2514 iconv_current_LDFLAGS=""
2515 iconv_current_CPPFLAGS=""
2520 # This is here to handle -withval stuff for --with-libiconv
2521 # Perhaps we should always add a -L
2522 CPPFLAGS="$save_CPPFLAGS -I$i/include"
2524 # Check lib and lib32 library variants to cater for IRIX ABI-specific
2525 # installation paths. This gets a little tricky since we might have iconv
2526 # in both libiconv and in libc. In this case the jm_ICONV test will always
2527 # succeed when the header is found. To counter this, make sure the
2528 # library directory is there and check the ABI directory first (which
2529 # should be harmless on other systems.
2530 # For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2531 for l in "lib32" "lib" "lib/hpux32"; do
2532 if test -d "$i/$l" ; then
2533 LDFLAGS="$save_LDFLAGS -L$i/$l"
2535 export LDFLAGS LIBS CPPFLAGS
2536 # Try to find iconv(3)
2538 if test x"$ICONV_FOUND" = "xyes" ; then
2545 if test x"$ICONV_FOUND" = "xyes" ; then
2546 iconv_current_LDFLAGS="-L$i/$libext"
2547 iconv_current_CPPFLAGS="-I$i/include"
2549 if test x"$jm_cv_lib_iconv" != x; then
2550 iconv_current_LIBS="$LIBS -l$jm_cv_lib_iconv"
2552 # We found iconv in libc.
2553 iconv_current_LIBS=""
2558 if test x"$ICONV_FOUND" = "xyes" ; then
2560 LDFLAGS="$save_LDFLAGS $iconv_current_LDFLAGS"
2561 CPPFLAGS="$save_CPPFLAGS $iconv_current_CPPFLAGS"
2562 LIBS="$save_LIBS $iconv_current_LIBS"
2563 export LDFLAGS LIBS CPPFLAGS
2565 default_dos_charset=no
2566 default_display_charset=no
2567 default_unix_charset=no
2569 # check for default dos charset name
2570 for j in CP850 IBM850 ; do
2572 default_dos_charset="$ICONV_CHARSET"
2573 if test x"$default_dos_charset" = x"$j"; then
2578 # check for default display charset name
2579 for j in ASCII 646 ; do
2581 default_display_charset="$ICONV_CHARSET"
2582 if test x"$default_display_charset" = x"$j"; then
2587 # check for default unix charset name
2588 for j in UTF-8 UTF8 ; do
2590 default_unix_charset="$ICONV_CHARSET"
2591 if test x"$default_unix_charset" = x"$j"; then
2596 if test "$default_dos_charset" != "no" -a \
2597 "$default_dos_charset" != "cross" -a \
2598 "$default_display_charset" != "no" -a \
2599 "$default_display_charset" != "cross" -a \
2600 "$default_unix_charset" != "no" -a \
2601 "$default_unix_charset" != "cross"
2603 samba_cv_HAVE_NATIVE_ICONV=yes
2605 if test "$default_dos_charset" = "cross" -o \
2606 "$default_display_charset" = "cross" -o \
2607 "$default_unix_charset" = "cross"
2609 samba_cv_HAVE_NATIVE_ICONV=cross
2611 samba_cv_HAVE_NATIVE_ICONV=no
2615 # At this point, we have a libiconv candidate. We know that
2616 # we have the right headers and libraries, but we don't know
2617 # whether it does the conversions we want. We can't test this
2618 # because we are cross-compiling. This is not necessarily a big
2619 # deal, since we can't guarantee that the results we get now will
2620 # match the results we get at runtime anyway.
2621 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"cross" ; then
2622 default_dos_charset="CP850"
2623 default_display_charset="ASCII"
2624 default_unix_charset="UTF-8"
2625 samba_cv_HAVE_NATIVE_ICONV=yes
2626 AC_MSG_WARN(assuming the libiconv in $iconv_current_LDFLAGS can convert)
2627 AC_MSG_WARN([$default_dos_charset, $default_display_charset and $default_unix_charset to UCS-16LE])
2630 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes" ; then
2632 CPPFLAGS=$save_CPPFLAGS
2633 LDFLAGS=$save_LDFLAGS
2636 if test x"$iconv_current_LIBS" != x; then
2637 LIBS="$LIBS $iconv_current_LIBS"
2640 # Add the flags we need to CPPFLAGS and LDFLAGS
2641 CPPFLAGS="$CPPFLAGS $iconv_current_CPPFLAGS"
2642 LDFLAGS="$LDFLAGS $iconv_current_LDFLAGS"
2644 # Turn the #defines into string literals
2645 default_dos_charset="\"$default_dos_charset\""
2646 default_display_charset="\"$default_display_charset\""
2647 default_unix_charset="\"$default_unix_charset\""
2649 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2650 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2651 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2652 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2657 # We didn't find a working iconv, so keep going
2660 # We only need to clean these up here for the next pass through the loop
2661 CPPFLAGS=$save_CPPFLAGS
2662 LDFLAGS=$save_LDFLAGS
2664 export LDFLAGS LIBS CPPFLAGS
2669 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2670 AC_MSG_WARN([Sufficient support for iconv function was not found.
2671 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2672 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2673 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2674 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2678 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2680 #include <sys/types.h>
2683 #define F_GETLEASE 1025
2686 int fd = open("/dev/null", O_RDONLY);
2687 return fcntl(fd, F_GETLEASE, 0) == -1;
2690 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2691 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2692 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2695 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2697 #include <sys/types.h>
2701 #define F_NOTIFY 1026
2704 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2707 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2708 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2709 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2712 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2713 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2714 AC_CHECK_FUNC(inotify_init)
2715 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2717 samba_cv_HAVE_INOTIFY=yes,
2718 samba_cv_HAVE_INOTIFY=no,
2719 samba_cv_HAVE_INOTIFY=cross)
2721 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2722 AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2725 #################################################
2726 # Check if FAM notifications are available. For FAM info, see
2727 # http://oss.sgi.com/projects/fam/
2728 # http://savannah.nongnu.org/projects/fam/
2730 [AS_HELP_STRING([--enable-fam], [Turn on FAM support (default=auto)])])
2732 if test x$enable_fam != xno; then
2733 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2734 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2735 # On IRIX, libfam requires libC, but other FAM implementations
2736 # might not need it.
2737 AC_CHECK_LIB(fam, FAMOpen2,
2738 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam"],
2739 [samba_cv_HAVE_LIBFAM=no])
2741 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2743 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2744 [samba_cv_HAVE_LIBFAM=yes; SMB_FAM_LIBS="-lfam -lC"],
2745 [samba_cv_HAVE_LIBFAM=no])
2746 unset samba_fam_xtra
2750 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2751 default_shared_modules="$default_shared_modules vfs_notify_fam"
2752 AC_TRY_COMPILE([#include <fam.h>],
2753 [FAMCodes code = FAMChanged;],
2754 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2755 [Whether fam.h contains a typedef for enum FAMCodes]),
2759 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2760 AC_MSG_ERROR(FAM support requested but FAM library not available )
2764 AC_SUBST(SMB_FAM_LIBS)
2766 #################################################
2767 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2769 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2771 # Add TSM SM VFS module only if there are both GPFS and DMAPI support
2772 # Theoretically it should work with AIX JFS2 too but this needs testing
2773 if test x"$samba_cv_HAVE_GPFS" = x"yes" && test x"$samba_dmapi_libs" != x"" ; then
2774 default_shared_modules="$default_shared_modules vfs_tsmsm"
2777 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2779 #include <sys/types.h>
2782 #include <sys/file.h>
2784 #define LOCK_MAND 32
2785 #define LOCK_READ 64
2788 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2791 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2792 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2793 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2797 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2798 AC_TRY_COMPILE([#include <sys/types.h>
2799 #include <fcntl.h>],
2800 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2801 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2802 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2803 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2806 #################################################
2807 # Check for POSIX capability support
2809 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2810 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2813 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2816 AC_LIBTESTFUNC(cap, cap_get_proc)
2818 AC_CACHE_CHECK([for POSIX capabilities],
2819 samba_cv_HAVE_POSIX_CAPABILITIES,
2822 #include <sys/types.h>
2823 #include <sys/capability.h>
2826 cap_value_t vals[1];
2827 if (!(cap = cap_get_proc()))
2829 vals[0] = CAP_CHOWN;
2830 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2834 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2835 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2836 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2839 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2840 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2841 [Whether POSIX capabilities are available])
2849 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2850 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2853 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2854 AC_TRY_COMPILE([#include <sys/types.h>
2855 #if defined(HAVE_RPC_RPC_H)
2856 #include <rpc/rpc.h>
2859 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2860 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2861 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2864 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2865 AC_TRY_COMPILE([#include <sys/types.h>
2866 #if defined(HAVE_RPC_RPC_H)
2867 #include <rpc/rpc.h>
2870 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2871 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2872 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2875 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2876 AC_TRY_COMPILE([#include <sys/types.h>
2877 #if defined(HAVE_RPC_RPC_H)
2878 #include <rpc/rpc.h>
2881 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2882 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2883 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2886 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2887 AC_TRY_COMPILE([#include <sys/types.h>
2888 #if defined(HAVE_RPC_RPC_H)
2889 #include <rpc/rpc.h>
2892 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2893 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2894 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2898 dnl Some systems (SCO) have a problem including
2899 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2900 dnl as a #define in <prot.h> and as part of an enum
2904 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2905 AC_TRY_COMPILE([#include <sys/types.h>
2906 #ifdef HAVE_SYS_SECURITY_H
2907 #include <sys/security.h>
2909 #endif /* HAVE_SYS_SECURITY_H */
2910 #if defined(HAVE_RPC_RPC_H)
2911 #include <rpc/rpc.h>
2914 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2915 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2916 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2919 AC_MSG_CHECKING([for test routines])
2920 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2922 AC_MSG_ERROR([cant find test code. Aborting config]),
2923 AC_MSG_WARN([cannot run when cross-compiling]))
2925 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2926 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2927 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2928 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2929 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2932 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2933 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2934 samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2935 samba_cv_HAVE_WORKING_AF_LOCAL=no,
2936 samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2937 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2939 AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2942 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2943 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2944 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2945 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2946 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2949 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2950 AC_TRY_RUN([#include <stdlib.h>
2951 #include <sys/types.h>
2952 #include <sys/stat.h>
2956 char tpl[20]="/tmp/test.XXXXXX";
2957 int fd = mkstemp(tpl);
2958 if (fd == -1) exit(1);
2960 if (fstat(fd, &st) != 0) exit(1);
2961 if ((st.st_mode & 0777) != 0600) exit(1);
2964 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2965 samba_cv_HAVE_SECURE_MKSTEMP=no,
2966 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2967 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2968 AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2971 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2972 AC_TRY_RUN([#include "${srcdir-.}/tests/os2_delete.c"],
2973 [samba_cv_HAVE_BROKEN_READDIR=no],
2974 [samba_cv_HAVE_BROKEN_READDIR=yes],
2975 [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2977 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2978 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2980 #include "${srcdir-.}/lib/repdir.c"
2981 #include "${srcdir-.}/tests/os2_delete.c"],
2982 samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2985 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2986 AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2989 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2990 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2991 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2992 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2993 AC_CHECK_FUNCS(getpagesize)
2995 dnl test for getifaddrs and freeifaddrs
2996 AC_CACHE_CHECK([for getifaddrs and freeifaddrs],samba_cv_HAVE_GETIFADDRS,[
2998 #include <sys/socket.h>
2999 #include <sys/types.h>
3000 #include <netinet/in.h>
3001 #include <arpa/inet.h>
3002 #include <ifaddrs.h>
3003 #include <netdb.h>],
3005 struct ifaddrs *ifp = NULL;
3006 int ret = getifaddrs (&ifp);
3009 samba_cv_HAVE_GETIFADDRS=yes,samba_cv_HAVE_GETIFADDRS=no)])
3010 if test x"$samba_cv_HAVE_GETIFADDRS" = x"yes"; then
3011 AC_DEFINE(HAVE_GETIFADDRS,1,[Whether the system has getifaddrs])
3012 AC_DEFINE(HAVE_FREEIFADDRS,1,[Whether the system has freeifaddrs])
3016 # look for a method of finding the list of network interfaces
3018 AC_CACHE_CHECK([for iface getifaddrs],samba_cv_HAVE_IFACE_GETIFADDRS,[
3019 SAVE_CPPFLAGS="$CPPFLAGS"
3020 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3022 #define NO_CONFIG_H 1
3023 #define HAVE_IFACE_GETIFADDRS 1
3024 #define AUTOCONF_TEST 1
3025 #include "${srcdir-.}/lib/replace/replace.c"
3026 #include "${srcdir-.}/lib/interfaces.c"],
3027 samba_cv_HAVE_IFACE_GETIFADDRS=yes,samba_cv_HAVE_IFACE_GETIFADDRS=no,samba_cv_HAVE_IFACE_GETIFADDRS=cross)])
3028 CPPFLAGS="$SAVE_CPPFLAGS"
3029 if test x"$samba_cv_HAVE_IFACE_GETIFADDRS" = x"yes"; then
3030 iface=yes;AC_DEFINE(HAVE_IFACE_GETIFADDRS,1,[Whether iface getifaddrs is available])
3033 if test $iface = no; then
3034 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
3035 SAVE_CPPFLAGS="$CPPFLAGS"
3036 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3038 #define NO_CONFIG_H 1
3039 #define HAVE_IFACE_IFCONF 1
3040 #define AUTOCONF_TEST 1
3041 #define SOCKET_WRAPPER_NOT_REPLACE
3042 #include "${srcdir-.}/lib/replace/replace.c"
3043 #include "${srcdir-.}/lib/interfaces.c"],
3044 samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
3045 CPPFLAGS="$SAVE_CPPFLAGS"
3046 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
3047 iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
3051 if test $iface = no; then
3052 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
3053 SAVE_CPPFLAGS="$CPPFLAGS"
3054 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3056 #define NO_CONFIG_H 1
3057 #define HAVE_IFACE_IFREQ 1
3058 #define AUTOCONF_TEST 1
3059 #define SOCKET_WRAPPER_NOT_REPLACE
3060 #include "${srcdir-.}/lib/replace/replace.c"
3061 #include "${srcdir-.}/lib/replace/getaddrinfo.c"
3062 #include "${srcdir-.}/lib/replace/snprintf.c"
3063 #include "${srcdir-.}/lib/interfaces.c"],
3064 samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
3065 CPPFLAGS="$SAVE_CPPFLAGS"
3066 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
3067 iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
3071 if test $iface = no; then
3072 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
3073 SAVE_CPPFLAGS="$CPPFLAGS"
3074 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
3076 #define NO_CONFIG_H 1
3077 #define HAVE_IFACE_AIX 1
3078 #define AUTOCONF_TEST 1
3079 #undef _XOPEN_SOURCE_EXTENDED
3080 #define SOCKET_WRAPPER_NOT_REPLACE
3081 #include "${srcdir-.}/lib/replace/replace.c"
3082 #include "${srcdir-.}/lib/replace/snprintf.c"
3083 #include "${srcdir-.}/lib/interfaces.c"],
3084 samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
3085 CPPFLAGS="$SAVE_CPPFLAGS"
3086 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
3087 iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
3092 AC_CACHE_CHECK([for ipv6 support],samba_cv_HAVE_IPV6,[
3094 #include <stdlib.h> /* for NULL */
3095 #include <sys/socket.h>
3096 #include <sys/types.h>
3097 #include <netdb.h>],
3099 struct sockaddr_storage sa_store;
3100 struct addrinfo *ai = NULL;
3101 struct in6_addr in6addr;
3102 int s = socket(AF_INET6, SOCK_STREAM, 0);
3103 int ret = getaddrinfo(NULL, NULL, NULL, &ai);
3105 const char *es = gai_strerror(ret);
3109 samba_cv_HAVE_IPV6=yes,samba_cv_HAVE_IPV6=no)])
3110 if test x"$samba_cv_HAVE_IPV6" = x"yes"; then
3111 AC_DEFINE(HAVE_IPV6,1,[Whether the system has IPv6 support])
3114 ################################################
3115 # look for a method of setting the effective uid
3117 if test $seteuid = no; then
3118 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
3120 #define AUTOCONF_TEST 1
3121 #define USE_SETRESUID 1
3122 #include "confdefs.h"
3123 #include "${srcdir-.}/lib/util_sec.c"],
3124 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
3125 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
3126 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
3131 if test $seteuid = no; then
3132 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
3134 #define AUTOCONF_TEST 1
3135 #define USE_SETREUID 1
3136 #include "confdefs.h"
3137 #include "${srcdir-.}/lib/util_sec.c"],
3138 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
3139 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
3140 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
3144 if test $seteuid = no; then
3145 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
3147 #define AUTOCONF_TEST 1
3148 #define USE_SETEUID 1
3149 #include "confdefs.h"
3150 #include "${srcdir-.}/lib/util_sec.c"],
3151 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
3152 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
3153 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
3157 if test $seteuid = no; then
3158 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
3160 #define AUTOCONF_TEST 1
3161 #define USE_SETUIDX 1
3162 #include "confdefs.h"
3163 #include "${srcdir-.}/lib/util_sec.c"],
3164 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
3165 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
3166 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
3170 AC_CACHE_CHECK([for the Darwin initgroups system call],
3171 samba_cv_DARWIN_INITGROUPS,
3173 #include <sys/syscall.h>
3176 [ syscall(SYS_initgroups, 16, NULL, NULL, 0); ],
3177 samba_cv_DARWIN_INITGROUPS=yes,
3178 samba_cv_DARWIN_INITGROUPS=no)
3181 if test x"$samba_cv_DARWIN_INITGROUPS" = x"yes" ; then
3182 AC_DEFINE(HAVE_DARWIN_INITGROUPS, 1,
3183 [Whether to use the Darwin-specific initgroups system call])
3186 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
3187 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
3188 samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
3189 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
3190 AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
3193 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
3194 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
3195 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
3196 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
3197 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
3200 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
3201 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
3202 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
3203 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
3204 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
3209 dnl Don't check for 64 bit fcntl locking if we know that the
3210 dnl glibc2.1 broken check has succeeded.
3213 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
3215 #if defined(HAVE_UNISTD_H)
3225 #ifdef HAVE_SYS_FCNTL_H
3226 #include <sys/fcntl.h>
3228 main() { struct flock64 fl64;
3229 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3235 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3237 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3238 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3242 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3243 AC_TRY_COMPILE([#include <sys/types.h>
3244 #include <sys/stat.h>
3245 #include <unistd.h>],
3246 [struct stat st; st.st_blocks = 0;],
3247 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3248 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3249 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3252 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3253 AC_TRY_COMPILE([#include <sys/types.h>
3254 #include <sys/stat.h>
3255 #include <unistd.h>],
3256 [struct stat st; st.st_blksize = 0;],
3257 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3258 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3259 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3262 AC_CACHE_CHECK([for st_flags in struct stat],
3263 samba_cv_HAVE_STAT_ST_FLAGS,
3265 AC_TRY_COMPILE([#include <sys/types.h>
3266 #include <sys/stat.h>
3267 #include <unistd.h>],
3268 [struct stat st; st.st_flags = 0;],
3269 samba_cv_HAVE_STAT_ST_FLAGS=yes,
3270 samba_cv_HAVE_STAT_ST_FLAGS=no,
3271 samba_cv_HAVE_STAT_ST_FLAGS=cross)
3274 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3275 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3276 [Whether the stat struct has a st_flags member])
3279 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3281 #include <sys/types.h>
3282 #include <sys/acl.h>
3283 #if defined(HAVE_RPCSVC_NIS_H)
3284 #include <rpcsvc/nis.h>
3287 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3288 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3289 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3292 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3297 char *newpath = realpath("/tmp", NULL);
3298 exit ((newpath != NULL) ? 0 : 1);
3301 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3302 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3303 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3306 #################################################
3307 # check for AFS clear-text auth support
3308 samba_cv_WITH_AFS=no
3309 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3311 [AS_HELP_STRING([--with-afs], [Include AFS clear-text auth support (default=no)])],
3312 [ case "$withval" in
3314 AC_MSG_RESULT($withval)
3315 samba_cv_WITH_AFS=$withval
3324 ####################################################
3325 # check for Linux-specific AFS fake-kaserver support
3326 samba_cv_WITH_FAKE_KASERVER=no
3327 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3328 AC_ARG_WITH(fake-kaserver,
3329 [AS_HELP_STRING([--with-fake-kaserver], [Include AFS fake-kaserver support (default=no)])],
3330 [ case "$withval" in
3332 AC_MSG_RESULT($withval)
3333 samba_cv_WITH_FAKE_KASERVER=$withval
3342 #################################################
3343 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3344 if test x"$samba_cv_WITH_AFS" != x"no" ||
3345 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3347 # see if this box has the afs-headers in /usr/include/afs
3348 AC_MSG_CHECKING(for /usr/include/afs)
3349 if test -d /usr/include/afs; then
3350 CFLAGS="$CFLAGS -I/usr/include/afs"
3351 CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3359 AC_CHECK_HEADERS(afs.h afs/afs.h)
3360 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3361 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3362 test x"$samba_cv_WITH_AFS" = x"auto"; then
3363 AC_MSG_WARN([AFS cannot be supported without afs.h])
3365 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3368 have_afs_headers=yes
3372 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3373 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3376 #################################################
3377 # check whether to compile AFS/NT ACL mapping module
3378 samba_cv_WITH_VFS_AFSACL=no
3379 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3380 AC_ARG_WITH(vfs-afsacl,
3381 [AS_HELP_STRING([--with-vfs-afsacl], [Include AFS to NT ACL mapping module (default=no)])],
3382 [ case "$withval" in
3384 AC_MSG_RESULT($withval)
3385 samba_cv_WITH_VFS_AFSACL=yes
3394 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3395 default_shared_modules="$default_shared_modules vfs_afsacl"
3398 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3399 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3402 #################################################
3403 # check for the DFS clear-text auth system
3404 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3406 [AS_HELP_STRING([--with-dce-dfs], [Include DCE/DFS clear-text auth support (default=no)])],
3407 [ case "$withval" in
3410 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3419 ########################################################
3420 # Compile with LDAP support?
3422 with_ldap_support=auto
3423 AC_MSG_CHECKING([for LDAP support])
3426 [AS_HELP_STRING([--with-ldap], [LDAP support (default yes)])],
3427 [ case "$withval" in
3429 with_ldap_support=$withval
3433 AC_MSG_RESULT($with_ldap_support)
3438 AC_SUBST(SMBLDAPUTIL)
3442 if test x"$with_ldap_support" != x"no"; then
3444 ##################################################################
3445 # first test for ldap.h and lber.h
3446 # (ldap.h is required for this test)
3447 AC_CHECK_HEADERS(ldap.h lber.h)
3449 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3450 if test x"$with_ldap_support" = x"yes"; then
3451 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3453 AC_MSG_WARN(ldap.h is needed for LDAP support)
3456 with_ldap_support=no
3459 ##################################################################
3460 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3461 # unsigned int in include/includes.h
3464 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3465 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3466 with_ldap_support=yes
3469 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3470 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3471 if test x"$with_ldap_support" = x"yes"; then
3472 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3474 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3476 with_ldap_support=no
3482 if test x"$with_ldap_support" != x"no"; then
3485 ##################################################################
3486 # we might need the lber lib on some systems. To avoid link errors
3487 # this test must be before the libldap test
3488 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3490 ########################################################
3491 # If ber_sockbuf_add_io() is available we can add
3492 # SASL wrapping hooks
3493 AC_CHECK_FUNC_EXT(ber_sockbuf_add_io,$LDAP_LIBS)
3495 AC_CACHE_CHECK([for LDAP_OPT_SOCKBUF],samba_cv_HAVE_LDAP_OPT_SOCKBUF,[
3496 AC_TRY_COMPILE([#include <ldap.h>],
3497 [int val = LDAP_OPT_SOCKBUF;],
3498 samba_cv_HAVE_LDAP_OPT_SOCKBUF=yes,
3499 samba_cv_HAVE_LDAP_OPT_SOCKBUF=no)])
3501 if test x"$ac_cv_func_ext_ber_sockbuf_add_io" = x"yes" -a \
3502 x"$samba_cv_HAVE_LDAP_OPT_SOCKBUF" = x"yes"; then
3503 AC_DEFINE(HAVE_LDAP_SASL_WRAPPING, 1, [Support for SASL wrapping])
3506 #######################################################
3507 # if we have LBER_OPT_LOG_PRINT_FN, we can intercept
3508 # ldap logging and print it out in the samba logs
3509 AC_CACHE_CHECK([for LBER_OPT_LOG_PRINT_FN],
3510 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN,
3511 [AC_TRY_COMPILE([#include <lber.h>],
3512 [int val = LBER_OPT_LOG_PRINT_FN;],
3513 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=yes,
3514 samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN=no)])
3516 if test x"$samba_cv_HAVE_LBER_OPT_LOG_PRINT_FN" = x"yes"; then
3517 AC_DEFINE(HAVE_LBER_LOG_PRINT_FN, 1,
3518 [Support for LDAP/LBER logging interception])
3521 ########################################################
3522 # now see if we can find the ldap libs in standard paths
3523 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3525 ########################################################
3526 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3527 # Check found in pam_ldap 145.
3528 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3530 LIBS="$LIBS $LDAP_LIBS"
3531 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3535 [ldap_set_rebind_proc(0, 0, 0);],
3536 [smb_ldap_cv_ldap_set_rebind_proc=3],
3537 [smb_ldap_cv_ldap_set_rebind_proc=2]
3541 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3543 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3545 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3546 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3547 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3548 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3549 default_shared_modules="$default_shared_modules";
3550 SMBLDAP="lib/smbldap.o"
3551 SMBLDAPUTIL="lib/smbldap_util.o"
3552 with_ldap_support=yes
3553 AC_MSG_CHECKING(whether LDAP support is used)
3556 if test x"$with_ldap_support" = x"yes"; then
3557 AC_MSG_ERROR(libldap is needed for LDAP support)
3559 AC_MSG_WARN(libldap is needed for LDAP support)
3563 with_ldap_support=no
3569 #################################################
3570 # active directory support
3572 with_ads_support=auto
3573 AC_MSG_CHECKING([for Active Directory and krb5 support])
3576 [AS_HELP_STRING([--with-ads], [Active Directory support (default auto)])],
3577 [ case "$withval" in
3579 with_ads_support="$withval"
3583 AC_MSG_RESULT($with_ads_support)
3588 if test x"$with_ldap_support" != x"yes"; then
3590 if test x"$with_ads_support" = x"yes"; then
3591 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3592 elif test x"$with_ads_support" = x"auto"; then
3593 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3599 # Check to see whether there is enough LDAP functionality to be able
3600 # to build AD support.
3602 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3605 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3607 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3608 if test x"$with_ads_support" = x"yes"; then
3609 AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3610 elif test x"$with_ads_support" = x"auto"; then
3611 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3617 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3619 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3620 if test x"$with_ads_support" = x"yes"; then
3621 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3622 elif test x"$with_ads_support" = x"auto"; then
3623 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3631 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3633 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3634 if test x"$with_ads_support" = x"yes"; then
3635 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3636 elif test x"$with_ads_support" = x"auto"; then
3637 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3644 if test x"$with_ads_support" != x"no"; then
3646 # Do no harm to the values of CFLAGS and LIBS while testing for
3649 if test x$FOUND_KRB5 = x"no"; then
3650 #################################################
3651 # check for location of Kerberos 5 install
3652 AC_MSG_CHECKING(for kerberos 5 install path)
3654 [AS_HELP_STRING([--with-krb5=base-dir], [Locate Kerberos 5 support (default=/usr)])],
3655 [ case "$withval" in
3657 AC_MSG_RESULT(no krb5-path given)
3664 AC_MSG_RESULT($withval)
3665 KRB5_CFLAGS="-I$withval/include"
3666 KRB5_CPPFLAGS="-I$withval/include"
3667 KRB5_LDFLAGS="-L$withval/lib"
3669 if test -x "$withval/bin/krb5-config"; then
3670 KRB5CONFIG=$withval/bin/krb5-config
3674 AC_MSG_RESULT(no krb5-path given)
3678 #################################################
3679 # check for krb5-config from recent MIT and Heimdal kerberos 5
3680 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3681 AC_MSG_CHECKING(for working krb5-config)
3682 if test -x "$KRB5CONFIG"; then
3683 ac_save_CFLAGS=$CFLAGS
3684 CFLAGS="";export CFLAGS
3685 ac_save_LDFLAGS=$LDFLAGS
3686 LDFLAGS="";export LDFLAGS
3687 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3688 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3689 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3690 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3691 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3692 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3696 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3699 if test x$FOUND_KRB5 = x"no"; then
3700 #################################################
3701 # see if this box has the SuSE location for the heimdal krb implementation
3702 AC_MSG_CHECKING(for /usr/include/heimdal)
3703 if test -d /usr/include/heimdal; then
3704 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3705 KRB5_CFLAGS="-I/usr/include/heimdal"
3706 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3707 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3711 KRB5_CFLAGS="-I/usr/include/heimdal"
3712 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3721 if test x$FOUND_KRB5 = x"no"; then
3722 #################################################
3723 # see if this box has the RedHat location for kerberos
3724 AC_MSG_CHECKING(for /usr/kerberos)
3725 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3726 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3727 KRB5_CFLAGS="-I/usr/kerberos/include"
3728 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3736 if test x$FOUND_KRB5 = x"no"; then
3737 #################################################
3738 # see if this box has the OpenBSD location for heimdal krb5
3739 AC_MSG_CHECKING(for /usr/include/kerberosV)
3740 if test -d /usr/include/kerberosV; then
3741 KRB5_CPPFLAGS="-I/usr/include/kerberosV"
3742 KRB5_LIBS="-lcrypto"
3750 ac_save_CFLAGS=$CFLAGS
3751 ac_save_CPPFLAGS=$CPPFLAGS
3752 ac_save_LDFLAGS=$LDFLAGS
3754 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3755 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3756 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3758 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3760 # now check for krb5.h. Some systems have the libraries without the headers!
3761 # note that this check is done here to allow for different kerberos
3763 AC_CHECK_HEADERS(krb5.h)
3765 if test x"$ac_cv_header_krb5_h" = x"no"; then
3767 # Give a warning if AD support was not explicitly requested,
3768 # i.e with_ads_support = auto, otherwise die with an error.
3770 if test x"$with_ads_support" = x"yes"; then
3771 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3773 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3776 # Turn off AD support and restore CFLAGS and LIBS variables
3778 with_ads_support="no"
3780 CFLAGS=$ac_save_CFLAGS
3781 CPPFLAGS=$ac_save_CPPFLAGS
3782 LDFLAGS=$ac_save_LDFLAGS
3784 AC_CHECK_HEADERS(krb5/locate_plugin.h)
3785 if test x"$ac_cv_header_krb5_locate_plugin_h" = x"yes"; then
3786 WINBIND_KRB5_LOCATOR="bin/winbind_krb5_locator.$SHLIBEXT"
3787 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS $WINBIND_KRB5_LOCATOR"
3791 # Now we have determined whether we really want ADS support
3793 if test x"$with_ads_support" != x"no"; then
3798 # now check for gssapi headers. This is also done here to allow for
3799 # different kerberos include paths
3800 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3802 ##################################################################
3803 # we might need the k5crypto and com_err libraries on some systems
3804 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3805 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3808 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3809 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3810 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3812 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3813 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3815 ########################################################
3816 # now see if we can find the krb5 libs in standard paths
3817 # or as specified above
3818 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3819 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3821 ########################################################
3822 # now see if we can find the gssapi libs in standard paths
3823 if test x"$have_gssapi" != x"yes"; then
3824 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3827 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3828 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3829 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3830 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3831 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3832 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3833 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3834 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3835 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3836 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3837 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3838 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3839 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3840 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3841 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3842 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3843 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3844 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3845 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3846 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3847 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3848 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3849 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3850 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3851 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3852 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3853 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3854 AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3855 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3856 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3857 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3858 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3859 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3860 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3861 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3862 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3863 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3864 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3865 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3866 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_get_error, $KRB5_LIBS)
3867 AC_CHECK_FUNC_EXT(krb5_enctype_to_string, $KRB5_LIBS)
3869 LIBS="$KRB5_LIBS $LIBS"
3871 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3872 smb_krb5_ticket_has_keyinfo,
3881 krb5_enctype enctype;
3883 enctype = ticket.enc_part.enctype;
3884 kvno = ticket.enc_part.kvno;
3886 [ smb_krb5_ticket_has_keyinfo=yes ],
3887 [ smb_krb5_ticket_has_keyinfo=no ])
3890 if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3891 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3892 [Whether the krb5_ticket structure contains the kvno and enctype])
3895 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3896 smb_krb5_creds_opt_free_context,
3902 krb5_get_init_creds_opt *opt = NULL;
3903 krb5_get_init_creds_opt_free(ctx, opt);
3905 [smb_krb5_creds_opt_free_context=yes],
3906 [smb_krb5_creds_opt_free_context=no]
3910 if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3911 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3912 [Whether krb5_get_init_creds_opt_free takes a context argument])
3915 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3918 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3919 [smb_krb5_verify_checksum=7],
3920 [smb_krb5_verify_checksum=6],
3923 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3925 AC_CACHE_CHECK([for checksum in krb5_checksum],
3926 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3927 AC_TRY_COMPILE([#include <krb5.h>],
3928 [krb5_checksum cksum; cksum.checksum.length = 0;],
3929 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3930 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3932 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3933 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3934 [Whether the krb5_checksum struct has a checksum property])
3937 AC_CACHE_CHECK([for etype in EncryptedData],
3938 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3939 AC_TRY_COMPILE([#include <krb5.h>],
3940 [EncryptedData edata; edata.etype = 0;],
3941 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3942 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3944 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3945 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3946 [Whether the EncryptedData struct has a etype property])
3949 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3950 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3951 AC_TRY_COMPILE([#include <krb5.h>],
3952 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3953 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3954 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3956 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3957 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3958 [Whether the krb5_ap_req struct has a ticket pointer])
3961 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3962 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3963 AC_TRY_COMPILE([#include <krb5.h>],
3964 [krb5_error err; err.e_data = NULL;],
3965 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3966 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3968 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3969 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3970 [Whether the krb5_error struct has a e_data pointer])
3973 AC_CACHE_CHECK([for krb5_crypto type],
3974 samba_cv_HAVE_KRB5_CRYPTO,[
3975 AC_TRY_COMPILE([#include <krb5.h>],
3976 [krb5_crypto crypto;],
3977 samba_cv_HAVE_KRB5_CRYPTO=yes,
3978 samba_cv_HAVE_KRB5_CRYPTO=no)])
3980 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3981 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3982 [Whether the type krb5_crypto exists])
3985 AC_CACHE_CHECK([for krb5_encrypt_block type],
3986 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3987 AC_TRY_COMPILE([#include <krb5.h>],
3988 [krb5_encrypt_block block;],
3989 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3990 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3992 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3993 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3994 [Whether the type krb5_encrypt_block exists])
3997 AC_CACHE_CHECK([for addrtype in krb5_address],
3998 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3999 AC_TRY_COMPILE([#include <krb5.h>],
4000 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
4001 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
4002 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
4004 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
4005 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
4006 [Whether the krb5_address struct has a addrtype property])
4009 AC_CACHE_CHECK([for addr_type in krb5_address],
4010 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
4011 AC_TRY_COMPILE([#include <krb5.h>],
4012 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
4013 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
4014 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
4016 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
4017 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
4018 [Whether the krb5_address struct has a addr_type property])
4021 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
4022 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
4023 [AC_TRY_COMPILE([#include <krb5.h>],
4024 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
4025 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
4027 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
4028 AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
4029 [Whether the krb5_ticket struct has a enc_part2 property])
4032 AC_CACHE_CHECK([for keyblock in krb5_creds],
4033 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
4034 AC_TRY_COMPILE([#include <krb5.h>],
4035 [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
4036 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
4037 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
4039 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
4040 AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
4041 [Whether the krb5_creds struct has a keyblock property])
4044 AC_CACHE_CHECK([for session in krb5_creds],
4045 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
4046 AC_TRY_COMPILE([#include <krb5.h>],
4047 [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
4048 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
4049 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
4051 if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
4052 AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
4053 [Whether the krb5_creds struct has a session property])
4056 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
4057 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
4058 AC_TRY_COMPILE([#include <krb5.h>],
4059 [krb5_keyblock key; key.keyvalue.data = NULL;],
4060 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
4061 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
4063 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
4064 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
4065 [Whether the krb5_keyblock struct has a keyvalue property])
4068 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
4069 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
4070 AC_TRY_COMPILE([#include <krb5.h>],
4071 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
4072 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
4073 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
4074 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
4075 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
4076 AC_TRY_COMPILE([#include <krb5.h>],
4077 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
4078 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
4079 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
4080 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
4081 # w.r.t. arcfour and windows, so we must not enable it here
4082 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
4083 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
4084 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
4085 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
4088 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
4089 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
4090 AC_TRY_COMPILE([#include <krb5.h>],
4091 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
4092 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
4093 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
4095 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
4096 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
4097 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
4100 AC_CACHE_CHECK([for KV5M_KEYTAB],
4101 samba_cv_HAVE_KV5M_KEYTAB,[
4102 AC_TRY_COMPILE([#include <krb5.h>],
4103 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
4104 samba_cv_HAVE_KV5M_KEYTAB=yes,
4105 samba_cv_HAVE_KV5M_KEYTAB=no)])
4107 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
4108 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
4109 [Whether the KV5M_KEYTAB option is available])
4112 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
4113 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
4114 AC_TRY_COMPILE([#include <krb5.h>],
4115 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
4116 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
4117 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
4119 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
4120 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
4121 [Whether KRB5_KU_OTHER_CKSUM is available])
4124 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
4125 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
4126 AC_TRY_COMPILE([#include <krb5.h>],
4127 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
4128 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
4129 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
4131 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
4132 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
4133 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
4136 AC_CACHE_CHECK([for the krb5_princ_component macro],
4137 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
4138 AC_TRY_LINK([#include <krb5.h>],
4139 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
4140 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
4141 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
4143 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
4144 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
4145 [Whether krb5_princ_component is available])
4148 AC_CACHE_CHECK([for key in krb5_keytab_entry],
4149 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
4150 AC_TRY_COMPILE([#include <krb5.h>],
4151 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
4152 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
4153 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
4155 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
4156 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
4157 [Whether krb5_keytab_entry has key member])
4160 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
4161 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
4162 AC_TRY_COMPILE([#include <krb5.h>],
4163 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
4164 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
4165 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
4167 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
4168 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
4169 [Whether krb5_keytab_entry has keyblock member])
4172 AC_CACHE_CHECK([for magic in krb5_address],
4173 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
4174 AC_TRY_COMPILE([#include <krb5.h>],
4175 [krb5_address addr; addr.magic = 0;],
4176 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
4177 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
4179 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
4180 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
4181 [Whether the krb5_address struct has a magic property])
4184 AC_CACHE_CHECK([for WRFILE: keytab support],
4185 samba_cv_HAVE_WRFILE_KEYTAB,[
4190 krb5_context context;
4193 krb5_init_context(&context);
4194 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
4196 samba_cv_HAVE_WRFILE_KEYTAB=yes,
4197 samba_cv_HAVE_WRFILE_KEYTAB=no)])
4199 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
4200 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
4201 [Whether the WRFILE:-keytab is supported])
4204 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
4205 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
4206 AC_TRY_COMPILE([#include <krb5.h>],
4208 krb5_context context;
4209 krb5_principal principal;
4210 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
4211 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
4212 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
4214 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
4215 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
4216 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
4219 AC_CACHE_CHECK([for krb5_addresses type],
4220 samba_cv_HAVE_KRB5_ADDRESSES,[
4221 AC_TRY_COMPILE([#include <krb5.h>],
4222 [krb5_addresses addr;],
4223 samba_cv_HAVE_KRB5_ADDRESSES=yes,
4224 samba_cv_HAVE_KRB5_ADDRESSES=no)])
4226 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
4227 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
4228 [Whether the type krb5_addresses type exists])
4231 AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
4232 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
4233 AC_TRY_COMPILE([#include <krb5.h>],
4235 krb5_mk_error(0,0,0);],
4236 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
4237 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
4239 if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
4240 AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
4241 [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
4244 if test x"$ac_cv_func_ext_krb5_enctype_to_string" = x"yes"; then
4245 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_context context, krb5_enctype enctype, char **str)],
4246 smb_krb5_enctype_to_string_takes_krb5_context_arg,[
4250 krb5_context context = NULL;
4252 krb5_enctype_to_string(context, 1, &str);
4253 if (str) free (str);
4256 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4257 smb_krb5_enctype_to_string_takes_krb5_context_arg=yes,
4258 smb_krb5_enctype_to_string_takes_krb5_context_arg=no)])
4260 if test x"$smb_krb5_enctype_to_string_takes_krb5_context_arg" = x"yes"; then
4261 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_KRB5_CONTEXT_ARG,1,
4262 [whether krb5_enctype_to_string takes krb5_context argument])
4265 AC_CACHE_CHECK([for krb5_error_code krb5_enctype_to_string(krb5_enctype enctype, char *str, size_t len)],
4266 smb_krb5_enctype_to_string_takes_size_t_arg,[
4271 krb5_enctype_to_string(1, buf, 256);
4274 ],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4275 smb_krb5_enctype_to_string_takes_size_t_arg=yes,
4276 smb_krb5_enctype_to_string_takes_size_t_arg=no)])
4278 if test x"$smb_krb5_enctype_to_string_takes_size_t_arg" = x"yes"; then
4279 AC_DEFINE(HAVE_KRB5_ENCTYPE_TO_STRING_WITH_SIZE_T_ARG,1,
4280 [whether krb5_enctype_to_string takes size_t argument])
4284 AC_CACHE_CHECK([for krb5_principal_get_realm],
4285 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM,[
4286 AC_TRY_LINK([#include <krb5.h>],
4287 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_principal_get_realm(ctx, princ);],
4288 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=yes,
4289 samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM=no)])
4291 if test x"$samba_cv_HAVE_KRB5_PRINCIPAL_GET_REALM" = x"yes"; then
4292 AC_DEFINE(HAVE_KRB5_PRINCIPAL_GET_REALM,1,
4293 [Whether the function krb5_principal_get_realm is defined])
4296 AC_CACHE_CHECK([for krb5_princ_realm],
4297 samba_cv_HAVE_KRB5_PRINC_REALM,[
4298 AC_TRY_LINK([#include <krb5.h>],
4299 [krb5_context ctx = NULL; krb5_principal princ = NULL; const char *str = krb5_princ_realm(ctx, princ)->data;],
4300 samba_cv_HAVE_KRB5_PRINC_REALM=yes,
4301 samba_cv_HAVE_KRB5_PRINC_REALM=no)])
4303 if test x"$samba_cv_HAVE_KRB5_PRINC_REALM" = x"yes"; then
4304 AC_DEFINE(HAVE_KRB5_PRINC_REALM,1,
4305 [Whether the macro krb5_princ_realm is defined])
4310 # Now the decisions whether we can support krb5
4312 # NOTE: all tests should be done before this block!
4315 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
4316 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
4320 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
4321 x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
4323 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4327 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4328 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4330 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4334 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4335 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4337 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4341 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4342 x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4344 AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4348 if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
4350 # We only need the following functions if we can't get the enctype
4351 # and kvno out of the ticket directly (ie. on Heimdal).
4353 if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4355 AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4359 if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4361 AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4367 if test x"$use_ads" = x"yes"; then
4368 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4369 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4370 if test x"$have_gssapi" = x"yes"; then
4371 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4374 if test x"$with_ads_support" = x"yes"; then
4375 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4377 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4379 AC_REMOVE_DEFINE(HAVE_KRB5_H)
4380 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4381 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4382 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4386 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4387 AC_MSG_RESULT([$use_ads])
4389 LIBS="$ac_save_LIBS"
4392 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4393 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4396 ########################################################
4397 # Compile with DNS Updates support?
4399 with_dnsupdate_support=no
4400 AC_MSG_CHECKING([whether to enable DNS Updates support])
4402 AC_ARG_WITH(dnsupdate,
4403 [AS_HELP_STRING([--with-dnsupdate], [Enable DNS Updates support (default no)])],
4404 [ case "$withval" in
4406 with_dnsupdate_support=$withval
4410 AC_MSG_RESULT($with_dnsupdate_support)
4412 if test x"$with_dnsupdate_support" != x"no"; then
4414 ################################################################
4415 # first test for Active Directory support being enabled
4416 #if test x"$with_ads_support" = x"no"; then
4417 # AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4418 # with_dnsupdate_support=no
4420 ##################################################################
4421 # then test for uuid.h (necessary to generate unique DNS keynames
4422 # (uuid.h is required for this test)
4423 AC_CHECK_HEADERS(uuid/uuid.h)
4425 if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4426 if test x"$with_dnsupdate_support" = x"yes"; then
4427 AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4429 AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4431 with_dnsupdate_support=no
4435 if test x"$with_dnsupdate_support" != x"no"; then
4437 ########################################################
4438 # Now see if we can find the uuid libs in standard paths
4439 # On some systems, the uuid API is in libc, so we have to
4440 # be careful not to insert a spurious -luuid.
4443 AC_LIBTESTFUNC(uuid, uuid_generate,
4448 SMB_REMOVE_LIB(uuid)
4452 with_dnsupdate_support=yes
4453 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4456 if test x"$with_dnsupdate_support" = x"yes"; then
4457 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4459 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4461 with_dnsupdate_support=no
4465 #################################################
4466 # check for automount support
4467 AC_MSG_CHECKING(whether to use automount)
4468 AC_ARG_WITH(automount,
4469 [AS_HELP_STRING([--with-automount], [Include automount support (default=no)])],
4470 [ case "$withval" in
4473 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4482 #################################################
4483 # check for smbmount support
4484 AC_MSG_CHECKING(whether to use smbmount)
4485 AC_ARG_WITH(smbmount,
4486 [AS_HELP_STRING([--with-smbmount], [Include smbmount (Linux only) support (default=no)])],
4487 [ case "$withval" in
4492 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
4493 SMBMOUNT_PROGS="bin/smbmount bin/smbmnt bin/smbumount"
4496 AC_MSG_ERROR(not on a linux system!)
4507 #################################################
4508 # check for mount- and umount.cifs support
4510 INSTALL_CIFSMOUNT=""
4511 UNINSTALL_CIFSMOUNT=""
4512 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4513 AC_ARG_WITH(cifsmount,
4514 [AS_HELP_STRING([--with-cifsmount], [Include mount.cifs and umount.cifs (Linux only) support (default=yes)])],
4515 [ case "$withval" in
4523 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4524 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4525 INSTALL_CIFSMOUNT="installcifsmount"
4526 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4529 AC_MSG_ERROR(not on a linux system!)
4534 [ case "$host_os" in
4537 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4538 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4539 INSTALL_CIFSMOUNT="installcifsmount"
4540 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4548 #################################################
4549 # check for cifs.spnego support
4550 AC_CHECK_HEADERS([keyutils.h], [HAVE_KEYUTILS_H=1], [HAVE_KEYUTILS_H=0])
4552 INSTALL_CIFSSPNEGO=""
4553 UNINSTALL_CIFSSPNEGO=""
4554 AC_MSG_CHECKING(whether to build cifs.spnego)
4555 AC_ARG_WITH(cifsspnego,
4556 [AS_HELP_STRING([--with-cifsspnego], [Include cifs.spnego (Linux only) support (default=no)])],
4557 [ case "$withval" in
4564 if test x"$use_ads" != x"yes"; then
4565 AC_MSG_ERROR(ADS support should be enabled for building cifs.spnego)
4566 elif test x"$HAVE_KEYUTILS_H" != "x1"; then
4567 AC_MSG_ERROR(keyutils package is required for cifs.spnego)
4570 AC_DEFINE(WITH_CIFSSPNEGO,1,[whether to build cifs.spnego])
4571 CIFSSPNEGO_PROGS="bin/cifs.spnego"
4572 INSTALL_CIFSSPNEGO="installcifsspnego"
4573 UNINSTALL_CIFSSPNEGO="uninstallcifsspnego"
4577 AC_MSG_ERROR(not on a linux system!)
4588 #################################################
4589 # Check for a PAM clear-text auth, accounts, password
4590 # and session support. Most PAM implementations keep their
4591 # headers in /usr/include/security. Darwin keeps its in
4594 with_pam_for_crypt=no
4596 AC_MSG_CHECKING(whether to try PAM support)
4598 [AS_HELP_STRING([--with-pam], [Include PAM support (default=no)])],
4599 [ case "$withval" in
4605 AC_MSG_RESULT([$try_pam])
4608 create_pam_modules=no
4609 if test x"${try_pam}" != x"no";then
4611 create_pam_modules=yes
4613 # Most systems have PAM headers in /usr/include/security, but Darwin
4614 # has them in /usr/include/pam.
4615 AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h)
4616 if test x"$ac_cv_header_security_pam_appl_h" != x"yes" -a \
4617 x"$ac_cv_header_pam_pam_appl_h" != x"yes"; then
4618 if test x"${try_pam}" = x"yes";then
4619 AC_MSG_ERROR([--with-pam=yes but pam_appl.h not found])
4622 create_pam_modules=no
4625 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4626 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4627 if test x"${try_pam}" = x"yes";then
4628 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4631 create_pam_modules=no
4634 AC_CHECK_HEADERS(security/pam_modules.h pam/pam_modules.h,,,[[
4635 #if HAVE_SECURITY_PAM_APPL_H
4636 #include <security/pam_appl.h>
4638 #if HAVE_PAM_PAM_APPL_H
4639 #include <pam/pam_appl.h>
4642 if test x"$ac_cv_header_security_pam_modules_h" = x"no" -a \
4643 x"$ac_cv_header_pam_pam_modules_h" = x"no" ; then
4644 if test x"${try_pam}" = x"yes";then
4645 AC_MSG_ERROR([--with-pam=yes but pam_modules.h not found])
4647 create_pam_modules=no
4650 if test x"$use_pam" = x"yes"; then
4651 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4652 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4653 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4654 with_pam_for_crypt=yes
4656 if test x"$create_pam_modules" = x"yes"; then
4657 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4658 # this checks are optional,
4659 # we don't care about the results here
4660 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4661 AC_CHECK_HEADERS(pam/pam_ext.h pam/_pam_macros.h)
4662 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4664 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4667 AC_MSG_CHECKING(whether to use PAM support)
4668 AC_MSG_RESULT([$use_pam])
4670 AC_MSG_CHECKING(whether to have PAM MODULES support)
4671 AC_MSG_RESULT([$create_pam_modules])
4674 #################################################
4675 # check for pam_smbpass support
4677 INSTALL_PAM_MODULES=""
4678 UNINSTALL_PAM_MODULES=""
4679 AC_MSG_CHECKING(whether to use pam_smbpass)
4680 AC_ARG_WITH(pam_smbpass,
4681 [AS_HELP_STRING([--with-pam_smbpass], [Build PAM module for authenticating against passdb backends (default=no)])],
4682 [ case "$withval" in
4686 # Conditions under which pam_smbpass should not be built.
4688 if test x"$BLDSHARED" != x"true"; then
4689 AC_MSG_ERROR([No support for shared modules])
4690 elif test x"$create_pam_modules" != x"yes"; then
4691 AC_MSG_ERROR([No support for PAM MODULES])
4693 PAM_MODULES="pam_smbpass"
4694 INSTALL_PAM_MODULES="installpammodules"
4695 UNINSTALL_PAM_MODULES="uninstallpammodules"
4706 ###############################################
4707 # test for where we get crypt() from
4708 AC_SEARCH_LIBS(crypt, [crypt],
4709 [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4710 AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4713 ## moved after the check for -lcrypt in order to
4714 ## ensure that the necessary libraries are included
4715 ## check checking for truncated salt. Wrapped by the
4716 ## $with_pam_for_crypt variable as above --jerry
4718 if test $with_pam_for_crypt = no; then
4719 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4721 LIBS="$AUTH_LIBS $LIBS"
4722 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4723 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4724 LIBS="$crypt_LIBS"])
4725 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4726 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4730 #################################################
4731 # check for a NISPLUS_HOME support
4732 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4733 AC_ARG_WITH(nisplus-home,
4734 [AS_HELP_STRING([--with-nisplus-home], [Include NISPLUS_HOME support (default=no)])],
4735 [ case "$withval" in
4738 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4747 #################################################
4748 # check for syslog logging
4749 AC_MSG_CHECKING(whether to use syslog logging)
4751 [AS_HELP_STRING([--with-syslog], [Include experimental SYSLOG support (default=no)])],
4752 [ case "$withval" in
4755 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4764 #################################################
4765 # check for experimental disk-quotas support
4767 samba_cv_WITH_QUOTAS=auto
4768 samba_cv_TRY_QUOTAS=no
4769 samba_cv_RUN_QUOTA_TESTS=auto
4770 samba_cv_WITH_SYS_QUOTAS=auto
4771 samba_cv_TRY_SYS_QUOTAS=auto
4772 samba_cv_SYSQUOTA_FOUND=no
4774 AC_MSG_CHECKING(whether to try disk-quotas support)
4776 [AS_HELP_STRING([--with-quotas], [Include disk-quota support (default=no)])],
4777 [ case "$withval" in
4780 samba_cv_WITH_QUOTAS=yes
4781 samba_cv_TRY_QUOTAS=yes
4782 samba_cv_RUN_QUOTA_TESTS=yes
4783 #set sys quotas to auto in this case
4784 samba_cv_TRY_SYS_QUOTAS=auto
4788 samba_cv_WITH_QUOTAS=auto
4789 samba_cv_TRY_QUOTAS=auto
4790 samba_cv_RUN_QUOTA_TESTS=auto
4791 #set sys quotas to auto in this case
4792 samba_cv_TRY_SYS_QUOTAS=auto
4796 samba_cv_WITH_QUOTAS=no
4797 samba_cv_TRY_QUOTAS=no
4798 samba_cv_RUN_QUOTA_TESTS=no
4801 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4804 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4807 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4808 AC_ARG_WITH(sys-quotas,
4809 [AS_HELP_STRING([--with-sys-quotas], [Include lib/sysquotas.c support (default=auto)])],
4810 [ case "$withval" in
4813 samba_cv_WITH_SYS_QUOTAS=yes
4814 samba_cv_TRY_SYS_QUOTAS=yes
4815 samba_cv_RUN_QUOTA_TESTS=yes
4819 samba_cv_WITH_SYS_QUOTAS=auto
4820 samba_cv_TRY_SYS_QUOTAS=auto
4821 samba_cv_RUN_QUOTA_TESTS=auto
4825 samba_cv_WITH_SYS_QUOTAS=no
4826 samba_cv_TRY_SYS_QUOTAS=no
4829 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4832 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4835 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4836 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4840 samba_cv_TRY_SYS_QUOTAS=yes
4841 samba_cv_RUN_QUOTA_TESTS=yes
4845 samba_cv_TRY_SYS_QUOTAS=no
4850 #############################################
4851 # only check for quota stuff if --with-quotas
4852 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4855 # on linux we didn't need to test we have builtin support
4857 samba_cv_SYSQUOTA_FOUND=yes
4858 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4859 samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4860 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4863 AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4864 samba_cv_found_xfs_header=yes
4865 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4869 # need to set this define when using static linking (BUG 1473)
4870 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4876 # some broken header files need this
4877 AC_CHECK_HEADER(asm/types.h,[
4878 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4879 AC_ADD_INCLUDE(<asm/types.h>)
4882 # For quotas on Veritas VxFS filesystems
4883 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4885 # For quotas on Linux XFS filesystems
4886 AC_CHECK_HEADERS(linux/dqblk_xfs.h)
4888 # For sys/quota.h and linux/quota.h
4889 AC_CHECK_HEADERS(sys/quota.h)
4891 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4892 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4893 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4895 #include "confdefs.h"
4896 #ifdef HAVE_SYS_TYPES_H
4897 #include <sys/types.h>
4899 #ifdef HAVE_ASM_TYPES_H
4900 #include <asm/types.h>
4902 #include <sys/quota.h>
4903 ],[int i = Q_XGETQUOTA;],
4904 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4905 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4906 samba_cv_found_xfs_header=yes
4910 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4911 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4913 #include "confdefs.h"
4914 #ifdef HAVE_SYS_QUOTA_H
4915 #include <sys/quota.h>
4919 D.dqb_fsoftlimit = 0;],
4920 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4921 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4922 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4926 # look for a working quota system
4928 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4929 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4931 #define HAVE_QUOTACTL_4A 1
4932 #define AUTOCONF_TEST 1
4933 #include "confdefs.h"
4934 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4935 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4936 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4937 samba_cv_SYSQUOTA_FOUND=yes;
4938 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4939 samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4943 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4944 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4946 #define HAVE_QUOTACTL_4B 1
4947 #define AUTOCONF_TEST 1
4948 #include "confdefs.h"
4949 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4950 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4951 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4952 echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4953 samba_cv_SYSQUOTA_FOUND=yes;
4954 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4955 samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4959 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4960 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4962 #define HAVE_QUOTACTL_3 1
4963 #define AUTOCONF_TEST 1
4964 #include "confdefs.h"
4965 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4966 samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4967 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4968 echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4969 samba_cv_SYSQUOTA_FOUND=yes;
4970 AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4971 samba_cv_sysquotas_file="lib/sysquotas_3.c"
4975 #################################################
4976 # check for mntent.h and struct mntent
4977 AC_CHECK_HEADERS(mntent.h)
4978 #################################################
4979 # check for setmntent,getmntent,endmntent
4980 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4982 #################################################
4983 # check for devnm.h and struct mntent
4984 AC_CHECK_HEADERS(devnm.h)
4985 #################################################
4987 AC_CHECK_FUNCS(devnm)
4989 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4990 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4991 # if --with-sys-quotas=yes then build it
4992 # you have can use the get/set quota command smb.conf
4994 samba_cv_SYSQUOTA_FOUND=auto
4996 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4997 # if --with-sys-quotas=yes then build it
4998 # you have can use the get/set quota command smb.conf
5000 samba_cv_TRY_SYS_QUOTAS=auto
5004 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
5005 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
5006 SAVE_CPPFLAGS="$CPPFLAGS"
5007 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5009 #include "confdefs.h"
5010 #define NO_PROTO_H 1
5011 #define NO_CONFIG_H 1
5012 #define HAVE_SYS_QUOTAS 1
5013 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
5014 #include "${srcdir-.}/lib/sysquotas.c"
5015 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
5016 CPPFLAGS="$SAVE_CPPFLAGS"
5018 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
5019 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
5020 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
5021 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5022 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
5023 samba_cv_WE_USE_SYS_QUOTAS=yes
5031 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
5032 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
5033 SAVE_CPPFLAGS="$CPPFLAGS"
5034 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5036 #include "confdefs.h"
5037 #define NO_PROTO_H 1
5038 #define NO_CONFIG_H 1
5039 #define HAVE_SYS_QUOTAS 1
5040 #define HAVE_XFS_QUOTAS 1
5041 #include "${srcdir-.}/lib/sysquotas_xfs.c"
5042 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
5043 CPPFLAGS="$SAVE_CPPFLAGS"
5045 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
5046 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
5047 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
5052 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
5053 SAVE_CPPFLAGS="$CPPFLAGS"
5054 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
5056 #include "confdefs.h"
5057 #define NO_PROTO_H 1
5058 #define NO_CONFIG_H 1
5059 #include "${srcdir-.}/smbd/quotas.c"
5060 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
5061 CPPFLAGS="$SAVE_CPPFLAGS"
5063 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
5064 AC_MSG_CHECKING(whether to use the old quota support)
5065 if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
5066 if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
5067 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
5077 ####################
5078 # End of quota check samba_cv_RUN_QUOTA_TESTS
5081 #################################################
5082 # check for experimental utmp accounting
5084 AC_MSG_CHECKING(whether to support utmp accounting)
5087 [AS_HELP_STRING([--with-utmp], [Include utmp accounting (default, if supported by OS)])],
5088 [ case "$withval" in
5098 # utmp requires utmp.h
5099 # Note similar check earlier, when checking utmp details.
5101 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
5102 utmp_no_reason=", no utmp.h on $host_os"
5106 # Display test results
5108 if test x"$WITH_UTMP" = x"yes"; then
5110 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
5112 AC_MSG_RESULT(no$utmp_no_reason)
5117 UNINSTALLLIBCMD_SH=:
5120 if test $BLDSHARED = true; then
5121 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
5122 UNINSTALLLIBCMD_SH="rm -f"
5124 if test $enable_static = yes; then
5125 INSTALLLIBCMD_A="\$(INSTALLCMD)"
5126 UNINSTALLLIBCMD_A="rm -f"
5129 #################################################
5130 # --with-static-libs=LIBS:
5131 # link (internal) libs dynamically or statically?
5133 # If a subsystem is built as a library then this controls whether they are
5134 # linked into Samba targets statically or dynamically:
5136 # * If we build the shared library at all, we link dynamically by default.
5138 # * We only link statically if we don't build shared or if the library
5139 # appears in the --with-static-libs configure option.
5142 # --with-static-libs=talloc makes use of libtalloc.a instead
5143 # of linking the dynamic variant with -ltalloc.
5145 # NOTE: This option only affects libraries that we do not only build
5146 # but that samba also links against as libraries (as opposed to linking
5147 # the plain object files. - This has to be configured in Makefile.in.
5148 # So in particular it does not harm to give invalid or unknown names here.
5151 AC_ARG_WITH([static-libs],
5152 [AS_HELP_STRING([--with-static-libs=LIBS],
5153 [Comma-separated list of names of (internal) libraries to link statically (instead of dynamically)])],
5154 [AS_IF([test $withval],
5155 [for lib in `echo $withval | sed -e 's/,/ /g'` ; do
5156 [lib=`echo $lib | tr '[a-z]' '[A-Z]'`]
5157 eval LIB_$lib=STATIC
5161 #################################################
5162 # should we build libtalloc?
5163 LIBTALLOC_SHARED_TARGET=bin/libtalloc.$SHLIBEXT
5164 LIBTALLOC_STATIC_TARGET=bin/libtalloc.a
5169 AC_MSG_CHECKING(whether to build the libtalloc shared library)
5170 AC_ARG_WITH(libtalloc,
5171 [AS_HELP_STRING([--with-libtalloc],
5172 [Build the libtalloc shared library (default=yes if shared libs supported)])],
5179 samba_cv_with_libtalloc=yes
5184 # if unspecified, default is to build it if possible.
5185 samba_cv_with_libtalloc=yes
5189 if test x"$samba_cv_with_libtalloc" = "xyes" -a $BLDSHARED = true; then
5190 LIBTALLOC_SHARED=$LIBTALLOC_SHARED_TARGET
5192 if test x"$LIB_TALLOC" = "xSTATIC" ; then
5193 LIBTALLOC_STATIC=$LIBTALLOC_STATIC_TARGET
5195 LIBTALLOC_LIBS=-ltalloc
5199 AC_MSG_RESULT(no shared library support -- will supply static library)
5201 if test $enable_static = yes; then
5202 LIBTALLOC_STATIC=$LIBTALLOC_STATIC_TARGET
5206 #################################################
5207 # should we build libnetapi?
5209 UNINSTALL_LIBNETAPI=
5212 AC_MSG_CHECKING(whether to build the libnetapi shared library)
5213 AC_ARG_WITH(libnetapi,
5214 [AS_HELP_STRING([--with-libnetapi], [Build the libnetapi shared library (default=yes if shared libs supported)])],
5215 [ case "$withval" in
5220 if test $BLDSHARED = true; then
5221 LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
5226 AC_MSG_RESULT(no shared library support -- will supply static library)
5228 if test $enable_static = yes; then
5231 INSTALL_LIBNETAPI=installlibnetapi
5232 UNINSTALL_LIBNETAPI=uninstalllibnetapi
5236 # if unspecified, default is to build it if possible.
5237 if test $BLDSHARED = true; then
5238 LIBNETAPI_SHARED=bin/libnetapi.$SHLIBEXT
5243 AC_MSG_RESULT(no shared library support -- will supply static library)
5245 if test $enable_static = yes; then
5248 INSTALL_LIBNETAPI=installlibnetapi
5251 #################################################
5252 # should we build libaddns?
5257 AC_MSG_CHECKING(whether to build the libaddns shared library)
5258 AC_ARG_WITH(libaddns,
5259 [AS_HELP_STRING([--with-libaddns], [Build the libaddns shared library (default=no undefined API)])],
5260 [ case "$withval" in
5265 if test $BLDSHARED = true; then
5266 LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
5271 AC_MSG_RESULT(no shared library support -- will supply static library)
5273 if test $enable_static = yes; then
5276 INSTALL_LIBADDNS=installlibaddns
5277 UNINSTALL_LIBADDNS=uninstalllibaddns
5283 #################################################
5284 # should we build libsmbclient?
5286 INSTALL_LIBSMBCLIENT=
5287 UNINSTALL_LIBSMBCLIENT=
5288 LIBSMBCLIENT_SHARED=
5290 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
5291 AC_ARG_WITH(libsmbclient,
5292 [AS_HELP_STRING([--with-libsmbclient], [Build the libsmbclient shared library (default=yes if shared libs supported)])],
5293 [ case "$withval" in
5298 if test $BLDSHARED = true; then
5299 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
5300 LIBSMBCLIENT=libsmbclient
5304 AC_MSG_RESULT(no shared library support -- will supply static library)
5306 if test $enable_static = yes; then
5307 LIBSMBCLIENT=libsmbclient
5309 INSTALL_LIBSMBCLIENT=installclientlib
5310 UNINSTALL_LIBSMBCLIENT=uninstallclientlib
5314 # if unspecified, default is to build it if possible.
5315 if test $BLDSHARED = true; then
5316 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
5317 LIBSMBCLIENT=libsmbclient
5321 AC_MSG_RESULT(no shared library support -- will supply static library)
5323 if test $enable_static = yes; then
5324 LIBSMBCLIENT=libsmbclient
5326 INSTALL_LIBSMBCLIENT=installclientlib
5327 UNINSTALL_LIBSMBCLIENT=uninstallclientlib
5330 INSTALL_LIBSMBSHAREMODES=
5331 LIBSMBSHAREMODES_SHARED=
5333 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
5334 AC_ARG_WITH(libsmbsharemodes,
5335 [AS_HELP_STRING([--with-libsmbsharemodes], [Build the libsmbsharemodes shared library (default=yes if shared libs supported)])],
5336 [ case "$withval" in
5341 if test $BLDSHARED = true; then
5342 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
5343 LIBSMBSHAREMODES=libsmbsharemodes
5347 AC_MSG_RESULT(no shared library support -- will supply static library)
5349 if test $enable_static = yes; then
5350 LIBSMBSHAREMODES=libsmbsharemodes
5352 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
5353 UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
5357 # if unspecified, default is to build it if possible.
5358 if test $BLDSHARED = true; then
5359 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
5360 LIBSMBSHAREMODES=libsmbsharemodes
5364 AC_MSG_RESULT(no shared library support -- will supply static library)
5366 if test $enable_static = yes; then
5367 LIBSMBSHAREMODES=libsmbsharemodes
5369 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
5373 #################################################
5374 # these tests are taken from the GNU fileutils package
5375 AC_CHECKING(how to get filesystem space usage)
5378 # Test for statvfs64.
5379 if test $space = no; then
5381 AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
5383 #if defined(HAVE_UNISTD_H)
5386 #include <sys/types.h>
5387 #include <sys/statvfs.h>
5390 struct statvfs64 fsd;
5391 exit (statvfs64 (".", &fsd));
5393 fu_cv_sys_stat_statvfs64=yes,
5394 fu_cv_sys_stat_statvfs64=no,
5395 fu_cv_sys_stat_statvfs64=cross)])
5396 if test $fu_cv_sys_stat_statvfs64 = yes; then
5398 AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
5402 # Perform only the link test since it seems there are no variants of the
5403 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
5404 # because that got a false positive on SCO OSR5. Adding the declaration
5405 # of a `struct statvfs' causes this test to fail (as it should) on such
5406 # systems. That system is reported to work fine with STAT_STATFS4 which
5407 # is what it gets when this test fails.
5408 if test $space = no; then
5410 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
5411 [AC_TRY_LINK([#include <sys/types.h>
5412 #include <sys/statvfs.h>],
5413 [struct statvfs fsd; statvfs (0, &fsd);],
5414 fu_cv_sys_stat_statvfs=yes,
5415 fu_cv_sys_stat_statvfs=no)])
5416 if test $fu_cv_sys_stat_statvfs = yes; then
5418 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
5422 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
5423 # This is not the case on ancient Linux systems.
5425 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
5426 AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
5427 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
5428 if test x"$samba_cv_fsid_int" = x"yes"; then
5429 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
5432 if test $space = no; then
5433 # DEC Alpha running OSF/1
5434 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
5435 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
5437 #include <sys/param.h>
5438 #include <sys/types.h>
5439 #include <sys/mount.h>
5444 exit (statfs (".", &fsd, sizeof (struct statfs)));
5446 fu_cv_sys_stat_statfs3_osf1=yes,
5447 fu_cv_sys_stat_statfs3_osf1=no,
5448 fu_cv_sys_stat_statfs3_osf1=no)])
5449 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5450 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5452 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5456 if test $space = no; then
5458 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5459 member (AIX, 4.3BSD)])
5460 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5462 #ifdef HAVE_SYS_PARAM_H
5463 #include <sys/param.h>
5465 #ifdef HAVE_SYS_MOUNT_H
5466 #include <sys/mount.h>
5468 #ifdef HAVE_SYS_VFS_H
5469 #include <sys/vfs.h>
5475 exit (statfs (".", &fsd));
5477 fu_cv_sys_stat_statfs2_bsize=yes,
5478 fu_cv_sys_stat_statfs2_bsize=no,
5479 fu_cv_sys_stat_statfs2_bsize=no)])
5480 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5481 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5483 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5487 if test $space = no; then
5489 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5490 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5491 [AC_TRY_RUN([#include <sys/types.h>
5492 #include <sys/statfs.h>
5496 exit (statfs (".", &fsd, sizeof fsd, 0));
5498 fu_cv_sys_stat_statfs4=yes,
5499 fu_cv_sys_stat_statfs4=no,
5500 fu_cv_sys_stat_statfs4=no)])
5501 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5502 if test $fu_cv_sys_stat_statfs4 = yes; then
5504 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5508 if test $space = no; then
5510 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5511 member (4.4BSD and NetBSD)])
5512 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5513 [AC_TRY_RUN([#include <sys/types.h>
5514 #ifdef HAVE_SYS_PARAM_H
5515 #include <sys/param.h>
5517 #ifdef HAVE_SYS_MOUNT_H
5518 #include <sys/mount.h>
5524 exit (statfs (".", &fsd));
5526 fu_cv_sys_stat_statfs2_fsize=yes,
5527 fu_cv_sys_stat_statfs2_fsize=no,
5528 fu_cv_sys_stat_statfs2_fsize=no)])
5529 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5530 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5532 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5536 if test $space = no; then
5538 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5539 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5540 [AC_TRY_RUN([#include <sys/types.h>
5541 #ifdef HAVE_SYS_PARAM_H
5542 #include <sys/param.h>
5544 #ifdef HAVE_SYS_MOUNT_H
5545 #include <sys/mount.h>
5547 #ifdef HAVE_SYS_FS_TYPES_H
5548 #include <sys/fs_types.h>
5553 /* Ultrix's statfs returns 1 for success,
5554 0 for not mounted, -1 for failure. */
5555 exit (statfs (".", &fsd) != 1);
5557 fu_cv_sys_stat_fs_data=yes,
5558 fu_cv_sys_stat_fs_data=no,
5559 fu_cv_sys_stat_fs_data=no)])
5560 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5561 if test $fu_cv_sys_stat_fs_data = yes; then
5563 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5568 # As a gating factor for large file support, in order to
5569 # use <4GB files we must have the following minimal support
5571 # long long, and a 64 bit off_t or off64_t.
5572 # If we don't have all of these then disable large
5575 AC_MSG_CHECKING([if large file support can be enabled])
5577 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5578 #include <sys/types.h>
5584 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5585 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5586 AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5588 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5590 #################################################
5591 # check for cluster extensions
5593 AC_MSG_CHECKING(whether to include cluster support)
5594 AC_ARG_WITH(cluster-support,
5595 [AS_HELP_STRING([--with-cluster-support], [Enable cluster extensions (default=no)])])
5596 if test "x$with_cluster_support" = "xyes"; then
5597 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5604 #################################################
5605 # check for ACL support
5607 AC_MSG_CHECKING(whether to support ACLs)
5608 AC_ARG_WITH(acl-support,
5609 [AS_HELP_STRING([--with-acl-support], [Include ACL support (default=auto)])],
5610 [ case "$withval" in
5612 with_acl_support="$withval"
5616 if test x"$with_acl_support" = x ; then
5617 with_acl_support="auto"
5620 AC_MSG_RESULT($with_acl_support)
5622 if test x"$with_acl_support" = x"no"; then
5623 AC_MSG_RESULT(Disabling ACL support)
5624 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5626 AC_MSG_NOTICE(checking whether ACL support is available:)
5629 AC_MSG_NOTICE(Using UnixWare ACLs)
5630 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5631 default_static_modules="$default_static_modules vfs_solarisacl"
5634 AC_MSG_NOTICE(Using solaris ACLs)
5635 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5636 ACL_LIBS="$ACL_LIBS -lsec"
5637 default_static_modules="$default_static_modules vfs_solarisacl"
5640 AC_MSG_NOTICE(Using HPUX ACLs)
5641 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5642 default_static_modules="$default_static_modules vfs_hpuxacl"
5645 AC_MSG_NOTICE(Using IRIX ACLs)
5646 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5647 default_static_modules="$default_static_modules vfs_irixacl"
5650 AC_MSG_NOTICE(Using AIX ACLs)
5651 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5652 default_static_modules="$default_static_modules vfs_aixacl"
5655 AC_MSG_NOTICE(Using Tru64 ACLs)
5656 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5657 ACL_LIBS="$ACL_LIBS -lpacl"
5658 default_static_modules="$default_static_modules vfs_tru64acl"
5661 AC_MSG_NOTICE(ACLs on Darwin currently not supported)
5662 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5665 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5668 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5671 AC_CACHE_CHECK([for POSIX ACL support],samba_cv_HAVE_POSIX_ACLS,[
5673 LIBS="$LIBS $ACL_LIBS"
5675 #include <sys/types.h>
5676 #include <sys/acl.h>
5680 acl_entry_t *entry_p;
5681 return acl_get_entry(acl, entry_id, entry_p);
5683 [samba_cv_HAVE_POSIX_ACLS=yes],
5684 [samba_cv_HAVE_POSIX_ACLS=no])
5687 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5688 AC_MSG_NOTICE(Using posix ACLs)
5689 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5690 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5692 LIBS="$LIBS $ACL_LIBS"
5694 #include <sys/types.h>
5695 #include <sys/acl.h>
5697 acl_permset_t permset_d;
5699 return acl_get_perm_np(permset_d, perm);
5701 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5702 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5705 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5706 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5708 default_static_modules="$default_static_modules vfs_posixacl"
5710 AC_MSG_NOTICE(ACL support is not avaliable)
5711 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5715 fi # with_acl_support
5719 #################################################
5720 # check for AIO support
5722 AC_MSG_CHECKING(whether to support asynchronous io)
5723 AC_ARG_WITH(aio-support,
5724 [AS_HELP_STRING([--with-aio-support], [Include asynchronous io support (default=no)])],
5725 [ case "$withval" in
5732 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5733 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5734 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5737 AC_TRY_LINK([#include <sys/types.h>
5739 [ struct aiocb a; return aio_read(&a);],
5740 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5742 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5745 AC_TRY_LINK([#include <sys/types.h>
5747 [ struct aiocb64 a; return aio_read64(&a);],
5748 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5750 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5751 AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5752 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5754 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5755 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5759 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5760 AC_MSG_CHECKING(for aio_read)
5761 AC_LINK_IFELSE([#include <aio.h>
5762 int main() { struct aiocb a; return aio_read(&a); }],
5763 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5764 [AC_MSG_RESULT(no)])
5766 AC_MSG_CHECKING(for aio_write)
5767 AC_LINK_IFELSE([#include <aio.h>
5768 int main() { struct aiocb a; return aio_write(&a); }],
5769 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5770 [AC_MSG_RESULT(no)])
5772 AC_MSG_CHECKING(for aio_fsync)
5773 AC_LINK_IFELSE([#include <aio.h>
5774 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5775 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5776 [AC_MSG_RESULT(no)])
5778 AC_MSG_CHECKING(for aio_return)
5779 AC_LINK_IFELSE([#include <aio.h>
5780 int main() { struct aiocb a; return aio_return(&a); }],
5781 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5782 [AC_MSG_RESULT(no)])
5784 AC_MSG_CHECKING(for aio_error)
5785 AC_LINK_IFELSE([#include <aio.h>
5786 int main() { struct aiocb a; return aio_error(&a); }],
5787 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5788 [AC_MSG_RESULT(no)])
5790 AC_MSG_CHECKING(for aio_cancel)
5791 AC_LINK_IFELSE([#include <aio.h>
5792 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5793 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5794 [AC_MSG_RESULT(no)])
5796 AC_MSG_CHECKING(for aio_suspend)
5797 AC_LINK_IFELSE([#include <aio.h>
5798 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5799 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5800 [AC_MSG_RESULT(no)])
5803 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5804 AC_MSG_CHECKING(for aio_read64)
5805 AC_LINK_IFELSE([#include <aio.h>
5806 int main() { struct aiocb a; return aio_read64(&a); }],
5807 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5808 [AC_MSG_RESULT(no)])
5810 AC_MSG_CHECKING(for aio_write64)
5811 AC_LINK_IFELSE([#include <aio.h>
5812 int main() { struct aiocb a; return aio_write64(&a); }],
5813 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5814 [AC_MSG_RESULT(no)])
5816 AC_MSG_CHECKING(for aio_fsync64)
5817 AC_LINK_IFELSE([#include <aio.h>
5818 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5819 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5820 [AC_MSG_RESULT(no)])
5822 AC_MSG_CHECKING(for aio_return64)
5823 AC_LINK_IFELSE([#include <aio.h>
5824 int main() { struct aiocb a; return aio_return64(&a); }],
5825 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5826 [AC_MSG_RESULT(no)])
5828 AC_MSG_CHECKING(for aio_error64)
5829 AC_LINK_IFELSE([#include <aio.h>
5830 int main() { struct aiocb a; return aio_error64(&a); }],
5831 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5832 [AC_MSG_RESULT(no)])
5834 AC_MSG_CHECKING(for aio_cancel64)
5835 AC_LINK_IFELSE([#include <aio.h>
5836 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5837 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5838 [AC_MSG_RESULT(no)])
5840 AC_MSG_CHECKING(for aio_suspend64)
5841 AC_LINK_IFELSE([#include <aio.h>
5842 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5843 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5844 [AC_MSG_RESULT(no)])
5851 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5854 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5858 #################################################
5859 # check for sendfile support
5861 with_sendfile_support=yes
5862 AC_MSG_CHECKING(whether to check to support sendfile)
5863 AC_ARG_WITH(sendfile-support,
5864 [AS_HELP_STRING([--with-sendfile-support], [Check for sendfile support (default=yes)])],
5865 [ case "$withval" in
5872 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5873 AC_TRY_LINK([#include <sys/sendfile.h>],
5878 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5880 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5882 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5883 AC_TRY_LINK([#include <sys/sendfile.h>],
5888 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5890 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5892 # Try and cope with broken Linux sendfile....
5893 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5895 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5896 #undef _FILE_OFFSET_BITS
5898 #include <sys/sendfile.h>],
5903 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5905 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5907 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5908 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5909 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5910 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5911 elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5912 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5913 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5914 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5915 elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5916 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5917 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5923 *freebsd* | *dragonfly* )
5924 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5926 #include <sys/types.h>
5928 #include <sys/socket.h>
5929 #include <sys/uio.h>],
5931 int fromfd, tofd, ret, total=0;
5932 off_t offset, nwritten;
5935 hdr.headers = &hdtrl;
5937 hdr.trailers = NULL;
5939 hdtrl.iov_base = NULL;
5941 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5943 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5945 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5946 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5947 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5948 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5955 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5957 #include <sys/socket.h>
5958 #include <sys/uio.h>],
5962 struct iovec hdtrl[2];
5966 hdtrl[0].iov_base = 0;
5967 hdtrl[0].iov_len = 0;
5969 nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5971 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5972 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5973 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5974 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5975 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5980 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5982 #include <sys/socket.h>
5983 #include <sys/uio.h>],
5987 struct iovec hdtrl[2];
5991 hdtrl[0].iov_base = 0;
5992 hdtrl[0].iov_len = 0;
5994 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5996 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5997 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5998 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5999 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
6000 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
6007 AC_CHECK_LIB(sendfile,sendfilev)
6008 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
6010 #include <sys/sendfile.h>],
6014 struct sendfilevec vec[2];
6020 vec[0].sfv_fd = SFV_FD_SELF;
6021 vec[0].sfv_flag = 0;
6026 vec[1].sfv_flag = 0;
6029 nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
6031 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
6033 if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
6034 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
6035 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
6036 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
6041 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
6043 #include <sys/sendfile.h>],
6047 struct sendfilevec vec[2];
6053 vec[0].sfv_fd = SFV_FD_SELF;
6054 vec[0].sfv_flag = 0;
6059 vec[1].sfv_flag = 0;
6062 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
6064 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
6066 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
6067 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
6068 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
6069 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
6075 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
6077 #include <sys/socket.h>],
6081 struct sf_parms hdtrl;
6085 hdtrl.header_data = 0;
6086 hdtrl.header_length = 0;
6087 hdtrl.file_descriptor = fromfd;
6088 hdtrl.file_offset = 0;
6089 hdtrl.file_bytes = 0;
6090 hdtrl.trailer_data = 0;
6091 hdtrl.trailer_length = 0;
6093 nwritten = send_file(&tofd, &hdtrl, 0);
6095 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
6096 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
6097 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
6098 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
6099 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
6115 ############################################
6116 # See if we have the Linux readahead syscall.
6118 AC_CACHE_CHECK([for Linux readahead],
6119 samba_cv_HAVE_LINUX_READAHEAD,[
6121 #if defined(HAVE_UNISTD_H)
6124 #include <fcntl.h>],
6125 [ssize_t err = readahead(0,0,0x80000);],
6126 samba_cv_HAVE_LINUX_READAHEAD=yes,
6127 samba_cv_HAVE_LINUX_READAHEAD=no)])
6129 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
6130 AC_DEFINE(HAVE_LINUX_READAHEAD,1,
6131 [Whether Linux readahead is available])
6134 AC_HAVE_DECL(readahead, [#include <fcntl.h>])
6136 ############################################
6137 # See if we have the posix_fadvise syscall.
6139 AC_CACHE_CHECK([for posix_fadvise],
6140 samba_cv_HAVE_POSIX_FADVISE,[
6142 #if defined(HAVE_UNISTD_H)
6145 #include <fcntl.h>],
6146 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
6147 samba_cv_HAVE_POSIX_FADVISE=yes,
6148 samba_cv_HAVE_POSIX_FADVISE=no)])
6150 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
6151 AC_DEFINE(HAVE_POSIX_FADVISE,1,
6152 [Whether posix_fadvise is available])
6157 #################################################
6158 # Check whether winbind is supported on this platform. If so we need to
6159 # build and install client programs, sbin programs and shared libraries
6161 AC_MSG_CHECKING(whether to build winbind)
6163 # Initially, the value of $host_os decides whether winbind is supported
6167 # Define the winbind shared library name and any specific linker flags
6168 # it needs to be built with.
6170 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
6171 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
6172 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
6173 NSSSONAMEVERSIONSUFFIX=""
6174 WINBIND_NSS_PTHREAD=""
6178 NSSSONAMEVERSIONSUFFIX=".2"
6179 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
6182 # FreeBSD winbind client is implemented as a wrapper around
6183 # the Linux version.
6184 NSSSONAMEVERSIONSUFFIX=".1"
6185 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
6186 nsswitch/winbind_nss_linux.o"
6187 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
6188 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
6192 # NetBSD winbind client is implemented as a wrapper
6193 # around the Linux version. It needs getpwent_r() to
6194 # indicate libc's use of the correct nsdispatch API.
6196 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
6197 WINBIND_NSS_EXTRA_OBJS="\
6198 nsswitch/winbind_nss_netbsd.o \
6199 nsswitch/winbind_nss_linux.o"
6200 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
6201 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
6204 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
6208 # IRIX has differently named shared libraries
6209 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
6210 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
6211 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
6214 # Solaris winbind client is implemented as a wrapper around
6215 # the Linux version.
6216 NSSSONAMEVERSIONSUFFIX=".1"
6217 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
6218 nsswitch/winbind_nss_linux.o"
6219 WINBIND_NSS_EXTRA_LIBS="-lsocket"
6222 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
6225 # AIX has even differently named shared libraries. No
6226 # WINS support has been implemented yet.
6227 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
6228 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
6229 WINBIND_NSS="nsswitch/WINBIND"
6234 winbind_no_reason=", unsupported on $host_os"
6238 # Check the setting of --with-winbind
6240 AC_ARG_WITH(winbind,
6241 [AS_HELP_STRING([--with-winbind], [Build winbind (default, if supported by OS)])],
6254 # We need unix domain sockets for winbind
6256 if test x"$HAVE_WINBIND" = x"yes"; then
6257 if test x"$samba_cv_unixsocket" = x"no"; then
6258 winbind_no_reason=", no unix domain socket support on $host_os"
6263 # Display test results
6265 if test x"$HAVE_WINBIND" = x"no"; then
6270 BUILD_LIBWBCLIENT_SHARED=yes
6272 AC_ARG_ENABLE(libwbclient-shared,
6273 [AS_HELP_STRING([--enable-libwbclient-shared], [Build libwbclient as shared object (default=yes, \"no\" only for --enable-developer)])],
6274 [if eval "test x$enable_developer = xyes -a x$enable_libwbclient_shared = xno" ; then
6275 BUILD_LIBWBCLIENT_SHARED=no
6278 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes" -a x"$BUILD_LIBWBCLIENT_SHARED" = x"yes"; then
6279 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
6280 ## Only worry about libwbclient if we have shared library support
6282 LIBWBCLIENT_SHARED=bin/libwbclient.$SHLIBEXT
6283 LIBWBCLIENT=libwbclient
6284 INSTALL_LIBWBCLIENT=installlibwbclient
6285 UNINSTALL_LIBWBCLIENT=uninstalllibwbclient
6286 WINBIND_LIBS="-lwbclient"
6287 LDFLAGS="$LDFLAGS -L./bin"
6289 LIBWBCLIENT_STATIC=bin/libwbclient.a
6292 if test x"$HAVE_WINBIND" = x"yes"; then
6294 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
6296 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
6297 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
6298 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
6299 PAM_MODULES="$PAM_MODULES pam_winbind"
6300 INSTALL_PAM_MODULES="installpammodules"
6301 UNINSTALL_PAM_MODULES="uninstallpammodules"
6304 AC_MSG_RESULT(no$winbind_no_reason)
6307 AC_CHECK_LIB(pthread, pthread_mutex_lock, [WINBIND_NSS_PTHREAD="-lpthread"
6308 AC_DEFINE(HAVE_PTHREAD, 1, [whether pthread exists])])
6310 AC_SUBST(WINBIND_NSS_PTHREAD)
6311 AC_SUBST(WINBIND_NSS)
6312 AC_SUBST(WINBIND_WINS_NSS)
6313 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
6314 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
6315 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
6316 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
6318 AC_SUBST(WINBIND_KRB5_LOCATOR)
6320 # Solaris 10 does have new member in nss_XbyY_key
6321 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
6322 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
6323 [#include <nss_dbdefs.h>])
6325 # Solaris has some extra fields in struct passwd that need to be
6326 # initialised otherwise nscd crashes.
6328 AC_CHECK_MEMBER(struct passwd.pw_comment,
6329 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
6332 AC_CHECK_MEMBER(struct passwd.pw_age,
6333 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
6336 # AIX 4.3.x and 5.1 do not have as many members in
6337 # struct secmethod_table as AIX 5.2
6338 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
6339 [#include <usersec.h>])
6340 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
6341 [#include <usersec.h>])
6343 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
6344 AC_TRY_COMPILE([#include <sys/types.h>
6345 #include <sys/socket.h>],
6348 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
6350 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
6351 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
6352 AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
6356 #################################################
6357 # Check to see if we should use the included popt
6359 AC_ARG_WITH(included-popt,
6360 [AS_HELP_STRING([--with-included-popt], [use bundled popt library, not from system])],
6371 if test x"$INCLUDED_POPT" != x"yes"; then
6372 AC_CHECK_LIB(popt, poptGetContext,
6373 INCLUDED_POPT=no, INCLUDED_POPT=yes)
6376 AC_MSG_CHECKING(whether to use included popt)
6377 if test x"$INCLUDED_POPT" = x"yes"; then
6379 BUILD_POPT='$(POPT_OBJ)'
6380 POPTLIBS='$(POPT_OBJ)'
6381 FLAGS1="-I\$(srcdir)/popt"
6387 AC_SUBST(BUILD_POPT)
6391 #################################################
6392 # Check if user wants DNS service discovery support
6394 AC_ARG_ENABLE(dnssd,
6395 [AS_HELP_STRING([--enable-dnssd], [Enable DNS service discovery support (default=auto)])])
6397 AC_SUBST(DNSSD_LIBS)
6398 if test x"$enable_dnssd" != x"no"; then
6399 have_dnssd_support=yes
6401 AC_CHECK_HEADERS(dns_sd.h)
6402 if test x"$ac_cv_header_dns_sd_h" != x"yes"; then
6403 have_dnssd_support=no
6406 # On Darwin the DNSSD API is in libc, but on other platforms it's
6407 # probably in -ldns_sd
6408 AC_CHECK_FUNCS(DNSServiceRegister)
6409 AC_CHECK_LIB_EXT(dns_sd, DNSSD_LIBS, DNSServiceRegister)
6410 if test x"$ac_cv_func_DNSServiceRegister" != x"yes" -a \
6411 x"$ac_cv_lib_ext_DNSServiceRegister" != x"yes"; then
6412 have_dnssd_support=no
6415 if test x"$have_dnssd_support" = x"yes"; then
6416 AC_DEFINE(WITH_DNSSD_SUPPORT, 1,
6417 [Whether to enable DNS service discovery support])
6419 if test x"$enable_dnssd" = x"yes"; then
6420 AC_MSG_ERROR(DNS service discovery support not available)
6426 #################################################
6427 # Check to see if we should use the included iniparser
6429 AC_ARG_WITH(included-iniparser,
6430 [AS_HELP_STRING([--with-included-iniparser], [use bundled iniparser library, not from system])],
6434 INCLUDED_INIPARSER=yes
6437 INCLUDED_INIPARSER=no
6441 if test x"$INCLUDED_INIPARSER" != x"yes"; then
6442 AC_CHECK_LIB(iniparser, iniparser_load,
6443 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
6446 AC_MSG_CHECKING(whether to use included iniparser)
6447 if test x"$INCLUDED_INIPARSER" = x"yes"; then
6449 BUILD_INIPARSER='$(INIPARSER_OBJ)'
6451 FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
6455 INIPARSERLIBS="-liniparser"
6457 AC_SUBST(BUILD_INIPARSER)
6458 AC_SUBST(INIPARSERLIBS)
6463 # Checks for the vfs_fileid module
6465 AC_CHECK_FUNC(getmntent)
6467 AC_CHECK_HEADERS(sys/statfs.h)
6469 AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)])
6470 AC_CACHE_VAL(vfsfileid_cv_statfs,[
6472 #include <sys/types.h>
6473 #include <sys/statfs.h>
6477 fsid_t fsid = fsd.f_fsid;
6478 return statfs (".", &fsd);
6480 vfsfileid_cv_statfs=yes,
6481 vfsfileid_cv_statfs=no,
6482 vfsfileid_cv_statfs=cross)
6484 AC_MSG_RESULT($vfsfileid_cv_statfs)
6486 if test x"$ac_cv_func_getmntent" = x"yes" -a \
6487 x"$vfsfileid_cv_statfs" = x"yes"; then
6488 default_shared_modules="$default_shared_modules vfs_fileid"
6491 # Checks for the vfs_fileid module
6494 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6496 eval MODULE_DEFAULT_$i=STATIC
6499 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6501 dnl Fall back to static if we cannot build shared libraries
6502 eval MODULE_DEFAULT_$i=STATIC
6504 if test $BLDSHARED = true; then
6505 eval MODULE_DEFAULT_$i=SHARED
6509 dnl Always build these modules static
6510 MODULE_rpc_spoolss=STATIC
6511 MODULE_rpc_srvsvc2=STATIC
6512 MODULE_idmap_tdb=STATIC
6513 MODULE_idmap_passdb=STATIC
6514 MODULE_idmap_nss=STATIC
6516 MODULE_nss_info_template=STATIC
6518 AC_ARG_WITH(static-modules,
6519 [AS_HELP_STRING([--with-static-modules=MODULES], [Comma-separated list of names of modules to statically link in])],
6520 [ if test $withval; then
6521 for i in `echo $withval | sed -e 's/,/ /g'`
6523 eval MODULE_$i=STATIC
6527 AC_ARG_WITH(shared-modules,
6528 [AS_HELP_STRING([--with-shared-modules=MODULES], [Comma-separated list of names of modules to build shared])],
6529 [ if test $withval; then
6530 for i in `echo $withval | sed -e 's/,/ /g'`
6532 eval MODULE_$i=SHARED
6536 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6537 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6538 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6539 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6540 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6543 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6544 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6545 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6546 SMB_MODULE(rpc_dssetup, \$(RPC_DSSETUP_OBJ), "bin/librpc_dssetup.$SHLIBEXT", RPC)
6547 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6548 SMB_MODULE(rpc_svcctl2, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl2.$SHLIBEXT", RPC)
6549 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6550 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6551 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6552 SMB_MODULE(rpc_srvsvc2, \$(RPC_SVC_OBJ), "bin/librpc_svcsvc2.$SHLIBEXT", RPC)
6553 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6554 SMB_MODULE(rpc_eventlog2, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog2.$SHLIBEXT", RPC)
6555 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6556 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_rpcecho.$SHLIBEXT", RPC)
6557 SMB_SUBSYSTEM(RPC,smbd/server.o)
6559 SMB_MODULE(idmap_ldap, winbindd/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6560 SMB_MODULE(idmap_tdb, winbindd/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6561 SMB_MODULE(idmap_tdb2, winbindd/idmap_tdb2.o, "bin/tdb2.$SHLIBEXT", IDMAP)
6562 SMB_MODULE(idmap_passdb, winbindd/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6563 SMB_MODULE(idmap_nss, winbindd/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6564 SMB_MODULE(idmap_rid, winbindd/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6565 SMB_MODULE(idmap_ad, winbindd/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6566 SMB_SUBSYSTEM(IDMAP, winbindd/idmap.o)
6568 SMB_MODULE(nss_info_template, winbindd/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6569 SMB_SUBSYSTEM(NSS_INFO, winbindd/nss_info.o)
6571 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6572 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6573 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6574 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6575 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6577 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6578 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6579 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6580 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6581 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6582 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6583 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6584 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6586 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6587 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6588 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6589 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6590 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6591 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6592 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6593 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6594 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6595 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6596 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6597 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6598 SMB_MODULE(vfs_shadow_copy2, \$(VFS_SHADOW_COPY2_OBJ), "bin/shadow_copy2.$SHLIBEXT", VFS)
6599 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6600 SMB_MODULE(vfs_xattr_tdb, \$(VFS_XATTR_TDB_OBJ), "bin/xattr_tdb.$SHLIBEXT", VFS)
6601 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6602 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6603 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6604 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6605 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6606 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6607 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6608 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6609 SMB_MODULE(vfs_streams_xattr, \$(VFS_STREAMS_XATTR_OBJ), "bin/streams_xattr.$SHLIBEXT", VFS)
6610 SMB_MODULE(vfs_streams_depot, \$(VFS_STREAMS_DEPOT_OBJ), "bin/streams_depot.$SHLIBEXT", VFS)
6611 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6612 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6613 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6614 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6615 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6616 SMB_MODULE(vfs_tsmsm, \$(VFS_TSMSM_OBJ), "bin/tsmsm.$SHLIBEXT", VFS)
6617 SMB_MODULE(vfs_fileid, \$(VFS_FILEID_OBJ), "bin/fileid.$SHLIBEXT", VFS)
6618 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
6619 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
6620 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6623 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6625 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6627 #################################################
6628 # do extra things if we are running insure
6630 if test "${ac_cv_prog_CC}" = "insure"; then
6631 CPPFLAGS="$CPPFLAGS -D__INSURE__"
6634 #################################################
6635 # If run from the build farm, enable NASTY hacks
6636 #################################################
6637 AC_MSG_CHECKING(whether to enable build farm hacks)
6638 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6640 AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6645 #################################################
6646 # check for bad librt/libpthread interactions
6648 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6649 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6650 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6651 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6653 SMB_IF_RTSIGNAL_BUG(
6655 # Have RT_SIGNAL bug, need to check whether the problem will
6656 # affect anything we have configured.
6659 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6660 if test x"$rt_signal_lease_ok" = x"no" ; then
6665 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6666 if test x"$rt_signal_notify_ok" = x"no" ; then
6671 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6672 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6673 if test x"$rt_signal_aio_ok" = x"no" ; then
6678 if test x"$rt_do_error" = x"yes" ; then
6679 SMB_IS_LIBPTHREAD_LINKED(
6683 *** On this platforms, linking Samba against pthreads causes problems
6684 *** with the oplock and change notification mechanisms. You may be
6685 *** using pthreads as a side-effect of using the --with-aio-support
6686 *** or --with-profiling-data options. Please remove these and try again.
6693 *** On this platform, the oplock and change notification mechanisms do not
6694 *** appear to work. Please report this problem to samba-technical@samba.org
6695 *** and attach the config.log file from this directory.
6699 AC_MSG_ERROR(unable to use realtime signals on this platform)
6703 # no RT_SIGNAL bug, we are golden
6704 SMB_IS_LIBPTHREAD_LINKED(
6706 AC_MSG_WARN(using libpthreads - this may degrade performance)
6711 # cross compiling, I hope you know what you are doing
6717 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6718 LIB_REMOVE_USR_LIB(LDFLAGS)
6719 LIB_REMOVE_USR_LIB(LIBS)
6720 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6722 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6723 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6724 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6726 #################################################
6727 # Display summary of libraries detected
6729 AC_MSG_RESULT([Using libraries:])
6730 AC_MSG_RESULT([ LIBS = $LIBS])
6731 if test x"$with_ads_support" != x"no"; then
6732 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6734 if test x"$with_ldap_support" != x"no"; then
6735 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6737 if test x"$with_dnsupdate_support" != x"no"; then
6738 AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS])
6740 if test x"$have_dnssd_support" != x"no"; then
6741 AC_MSG_RESULT([ DNSSD_LIBS = $DNSSD_LIBS])
6743 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6745 #################################################
6746 # final configure stuff
6748 AC_MSG_CHECKING([configure summary])
6749 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6751 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6752 AC_MSG_WARN([cannot run when cross-compiling]))
6754 dnl Merge in developer cflags from now on
6755 AC_SUBST(DEVELOPER_CFLAGS)
6756 if test x"$krb5_developer" = x"yes" -o x"$developer" = x"yes"; then
6757 CFLAGS="${CFLAGS} \$(DEVELOPER_CFLAGS)"
6763 # Stuff the smbd-only libraries at the end of the smbd link
6764 # path (if we have them).
6765 SMBD_LIBS="$samba_dmapi_libs"
6768 AC_OUTPUT(Makefile library-versions
6769 script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh
6770 lib/netapi/examples/Makefile
6771 pkgconfig/smbclient.pc
6772 pkgconfig/wbclient.pc
6774 pkgconfig/smbsharemodes.pc
6777 #################################################
6778 # Print very concise instructions on building/use
6779 if test "x$enable_dmalloc" = xyes
6781 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
6782 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])