1 dnl Process this file with autoconf to produce a configure script.
3 dnl We must use autotools 2.53 or above
5 AC_INIT(include/includes.h)
6 AC_CONFIG_HEADER(include/config.h)
7 AC_DEFINE(CONFIG_H_IS_FROM_SAMBA,1,[Marker for samba's config.h])
9 SMB_VERSION_STRING=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_OFFICIAL_STRING' | cut -d '"' -f2`
10 echo "SAMBA VERSION: ${SMB_VERSION_STRING}"
12 SAMBA_VERSION_SVN_REVISION=`cat $srcdir/include/version.h | grep 'SAMBA_VERSION_SVN_REVISION' | cut -d ' ' -f3-`
13 if test -n "${SAMBA_VERSION_SVN_REVISION}";then
14 echo "BUILD REVISION: ${SAMBA_VERSION_SVN_REVISION}"
17 AC_LIBREPLACE_LOCATION_CHECKS
22 #################################################
23 # Directory handling stuff to support both the
24 # legacy SAMBA directories and FHS compliant
26 AC_PREFIX_DEFAULT(/usr/local/samba)
28 rootsbindir="\${SBINDIR}"
29 lockdir="\${VARDIR}/locks"
30 piddir="\${VARDIR}/locks"
31 test "${mandir}" || mandir="\${prefix}/man"
32 logfilebase="\${VARDIR}"
33 privatedir="\${prefix}/private"
34 test "${libdir}" || libdir="\${prefix}/lib"
35 pammodulesdir="\${LIBDIR}/security"
36 configdir="\${LIBDIR}"
37 swatdir="\${prefix}/swat"
40 [ --with-fhs Use FHS-compliant paths (default=no)],
43 lockdir="\${VARDIR}/lib/samba"
44 piddir="\${VARDIR}/run"
45 mandir="\${prefix}/share/man"
46 logfilebase="\${VARDIR}/log/samba"
47 privatedir="\${CONFIGDIR}/private"
48 libdir="\${prefix}/lib/samba"
49 configdir="\${sysconfdir}/samba"
50 swatdir="\${DATADIR}/samba/swat"
54 #################################################
55 # set private directory location
56 AC_ARG_WITH(privatedir,
57 [ --with-privatedir=DIR Where to put smbpasswd ($ac_default_prefix/private)],
61 # Just in case anybody calls it without argument
63 AC_MSG_WARN([--with-privatedir called without argument - will use default])
70 #################################################
71 # set root sbin directory location
72 AC_ARG_WITH(rootsbindir,
73 [ --with-rootsbindir=DIR Which directory to use for root sbin ($ac_default_prefix/sbin)],
77 # Just in case anybody calls it without argument
79 AC_MSG_WARN([--with-rootsbindir called without argument - will use default])
82 rootsbindir="$withval"
86 #################################################
87 # set lock directory location
89 [ --with-lockdir=DIR Where to put lock files ($ac_default_prefix/var/locks)],
93 # Just in case anybody calls it without argument
95 AC_MSG_WARN([--with-lockdir called without argument - will use default])
102 #################################################
103 # set pid directory location
105 [ --with-piddir=DIR Where to put pid files ($ac_default_prefix/var/locks)],
109 # Just in case anybody calls it without argument
111 AC_MSG_WARN([--with-piddir called without argument - will use default])
118 #################################################
119 # set SWAT directory location
121 [ --with-swatdir=DIR Where to put SWAT files ($ac_default_prefix/swat)],
125 # Just in case anybody does it
127 AC_MSG_WARN([--with-swatdir called without argument - will use default])
134 #################################################
135 # set configuration directory location
136 AC_ARG_WITH(configdir,
137 [ --with-configdir=DIR Where to put configuration files ($libdir)],
141 # Just in case anybody does it
143 AC_MSG_WARN([--with-configdir called without argument - will use default])
150 #################################################
151 # set log directory location
152 AC_ARG_WITH(logfilebase,
153 [ --with-logfilebase=DIR Where to put log files ($VARDIR)],
157 # Just in case anybody does it
159 AC_MSG_WARN([--with-logfilebase called without argument - will use default])
162 logfilebase="$withval"
166 #################################################
167 # set lib directory location
169 [ --with-libdir=DIR Where to put libdir ($libdir)],
173 # Just in case anybody does it
175 AC_MSG_WARN([--with-libdir without argument - will use default])
182 #################################################
183 # set PAM modules directory location
184 AC_ARG_WITH(pammodulesdir,
185 [ --with-pammodulesdir=DIR Which directory to use for PAM modules ($ac_default_prefix/$libdir/security)],
189 # Just in case anybody calls it without argument
191 AC_MSG_WARN([--with-pammodulesdir called without argument - will use default])
194 pammodulesdir="$withval"
198 #################################################
199 # set man directory location
201 [ --with-mandir=DIR Where to put man pages ($mandir)],
205 # Just in case anybody does it
207 AC_MSG_WARN([--with-mandir without argument - will use default])
215 [ --with-cfenc=HEADERDIR Use internal CoreFoundation encoding API
216 for optimization (Mac OS X/Darwin only)],
218 # May be in source $withval/CoreFoundation/StringEncodings.subproj.
219 # Should have been in framework $withval/CoreFoundation.framework/Headers.
221 $withval/CoreFoundation/StringEncodings.subproj \
222 $withval/StringEncodings.subproj \
223 $withval/CoreFoundation.framework/Headers \
227 if test -r $d/CFStringEncodingConverter.h; then
228 ln -sfh $d include/CoreFoundation
233 SAMBA_CPPFLAGS="-Iinclude -I${srcdir-.}/include -I. -I${srcdir-.}"
234 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/replace"
235 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/talloc"
236 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/lib/tdb/include"
237 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/libaddns"
238 SAMBA_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/librpc"
240 SAMBA_CONFIGURE_CPPFLAGS="${SAMBA_CPPFLAGS} -I${srcdir-.}/popt"
242 ## cleanup the $(srcdir) in the Makefile if we are outside of the tree
243 if test "x${srcdir-.}" != "x."; then
244 SAMBA_CPPFLAGS=`echo ${SAMBA_CPPFLAGS} | sed -e "s;${srcdir};\$\(srcdir\);g"`
250 AC_SUBST(logfilebase)
255 AC_SUBST(rootsbindir)
256 AC_SUBST(pammodulesdir)
258 dnl Unique-to-Samba variables we'll be playing with.
259 AC_SUBST(SAMBA_CPPFLAGS)
262 AC_SUBST(MODULE_EXPORTS)
268 AC_SUBST(PIE_LDFLAGS)
270 AC_SUBST(INSTALLLIBCMD_SH)
271 AC_SUBST(INSTALLLIBCMD_A)
272 AC_SUBST(UNINSTALLLIBCMD_SH)
273 AC_SUBST(UNINSTALLLIBCMD_A)
274 AC_SUBST(INSTALL_LIBMSRPC)
275 AC_SUBST(UNINSTALL_LIBMSRPC)
276 AC_SUBST(LIBMSRPC_SHARED)
278 AC_SUBST(INSTALL_LIBADDNS)
279 AC_SUBST(UNINSTALL_LIBADDNS)
280 AC_SUBST(LIBADDNS_SHARED)
282 AC_SUBST(INSTALL_LIBSMBCLIENT)
283 AC_SUBST(UNINSTALL_LIBSMBCLIENT)
284 AC_SUBST(LIBSMBCLIENT_SHARED)
285 AC_SUBST(LIBSMBCLIENT)
286 AC_SUBST(INSTALL_LIBSMBSHAREMODES)
287 AC_SUBST(UNINSTALL_LIBSMBSHAREMODES)
288 AC_SUBST(LIBSMBSHAREMODES_SHARED)
289 AC_SUBST(LIBSMBSHAREMODES)
293 AC_SUBST(PASSDB_LIBS)
298 AC_SUBST(PAM_MODULES)
299 AC_SUBST(INSTALL_PAM_MODULES)
300 AC_SUBST(UNINSTALL_PAM_MODULES)
301 AC_SUBST(NSS_MODULES)
302 AC_SUBST(EXTRA_BIN_PROGS)
303 AC_SUBST(SMBMOUNT_PROGS)
304 AC_SUBST(CIFSMOUNT_PROGS)
305 AC_SUBST(INSTALL_CIFSMOUNT)
306 AC_SUBST(UNINSTALL_CIFSMOUNT)
307 AC_SUBST(EXTRA_SBIN_PROGS)
308 AC_SUBST(EXTRA_ALL_TARGETS)
309 AC_SUBST(CONFIG_LIBS)
312 ## check for --enable-debug first before checking CFLAGS before
313 ## so that we don't mix -O and -g
315 [ --enable-debug Turn on compiler debugging information (default=no)],
316 [if eval "test x$enable_debug = xyes"; then
317 CFLAGS="${CFLAGS} -g"
320 # compile with optimization and without debugging by default, but
321 # allow people to set their own preference.
322 # do this here since AC_CACHE_CHECK apparently sets the CFLAGS to "-g -O2"
323 # if it has no value. This prevent *very* large debug binaries from occurring
325 if test "x$CFLAGS" = x; then
329 CFLAGS="${CFLAGS} -D_SAMBA_BUILD_=3"
331 AC_LIBREPLACE_CC_CHECKS
333 m4_include(lib/socket_wrapper/config.m4)
335 #################################################
336 # set prefix for 'make test'
338 AC_SUBST(selftest_prefix)
339 AC_ARG_WITH(selftest-prefix,
340 [ --with-selftest-prefix=DIR The prefix where make test will be runned ($selftest_prefix)],
343 AC_MSG_WARN([--with-selftest-prefix called without argument - will use default])
346 selftest_prefix="$withval"
351 AC_ARG_ENABLE(launchd,
352 [ --enable-launchd Support running under launchd (default=auto)])
354 if test x"$enable_launchd" != x"no" ; then
355 AC_CACHE_CHECK([whether to include launchd support],
356 samba_cv_launchd_support,
364 launchd_data_get_fd(NULL);
366 samba_cv_launchd_support=yes,
367 samba_cv_launchd_support=no)
370 if test x"$samba_cv_launchd_support" = x"yes" ; then
371 AC_DEFINE(WITH_LAUNCHD_SUPPORT, 1,
372 [Whether launchd support should be enabled])
374 if test x"$enable_launchd" = x"yes" ; then
375 AC_ERROR(launchd support is not available)
380 #################################################
381 # set path of samba4's smbtorture
383 AC_SUBST(smbtorture4_path)
384 AC_ARG_WITH(smbtorture4_path,
385 [ --with-smbtorture4-path=PATH The path to a samba4 smbtorture for make test (none)],
388 AC_MSG_ERROR([--with-smbtorture4-path should take a path])
391 smbtorture4_path="$withval"
392 if test -z "$smbtorture4_path" -a ! -f $smbtorture4_path; then
393 AC_MSG_ERROR(['$smbtorture_path' does not exist!])
399 AC_ARG_ENABLE(developer, [ --enable-developer Turn on developer warnings and debugging (default=no)],
400 [if eval "test x$enable_developer = xyes"; then
402 CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
403 # Add -Wdeclaration-after-statement if compiler supports it
405 [that the C compiler understands -Wdeclaration-after-statement],
406 samba_cv_HAVE_Wdeclaration_after_statement, [
411 }],[-Wdeclaration-after-statement],[$CPPFLAGS],[$LDFLAGS],
412 samba_cv_HAVE_Wdeclaration_after_statement=yes,
413 samba_cv_HAVE_Wdeclaration_after_statement=no,
414 samba_cv_HAVE_Wdeclaration_after_statement=cross)
416 if test x"$samba_cv_HAVE_Wdeclaration_after_statement" = x"yes"; then
417 CFLAGS="${CFLAGS} -Wdeclaration-after-statement"
421 AC_ARG_ENABLE(krb5developer, [ --enable-krb5developer Turn on developer warnings and debugging, except -Wstrict-prototypes (default=no)],
422 [if eval "test x$enable_krb5developer = xyes"; then
424 CFLAGS="${CFLAGS} -gstabs -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -DDEBUG_PASSWORD -DDEVELOPER"
427 AC_ARG_ENABLE(dmalloc, [ --enable-dmalloc Enable heap debugging [default=no]])
429 if test "x$enable_dmalloc" = xyes
431 AC_DEFINE(ENABLE_DMALLOC, 1, [Define to turn on dmalloc debugging])
432 AC_DEFINE(DMALLOC_FUNC_CHECK, 1,
433 [Define to check invariants around some common functions])
434 LIBS="$LIBS -ldmalloc"
437 #################################################
438 # check for a shared memory profiling support
439 AC_MSG_CHECKING(whether to use profiling)
440 AC_ARG_WITH(profiling-data,
441 [ --with-profiling-data Include gathering source code profile information (default=no)],
445 AC_DEFINE(WITH_PROFILE,1,[Whether to use profiling])
446 samba_cv_WITH_PROFILE=yes
450 samba_cv_WITH_PROFILE=no
456 dnl Checks for programs.
460 AC_PATH_PROG(PERL, perl)
462 AC_CHECK_TOOL(AR, ar)
464 dnl Check if we use GNU ld
468 dnl Certain versions of GNU ld the default is not to have the
469 dnl --allow-shlib-undefined flag defined. This causes a stackload of
470 dnl warnings when building modules.
471 if test "$ac_cv_prog_gnu_ld" = "yes"; then
472 ac_cv_gnu_ld_version=`$LD -v 2>/dev/null | head -1`
473 AC_MSG_CHECKING(GNU ld release date)
475 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'`
477 AC_MSG_RESULT(${ac_cv_gnu_ld_date})
478 if test -n "$ac_cv_gnu_ld_date"; then
479 if test "$ac_cv_gnu_ld_date" -lt 20030217; then
480 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
483 AC_MSG_CHECKING(GNU ld release version)
485 ac_cv_gnu_ld_vernr=`echo $ac_cv_gnu_ld_version | sed -n 's,^.*\([1-9][0-9]*\.[0-9][0-9]*\).*$,\1,p'`
486 ac_cv_gnu_ld_vernr_major=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 1`
487 ac_cv_gnu_ld_vernr_minor=`echo $ac_cv_gnu_ld_vernr | cut -d '.' -f 2`
489 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr})
490 AC_MSG_CHECKING(GNU ld release version major)
491 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_major})
492 AC_MSG_CHECKING(GNU ld release version minor)
493 AC_MSG_RESULT(${ac_cv_gnu_ld_vernr_minor})
494 if test "$ac_cv_gnu_ld_vernr_major" -lt 2 || test "$ac_cv_gnu_ld_vernr_minor" -lt 14; then
495 ac_cv_gnu_ld_no_default_allow_shlib_undefined=yes
500 dnl look for executable suffix
503 dnl Check if C compiler understands -c and -o at the same time
505 if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = no"; then
512 dnl Check if the C compiler understands -Werror
513 AC_CACHE_CHECK([that the C compiler understands -Werror],samba_cv_HAVE_Werror, [
518 }],[-Werror],[$CPPFLAGS],[$LDFLAGS],
519 samba_cv_HAVE_Werror=yes,samba_cv_HAVE_Werror=no,samba_cv_HAVE_Werror=cross)])
520 if test x"$samba_cv_HAVE_Werror" = x"yes"; then
521 Werror_FLAGS="-Werror"
523 dnl Check if the C compiler understands -w2
524 AC_CACHE_CHECK([that the C compiler understands -w2],samba_cv_HAVE_w2, [
529 }],[-w2],[$CPPFLAGS],[$LDFLAGS],
530 samba_cv_HAVE_w2=yes,samba_cv_HAVE_w2=no,samba_cv_HAVE_w2=cross)])
531 if test x"$samba_cv_HAVE_w2" = x"yes"; then
536 dnl Check if the C compiler understands volatile (it should, being ANSI).
537 AC_CACHE_CHECK([that the C compiler understands volatile],samba_cv_volatile, [
538 AC_TRY_COMPILE([#include <sys/types.h>],[volatile int i = 0],
539 samba_cv_volatile=yes,samba_cv_volatile=no)])
540 if test x"$samba_cv_volatile" = x"yes"; then
541 AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
544 ############################################
545 # check if the compiler can handle negative enum values
546 # and don't truncate the values to INT_MAX
547 # a runtime test is needed here
549 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
553 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
555 enum negative_values v1 = NEGATIVE_VALUE;
556 unsigned v2 = NEGATIVE_VALUE;
558 if (v1 != 0xFFFFFFFF) {
559 printf("%u != 0xFFFFFFFF\n", v1);
562 if (v2 != 0xFFFFFFFF) {
563 printf("%u != 0xFFFFFFFF\n", v2);
570 SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
571 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
572 AC_MSG_WARN([using --unit-enums for pidl])
573 PIDL_ARGS="$PIDL_ARGS --uint-enums"
576 dnl Figure out the flags to support named structure initializers
578 LIBREPLACE_C99_STRUCT_INIT([],[AC_MSG_ERROR([c99 structure initializer are not supported])])
580 UNAME_S=`(uname -s) 2>/dev/null` || UNAME_S="unknown"
581 AC_MSG_CHECKING(uname -s)
582 AC_MSG_RESULT(${UNAME_S})
584 UNAME_R=`(uname -r) 2>/dev/null` || UNAME_R="unknown"
585 AC_MSG_CHECKING(uname -r)
586 AC_MSG_RESULT(${UNAME_R})
588 UNAME_M=`(uname -m) 2>/dev/null` || UNAME_M="unknown"
589 AC_MSG_CHECKING(uname -m)
590 AC_MSG_RESULT(${UNAME_M})
592 UNAME_P=`(uname -p) 2>/dev/null` || UNAME_P="unknown"
593 AC_MSG_CHECKING(uname -p)
594 AC_MSG_RESULT(${UNAME_P})
596 dnl Add #include for broken IRIX header files
599 #TODO add to libreplace
600 if test x"$ac_cv_prog_gcc" != x"yes" ; then
601 dnl Fix sensible defaults for MIPSPro compilers. The
602 dnl error numbers are valid for the 7.3 compilers,
603 dnl hopefully also valid for the 7.4 series.
605 dnl Bugzilla 3801. Force an error on warning 1035
606 dnl so we don't incorrectly detect stdint.h. This
607 dnl warning is emitted for #error directives.
608 CFLAGS="$CFLAGS -diag_error 1035"
609 dnl 1209: Controlling expression is constant
610 dnl 1174: Function foo declared but never referenced
611 dnl 3201: Parameter foo was never referenced
612 CFLAGS="$CFLAGS -woff 1209,1174,3201"
620 dnl Add modules that have to be built by default here
621 dnl These have to be built static:
622 default_static_modules="pdb_smbpasswd pdb_tdbsam rpc_lsa rpc_samr rpc_winreg rpc_initshutdown rpc_lsa_ds rpc_wkssvc rpc_svcctl rpc_ntsvcs rpc_net rpc_netdfs rpc_srvsvc rpc_spoolss rpc_eventlog rpc_unixinfo rpc_epmapper auth_sam auth_unix auth_winbind auth_server auth_domain auth_builtin vfs_default nss_info_template"
624 dnl These are preferably build shared, and static if dlopen() is not available
625 default_shared_modules="vfs_recycle vfs_audit vfs_extd_audit vfs_full_audit vfs_netatalk vfs_fake_perms vfs_default_quota vfs_readonly vfs_cap vfs_expand_msdfs vfs_shadow_copy charset_CP850 charset_CP437 auth_script vfs_readahead"
627 if test "x$developer" = xyes; then
628 default_static_modules="$default_static_modules rpc_rpcecho"
629 default_shared_modules="$default_shared_modules charset_weird"
633 # Config CPPFLAG settings for strange OS's that must be set
634 # before other tests. Do NOT invoke AC_CHECK_HEADERS within this
635 # case statement; its first reference must be unconditional.
640 # Defines needed for HPUX support.
641 # HPUX has bigcrypt but (sometimes?) doesn't use it for
642 # password hashing - hence the USE_BOTH_CRYPT_CALLS define.
646 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
647 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
648 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
649 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
650 AC_DEFINE(_ALIGNMENT_REQUIRED,1,[Required alignment])
651 AC_DEFINE(_MAX_ALIGNMENT,4,[Maximum alignment])
654 CPPFLAGS="$CPPFLAGS -D_HPUX_SOURCE -D_POSIX_SOURCE -D_LARGEFILE64_SOURCE -D_ALIGNMENT_REQUIRED=1 -D_MAX_ALIGNMENT=4 -DMAX_POSITIVE_LOCK_OFFSET=0x1ffffffffffLL"
655 AC_DEFINE(USE_BOTH_CRYPT_CALLS, 1, [Whether to use both of HPUX' crypt calls])
656 AC_DEFINE(_HPUX_SOURCE, 1, [Whether to use HPUX extensions])
657 AC_DEFINE(_POSIX_SOURCE, 1, [Whether to use POSIX compatible functions])
658 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to use large file support])
659 AC_DEFINE(_ALIGNMENT_REQUIRED, 1, [Required alignment])
660 AC_DEFINE(_MAX_ALIGNMENT, 4, [Maximum alignment])
661 AC_DEFINE(_XOPEN_SOURCE_EXTENDED, 1, [Unix 98 sources -- needed for socklen_t in getsockopt on HP/UX 11])
667 # CRAY Unicos has broken const handling
669 AC_MSG_RESULT([disabling const])
670 CPPFLAGS="$CPPFLAGS -Dconst="
674 # AIX4.x doesn't even admit to having large
675 # files *at all* unless the -D_LARGE_FILE or -D_LARGE_FILE_API flags are set.
678 AC_MSG_RESULT([enabling large file support])
679 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES"
680 AC_DEFINE(_LARGE_FILES, 1, [Whether to enable large file support])
683 # Defines needed for Solaris 2.6/2.7 aka 7.0 to make it admit
684 # to the existance of large files..
685 # Note that -D_LARGEFILE64_SOURCE is different from the Sun
686 # recommendations on large file support, however it makes the
687 # compile work using gcc 2.7 and 2.8, whereas using the Sun
688 # recommendation makes the compile fail on gcc2.7. JRA.
690 # Solaris uses SYSV printing. Make sure to set that here. --jerry
693 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
695 5.0|5.0.*|5.1|5.1.*|5.2|5.2.*|5.3|5.3.*|5.5|5.5.*)
696 AC_MSG_RESULT([no large file support])
699 AC_MSG_RESULT([enabling large file support])
700 if test "$ac_cv_prog_gcc" = yes; then
701 ${CC-cc} -v >conftest.c 2>&1
702 ac_cv_gcc_compiler_version_number=`grep 'gcc version' conftest.c`
704 case "$ac_cv_gcc_compiler_version_number" in
705 *"gcc version 2.6"*|*"gcc version 2.7"*)
706 CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE -D_REENTRANT"
707 LDFLAGS="$LDFLAGS -lthread"
708 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
711 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
712 LDFLAGS="$LDFLAGS -lthread"
713 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
714 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
718 CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE -D_REENTRANT -D_FILE_OFFSET_BITS=64"
719 LDFLAGS="$LDFLAGS -lthread"
720 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
721 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
727 # IRIX uses SYSV printing. Make sure to set that here
730 AC_DEFINE(SYSV, 1, [Whether to enable System V compatibility])
732 *freebsd*|*dragonfly*)
733 AC_DEFINE(FREEBSD, 1, [Whether the host os is FreeBSD])
736 # VOS may need to have POSIX support and System V compatibility enabled.
743 CPPFLAGS="$CPPFLAGS -D_POSIX_C_SOURCE=200112L"
744 AC_DEFINE(_POSIX_C_SOURCE, 200112L, [Whether to enable POSIX support])
748 *-D_SYSV*|*-D_SVID_SOURCE*)
751 CPPFLAGS="$CPPFLAGS -D_SYSV"
752 AC_DEFINE(_SYSV, 1, [Whether to enable System V compatibility])
756 # Tests needed for SINIX large file support.
759 if test $host = mips-sni-sysv4 ; then
760 AC_MSG_CHECKING([for LFS support])
761 old_CPPFLAGS="$CPPFLAGS"
762 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
766 #if _LFS64_LARGEFILE == 1
771 }], [SINIX_LFS_SUPPORT=yes], [SINIX_LFS_SUPPORT=no], [SINIX_LFS_SUPPORT=cross])
772 CPPFLAGS="$old_CPPFLAGS"
773 if test x$SINIX_LFS_SUPPORT = xyes ; then
774 CPPFLAGS="-D_LARGEFILE64_SOURCE $CPPFLAGS"
775 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
776 CFLAGS="`getconf LFS64_CFLAGS` $CFLAGS"
777 LDFLAGS="`getconf LFS64_LDFLAGS` $LDFLAGS"
778 LIBS="`getconf LFS64_LIBS` $LIBS"
780 AC_MSG_RESULT([$SINIX_LFS_SUPPORT])
784 # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
787 AC_MSG_CHECKING([for LFS support])
788 old_CPPFLAGS="$CPPFLAGS"
789 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
792 #include <sys/utsname.h>
796 #if _LFS64_LARGEFILE == 1
801 /* Ensure this is glibc 2.2 or higher */
802 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
803 int libc_major = __GLIBC__;
804 int libc_minor = __GLIBC_MINOR__;
812 /* Ensure this is kernel 2.4 or higher */
815 release = strdup(uts.release);
816 major = atoi(strsep(&release, "."));
817 minor = atoi(strsep(&release, "."));
819 if (major > 2 || (major == 2 && minor > 3))
826 ], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
827 CPPFLAGS="$old_CPPFLAGS"
828 if test x$LINUX_LFS_SUPPORT = xyes ; then
829 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
830 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
831 AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
832 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
834 AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
838 # MacOS X is the *only* system that uses compose character in utf8. This
839 # is so horribly broken....
842 AC_DEFINE(BROKEN_UNICODE_COMPOSE_CHARACTERS, 1, [Does this system use unicode compose characters])
844 # Add a system specific charset module.
845 default_shared_modules="$default_shared_modules charset_macosxfs"
849 AC_MSG_CHECKING([for LFS support])
850 old_CPPFLAGS="$CPPFLAGS"
851 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
855 #if _LFS64_LARGEFILE == 1
860 }], [GLIBC_LFS_SUPPORT=yes], [GLIBC_LFS_SUPPORT=no], [GLIBC_LFS_SUPPORT=cross])
861 CPPFLAGS="$old_CPPFLAGS"
862 if test x$GLIBC_LFS_SUPPORT = xyes ; then
863 CPPFLAGS="-D_LARGEFILE64_SOURCE -D_GNU_SOURCE $CPPFLAGS"
864 AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
865 AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
867 AC_MSG_RESULT([$GLIBC_LFS_SUPPORT])
872 AC_LIBREPLACE_BROKEN_CHECKS
874 LIBREPLACE_DIR=`echo ${libreplacedir} | sed -e "s;${srcdir};;" -e "s;^/;;"`
877 for obj in ${LIBREPLACEOBJ}; do
878 LIBREPLACE_OBJS="${LIBREPLACE_OBJS} ${LIBREPLACE_DIR}/${obj}"
880 AC_SUBST(LIBREPLACE_OBJS)
882 # add -ldl to the global LIBS
883 LIBS="${LIBS} ${LIBDL}"
885 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)
886 AC_CHECK_HEADERS(unistd.h utime.h grp.h sys/id.h memory.h alloca.h)
887 AC_CHECK_HEADERS(limits.h float.h)
888 AC_CHECK_HEADERS(rpc/rpc.h rpcsvc/nis.h rpcsvc/ypclnt.h)
889 AC_CHECK_HEADERS(sys/param.h ctype.h sys/wait.h sys/resource.h sys/ioctl.h sys/ipc.h sys/prctl.h)
890 AC_CHECK_HEADERS(sys/mman.h sys/filio.h sys/priv.h sys/shm.h string.h strings.h stdlib.h sys/socket.h)
891 AC_CHECK_HEADERS(sys/un.h)
892 AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h termios.h termio.h)
893 AC_CHECK_HEADERS(sys/termio.h sys/statfs.h sys/dustat.h sys/statvfs.h stdarg.h sys/sockio.h)
894 AC_CHECK_HEADERS(sys/sysmacros.h)
895 AC_CHECK_HEADERS(sys/syslog.h syslog.h)
896 AC_CHECK_HEADERS(langinfo.h locale.h)
897 AC_CHECK_HEADERS(xfs/libxfs.h)
899 AC_CHECK_HEADERS(rpcsvc/yp_prot.h,,,[[
905 ## These fail to compile on IRIX so just check for their presence
906 AC_CHECK_HEADERS(sys/mode.h,,,)
908 # Look for Darwin headers
909 old_CPPFLAGS="$CPPFLAGS"
910 CPPFLAGS="-Iinclude $CPPFLAGS"
911 AC_CHECK_HEADERS([CoreFoundation/CFStringEncodingConverter.h], [], [AC_CHECK_HEADERS([CFStringEncodingConverter.h])])
912 CPPFLAGS="$old_CPPFLAGS"
914 # In valgrind 1.0.x, it's just valgrind.h. In 1.9.x+ there's a
915 # subdirectory of headers.
916 AC_CHECK_HEADERS(valgrind.h valgrind/valgrind.h valgrind/memcheck.h)
918 # check for linux on amd64 since valgrind is not quite there yet
923 AC_DEFINE(HAVE_64BIT_LINUX,1,[Whether we are running on 64bit linux])
931 # HPUX has a bug in that including shadow.h causes a re-definition of MAXINT.
932 # This causes configure to fail to detect it. Check for shadow separately on HPUX.
936 AC_TRY_COMPILE([#include <shadow.h>],[struct spwd testme],
937 ac_cv_header_shadow_h=yes,ac_cv_header_shadow_h=no)
938 if test x"$ac_cv_header_shadow_h" = x"yes"; then
939 AC_DEFINE(HAVE_SHADOW_H,1,[Whether we have shadow.h])
943 AC_CHECK_HEADERS(shadow.h)
944 AC_CHECK_HEADERS(nss.h nss_common.h nsswitch.h ns_api.h sys/security.h)
945 AC_CHECK_HEADERS(syscall.h sys/syscall.h)
947 AC_CHECK_HEADERS(sys/attributes.h attr/xattr.h sys/xattr.h sys/extattr.h sys/uio.h)
948 AC_CHECK_HEADERS(sys/ea.h sys/proplist.h)
950 AC_CHECK_HEADERS(sys/cdefs.h glob.h)
952 # For experimental utmp support (lastlog on some BSD-like systems)
953 AC_CHECK_HEADERS(utmp.h utmpx.h lastlog.h)
955 AC_CHECK_SIZEOF(int,cross)
956 AC_CHECK_SIZEOF(long,cross)
957 AC_CHECK_SIZEOF(long long,cross)
958 AC_CHECK_SIZEOF(short,cross)
973 AC_CHECK_TYPE(ino_t,unsigned)
974 AC_CHECK_TYPE(loff_t,off_t)
975 AC_CHECK_TYPE(offset_t,loff_t)
976 AC_CHECK_TYPE(ssize_t, int)
977 AC_CHECK_TYPE(wchar_t, unsigned short)
978 AC_CHECK_TYPE(comparison_fn_t,
979 [AC_DEFINE(HAVE_COMPARISON_FN_T, 1,[Whether or not we have comparison_fn_t])])
981 ############################################
982 # for cups support we need libcups, and a handful of header files
985 [ --enable-cups Turn on CUPS support (default=auto)])
987 if test x$enable_cups != xno; then
988 AC_PATH_PROG(CUPS_CONFIG, cups-config)
990 if test "x$CUPS_CONFIG" != x; then
991 AC_DEFINE(HAVE_CUPS,1,[Whether we have CUPS])
992 CFLAGS="$CFLAGS `$CUPS_CONFIG --cflags`"
993 LDFLAGS="$LDFLAGS `$CUPS_CONFIG --ldflags`"
994 PRINT_LIBS="$PRINT_LIBS `$CUPS_CONFIG --libs`"
995 elif test x"$enable_cups" = x"yes"; then
996 AC_MSG_ERROR(Cups support required but cups-config not located. Make sure cups-devel related files are installed.)
1000 AC_ARG_ENABLE(iprint,
1001 [ --enable-iprint Turn on iPrint support (default=yes if cups is yes)])
1003 if test x$enable_iprint != xno; then
1004 if test "x$CUPS_CONFIG" != x; then
1005 AC_DEFINE(HAVE_IPRINT,1,[Whether we have iPrint])
1006 elif test x"$enable_iprint" = x"yes"; then
1007 AC_MSG_ERROR(iPrint support required but cups not enabled. Make sure cups-devel related files are installed and that cups is enabled.)
1011 ############################################
1012 # check if the compiler will optimize out function calls
1013 AC_CACHE_CHECK([if the compiler will optimize out function calls],samba_cv_optimize_out_funcation_calls, [
1015 #include <stdio.h>],
1018 this_function_does_not_exist();
1024 samba_cv_optimize_out_funcation_calls=yes,samba_cv_optimize_out_funcation_calls=no)])
1025 if test x"$samba_cv_optimize_out_funcation_calls" = x"yes"; then
1026 AC_DEFINE(HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS,1,[Whether the compiler will optimize out function calls])
1029 ############################################
1030 # check for unix domain sockets
1031 AC_CACHE_CHECK([for unix domain sockets],samba_cv_unixsocket, [
1033 #include <sys/types.h>
1036 #include <sys/socket.h>
1037 #include <sys/un.h>],
1039 struct sockaddr_un sunaddr;
1040 sunaddr.sun_family = AF_UNIX;
1042 samba_cv_unixsocket=yes,samba_cv_unixsocket=no)])
1043 if test x"$samba_cv_unixsocket" = x"yes"; then
1044 AC_DEFINE(HAVE_UNIXSOCKET,1,[If we need to build with unixscoket support])
1048 AC_CACHE_CHECK([for socklen_t type],samba_cv_socklen_t, [
1050 #include <sys/types.h>
1055 #include <sys/socket.h>],[socklen_t i = 0],
1056 samba_cv_socklen_t=yes,samba_cv_socklen_t=no)])
1057 if test x"$samba_cv_socklen_t" = x"yes"; then
1058 AC_DEFINE(HAVE_SOCKLEN_T_TYPE,1,[Whether we have the variable type socklen_t])
1061 AC_CACHE_CHECK([for sig_atomic_t type],samba_cv_sig_atomic_t, [
1063 #include <sys/types.h>
1068 #include <signal.h>],[sig_atomic_t i = 0],
1069 samba_cv_sig_atomic_t=yes,samba_cv_sig_atomic_t=no)])
1070 if test x"$samba_cv_sig_atomic_t" = x"yes"; then
1071 AC_DEFINE(HAVE_SIG_ATOMIC_T_TYPE,1,[Whether we have the atomic_t variable type])
1074 AC_CACHE_CHECK([for struct timespec type],samba_cv_struct_timespec, [
1076 #include <sys/types.h>
1081 #if TIME_WITH_SYS_TIME
1082 # include <sys/time.h>
1085 # if HAVE_SYS_TIME_H
1086 # include <sys/time.h>
1091 ],[struct timespec ts;],
1092 samba_cv_struct_timespec=yes,samba_cv_struct_timespec=no)])
1093 if test x"$samba_cv_struct_timespec" = x"yes"; then
1094 AC_DEFINE(HAVE_STRUCT_TIMESPEC,1,[Whether we have struct timespec])
1097 # stupid headers have the functions but no declaration. grrrr.
1098 AC_HAVE_DECL(errno, [#include <errno.h>])
1099 AC_HAVE_DECL(setresuid, [#include <unistd.h>])
1100 AC_HAVE_DECL(setresgid, [#include <unistd.h>])
1101 AC_HAVE_DECL(asprintf, [#include <stdio.h>])
1102 AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
1103 AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
1104 AC_HAVE_DECL(snprintf, [#include <stdio.h>])
1106 # and glibc has setresuid under linux but the function does
1107 # nothing until kernel 2.1.44! very dumb.
1108 AC_CACHE_CHECK([for real setresuid],samba_cv_have_setresuid,[
1109 AC_TRY_RUN([#include <errno.h>
1110 main() { setresuid(1,1,1); setresuid(2,2,2); exit(errno==EPERM?0:1);}],
1111 samba_cv_have_setresuid=yes,samba_cv_have_setresuid=no,samba_cv_have_setresuid=cross)])
1112 if test x"$samba_cv_have_setresuid" = x"yes"; then
1113 AC_DEFINE(HAVE_SETRESUID,1,[Whether the system has setresuid])
1116 # Do the same check for setresguid...
1118 AC_CACHE_CHECK([for real setresgid],samba_cv_have_setresgid,[
1119 AC_TRY_RUN([#include <unistd.h>
1121 main() { errno = 0; setresgid(1,1,1); exit(errno != 0 ? (errno==EPERM ? 0 : 1) : 0);}],
1122 samba_cv_have_setresgid=yes,samba_cv_have_setresgid=no,samba_cv_have_setresgid=cross)])
1123 if test x"$samba_cv_have_setresgid" = x"yes"; then
1124 AC_DEFINE(HAVE_SETRESGID,1,[Whether the system has setresgid])
1129 ###############################################
1130 # Readline included by default unless explicitly asked not to
1131 test "${with_readline+set}" != "set" && with_readline=yes
1133 # test for where we get readline() from
1134 AC_MSG_CHECKING(whether to use readline)
1135 AC_ARG_WITH(readline,
1136 [ --with-readline[=DIR] Look for readline include/libs in DIR (default=auto) ],
1137 [ case "$with_readline" in
1141 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1142 AC_CHECK_HEADERS(readline/history.h)
1144 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1145 for termlib in ncurses curses termcap terminfo termlib tinfo; do
1146 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1148 AC_CHECK_LIB(readline, rl_callback_handler_install,
1149 [TERMLIBS="-lreadline $TERMLIBS"
1150 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1151 break], [TERMLIBS=], $TERMLIBS)])
1159 # Needed for AC_CHECK_HEADERS and AC_CHECK_LIB to look at
1160 # alternate readline path
1162 _cppflags=${CPPFLAGS}
1164 # Add additional search path
1165 LDFLAGS="-L$with_readline/lib $LDFLAGS"
1166 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1168 AC_CHECK_HEADERS(readline.h history.h readline/readline.h)
1169 AC_CHECK_HEADERS(readline/history.h)
1171 AC_CHECK_HEADERS(readline.h readline/readline.h,[
1172 for termlib in ncurses curses termcap terminfo termlib; do
1173 AC_CHECK_LIB(${termlib}, tgetent, [TERMLIBS="-l${termlib}"; break])
1175 AC_CHECK_LIB(readline, rl_callback_handler_install,
1176 [TERMLDFLAGS="-L$with_readline/lib"
1177 TERMCPPFLAGS="-I$with_readline/include"
1178 CPPFLAGS="-I$with_readline/include $CPPFLAGS"
1179 TERMLIBS="-lreadline $TERMLIBS"
1180 AC_DEFINE(HAVE_LIBREADLINE,1,[Whether the system has readline])
1181 break], [TERMLIBS= CPPFLAGS=$_cppflags], $TERMLIBS)])
1189 AC_SUBST(TERMLDFLAGS)
1191 # The readline API changed slightly from readline3 to readline4, so
1192 # code will generate warnings on one of them unless we have a few
1194 AC_CHECK_LIB(readline, rl_completion_matches,
1195 [AC_DEFINE(HAVE_NEW_LIBREADLINE, 1,
1196 [Do we have rl_completion_matches?])],
1200 # not all readline libs have rl_event_hook or history_list
1201 AC_CHECK_DECLS(rl_event_hook, [], [], [#include <readline/readline.h>])
1202 AC_CHECK_LIB(readline, history_list,
1203 [AC_DEFINE(HAVE_HISTORY_LIST, 1, [Do we have history_list?])],
1207 # The following test taken from the cvs sources
1208 # If we can't find connect, try looking in -lsocket, -lnsl, and -linet.
1209 # The Irix 5 libc.so has connect and gethostbyname, but Irix 5 also has
1210 # libsocket.so which has a bad implementation of gethostbyname (it
1211 # only looks in /etc/hosts), so we only look for -lsocket if we need
1213 AC_CHECK_FUNCS(connect)
1214 if test x"$ac_cv_func_connect" = x"no"; then
1217 *) AC_CHECK_LIB(nsl_s, connect) ;;
1221 *) AC_CHECK_LIB(nsl, connect) ;;
1225 *) AC_CHECK_LIB(socket, connect) ;;
1229 *) AC_CHECK_LIB(inet, connect) ;;
1231 dnl We can't just call AC_CHECK_FUNCS(connect) here, because the value
1232 dnl has been cached.
1233 if test x"$ac_cv_lib_socket_connect" = x"yes" ||
1234 test x"$ac_cv_lib_inet_connect" = x"yes"; then
1235 # ac_cv_func_connect=yes
1236 # don't! it would cause AC_CHECK_FUNC to succeed next time configure is run
1237 AC_DEFINE(HAVE_CONNECT,1,[Whether the system has connect()])
1241 ###############################################
1242 # test for where we get yp_get_default_domain() from
1243 AC_SEARCH_LIBS(yp_get_default_domain, [nsl])
1244 AC_CHECK_FUNCS(yp_get_default_domain)
1246 # Check if we have execl, if not we need to compile smbrun.
1247 AC_CHECK_FUNCS(execl)
1248 if test x"$ac_cv_func_execl" = x"no"; then
1249 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/smbrun\$(EXEEXT)"
1252 AC_CHECK_FUNCS(waitpid getcwd strdup strndup strnlen strerror chown fchown chmod fchmod chroot link mknod mknod64)
1253 AC_CHECK_FUNCS(strtol strtoll strtoul strtoull strtouq __strtoull)
1254 AC_CHECK_FUNCS(fstat strchr utime utimes chflags)
1255 AC_CHECK_FUNCS(getrlimit fsync memset strlcpy strlcat setpgid)
1256 AC_CHECK_FUNCS(memmove vsnprintf snprintf asprintf vasprintf setsid glob strpbrk pipe crypt16 getauthuid)
1257 AC_CHECK_FUNCS(strftime sigprocmask sigblock sigaction sigset innetgr setnetgrent getnetgrent endnetgrent)
1258 AC_CHECK_FUNCS(initgroups select poll rdchk getgrnam getgrent pathconf realpath)
1259 AC_CHECK_FUNCS(setpriv setgidx setuidx setgroups sysconf mktime rename ftruncate chsize stat64 fstat64)
1260 AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt dup2 lseek64 ftruncate64)
1261 AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam setlinebuf)
1262 AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64)
1263 AC_CHECK_FUNCS(getpwent_r)
1264 AC_CHECK_FUNCS(getdents getdents64)
1265 AC_CHECK_FUNCS(srandom random srand rand setenv usleep strcasecmp fcvt fcvtl symlink readlink)
1266 AC_CHECK_FUNCS(syslog vsyslog timegm)
1267 AC_CHECK_FUNCS(setlocale nl_langinfo)
1268 AC_CHECK_FUNCS(nanosleep)
1269 AC_CHECK_FUNCS(mlock munlock mlockall munlockall)
1270 AC_CHECK_FUNCS(memalign posix_memalign)
1271 AC_CHECK_HEADERS(sys/mman.h)
1272 # setbuffer, shmget, shm_open are needed for smbtorture
1273 AC_CHECK_FUNCS(setbuffer shmget shm_open)
1274 AC_CHECK_FUNCS(makecontext getcontext setcontext swapcontext)
1276 # Find a method of generating a stack trace
1277 AC_CHECK_HEADERS(execinfo.h libexc.h libunwind.h)
1278 AC_CHECK_FUNCS(backtrace_symbols)
1279 AC_CHECK_LIB(exc, trace_back_stack)
1281 echo -n "checking for GPFS GPL libs... "
1283 LIBS="$LIBS -lgpfs_gpl"
1284 AC_TRY_LINK([#include <gpfs_gpl.h>],
1285 [gpfs_set_share(0,GPFS_SHARE_READ,GPFS_DENY_NONE)],
1286 samba_cv_HAVE_GPFS=yes,
1287 samba_cv_HAVE_GPFS=no)
1288 echo $samba_cv_HAVE_GPFS
1289 if test x"$samba_cv_HAVE_GPFS" = x"yes"; then
1290 AC_DEFINE(HAVE_GPFS,1,[Whether GPFS GPL libs are available])
1291 default_shared_modules="$default_shared_modules vfs_gpfs"
1295 # Note that all the libunwind symbols in the API are defined to internal
1296 # platform-specific version, so we must include libunwind.h before checking
1298 AC_MSG_CHECKING([for libunwind])
1300 if test x"$UNAME_P" = xunknown ; then
1301 # This probably won't link without the platform-specific libunwind.
1302 LIBS="$LIBS -lunwind"
1304 # Add the platform-specific libunwind module. uname -p seems the most
1305 # plausible option and works for ia64, where libunwind is most useful.
1306 LIBS="$LIBS -lunwind -lunwind-$UNAME_P"
1311 #ifdef HAVE_LIBUNWIND_H
1312 #include <libunwind.h>
1316 unw_context_t ctx; unw_cursor_t cur;
1317 char buf[256]; unw_word_t off;
1318 unw_getcontext(&ctx); unw_init_local(&cur, &ctx);
1319 unw_get_proc_name(&cur, buf, sizeof(buf), &off);
1323 AC_DEFINE(HAVE_LIBUNWIND, 1, [Whether libunwind is available])
1325 # If we have libunwind, test whether we also have libunwind-ptrace
1326 # which would let us unwind arbitrary processes.
1328 AC_CHECK_HEADERS(libunwind-ptrace.h)
1329 AC_CHECK_LIB(unwind-ptrace, _UPT_create,
1331 LIBUNWIND_PTRACE="-lunwind-ptrace";
1332 AC_DEFINE(HAVE_LIBUNWIND_PTRACE, 1,
1333 [Whether libunwind-ptrace.a is available.])
1335 [ LIBUNWIND_PTRACE="" ])
1344 # To use libunwind-ptrace, we also need to make some ptrace system calls.
1345 if test x"$LIBUNWIND_PTRACE" != x"" ; then
1346 AC_CHECK_HEADERS(sys/ptrace.h)
1347 AC_MSG_CHECKING([for the Linux ptrace(2) interface])
1350 #if HAVE_SYS_TYPES_H
1351 #include <sys/types.h>
1353 #if HAVE_SYS_PTRACE_H
1354 #include <sys/ptrace.h>
1358 int main(int argc, const char ** argv)
1360 pid_t me = (pid_t)-1;
1361 ptrace(PTRACE_ATTACH, me, 0, 0);
1362 ptrace(PTRACE_DETACH, me, 0, 0);
1368 AC_DEFINE(HAVE_LINUX_PTRACE, 1,
1369 [Whether the Linux ptrace(2) interface is available.])
1377 AC_SUBST(LIBUNWIND_PTRACE)
1379 AC_CHECK_FUNCS(_dup _dup2 _opendir _readdir _seekdir _telldir _closedir)
1380 AC_CHECK_FUNCS(__dup __dup2 __opendir __readdir __seekdir __telldir __closedir)
1381 AC_CHECK_FUNCS(__getcwd _getcwd)
1382 AC_CHECK_FUNCS(__xstat __fxstat __lxstat)
1383 AC_CHECK_FUNCS(_stat _lstat _fstat __stat __lstat __fstat)
1384 AC_CHECK_FUNCS(_acl __acl _facl __facl _open __open _chdir __chdir)
1385 AC_CHECK_FUNCS(_close __close _fchdir __fchdir _fcntl __fcntl)
1386 AC_CHECK_FUNCS(getdents __getdents _lseek __lseek _read __read)
1387 AC_CHECK_FUNCS(getdirentries _write __write _fork __fork)
1388 AC_CHECK_FUNCS(_stat64 __stat64 _fstat64 __fstat64 _lstat64 __lstat64)
1389 AC_CHECK_FUNCS(__sys_llseek llseek _llseek __llseek readdir64 _readdir64 __readdir64)
1390 AC_CHECK_FUNCS(pread _pread __pread pread64 _pread64 __pread64)
1391 AC_CHECK_FUNCS(pwrite _pwrite __pwrite pwrite64 _pwrite64 __pwrite64)
1392 AC_CHECK_FUNCS(open64 _open64 __open64 creat64)
1393 AC_CHECK_FUNCS(prctl)
1396 #ifdef HAVE_SYS_PRCTL_H
1397 #include <sys/prctl.h>
1400 [int i; i = prtcl(0); ],
1401 AC_DEFINE(HAVE_PRCTL, 1, [Whether prctl is available]),[])
1408 # glibc <= 2.3.2 has a broken getgrouplist
1409 AC_CACHE_CHECK([for a broken Linux getgrouplist API],
1410 linux_getgrouplist_ok,
1414 #include <sys/utsname.h>
1417 /* glibc up to 2.3 has a broken getgrouplist */
1418 #if defined(__GLIBC__) && defined(__GLIBC_MINOR__)
1419 int libc_major = __GLIBC__;
1420 int libc_minor = __GLIBC_MINOR__;
1424 if ((libc_major == 2) && (libc_minor <= 3))
1431 [linux_getgrouplist_ok=yes],
1432 [linux_getgrouplist_ok=no],
1433 [linux_getgrouplist_ok=cross])
1436 if test x"$linux_getgrouplist_ok" = x"yes"; then
1437 AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
1441 AC_CHECK_FUNCS(getgrouplist)
1446 # stat64 family may need <sys/stat.h> on some systems, notably ReliantUNIX
1449 if test x$ac_cv_func_stat64 = xno ; then
1450 AC_MSG_CHECKING([for stat64 in <sys/stat.h>])
1452 #if defined(HAVE_UNISTD_H)
1455 #include <sys/stat.h>
1456 ], [struct stat64 st64; exit(stat64(".",&st64));], [ac_cv_func_stat64=yes])
1457 AC_MSG_RESULT([$ac_cv_func_stat64])
1458 if test x$ac_cv_func_stat64 = xyes ; then
1459 AC_DEFINE(HAVE_STAT64,1,[Whether stat64() is available])
1463 if test x$ac_cv_func_lstat64 = xno ; then
1464 AC_MSG_CHECKING([for lstat64 in <sys/stat.h>])
1466 #if defined(HAVE_UNISTD_H)
1469 #include <sys/stat.h>
1470 ], [struct stat64 st64; exit(lstat64(".",&st64));], [ac_cv_func_lstat64=yes])
1471 AC_MSG_RESULT([$ac_cv_func_lstat64])
1472 if test x$ac_cv_func_lstat64 = xyes ; then
1473 AC_DEFINE(HAVE_LSTAT64,[Whether lstat64() is available])
1477 if test x$ac_cv_func_fstat64 = xno ; then
1478 AC_MSG_CHECKING([for fstat64 in <sys/stat.h>])
1480 #if defined(HAVE_UNISTD_H)
1483 #include <sys/stat.h>
1484 ], [struct stat64 st64; exit(fstat64(0,&st64));], [ac_cv_func_fstat64=yes])
1485 AC_MSG_RESULT([$ac_cv_func_fstat64])
1486 if test x$ac_cv_func_fstat64 = xyes ; then
1487 AC_DEFINE(HAVE_FSTAT64,1,[Whether fstat64() is available])
1491 #################################################
1492 # Check whether struct stat has timestamps with sub-second resolution.
1493 # At least IRIX and Solaris have these.
1496 # all of st_mtim, st_atim and st_ctim exist
1497 # all of the members are in fact of type struct timespec
1499 # There is some conflicting standards weirdness about whether we should use
1500 # "struct timespec" or "timespec_t". Linux doesn't have timespec_t, so we
1501 # prefer struct timespec.
1503 AC_CACHE_CHECK([whether struct stat has sub-second timestamps], samba_stat_hires,
1507 #if TIME_WITH_SYS_TIME
1508 # include <sys/time.h>
1511 # if HAVE_SYS_TIME_H
1512 # include <sys/time.h>
1517 #ifdef HAVE_SYS_STAT_H
1518 #include <sys/stat.h>
1523 struct stat s = {0};
1524 t.tv_sec = s.st_mtim.tv_sec;
1525 t.tv_nsec = s.st_mtim.tv_nsec;
1526 t.tv_sec = s.st_ctim.tv_sec;
1527 t.tv_nsec = s.st_ctim.tv_nsec;
1528 t.tv_sec = s.st_atim.tv_sec;
1529 t.tv_nsec = s.st_atim.tv_nsec;
1531 samba_stat_hires=yes, samba_stat_hires=no)
1534 if test x"$samba_stat_hires" = x"yes" ; then
1535 AC_DEFINE(HAVE_STAT_ST_MTIM, 1, [whether struct stat contains st_mtim])
1536 AC_DEFINE(HAVE_STAT_ST_ATIM, 1, [whether struct stat contains st_atim])
1537 AC_DEFINE(HAVE_STAT_ST_CTIM, 1, [whether struct stat contains st_ctim])
1538 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1539 [whether struct stat has sub-second timestamps])
1542 AC_CACHE_CHECK([whether struct stat has sub-second timestamps without struct timespec], samba_stat_hires_notimespec,
1546 #if TIME_WITH_SYS_TIME
1547 # include <sys/time.h>
1550 # if HAVE_SYS_TIME_H
1551 # include <sys/time.h>
1556 #ifdef HAVE_SYS_STAT_H
1557 #include <sys/stat.h>
1562 struct stat s = {0};
1563 t.tv_sec = s.st_mtime;
1564 t.tv_nsec = s.st_mtimensec;
1565 t.tv_sec = s.st_ctime;
1566 t.tv_nsec = s.st_ctimensec;
1567 t.tv_sec = s.st_atime;
1568 t.tv_nsec = s.st_atimensec;
1570 samba_stat_hires=yes, samba_stat_hires=no)
1573 if test x"$samba_stat_hires_notimespec" = x"yes" ; then
1574 AC_DEFINE(HAVE_STAT_ST_MTIMENSEC, 1, [whether struct stat contains st_mtimensec])
1575 AC_DEFINE(HAVE_STAT_ST_ATIMENSEC, 1, [whether struct stat contains st_atimensec])
1576 AC_DEFINE(HAVE_STAT_ST_CTIMENSEC, 1, [whether struct stat contains st_ctimensec])
1577 AC_DEFINE(HAVE_STAT_HIRES_TIMESTAMPS, 1,
1578 [whether struct stat has sub-second timestamps without struct timespec])
1581 #####################################
1582 # needed for SRV lookups
1583 AC_CHECK_LIB(resolv, dn_expand)
1584 AC_CHECK_LIB(resolv, _dn_expand)
1585 AC_CHECK_LIB(resolv, __dn_expand)
1588 # Check for the functions putprpwnam, set_auth_parameters,
1589 # getspnam, bigcrypt and getprpwnam in -lsec and -lsecurity
1590 # Needed for OSF1 and HPUX.
1593 AC_LIBTESTFUNC(security, putprpwnam)
1594 AC_LIBTESTFUNC(sec, putprpwnam)
1596 AC_LIBTESTFUNC(security, set_auth_parameters)
1597 AC_LIBTESTFUNC(sec, set_auth_parameters)
1599 # UnixWare 7.x has its getspnam in -lgen
1600 AC_LIBTESTFUNC(gen, getspnam)
1602 AC_LIBTESTFUNC(security, getspnam)
1603 AC_LIBTESTFUNC(sec, getspnam)
1605 AC_LIBTESTFUNC(security, bigcrypt)
1606 AC_LIBTESTFUNC(sec, bigcrypt)
1608 AC_LIBTESTFUNC(security, getprpwnam)
1609 AC_LIBTESTFUNC(sec, getprpwnam)
1611 AC_CHECK_FUNCS(strsignal)
1613 ############################################
1614 # Check if we have libattr
1617 AC_SEARCH_LIBS(getproplist, [proplist])
1618 AC_CHECK_FUNCS(getproplist fgetproplist setproplist fsetproplist)
1619 AC_CHECK_FUNCS(delproplist fdelproplist add_proplist_entry get_proplist_entry)
1620 AC_CHECK_FUNCS(sizeof_proplist_entry)
1623 AC_SEARCH_LIBS(getxattr, [attr])
1624 AC_CHECK_FUNCS(getxattr lgetxattr fgetxattr listxattr llistxattr)
1625 AC_CHECK_FUNCS(getea fgetea lgetea listea flistea llistea)
1626 AC_CHECK_FUNCS(removeea fremoveea lremoveea setea fsetea lsetea)
1627 AC_CHECK_FUNCS(flistxattr removexattr lremovexattr fremovexattr)
1628 AC_CHECK_FUNCS(setxattr lsetxattr fsetxattr)
1629 AC_CHECK_FUNCS(attr_get attr_list attr_set attr_remove)
1630 AC_CHECK_FUNCS(attr_getf attr_listf attr_setf attr_removef)
1634 ########################################################
1635 # Do xattr functions take additional options like on Darwin?
1636 if test x"$ac_cv_func_getxattr" = x"yes" ; then
1637 AC_CACHE_CHECK([whether xattr interface takes additional options], smb_attr_cv_xattr_add_opt, [
1639 LIBS="$LIBS $ACL_LIBS"
1641 #include <sys/types.h>
1642 #if HAVE_ATTR_XATTR_H
1643 #include <attr/xattr.h>
1644 #elif HAVE_SYS_XATTR_H
1645 #include <sys/xattr.h>
1648 getxattr(0, 0, 0, 0, 0, 0);
1650 [smb_attr_cv_xattr_add_opt=yes],
1651 [smb_attr_cv_xattr_add_opt=no;LIBS=$old_LIBS])
1653 if test x"$smb_attr_cv_xattr_add_opt" = x"yes"; then
1654 AC_DEFINE(XATTR_ADD_OPT, 1, [xattr functions have additional options])
1658 # Check if we have extattr
1660 *freebsd4* | *dragonfly* )
1661 AC_DEFINE(BROKEN_EXTATTR, 1, [Does extattr API work])
1664 AC_CHECK_FUNCS(extattr_delete_fd extattr_delete_file extattr_delete_link)
1665 AC_CHECK_FUNCS(extattr_get_fd extattr_get_file extattr_get_link)
1666 AC_CHECK_FUNCS(extattr_list_fd extattr_list_file extattr_list_link)
1667 AC_CHECK_FUNCS(extattr_set_fd extattr_set_file extattr_set_link)
1674 AC_ARG_ENABLE(pie, [ --enable-pie Turn on pie support if available (default=yes)])
1676 if test "x$enable_pie" != xno
1678 AC_CACHE_CHECK(for -pie and -fPIE, samba_cv_fpie,
1680 cat > conftest.c <<EOF
1682 main () { return 0;}
1684 if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -pie -fPIE -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD])
1692 if test x"${samba_cv_fpie}" = x"yes"
1699 # Assume non-shared by default and override below
1702 # these are the defaults, good for lots of systems
1707 SHLD="\${CC} \${CFLAGS}"
1708 PICFLAG="${PIE_CFLAGS}"
1712 # this bit needs to be modified for each OS that supports share libs
1713 # You need to specify how to create a shared library and
1714 # how to compile C code to produce PIC object files
1716 AC_MSG_CHECKING([ability to build shared libraries])
1718 # and these are for particular systems
1720 *linux*) AC_DEFINE(LINUX,1,[Whether the host os is linux])
1722 if test "${ac_cv_gnu_ld_no_default_allow_shlib_undefined}" = "yes"; then
1723 LDSHFLAGS="-shared -Wl,-Bsymbolic -Wl,--allow-shlib-undefined"
1725 LDSHFLAGS="-shared -Wl,-Bsymbolic"
1727 DYNEXP="-Wl,--export-dynamic"
1729 SONAMEFLAG="-Wl,-soname="
1730 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1732 *solaris*) AC_DEFINE(SUNOS5,1,[Whether the host os is solaris])
1736 if test "${GCC}" = "yes"; then
1738 SONAMEFLAG="-Wl,-soname="
1739 if test "${ac_cv_prog_gnu_ld}" = "yes"; then
1744 ## ${CFLAGS} added for building 64-bit shared
1745 ## libs using Sun's Compiler
1746 LDSHFLAGS="-G \${CFLAGS}"
1748 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1749 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1751 *sunos*) AC_DEFINE(SUNOS4,1,[Whether the host os is sunos4])
1754 SONAMEFLAG="-Wl,-h,"
1755 PICFLAG="-KPIC" # Is this correct for SunOS
1756 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1757 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1759 *netbsd* | *freebsd* | *dragonfly* )
1762 DYNEXP="-Wl,--export-dynamic"
1763 SONAMEFLAG="-Wl,-soname,"
1764 PICFLAG="-fPIC -DPIC"
1765 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1766 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1768 *openbsd*) BLDSHARED="true"
1770 DYNEXP="-Wl,-Bdynamic"
1771 SONAMEFLAG="-Wl,-soname,"
1773 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1774 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1776 *irix*) AC_DEFINE(IRIX,1,[Whether the host os is irix])
1778 *irix6*) AC_DEFINE(IRIX6,1,[Whether the host os is irix6])
1782 LDSHFLAGS="-set_version sgi1.0 -shared"
1783 SONAMEFLAG="-soname "
1785 if test "${GCC}" = "yes"; then
1790 AC_DEFINE(STAT_ST_BLOCKSIZE,512,[The size of a block])
1792 *aix*) AC_DEFINE(AIX,1,[Whether the host os is aix])
1794 LDSHFLAGS="-Wl,-G,-bexpall,-bbigtoc"
1795 DYNEXP="-Wl,-brtl,-bexpall,-bbigtoc"
1797 # as AIX code is always position independent...
1798 # .po will just create compile warnings, use po.o:
1799 if test "${GCC}" != "yes"; then
1800 ## for funky AIX compiler using strncpy()
1801 CFLAGS="$CFLAGS -D_LINUX_SOURCE_COMPAT -qmaxmem=32000"
1804 AC_DEFINE(STAT_ST_BLOCKSIZE,DEV_BSIZE,[The size of a block])
1805 AC_DEFINE(BROKEN_STRNLEN,1,[Does strnlen work correctly])
1806 AC_DEFINE(BROKEN_STRNDUP,1,[Does strndup work correctly])
1808 *hpux*) AC_DEFINE(HPUX,1,[Whether the host os is HPUX])
1809 # Use special PIC flags for the native HP-UX compiler.
1812 LDSHFLAGS="-b -Wl,-B,symbolic,-b,-z"
1813 SONAMEFLAG="-Wl,+h "
1815 if test "${GCC}" = "yes"; then
1820 if test "$host_cpu" = "ia64"; then
1822 DYNEXP="-Wl,-E,+b/usr/local/lib/hpux32:/usr/lib/hpux32"
1825 DYNEXP="-Wl,-E,+b/usr/local/lib:/usr/lib"
1827 AC_DEFINE(STAT_ST_BLOCKSIZE,8192,[The size of a block])
1828 AC_DEFINE(POSIX_ACL_NEEDS_MASK,1,[Does a POSIX ACL need a mask element])
1830 *qnx*) AC_DEFINE(QNX,1,[Whether the host os is qnx])
1831 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1833 *osf*) AC_DEFINE(OSF1,1,[Whether the host os is osf1])
1836 SONAMEFLAG="-Wl,-soname,"
1838 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1839 AC_DEFINE(BROKEN_GETGRNAM,1,[Does getgrnam work correctly])
1841 *sco*) AC_DEFINE(SCO,1,[Whether the host os is sco unix])
1842 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1844 *unixware*) AC_DEFINE(UNIXWARE,1,[Whether the host os is unixware])
1847 SONAMEFLAG="-Wl,-soname,"
1849 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1851 *next2*) AC_DEFINE(NEXT2,1,[Whether the host os is NeXT v2])
1852 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1854 *dgux*) AC_CHECK_PROG( ROFF, groff, [groff -etpsR -Tascii -man])
1855 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1857 *sysv4*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1859 *-univel-*) if [ test "$GCC" != yes ]; then
1860 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1865 *mips-sni-sysv4*) AC_DEFINE(RELIANTUNIX,1,[Whether the host os is reliantunix]);;
1867 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1870 *sysv5*) AC_DEFINE(SYSV,1,[Whether this is a system V system])
1871 if [ test "$GCC" != yes ]; then
1872 AC_DEFINE(HAVE_MEMSET,1,[Whether memset() is available])
1875 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1877 *vos*) AC_DEFINE(STAT_ST_BLOCKSIZE,4096)
1882 *darwin*) AC_DEFINE(DARWINOS,1,[Whether the host os is Darwin/MacOSX])
1884 LDSHFLAGS="-bundle -flat_namespace -undefined suppress"
1885 MODULE_EXPORTS="-exported_symbols_list \$(srcdir)/modules/exports.darwin"
1887 # Since gcc doesn't fail on unrecognised options, the
1888 # PIE test incorrectly succeeds. Darwin gcc does not
1889 # actually support the PIE stuff.
1892 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1896 AC_DEFINE(STAT_ST_BLOCKSIZE,512)
1900 if test "$enable_shared" != "yes"; then
1904 AC_MSG_RESULT($BLDSHARED)
1906 AC_MSG_CHECKING([LDFLAGS])
1907 AC_MSG_RESULT([$LDFLAGS])
1908 AC_MSG_CHECKING([DYNEXP])
1909 AC_MSG_RESULT([$DYNEXP])
1911 #######################################################
1912 # test whether building a shared library actually works
1913 if test $BLDSHARED = true; then
1915 AC_MSG_CHECKING([SHLD])
1916 AC_MSG_RESULT([$SHLD])
1917 AC_MSG_CHECKING([LDSHFLAGS])
1918 AC_MSG_RESULT([$LDSHFLAGS])
1920 AC_MSG_CHECKING([SHLIBEXT])
1921 AC_MSG_RESULT([$SHLIBEXT])
1922 AC_MSG_CHECKING([SONAMEFLAG])
1923 AC_MSG_RESULT([$SONAMEFLAG])
1925 AC_MSG_CHECKING([PICFLAG])
1926 AC_MSG_RESULT([$PICFLAG])
1928 AC_MSG_CHECKING([NSSSONAMEVERSIONSUFFIX])
1929 AC_MSG_RESULT([$NSSSONAMEVERSIONSUFFIX])
1931 AC_CACHE_CHECK([whether building shared libraries actually works],
1932 [ac_cv_shlib_works],[
1933 # try building a trivial shared library
1934 ac_cv_shlib_works=no
1935 # The $SHLD and $LDSHFLAGS variables may contain references to other
1936 # variables so they need to be eval'ed.
1937 $CC $CPPFLAGS $CFLAGS $PICFLAG -c -o \
1938 shlib.o ${srcdir-.}/tests/shlib.c && \
1939 `eval echo $SHLD` `eval echo $LDSHFLAGS` -o "shlib.$SHLIBEXT" \
1940 shlib.o && ac_cv_shlib_works=yes
1941 rm -f "shlib.$SHLIBEXT" shlib.o
1944 if test $ac_cv_shlib_works = no; then
1949 if test x"$BLDSHARED" != x"true"; then
1950 LDSHFLAGS="shared-libraries-disabled"
1951 SONAMEFLAG="shared-libraries-disabled"
1952 NSSSONAMEVERSIONSUFFIX="shared-libraries-disabled"
1953 SHLD="shared-libraries-disabled"
1954 PICFLAG="${PIE_CFLAGS}"
1955 SHLIBEXT="shared_libraries_disabled"
1958 AC_MSG_CHECKING([used PICFLAG])
1959 AC_MSG_RESULT([$PICFLAG])
1961 AC_DEFINE_UNQUOTED(SHLIBEXT, "$SHLIBEXT", [Shared library extension])
1965 AC_CACHE_CHECK([for long long],samba_cv_have_longlong,[
1966 AC_TRY_RUN([#include <stdio.h>
1967 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
1968 samba_cv_have_longlong=yes,samba_cv_have_longlong=no,samba_cv_have_longlong=cross)])
1969 if test x"$samba_cv_have_longlong" = x"yes"; then
1970 AC_DEFINE(HAVE_LONGLONG,1,[Whether the host supports long long's])
1971 AC_CHECK_TYPE(intptr_t, unsigned long long)
1973 AC_CHECK_TYPE(intptr_t, unsigned long)
1977 # Check if the compiler supports the LL prefix on long long integers.
1980 AC_CACHE_CHECK([for LL suffix on long long integers],samba_cv_compiler_supports_ll, [
1981 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
1982 samba_cv_compiler_supports_ll=yes,samba_cv_compiler_supports_ll=no)])
1983 if test x"$samba_cv_compiler_supports_ll" = x"yes"; then
1984 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Whether the compiler supports the LL prefix on long long integers])
1988 AC_CACHE_CHECK([for 64 bit off_t],samba_cv_SIZEOF_OFF_T,[
1989 AC_TRY_RUN([#include <stdio.h>
1990 #include <sys/stat.h>
1991 main() { exit((sizeof(off_t) == 8) ? 0 : 1); }],
1992 samba_cv_SIZEOF_OFF_T=yes,samba_cv_SIZEOF_OFF_T=no,samba_cv_SIZEOF_OFF_T=cross)])
1993 if test x"$samba_cv_SIZEOF_OFF_T" = x"yes"; then
1994 AC_DEFINE(SIZEOF_OFF_T,8,[The size of the 'off_t' type])
1997 AC_CACHE_CHECK([for off64_t],samba_cv_HAVE_OFF64_T,[
1999 #if defined(HAVE_UNISTD_H)
2003 #include <sys/stat.h>
2004 main() { struct stat64 st; off64_t s; if (sizeof(off_t) == sizeof(off64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2005 samba_cv_HAVE_OFF64_T=yes,samba_cv_HAVE_OFF64_T=no,samba_cv_HAVE_OFF64_T=cross)])
2006 if test x"$samba_cv_HAVE_OFF64_T" = x"yes"; then
2007 AC_DEFINE(HAVE_OFF64_T,1,[Whether off64_t is available])
2010 AC_CACHE_CHECK([for 64 bit ino_t],samba_cv_SIZEOF_INO_T,[
2012 #if defined(HAVE_UNISTD_H)
2016 #include <sys/stat.h>
2017 main() { exit((sizeof(ino_t) == 8) ? 0 : 1); }],
2018 samba_cv_SIZEOF_INO_T=yes,samba_cv_SIZEOF_INO_T=no,samba_cv_SIZEOF_INO_T=cross)])
2019 if test x"$samba_cv_SIZEOF_INO_T" = x"yes"; then
2020 AC_DEFINE(SIZEOF_INO_T,8,[The size of the 'ino_t' type])
2023 AC_CACHE_CHECK([for ino64_t],samba_cv_HAVE_INO64_T,[
2025 #if defined(HAVE_UNISTD_H)
2029 #include <sys/stat.h>
2030 main() { struct stat64 st; ino64_t s; if (sizeof(ino_t) == sizeof(ino64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2031 samba_cv_HAVE_INO64_T=yes,samba_cv_HAVE_INO64_T=no,samba_cv_HAVE_INO64_T=cross)])
2032 if test x"$samba_cv_HAVE_INO64_T" = x"yes"; then
2033 AC_DEFINE(HAVE_INO64_T,1,[Whether the 'ino64_t' type is available])
2036 AC_CACHE_CHECK([for 64 bit dev_t],samba_cv_SIZEOF_DEV_T,[
2038 #if defined(HAVE_UNISTD_H)
2042 #include <sys/stat.h>
2043 main() { exit((sizeof(dev_t) == 8) ? 0 : 1); }],
2044 samba_cv_SIZEOF_DEV_T=yes,samba_cv_SIZEOF_DEV_T=no,samba_cv_SIZEOF_DEV_T=cross)])
2045 if test x"$samba_cv_SIZEOF_DEV_T" = x"yes"; then
2046 AC_DEFINE(SIZEOF_DEV_T,8,[The size of the 'dev_t' type])
2049 AC_CACHE_CHECK([for dev64_t],samba_cv_HAVE_DEV64_T,[
2051 #if defined(HAVE_UNISTD_H)
2055 #include <sys/stat.h>
2056 main() { struct stat64 st; dev64_t s; if (sizeof(dev_t) == sizeof(dev64_t)) exit(1); exit((lstat64("/dev/null", &st)==0)?0:1); }],
2057 samba_cv_HAVE_DEV64_T=yes,samba_cv_HAVE_DEV64_T=no,samba_cv_HAVE_DEV64_T=cross)])
2058 if test x"$samba_cv_HAVE_DEV64_T" = x"yes"; then
2059 AC_DEFINE(HAVE_DEV64_T,1,[Whether the 'dev64_t' type is available])
2062 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIR64,[
2064 #if defined(HAVE_UNISTD_H)
2067 #include <sys/types.h>
2068 #include <dirent.h>],
2070 samba_cv_HAVE_STRUCT_DIR64=yes,samba_cv_HAVE_STRUCT_DIR64=no)])
2071 if test x"$samba_cv_HAVE_STRUCT_DIR64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2072 AC_DEFINE(HAVE_STRUCT_DIR64,1,[Whether the 'DIR64' abstract data type is available])
2075 AC_CACHE_CHECK([for struct dirent64],samba_cv_HAVE_STRUCT_DIRENT64,[
2077 #if defined(HAVE_UNISTD_H)
2080 #include <sys/types.h>
2081 #include <dirent.h>],
2082 [struct dirent64 de;],
2083 samba_cv_HAVE_STRUCT_DIRENT64=yes,samba_cv_HAVE_STRUCT_DIRENT64=no)])
2084 if test x"$samba_cv_HAVE_STRUCT_DIRENT64" = x"yes" && test x"$ac_cv_func_readdir64" = x"yes"; then
2085 AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Whether the 'dirent64' struct is available])
2088 AC_CACHE_CHECK([for major macro],samba_cv_HAVE_DEVICE_MAJOR_FN,[
2090 #if defined(HAVE_UNISTD_H)
2093 #include <sys/types.h>
2094 main() { dev_t dev; int i = major(dev); return 0; }],
2095 samba_cv_HAVE_DEVICE_MAJOR_FN=yes,samba_cv_HAVE_DEVICE_MAJOR_FN=no,samba_cv_HAVE_DEVICE_MAJOR_FN=cross)])
2096 if test x"$samba_cv_HAVE_DEVICE_MAJOR_FN" = x"yes"; then
2097 AC_DEFINE(HAVE_DEVICE_MAJOR_FN,1,[Whether the major macro for dev_t is available])
2100 AC_CACHE_CHECK([for minor macro],samba_cv_HAVE_DEVICE_MINOR_FN,[
2102 #if defined(HAVE_UNISTD_H)
2105 #include <sys/types.h>
2106 main() { dev_t dev; int i = minor(dev); return 0; }],
2107 samba_cv_HAVE_DEVICE_MINOR_FN=yes,samba_cv_HAVE_DEVICE_MINOR_FN=no,samba_cv_HAVE_DEVICE_MINOR_FN=cross)])
2108 if test x"$samba_cv_HAVE_DEVICE_MINOR_FN" = x"yes"; then
2109 AC_DEFINE(HAVE_DEVICE_MINOR_FN,1,[Whether the minor macro for dev_t is available])
2112 AC_CACHE_CHECK([for makedev macro],samba_cv_HAVE_MAKEDEV,[
2114 #if defined(HAVE_UNISTD_H)
2117 #include <sys/types.h>
2118 main() { dev_t dev = makedev(1,2); return 0; }],
2119 samba_cv_HAVE_MAKEDEV=yes,samba_cv_HAVE_MAKEDEV=no,samba_cv_HAVE_MAKEDEV=cross)])
2120 if test x"$samba_cv_HAVE_MAKEDEV" = x"yes"; then
2121 AC_DEFINE(HAVE_MAKEDEV,1,[Whether the macro for makedev is available])
2124 AC_CACHE_CHECK([for unsigned char],samba_cv_HAVE_UNSIGNED_CHAR,[
2125 AC_TRY_RUN([#include <stdio.h>
2126 main() { char c; c=250; exit((c > 0)?0:1); }],
2127 samba_cv_HAVE_UNSIGNED_CHAR=yes,samba_cv_HAVE_UNSIGNED_CHAR=no,samba_cv_HAVE_UNSIGNED_CHAR=cross)])
2128 if test x"$samba_cv_HAVE_UNSIGNED_CHAR" = x"yes"; then
2129 AC_DEFINE(HAVE_UNSIGNED_CHAR,1,[Whether the 'unsigned char' type is available])
2132 AC_CACHE_CHECK([for sin_len in sock],samba_cv_HAVE_SOCK_SIN_LEN,[
2133 AC_TRY_COMPILE([#include <sys/types.h>
2134 #include <sys/socket.h>
2135 #include <netinet/in.h>],
2136 [struct sockaddr_in sock; sock.sin_len = sizeof(sock);],
2137 samba_cv_HAVE_SOCK_SIN_LEN=yes,samba_cv_HAVE_SOCK_SIN_LEN=no)])
2138 if test x"$samba_cv_HAVE_SOCK_SIN_LEN" = x"yes"; then
2139 AC_DEFINE(HAVE_SOCK_SIN_LEN,1,[Whether the sockaddr_in struct has a sin_len property])
2142 AC_CACHE_CHECK([whether seekdir returns void],samba_cv_SEEKDIR_RETURNS_VOID,[
2143 AC_TRY_COMPILE([#include <sys/types.h>
2145 void seekdir(DIR *d, long loc) { return; }],[return 0;],
2146 samba_cv_SEEKDIR_RETURNS_VOID=yes,samba_cv_SEEKDIR_RETURNS_VOID=no)])
2147 if test x"$samba_cv_SEEKDIR_RETURNS_VOID" = x"yes"; then
2148 AC_DEFINE(SEEKDIR_RETURNS_VOID,1,[Whether seekdir returns void])
2151 AC_CACHE_CHECK([for __FUNCTION__ macro],samba_cv_HAVE_FUNCTION_MACRO,[
2152 AC_TRY_COMPILE([#include <stdio.h>], [printf("%s\n", __FUNCTION__);],
2153 samba_cv_HAVE_FUNCTION_MACRO=yes,samba_cv_HAVE_FUNCTION_MACRO=no)])
2154 if test x"$samba_cv_HAVE_FUNCTION_MACRO" = x"yes"; then
2155 AC_DEFINE(HAVE_FUNCTION_MACRO,1,[Whether there is a __FUNCTION__ macro])
2158 AC_CACHE_CHECK([if gettimeofday takes tz argument],samba_cv_HAVE_GETTIMEOFDAY_TZ,[
2160 #include <sys/time.h>
2162 main() { struct timeval tv; exit(gettimeofday(&tv, NULL));}],
2163 samba_cv_HAVE_GETTIMEOFDAY_TZ=yes,samba_cv_HAVE_GETTIMEOFDAY_TZ=no,samba_cv_HAVE_GETTIMEOFDAY_TZ=cross)])
2164 if test x"$samba_cv_HAVE_GETTIMEOFDAY_TZ" = x"yes"; then
2165 AC_DEFINE(HAVE_GETTIMEOFDAY_TZ,1,[Whether gettimeofday() is available])
2168 if test x"$samba_cv_WITH_PROFILE" = x"yes"; then
2170 # On some systems (eg. Linux) librt can pull in libpthread. We
2171 # don't want this to happen because libpthreads changes signal delivery
2172 # semantics in ways we are not prepared for. This breaks Linux oplocks
2173 # which rely on signals.
2175 AC_LIBTESTFUNC(rt, clock_gettime,
2177 AC_DEFINE(HAVE_CLOCK_GETTIME, 1,
2178 [Whether clock_gettime is available])
2179 SMB_CHECK_CLOCK_ID(CLOCK_MONOTONIC)
2180 SMB_CHECK_CLOCK_ID(CLOCK_PROCESS_CPUTIME_ID)
2181 SMB_CHECK_CLOCK_ID(CLOCK_REALTIME)
2186 AC_CACHE_CHECK([for va_copy],samba_cv_HAVE_VA_COPY,[
2187 AC_TRY_LINK([#include <stdarg.h>
2188 va_list ap1,ap2;], [va_copy(ap1,ap2);],
2189 samba_cv_HAVE_VA_COPY=yes,
2190 samba_cv_HAVE_VA_COPY=no)])
2191 if test x"$samba_cv_HAVE_VA_COPY" = x"yes"; then
2192 AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
2194 AC_CACHE_CHECK([for __va_copy],samba_cv_HAVE___VA_COPY,[
2195 AC_TRY_LINK([#include <stdarg.h>
2196 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
2197 samba_cv_HAVE___VA_COPY=yes,
2198 samba_cv_HAVE___VA_COPY=no)])
2199 if test x"$samba_cv_HAVE___VA_COPY" = x"yes"; then
2200 AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
2204 AC_CACHE_CHECK([for C99 vsnprintf],samba_cv_HAVE_C99_VSNPRINTF,[
2206 #include <sys/types.h>
2208 void foo(const char *format, ...) {
2213 va_start(ap, format);
2214 len = vsnprintf(buf, 0, format, ap);
2216 if (len != 5) exit(1);
2218 va_start(ap, format);
2219 len = vsnprintf(0, 0, format, ap);
2221 if (len != 5) exit(1);
2223 if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
2227 main() { foo("hello"); }
2229 samba_cv_HAVE_C99_VSNPRINTF=yes,samba_cv_HAVE_C99_VSNPRINTF=no,samba_cv_HAVE_C99_VSNPRINTF=cross)])
2230 if test x"$samba_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
2231 AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Whether there is a C99 compliant vsnprintf])
2234 AC_CACHE_CHECK([for broken readdir name],samba_cv_HAVE_BROKEN_READDIR_NAME,[
2235 AC_TRY_RUN([#include <sys/types.h>
2237 main() { struct dirent *di; DIR *d = opendir("."); di = readdir(d);
2238 if (di && di->d_name[-2] == '.' && di->d_name[-1] == 0 &&
2239 di->d_name[0] == 0) exit(0); exit(1);} ],
2240 samba_cv_HAVE_BROKEN_READDIR_NAME=yes,samba_cv_HAVE_BROKEN_READDIR_NAME=no,samba_cv_HAVE_BROKEN_READDIR_NAME=cross)])
2241 if test x"$samba_cv_HAVE_BROKEN_READDIR_NAME" = x"yes"; then
2242 AC_DEFINE(HAVE_BROKEN_READDIR_NAME,1,[Whether readdir() returns the wrong name offset])
2245 AC_CACHE_CHECK([for utimbuf],samba_cv_HAVE_UTIMBUF,[
2246 AC_TRY_COMPILE([#include <sys/types.h>
2247 #include <utime.h>],
2248 [struct utimbuf tbuf; tbuf.actime = 0; tbuf.modtime = 1; exit(utime("foo.c",&tbuf));],
2249 samba_cv_HAVE_UTIMBUF=yes,samba_cv_HAVE_UTIMBUF=no,samba_cv_HAVE_UTIMBUF=cross)])
2250 if test x"$samba_cv_HAVE_UTIMBUF" = x"yes"; then
2251 AC_DEFINE(HAVE_UTIMBUF,1,[Whether struct utimbuf is available])
2255 # Check utmp details, but only if our OS offers utmp.h
2256 if test x"$ac_cv_header_utmp_h" = x"yes"; then
2257 dnl utmp and utmpx come in many flavours
2258 dnl We need to check for many of them
2259 dnl But we don't need to do each and every one, because our code uses
2260 dnl mostly just the utmp (not utmpx) fields.
2262 AC_CHECK_FUNCS(pututline pututxline updwtmp updwtmpx getutmpx)
2264 AC_CACHE_CHECK([for ut_name in utmp],samba_cv_HAVE_UT_UT_NAME,[
2265 AC_TRY_COMPILE([#include <sys/types.h>
2267 [struct utmp ut; ut.ut_name[0] = 'a';],
2268 samba_cv_HAVE_UT_UT_NAME=yes,samba_cv_HAVE_UT_UT_NAME=no,samba_cv_HAVE_UT_UT_NAME=cross)])
2269 if test x"$samba_cv_HAVE_UT_UT_NAME" = x"yes"; then
2270 AC_DEFINE(HAVE_UT_UT_NAME,1,[Whether the utmp struct has a property ut_name])
2273 AC_CACHE_CHECK([for ut_user in utmp],samba_cv_HAVE_UT_UT_USER,[
2274 AC_TRY_COMPILE([#include <sys/types.h>
2276 [struct utmp ut; ut.ut_user[0] = 'a';],
2277 samba_cv_HAVE_UT_UT_USER=yes,samba_cv_HAVE_UT_UT_USER=no,samba_cv_HAVE_UT_UT_USER=cross)])
2278 if test x"$samba_cv_HAVE_UT_UT_USER" = x"yes"; then
2279 AC_DEFINE(HAVE_UT_UT_USER,1,[Whether the utmp struct has a property ut_user])
2282 AC_CACHE_CHECK([for ut_id in utmp],samba_cv_HAVE_UT_UT_ID,[
2283 AC_TRY_COMPILE([#include <sys/types.h>
2285 [struct utmp ut; ut.ut_id[0] = 'a';],
2286 samba_cv_HAVE_UT_UT_ID=yes,samba_cv_HAVE_UT_UT_ID=no,samba_cv_HAVE_UT_UT_ID=cross)])
2287 if test x"$samba_cv_HAVE_UT_UT_ID" = x"yes"; then
2288 AC_DEFINE(HAVE_UT_UT_ID,1,[Whether the utmp struct has a property ut_id])
2291 AC_CACHE_CHECK([for ut_host in utmp],samba_cv_HAVE_UT_UT_HOST,[
2292 AC_TRY_COMPILE([#include <sys/types.h>
2294 [struct utmp ut; ut.ut_host[0] = 'a';],
2295 samba_cv_HAVE_UT_UT_HOST=yes,samba_cv_HAVE_UT_UT_HOST=no,samba_cv_HAVE_UT_UT_HOST=cross)])
2296 if test x"$samba_cv_HAVE_UT_UT_HOST" = x"yes"; then
2297 AC_DEFINE(HAVE_UT_UT_HOST,1,[Whether the utmp struct has a property ut_host])
2300 AC_CACHE_CHECK([for ut_time in utmp],samba_cv_HAVE_UT_UT_TIME,[
2301 AC_TRY_COMPILE([#include <sys/types.h>
2303 [struct utmp ut; time_t t; ut.ut_time = t;],
2304 samba_cv_HAVE_UT_UT_TIME=yes,samba_cv_HAVE_UT_UT_TIME=no,samba_cv_HAVE_UT_UT_TIME=cross)])
2305 if test x"$samba_cv_HAVE_UT_UT_TIME" = x"yes"; then
2306 AC_DEFINE(HAVE_UT_UT_TIME,1,[Whether the utmp struct has a property ut_time])
2309 AC_CACHE_CHECK([for ut_tv in utmp],samba_cv_HAVE_UT_UT_TV,[
2310 AC_TRY_COMPILE([#include <sys/types.h>
2312 [struct utmp ut; struct timeval tv; ut.ut_tv = tv;],
2313 samba_cv_HAVE_UT_UT_TV=yes,samba_cv_HAVE_UT_UT_TV=no,samba_cv_HAVE_UT_UT_TV=cross)])
2314 if test x"$samba_cv_HAVE_UT_UT_TV" = x"yes"; then
2315 AC_DEFINE(HAVE_UT_UT_TV,1,[Whether the utmp struct has a property ut_tv])
2318 AC_CACHE_CHECK([for ut_type in utmp],samba_cv_HAVE_UT_UT_TYPE,[
2319 AC_TRY_COMPILE([#include <sys/types.h>
2321 [struct utmp ut; ut.ut_type = 0;],
2322 samba_cv_HAVE_UT_UT_TYPE=yes,samba_cv_HAVE_UT_UT_TYPE=no,samba_cv_HAVE_UT_UT_TYPE=cross)])
2323 if test x"$samba_cv_HAVE_UT_UT_TYPE" = x"yes"; then
2324 AC_DEFINE(HAVE_UT_UT_TYPE,1,[Whether the utmp struct has a property ut_type])
2327 AC_CACHE_CHECK([for ut_pid in utmp],samba_cv_HAVE_UT_UT_PID,[
2328 AC_TRY_COMPILE([#include <sys/types.h>
2330 [struct utmp ut; ut.ut_pid = 0;],
2331 samba_cv_HAVE_UT_UT_PID=yes,samba_cv_HAVE_UT_UT_PID=no,samba_cv_HAVE_UT_UT_PID=cross)])
2332 if test x"$samba_cv_HAVE_UT_UT_PID" = x"yes"; then
2333 AC_DEFINE(HAVE_UT_UT_PID,1,[Whether the utmp struct has a property ut_pid])
2336 AC_CACHE_CHECK([for ut_exit in utmp],samba_cv_HAVE_UT_UT_EXIT,[
2337 AC_TRY_COMPILE([#include <sys/types.h>
2339 [struct utmp ut; ut.ut_exit.e_exit = 0;],
2340 samba_cv_HAVE_UT_UT_EXIT=yes,samba_cv_HAVE_UT_UT_EXIT=no,samba_cv_HAVE_UT_UT_EXIT=cross)])
2341 if test x"$samba_cv_HAVE_UT_UT_EXIT" = x"yes"; then
2342 AC_DEFINE(HAVE_UT_UT_EXIT,1,[Whether the utmp struct has a property ut_exit])
2345 AC_CACHE_CHECK([for ut_addr in utmp],samba_cv_HAVE_UT_UT_ADDR,[
2346 AC_TRY_COMPILE([#include <sys/types.h>
2348 [struct utmp ut; ut.ut_addr = 0;],
2349 samba_cv_HAVE_UT_UT_ADDR=yes,samba_cv_HAVE_UT_UT_ADDR=no,samba_cv_HAVE_UT_UT_ADDR=cross)])
2350 if test x"$samba_cv_HAVE_UT_UT_ADDR" = x"yes"; then
2351 AC_DEFINE(HAVE_UT_UT_ADDR,1,[Whether the utmp struct has a property ut_addr])
2354 if test x$ac_cv_func_pututline = xyes ; then
2355 AC_CACHE_CHECK([whether pututline returns pointer],samba_cv_PUTUTLINE_RETURNS_UTMP,[
2356 AC_TRY_COMPILE([#include <sys/types.h>
2358 [struct utmp utarg; struct utmp *utreturn; utreturn = pututline(&utarg);],
2359 samba_cv_PUTUTLINE_RETURNS_UTMP=yes,samba_cv_PUTUTLINE_RETURNS_UTMP=no)])
2360 if test x"$samba_cv_PUTUTLINE_RETURNS_UTMP" = x"yes"; then
2361 AC_DEFINE(PUTUTLINE_RETURNS_UTMP,1,[Whether pututline returns pointer])
2365 AC_CACHE_CHECK([for ut_syslen in utmpx],samba_cv_HAVE_UX_UT_SYSLEN,[
2366 AC_TRY_COMPILE([#include <sys/types.h>
2367 #include <utmpx.h>],
2368 [struct utmpx ux; ux.ut_syslen = 0;],
2369 samba_cv_HAVE_UX_UT_SYSLEN=yes,samba_cv_HAVE_UX_UT_SYSLEN=no,samba_cv_HAVE_UX_UT_SYSLEN=cross)])
2370 if test x"$samba_cv_HAVE_UX_UT_SYSLEN" = x"yes"; then
2371 AC_DEFINE(HAVE_UX_UT_SYSLEN,1,[Whether the utmpx struct has a property ut_syslen])
2378 ICONV_LOCATION=standard
2379 LOOK_DIRS="/usr /usr/local /sw /opt"
2380 AC_ARG_WITH(libiconv,
2381 [ --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
2383 if test "$withval" = "no" ; then
2384 AC_MSG_ERROR([argument to --with-libiconv must be a directory])
2386 if test "$withval" != "yes" ; then
2388 LOOK_DIRS="$withval"
2393 for i in $LOOK_DIRS ; do
2395 save_LDFLAGS=$LDFLAGS
2396 save_CPPFLAGS=$CPPFLAGS
2399 CPPFLAGS="$CPPFLAGS -I$i/include"
2400 dnl This is here to handle -withval stuff for --with-libiconv
2401 dnl Perhaps we should always add a -L
2403 dnl Check lib and lib32 library variants to cater for IRIX ABI-specific
2404 dnl installation paths. This gets a little tricky since we might have iconv
2405 dnl in both libiconv and in libc. In this case the jm_ICONV test will always
2406 dnl succeed when the header is found. To counter this, make sure the
2407 dnl library directory is there and check the ABI directory first (which
2408 dnl should be harmless on other systems.
2409 dnl For IA64 HPUX systems, the libs are located in lib/hpux32 instead of lib.
2410 for l in "lib32" "lib" "lib/hpux32"; do
2411 if test -d "$i/$l" ; then
2412 LDFLAGS="$save_LDFLAGS -L$i/$l"
2414 export LDFLAGS LIBS CPPFLAGS
2415 dnl Try to find iconv(3)
2417 if test x"$ICONV_FOUND" = "xyes" ; then
2424 if test x"$ICONV_FOUND" = "xyes" ; then
2425 LDFLAGS=$save_LDFLAGS
2426 LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2427 CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2430 export LDFLAGS LIBS CPPFLAGS
2431 dnl Now, check for a working iconv ... we want to do it here because
2432 dnl there might be a working iconv further down the list of LOOK_DIRS
2435 # check for iconv in libc
2436 ic_save_LIBS="$LIBS"
2437 if test x"$ICONV_PATH_SPEC" = "xyes" ; then
2438 LIBS="$LIBS -L$ICONV_LOCATION/$libext"
2440 if test x"$jm_cv_lib_iconv" != x; then
2441 LIBS="$LIBS -l$jm_cv_lib_iconv"
2443 dnl AC_CACHE_CHECK([for working iconv],samba_cv_HAVE_NATIVE_ICONV,[
2444 default_dos_charset=no
2445 default_display_charset=no
2446 default_unix_charset=no
2448 # check for default dos charset name
2449 for j in CP850 IBM850 ; do
2451 if test x"$ICONV_CHARSET" = x"$j"; then
2452 default_dos_charset="\"$j\""
2456 # check for default display charset name
2457 for j in ASCII 646 ; do
2459 if test x"$ICONV_CHARSET" = x"$j"; then
2460 default_display_charset="\"$j\""
2464 # check for default unix charset name
2465 for j in UTF-8 UTF8 ; do
2467 if test x"$ICONV_CHARSET" = x"$j"; then
2468 default_unix_charset="\"$j\""
2473 if test "$default_dos_charset" != "no" -a \
2474 "$default_dos_charset" != "cross" -a \
2475 "$default_display_charset" != "no" -a \
2476 "$default_display_charset" != "cross" -a \
2477 "$default_unix_charset" != "no" -a \
2478 "$default_unix_charset" != "cross"
2480 samba_cv_HAVE_NATIVE_ICONV=yes
2481 else if test "$default_dos_charset" = "cross" -o \
2482 "$default_display_charset" = "cross" -o \
2483 "$default_unix_charset" = "cross"
2485 samba_cv_HAVE_NATIVE_ICONV=cross
2487 samba_cv_HAVE_NATIVE_ICONV=no
2492 LIBS="$ic_save_LIBS"
2493 if test x"$samba_cv_HAVE_NATIVE_ICONV" = x"yes"; then
2494 CPPFLAGS=$save_CPPFLAGS
2495 LDFLAGS=$save_LDFLAGS
2497 if test x"$jm_cv_lib_iconv" != x; then
2498 LIBS="$LIBS -l$jm_cv_lib_iconv"
2500 dnl Add the flags we need to CPPFLAGS and LDFLAGS
2501 CFLAGS_ADD_DIR(CPPFLAGS, "$i/include")
2502 LIB_ADD_DIR(LDFLAGS, "$i/$libext")
2504 AC_DEFINE(HAVE_NATIVE_ICONV,1,[Whether to use native iconv])
2505 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,$default_dos_charset,[Default dos charset name])
2506 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,$default_display_charset,[Default display charset name])
2507 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,$default_unix_charset,[Default unix charset name])
2510 dnl We didn't find a working iconv, so keep going
2512 dnl We only need to clean these up here for the next pass through the loop
2513 CPPFLAGS=$save_CPPFLAGS
2514 LDFLAGS=$save_LDFLAGS
2516 export LDFLAGS LIBS CPPFLAGS
2521 if test x"$ICONV_FOUND" = x"no" -o x"$samba_cv_HAVE_NATIVE_ICONV" != x"yes" ; then
2522 AC_MSG_WARN([Sufficient support for iconv function was not found.
2523 Install libiconv from http://freshmeat.net/projects/libiconv/ for better charset compatibility!])
2524 AC_DEFINE_UNQUOTED(DEFAULT_DOS_CHARSET,"ASCII",[Default dos charset name])
2525 AC_DEFINE_UNQUOTED(DEFAULT_DISPLAY_CHARSET,"ASCII",[Default display charset name])
2526 AC_DEFINE_UNQUOTED(DEFAULT_UNIX_CHARSET,"UTF8",[Default unix charset name])
2530 AC_CACHE_CHECK([for Linux kernel oplocks],samba_cv_HAVE_KERNEL_OPLOCKS_LINUX,[
2532 #include <sys/types.h>
2535 #define F_GETLEASE 1025
2538 int fd = open("/dev/null", O_RDONLY);
2539 return fcntl(fd, F_GETLEASE, 0) == -1;
2542 samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=no,samba_cv_HAVE_KERNEL_OPLOCKS_LINUX=cross)])
2543 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
2544 AC_DEFINE(HAVE_KERNEL_OPLOCKS_LINUX,1,[Whether to use linux kernel oplocks])
2547 AC_CACHE_CHECK([for kernel change notify support],samba_cv_HAVE_KERNEL_CHANGE_NOTIFY,[
2549 #include <sys/types.h>
2553 #define F_NOTIFY 1026
2556 exit(fcntl(open("/tmp", O_RDONLY), F_NOTIFY, 0) == -1 ? 1 : 0);
2559 samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=yes,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=no,samba_cv_HAVE_KERNEL_CHANGE_NOTIFY=cross)])
2560 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
2561 AC_DEFINE(HAVE_KERNEL_CHANGE_NOTIFY,1,[Whether kernel notifies changes])
2564 AC_CACHE_CHECK([for inotify support],samba_cv_HAVE_INOTIFY,[
2565 AC_CHECK_HEADERS(linux/inotify.h asm/unistd.h)
2566 AC_CHECK_FUNC(inotify_init)
2567 AC_HAVE_DECL(__NR_inotify_init, [#include <asm/unistd.h>])
2569 samba_cv_HAVE_INOTIFY=yes,
2570 samba_cv_HAVE_INOTIFY=no,
2571 samba_cv_HAVE_INOTIFY=cross)
2573 if test x"$ac_cv_func_inotify_init" = x"yes" -a x"$ac_cv_header_linux_inotify_h" = x"yes"; then
2574 AC_DEFINE(HAVE_INOTIFY,1,[Whether kernel has inotify support])
2577 #################################################
2578 # Check if FAM notifications are available. For FAM info, see
2579 # http://oss.sgi.com/projects/fam/
2580 # http://savannah.nongnu.org/projects/fam/
2582 [ --enable-fam Turn on FAM support (default=auto)])
2584 if test x$enable_fam != xno; then
2585 AC_CHECK_HEADERS(fam.h, [samba_cv_HAVE_FAM_H=yes], [samba_cv_HAVE_FAM_H=no])
2586 if test x"$samba_cv_HAVE_FAM_H" = x"yes"; then
2587 # On IRIX, libfam requires libC, but other FAM implementations
2588 # might not need it.
2589 AC_CHECK_LIB(fam, FAMOpen2,
2590 [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam"],
2591 [samba_cv_HAVE_LIBFAM=no])
2593 if test x"$samba_cv_HAVE_LIBFAM" = x"no" ; then
2595 AC_CHECK_LIB_EXT(fam, samba_fam_xtra, FAMOpen2,
2596 [samba_cv_HAVE_LIBFAM=yes; samba_fam_libs="-lfam -lC"],
2597 [samba_cv_HAVE_LIBFAM=no])
2598 unset samba_fam_xtra
2602 if test x"$samba_cv_HAVE_LIBFAM" = x"yes" ; then
2603 default_shared_modules="$default_shared_modules vfs_notify_fam"
2604 AC_TRY_COMPILE([#include <fam.h>],
2605 [FAMCodes code = FAMChanged;],
2606 AC_DEFINE(HAVE_FAM_H_FAMCODES_TYPEDEF, 1,
2607 [Whether fam.h contains a typedef for enum FAMCodes]),
2611 if test x$enable_fam = xyes && test x"$samba_cv_HAVE_LIBFAM" != xyes ; then
2612 AC_MSG_ERROR(FAM support requested but FAM library not available )
2616 #################################################
2617 # Check for DMAPI interfaces in libdm/libjfsdm/libxsdm
2619 SMB_CHECK_DMAPI([], AC_MSG_NOTICE(DMAPI support not present) )
2621 AC_CACHE_CHECK([for kernel share modes],samba_cv_HAVE_KERNEL_SHARE_MODES,[
2623 #include <sys/types.h>
2626 #include <sys/file.h>
2628 #define LOCK_MAND 32
2629 #define LOCK_READ 64
2632 exit(flock(open("/dev/null", O_RDWR), LOCK_MAND|LOCK_READ) != 0);
2635 samba_cv_HAVE_KERNEL_SHARE_MODES=yes,samba_cv_HAVE_KERNEL_SHARE_MODES=no,samba_cv_HAVE_KERNEL_SHARE_MODES=cross)])
2636 if test x"$samba_cv_HAVE_KERNEL_SHARE_MODES" = x"yes"; then
2637 AC_DEFINE(HAVE_KERNEL_SHARE_MODES,1,[Whether the kernel supports share modes])
2641 AC_CACHE_CHECK([for IRIX kernel oplock type definitions],samba_cv_HAVE_KERNEL_OPLOCKS_IRIX,[
2642 AC_TRY_COMPILE([#include <sys/types.h>
2643 #include <fcntl.h>],
2644 [oplock_stat_t t; t.os_state = OP_REVOKE; t.os_dev = 1; t.os_ino = 1;],
2645 samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=yes,samba_cv_HAVE_KERNEL_OPLOCKS_IRIX=no)])
2646 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_IRIX" = x"yes"; then
2647 AC_DEFINE(HAVE_KERNEL_OPLOCKS_IRIX,1,[Whether IRIX kernel oplock type definitions are available])
2650 #################################################
2651 # Check for POSIX capability support
2653 AC_CHECK_HEADER(sys/capability.h, [samba_cv_HAVE_SYS_CAPABILITY_H=yes;
2654 AC_DEFINE(HAVE_SYS_CAPABILITY_H, 1, Whether sys/capability.h is present)],
2657 if test x"$samba_cv_HAVE_SYS_CAPABILITY_H" = x"yes"; then
2660 AC_LIBTESTFUNC(cap, cap_get_proc)
2662 AC_CACHE_CHECK([for POSIX capabilities],
2663 samba_cv_HAVE_POSIX_CAPABILITIES,
2666 #include <sys/types.h>
2667 #include <sys/capability.h>
2670 cap_value_t vals[1];
2671 if (!(cap = cap_get_proc()))
2673 vals[0] = CAP_CHOWN;
2674 cap_set_flag(cap, CAP_INHERITABLE, 1, vals, CAP_CLEAR);
2678 samba_cv_HAVE_POSIX_CAPABILITIES=yes,
2679 samba_cv_HAVE_POSIX_CAPABILITIES=no,
2680 samba_cv_HAVE_POSIX_CAPABILITIES=cross)
2683 if test x"$samba_cv_HAVE_POSIX_CAPABILITIES" = x"yes"; then
2684 AC_DEFINE(HAVE_POSIX_CAPABILITIES, 1,
2685 [Whether POSIX capabilities are available])
2693 # Check for int16, uint16, int32 and uint32 in rpc/types.h included from rpc/rpc.h
2694 # This is *really* broken but some systems (DEC OSF1) do this.... JRA.
2697 AC_CACHE_CHECK([for int16 typedef included by rpc/rpc.h],samba_cv_HAVE_INT16_FROM_RPC_RPC_H,[
2698 AC_TRY_COMPILE([#include <sys/types.h>
2699 #if defined(HAVE_RPC_RPC_H)
2700 #include <rpc/rpc.h>
2703 samba_cv_HAVE_INT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT16_FROM_RPC_RPC_H=no)])
2704 if test x"$samba_cv_HAVE_INT16_FROM_RPC_RPC_H" = x"yes"; then
2705 AC_DEFINE(HAVE_INT16_FROM_RPC_RPC_H,1,[Whether int16 typedef is included by rpc/rpc.h])
2708 AC_CACHE_CHECK([for uint16 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT16_FROM_RPC_RPC_H,[
2709 AC_TRY_COMPILE([#include <sys/types.h>
2710 #if defined(HAVE_RPC_RPC_H)
2711 #include <rpc/rpc.h>
2714 samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT16_FROM_RPC_RPC_H=no)])
2715 if test x"$samba_cv_HAVE_UINT16_FROM_RPC_RPC_H" = x"yes"; then
2716 AC_DEFINE(HAVE_UINT16_FROM_RPC_RPC_H,1,[Whether uint16 typedef is included by rpc/rpc.h])
2719 AC_CACHE_CHECK([for int32 typedef included by rpc/rpc.h],samba_cv_HAVE_INT32_FROM_RPC_RPC_H,[
2720 AC_TRY_COMPILE([#include <sys/types.h>
2721 #if defined(HAVE_RPC_RPC_H)
2722 #include <rpc/rpc.h>
2725 samba_cv_HAVE_INT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_INT32_FROM_RPC_RPC_H=no)])
2726 if test x"$samba_cv_HAVE_INT32_FROM_RPC_RPC_H" = x"yes"; then
2727 AC_DEFINE(HAVE_INT32_FROM_RPC_RPC_H,1,[Whether int32 typedef is included by rpc/rpc.h])
2730 AC_CACHE_CHECK([for uint32 typedef included by rpc/rpc.h],samba_cv_HAVE_UINT32_FROM_RPC_RPC_H,[
2731 AC_TRY_COMPILE([#include <sys/types.h>
2732 #if defined(HAVE_RPC_RPC_H)
2733 #include <rpc/rpc.h>
2736 samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=yes,samba_cv_HAVE_UINT32_FROM_RPC_RPC_H=no)])
2737 if test x"$samba_cv_HAVE_UINT32_FROM_RPC_RPC_H" = x"yes"; then
2738 AC_DEFINE(HAVE_UINT32_FROM_RPC_RPC_H,1,[Whether uint32 typedef is included by rpc/rpc.h])
2742 dnl Some systems (SCO) have a problem including
2743 dnl <prot.h> and <rpc/rpc.h> due to AUTH_ERROR being defined
2744 dnl as a #define in <prot.h> and as part of an enum
2748 AC_CACHE_CHECK([for conflicting AUTH_ERROR define in rpc/rpc.h],samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT,[
2749 AC_TRY_COMPILE([#include <sys/types.h>
2750 #ifdef HAVE_SYS_SECURITY_H
2751 #include <sys/security.h>
2753 #endif /* HAVE_SYS_SECURITY_H */
2754 #if defined(HAVE_RPC_RPC_H)
2755 #include <rpc/rpc.h>
2758 samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=no,samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT=yes)])
2759 if test x"$samba_cv_HAVE_RPC_AUTH_ERROR_CONFLICT" = x"yes"; then
2760 AC_DEFINE(HAVE_RPC_AUTH_ERROR_CONFLICT,1,[Whether there is a conflicting AUTH_ERROR define in rpc/rpc.h])
2763 AC_MSG_CHECKING([for test routines])
2764 AC_TRY_RUN([#include "${srcdir-.}/tests/trivial.c"],
2766 AC_MSG_ERROR([cant find test code. Aborting config]),
2767 AC_MSG_WARN([cannot run when cross-compiling]))
2769 AC_CACHE_CHECK([for ftruncate extend],samba_cv_HAVE_FTRUNCATE_EXTEND,[
2770 AC_TRY_RUN([#include "${srcdir-.}/tests/ftruncate.c"],
2771 samba_cv_HAVE_FTRUNCATE_EXTEND=yes,samba_cv_HAVE_FTRUNCATE_EXTEND=no,samba_cv_HAVE_FTRUNCATE_EXTEND=cross)])
2772 if test x"$samba_cv_HAVE_FTRUNCATE_EXTEND" = x"yes"; then
2773 AC_DEFINE(HAVE_FTRUNCATE_EXTEND,1,[Truncate extend])
2776 AC_CACHE_CHECK([for AF_LOCAL socket support], samba_cv_HAVE_WORKING_AF_LOCAL, [
2777 AC_TRY_RUN([#include "${srcdir-.}/tests/unixsock.c"],
2778 samba_cv_HAVE_WORKING_AF_LOCAL=yes,
2779 samba_cv_HAVE_WORKING_AF_LOCAL=no,
2780 samba_cv_HAVE_WORKING_AF_LOCAL=cross)])
2781 if test x"$samba_cv_HAVE_WORKING_AF_LOCAL" != xno
2783 AC_DEFINE(HAVE_WORKING_AF_LOCAL, 1, [Define if you have working AF_LOCAL sockets])
2786 AC_CACHE_CHECK([for broken getgroups],samba_cv_HAVE_BROKEN_GETGROUPS,[
2787 AC_TRY_RUN([#include "${srcdir-.}/tests/getgroups.c"],
2788 samba_cv_HAVE_BROKEN_GETGROUPS=yes,samba_cv_HAVE_BROKEN_GETGROUPS=no,samba_cv_HAVE_BROKEN_GETGROUPS=cross)])
2789 if test x"$samba_cv_HAVE_BROKEN_GETGROUPS" = x"yes"; then
2790 AC_DEFINE(HAVE_BROKEN_GETGROUPS,1,[Whether getgroups is broken])
2793 AC_CACHE_CHECK([for secure mkstemp],samba_cv_HAVE_SECURE_MKSTEMP,[
2794 AC_TRY_RUN([#include <stdlib.h>
2795 #include <sys/types.h>
2796 #include <sys/stat.h>
2800 char tpl[20]="/tmp/test.XXXXXX";
2801 int fd = mkstemp(tpl);
2802 if (fd == -1) exit(1);
2804 if (fstat(fd, &st) != 0) exit(1);
2805 if ((st.st_mode & 0777) != 0600) exit(1);
2808 samba_cv_HAVE_SECURE_MKSTEMP=yes,
2809 samba_cv_HAVE_SECURE_MKSTEMP=no,
2810 samba_cv_HAVE_SECURE_MKSTEMP=cross)])
2811 if test x"$samba_cv_HAVE_SECURE_MKSTEMP" = x"yes"; then
2812 AC_DEFINE(HAVE_SECURE_MKSTEMP,1,[Whether mkstemp is secure])
2815 AC_CACHE_CHECK([for broken readdir],samba_cv_HAVE_BROKEN_READDIR,[
2817 #include "${srcdir-.}/lib/replace/test/os2_delete.c"
2819 return test_readdir_os2_delete();
2822 [samba_cv_HAVE_BROKEN_READDIR=no],
2823 [samba_cv_HAVE_BROKEN_READDIR=yes],
2824 [samba_cv_HAVE_BROKEN_READDIR="assuming not"])])
2826 if test x"$samba_cv_HAVE_BROKEN_READDIR" = x"yes"; then
2827 AC_CACHE_CHECK([for replacing readdir],samba_cv_REPLACE_READDIR,[
2829 #include "${srcdir-.}/lib/repdir.c"
2830 #include "${srcdir-.}/lib/replace/test/os2_delete.c"
2832 return test_readdir_os2_delete();
2834 samba_cv_REPLACE_READDIR=yes,samba_cv_REPLACE_READDIR=no)])
2837 if test x"$samba_cv_REPLACE_READDIR" = x"yes"; then
2838 AC_DEFINE(REPLACE_READDIR,1,[replace readdir])
2841 SMB_CHECK_SYSCONF(_SC_NGROUPS_MAX)
2842 SMB_CHECK_SYSCONF(_SC_NPROC_ONLN)
2843 SMB_CHECK_SYSCONF(_SC_NPROCESSORS_ONLN)
2844 SMB_CHECK_SYSCONF(_SC_PAGESIZE)
2845 AC_CHECK_FUNCS(getpagesize)
2848 # look for a method of finding the list of network interfaces
2850 AC_CACHE_CHECK([for iface AIX],samba_cv_HAVE_IFACE_AIX,[
2851 SAVE_CPPFLAGS="$CPPFLAGS"
2852 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2854 #define HAVE_IFACE_AIX 1
2855 #define AUTOCONF_TEST 1
2856 #undef _XOPEN_SOURCE_EXTENDED
2857 #include "${srcdir-.}/lib/interfaces.c"],
2858 samba_cv_HAVE_IFACE_AIX=yes,samba_cv_HAVE_IFACE_AIX=no,samba_cv_HAVE_IFACE_AIX=cross)])
2859 CPPFLAGS="$SAVE_CPPFLAGS"
2860 if test x"$samba_cv_HAVE_IFACE_AIX" = x"yes"; then
2861 iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
2864 if test $iface = no; then
2865 AC_CACHE_CHECK([for iface ifconf],samba_cv_HAVE_IFACE_IFCONF,[
2866 SAVE_CPPFLAGS="$CPPFLAGS"
2867 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2869 #define HAVE_IFACE_IFCONF 1
2870 #define AUTOCONF_TEST 1
2871 #include "${srcdir-.}/lib/interfaces.c"],
2872 samba_cv_HAVE_IFACE_IFCONF=yes,samba_cv_HAVE_IFACE_IFCONF=no,samba_cv_HAVE_IFACE_IFCONF=cross)])
2873 CPPFLAGS="$SAVE_CPPFLAGS"
2874 if test x"$samba_cv_HAVE_IFACE_IFCONF" = x"yes"; then
2875 iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
2879 if test $iface = no; then
2880 AC_CACHE_CHECK([for iface ifreq],samba_cv_HAVE_IFACE_IFREQ,[
2881 SAVE_CPPFLAGS="$CPPFLAGS"
2882 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
2884 #define HAVE_IFACE_IFREQ 1
2885 #define AUTOCONF_TEST 1
2886 #include "${srcdir-.}/lib/interfaces.c"],
2887 samba_cv_HAVE_IFACE_IFREQ=yes,samba_cv_HAVE_IFACE_IFREQ=no,samba_cv_HAVE_IFACE_IFREQ=cross)])
2888 CPPFLAGS="$SAVE_CPPFLAGS"
2889 if test x"$samba_cv_HAVE_IFACE_IFREQ" = x"yes"; then
2890 iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
2895 ################################################
2896 # look for a method of setting the effective uid
2898 if test $seteuid = no; then
2899 AC_CACHE_CHECK([for setresuid],samba_cv_USE_SETRESUID,[
2901 #define AUTOCONF_TEST 1
2902 #define USE_SETRESUID 1
2903 #include "confdefs.h"
2904 #include "${srcdir-.}/lib/util_sec.c"],
2905 samba_cv_USE_SETRESUID=yes,samba_cv_USE_SETRESUID=no,samba_cv_USE_SETRESUID=cross)])
2906 if test x"$samba_cv_USE_SETRESUID" = x"yes"; then
2907 seteuid=yes;AC_DEFINE(USE_SETRESUID,1,[Whether setresuid() is available])
2912 if test $seteuid = no; then
2913 AC_CACHE_CHECK([for setreuid],samba_cv_USE_SETREUID,[
2915 #define AUTOCONF_TEST 1
2916 #define USE_SETREUID 1
2917 #include "confdefs.h"
2918 #include "${srcdir-.}/lib/util_sec.c"],
2919 samba_cv_USE_SETREUID=yes,samba_cv_USE_SETREUID=no,samba_cv_USE_SETREUID=cross)])
2920 if test x"$samba_cv_USE_SETREUID" = x"yes"; then
2921 seteuid=yes;AC_DEFINE(USE_SETREUID,1,[Whether setreuid() is available])
2925 if test $seteuid = no; then
2926 AC_CACHE_CHECK([for seteuid],samba_cv_USE_SETEUID,[
2928 #define AUTOCONF_TEST 1
2929 #define USE_SETEUID 1
2930 #include "confdefs.h"
2931 #include "${srcdir-.}/lib/util_sec.c"],
2932 samba_cv_USE_SETEUID=yes,samba_cv_USE_SETEUID=no,samba_cv_USE_SETEUID=cross)])
2933 if test x"$samba_cv_USE_SETEUID" = x"yes"; then
2934 seteuid=yes;AC_DEFINE(USE_SETEUID,1,[Whether seteuid() is available])
2938 if test $seteuid = no; then
2939 AC_CACHE_CHECK([for setuidx],samba_cv_USE_SETUIDX,[
2941 #define AUTOCONF_TEST 1
2942 #define USE_SETUIDX 1
2943 #include "confdefs.h"
2944 #include "${srcdir-.}/lib/util_sec.c"],
2945 samba_cv_USE_SETUIDX=yes,samba_cv_USE_SETUIDX=no,samba_cv_USE_SETUIDX=cross)])
2946 if test x"$samba_cv_USE_SETUIDX" = x"yes"; then
2947 seteuid=yes;AC_DEFINE(USE_SETUIDX,1,[Whether setuidx() is available])
2952 AC_CACHE_CHECK([for working mmap],samba_cv_HAVE_MMAP,[
2953 AC_TRY_RUN([#include "${srcdir-.}/tests/shared_mmap.c"],
2954 samba_cv_HAVE_MMAP=yes,samba_cv_HAVE_MMAP=no,samba_cv_HAVE_MMAP=cross)])
2955 if test x"$samba_cv_HAVE_MMAP" = x"yes"; then
2956 AC_DEFINE(HAVE_MMAP,1,[Whether mmap works])
2959 AC_CACHE_CHECK([for fcntl locking],samba_cv_HAVE_FCNTL_LOCK,[
2960 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock.c"],
2961 samba_cv_HAVE_FCNTL_LOCK=yes,samba_cv_HAVE_FCNTL_LOCK=no,samba_cv_HAVE_FCNTL_LOCK=cross)])
2962 if test x"$samba_cv_HAVE_FCNTL_LOCK" = x"yes"; then
2963 AC_DEFINE(HAVE_FCNTL_LOCK,1,[Whether fcntl locking is available])
2966 AC_CACHE_CHECK([for broken (glibc2.1/x86) 64 bit fcntl locking],samba_cv_HAVE_BROKEN_FCNTL64_LOCKS,[
2967 AC_TRY_RUN([#include "${srcdir-.}/tests/fcntl_lock64.c"],
2968 samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=yes,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=no,samba_cv_HAVE_BROKEN_FCNTL64_LOCKS=cross)])
2969 if test x"$samba_cv_HAVE_BROKEN_FCNTL64_LOCKS" = x"yes"; then
2970 AC_DEFINE(HAVE_BROKEN_FCNTL64_LOCKS,1,[Whether fcntl64 locks are broken])
2975 dnl Don't check for 64 bit fcntl locking if we know that the
2976 dnl glibc2.1 broken check has succeeded.
2979 AC_CACHE_CHECK([for 64 bit fcntl locking],samba_cv_HAVE_STRUCT_FLOCK64,[
2981 #if defined(HAVE_UNISTD_H)
2991 #ifdef HAVE_SYS_FCNTL_H
2992 #include <sys/fcntl.h>
2994 main() { struct flock64 fl64;
2995 #if defined(F_SETLKW64) && defined(F_SETLK64) && defined(F_GETLK64)
3001 samba_cv_HAVE_STRUCT_FLOCK64=yes,samba_cv_HAVE_STRUCT_FLOCK64=no,samba_cv_HAVE_STRUCT_FLOCK64=cross)])
3003 if test x"$samba_cv_HAVE_STRUCT_FLOCK64" = x"yes"; then
3004 AC_DEFINE(HAVE_STRUCT_FLOCK64,1,[Whether the flock64 struct is available])
3008 AC_CACHE_CHECK([for st_blocks in struct stat],samba_cv_HAVE_STAT_ST_BLOCKS,[
3009 AC_TRY_COMPILE([#include <sys/types.h>
3010 #include <sys/stat.h>
3011 #include <unistd.h>],
3012 [struct stat st; st.st_blocks = 0;],
3013 samba_cv_HAVE_STAT_ST_BLOCKS=yes,samba_cv_HAVE_STAT_ST_BLOCKS=no,samba_cv_HAVE_STAT_ST_BLOCKS=cross)])
3014 if test x"$samba_cv_HAVE_STAT_ST_BLOCKS" = x"yes"; then
3015 AC_DEFINE(HAVE_STAT_ST_BLOCKS,1,[Whether the stat struct has a st_block property])
3018 AC_CACHE_CHECK([for st_blksize in struct stat],samba_cv_HAVE_STAT_ST_BLKSIZE,[
3019 AC_TRY_COMPILE([#include <sys/types.h>
3020 #include <sys/stat.h>
3021 #include <unistd.h>],
3022 [struct stat st; st.st_blksize = 0;],
3023 samba_cv_HAVE_STAT_ST_BLKSIZE=yes,samba_cv_HAVE_STAT_ST_BLKSIZE=no,samba_cv_HAVE_STAT_ST_BLKSIZE=cross)])
3024 if test x"$samba_cv_HAVE_STAT_ST_BLKSIZE" = x"yes"; then
3025 AC_DEFINE(HAVE_STAT_ST_BLKSIZE,1,[Whether the stat struct has a st_blksize property])
3028 AC_CACHE_CHECK([for st_flags in struct stat],
3029 samba_cv_HAVE_STAT_ST_FLAGS,
3031 AC_TRY_COMPILE([#include <sys/types.h>
3032 #include <sys/stat.h>
3033 #include <unistd.h>],
3034 [struct stat st; st.st_flags = 0;],
3035 samba_cv_HAVE_STAT_ST_FLAGS=yes,
3036 samba_cv_HAVE_STAT_ST_FLAGS=no,
3037 samba_cv_HAVE_STAT_ST_FLAGS=cross)
3040 if test x"$samba_cv_HAVE_STAT_ST_FLAGS" = x"yes"; then
3041 AC_DEFINE(HAVE_STAT_ST_FLAGS, 1,
3042 [Whether the stat struct has a st_flags member])
3047 AC_CACHE_CHECK([for broken RedHat 7.2 system header files],samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS,[
3049 #ifdef HAVE_SYS_VFS_H
3050 #include <sys/vfs.h>
3052 #ifdef HAVE_SYS_CAPABILITY_H
3053 #include <sys/capability.h>
3056 samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=no,samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS=yes)])
3057 if test x"$samba_cv_BROKEN_REDHAT_7_SYSTEM_HEADERS" = x"yes"; then
3058 AC_DEFINE(BROKEN_REDHAT_7_SYSTEM_HEADERS,1,[Broken RedHat 7.2 system header files])
3063 AC_CACHE_CHECK([for broken nisplus include files],samba_cv_BROKEN_NISPLUS_INCLUDE_FILES,[
3065 #include <sys/types.h>
3066 #include <sys/acl.h>
3067 #if defined(HAVE_RPCSVC_NIS_H)
3068 #include <rpcsvc/nis.h>
3071 samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=no,samba_cv_BROKEN_NISPLUS_INCLUDE_FILES=yes)])
3072 if test x"$samba_cv_BROKEN_NISPLUS_INCLUDE_FILES" = x"yes"; then
3073 AC_DEFINE(BROKEN_NISPLUS_INCLUDE_FILES,1,[Whether the nisplus include files are broken])
3076 AC_CACHE_CHECK([if the realpath function allows a NULL argument],samba_cv_REALPATH_TAKES_NULL,[
3081 char *newpath = realpath("/tmp", NULL);
3082 exit ((newpath != NULL) ? 0 : 1);
3085 samba_cv_REALPATH_TAKES_NULL=yes,samba_cv_REALPATH_TAKES_NULL=no,samba_cv_REALPATH_TAKES_NULL=cross)])
3086 if test x"$samba_cv_REALPATH_TAKES_NULL" = x"yes"; then
3087 AC_DEFINE(REALPATH_TAKES_NULL,1,[Whether the realpath function allows NULL])
3090 #################################################
3091 # check for AFS clear-text auth support
3092 samba_cv_WITH_AFS=no
3093 AC_MSG_CHECKING(whether to use AFS clear-text auth)
3095 [ --with-afs Include AFS clear-text auth support (default=no) ],
3096 [ case "$withval" in
3098 AC_MSG_RESULT($withval)
3099 samba_cv_WITH_AFS=$withval
3108 ####################################################
3109 # check for Linux-specific AFS fake-kaserver support
3110 samba_cv_WITH_FAKE_KASERVER=no
3111 AC_MSG_CHECKING(whether to use AFS fake-kaserver)
3112 AC_ARG_WITH(fake-kaserver,
3113 [ --with-fake-kaserver Include AFS fake-kaserver support (default=no) ],
3114 [ case "$withval" in
3116 AC_MSG_RESULT($withval)
3117 samba_cv_WITH_FAKE_KASERVER=$withval
3126 #################################################
3127 # decide whether we can support WITH_AFS and / or WITH_FAKE_KASERVER
3128 if test x"$samba_cv_WITH_AFS" != x"no" ||
3129 test x"$samba_cv_WITH_FAKE_KASERVER" != x"no"; then
3131 # see if this box has the afs-headers in /usr/include/afs
3132 AC_MSG_CHECKING(for /usr/include/afs)
3133 if test -d /usr/include/afs; then
3134 CFLAGS="$CFLAGS -I/usr/include/afs"
3135 CPPFLAGS="$CPPFLAGS -I/usr/include/afs"
3143 AC_CHECK_HEADERS(afs.h afs/afs.h)
3144 if test x"$ac_cv_header_afs_h" = x"no" && test x"$ac_cv_header_afs_afs_h" = x"no"; then
3145 if test x"$samba_cv_WITH_FAKE_KASERVER" = x"auto" ||
3146 test x"$samba_cv_WITH_AFS" = x"auto"; then
3147 AC_MSG_WARN([AFS cannot be supported without afs.h])
3149 AC_MSG_ERROR([AFS cannot be supported without afs.h])
3152 have_afs_headers=yes
3156 if test x"$samba_cv_WITH_FAKE_KASERVER" != x"no" && test x"$have_afs_headers" = x"yes"; then
3157 AC_DEFINE(WITH_FAKE_KASERVER,1,[Whether to include AFS fake-kaserver support])
3160 #################################################
3161 # check whether to compile AFS/NT ACL mapping module
3162 samba_cv_WITH_VFS_AFSACL=no
3163 AC_MSG_CHECKING(whether to use AFS ACL mapping module)
3164 AC_ARG_WITH(vfs-afsacl,
3165 [ --with-vfs-afsacl Include AFS to NT ACL mapping module (default=no) ],
3166 [ case "$withval" in
3168 AC_MSG_RESULT($withval)
3169 samba_cv_WITH_VFS_AFSACL=yes
3178 if test x"$samba_cv_WITH_VFS_AFSACL" = x"yes"; then
3179 default_shared_modules="$default_shared_modules vfs_afsacl"
3182 if test x"$samba_cv_WITH_AFS" != x"no" && test x"$have_afs_headers" = x"yes"; then
3183 AC_DEFINE(WITH_AFS,1,[Whether to include AFS clear-text auth support])
3186 #################################################
3187 # check for the DFS clear-text auth system
3188 AC_MSG_CHECKING(whether to use DFS clear-text auth)
3190 [ --with-dce-dfs Include DCE/DFS clear-text auth support (default=no)],
3191 [ case "$withval" in
3194 AC_DEFINE(WITH_DFS,1,[Whether to include DFS support])
3203 ########################################################
3204 # Compile with LDAP support?
3206 with_ldap_support=auto
3207 AC_MSG_CHECKING([for LDAP support])
3210 [ --with-ldap LDAP support (default yes)],
3211 [ case "$withval" in
3213 with_ldap_support=$withval
3217 AC_MSG_RESULT($with_ldap_support)
3222 AC_SUBST(SMBLDAPUTIL)
3226 if test x"$with_ldap_support" != x"no"; then
3228 ##################################################################
3229 # first test for ldap.h and lber.h
3230 # (ldap.h is required for this test)
3231 AC_CHECK_HEADERS(ldap.h lber.h)
3233 if test x"$ac_cv_header_ldap_h" != x"yes"; then
3234 if test x"$with_ldap_support" = x"yes"; then
3235 AC_MSG_ERROR(ldap.h is needed for LDAP support)
3237 AC_MSG_WARN(ldap.h is needed for LDAP support)
3240 with_ldap_support=no
3243 ##################################################################
3244 # HP/UX does not have ber_tag_t in lber.h - it must be configured as
3245 # unsigned int in include/includes.h
3248 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3249 AC_MSG_WARN(ber_tag_t must be configured in includes.h for hpux)
3250 with_ldap_support=yes
3253 AC_CHECK_TYPE(ber_tag_t,,,[#include <lber.h>])
3254 if test x"$ac_cv_type_ber_tag_t" != x"yes"; then
3255 if test x"$with_ldap_support" = x"yes"; then
3256 AC_MSG_ERROR(ber_tag_t is needed for LDAP support)
3258 AC_MSG_WARN(ber_tag_t is needed for LDAP support)
3260 with_ldap_support=no
3266 if test x"$with_ldap_support" != x"no"; then
3269 ##################################################################
3270 # we might need the lber lib on some systems. To avoid link errors
3271 # this test must be before the libldap test
3272 AC_CHECK_LIB_EXT(lber, LDAP_LIBS, ber_scanf)
3274 ########################################################
3275 # now see if we can find the ldap libs in standard paths
3276 AC_CHECK_LIB_EXT(ldap, LDAP_LIBS, ldap_init)
3278 ########################################################
3279 # If we have LDAP, does it's rebind procedure take 2 or 3 arguments?
3280 # Check found in pam_ldap 145.
3281 AC_CHECK_FUNC_EXT(ldap_set_rebind_proc,$LDAP_LIBS)
3283 LIBS="$LIBS $LDAP_LIBS"
3284 AC_CACHE_CHECK(whether ldap_set_rebind_proc takes 3 arguments, smb_ldap_cv_ldap_set_rebind_proc, [
3288 [ldap_set_rebind_proc(0, 0, 0);],
3289 [smb_ldap_cv_ldap_set_rebind_proc=3],
3290 [smb_ldap_cv_ldap_set_rebind_proc=2]
3294 AC_DEFINE_UNQUOTED(LDAP_SET_REBIND_PROC_ARGS, $smb_ldap_cv_ldap_set_rebind_proc, [Number of arguments to ldap_set_rebind_proc])
3296 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3298 if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then
3299 AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available])
3300 CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED"
3301 default_static_modules="$default_static_modules pdb_ldap idmap_ldap";
3302 default_shared_modules="$default_shared_modules";
3303 SMBLDAP="lib/smbldap.o"
3304 SMBLDAPUTIL="lib/smbldap_util.o"
3305 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3306 AC_MSG_WARN(Disabling ldb_ldap support (requires ldap_initialize))
3308 AC_DEFINE(HAVE_LDB_LDAP,1,[Whether ldb_ldap is available])
3309 LDBLDAP="lib/ldb/ldb_ldap/ldb_ldap.o"
3311 with_ldap_support=yes
3312 AC_MSG_CHECKING(whether LDAP support is used)
3315 if test x"$with_ldap_support" = x"yes"; then
3316 AC_MSG_ERROR(libldap is needed for LDAP support)
3318 AC_MSG_WARN(libldap is needed for LDAP support)
3322 with_ldap_support=no
3328 #################################################
3329 # active directory support
3331 with_ads_support=auto
3332 AC_MSG_CHECKING([for Active Directory and krb5 support])
3335 [ --with-ads Active Directory support (default auto)],
3336 [ case "$withval" in
3338 with_ads_support="$withval"
3342 AC_MSG_RESULT($with_ads_support)
3347 if test x"$with_ldap_support" != x"yes"; then
3349 if test x"$with_ads_support" = x"yes"; then
3350 AC_MSG_ERROR(Active Directory Support requires LDAP support)
3351 elif test x"$with_ads_support" = x"auto"; then
3352 AC_MSG_WARN(Disabling Active Directory support (requires LDAP support))
3358 # Check to see whether there is enough LDAP functionality to be able
3359 # to build AD support.
3361 # HPUX only has ldap_init; ok, we take care of this in smbldap.c
3364 AC_CHECK_FUNC_EXT(ldap_init,$LDAP_LIBS)
3366 if test x"$ac_cv_func_ext_ldap_init" != x"yes"; then
3367 if test x"$with_ads_support" = x"yes"; then
3368 AC_MSG_ERROR(Active Directory support on HPUX requires ldap_init)
3369 elif test x"$with_ads_support" = x"auto"; then
3370 AC_MSG_WARN(Disabling Active Directory support (requires ldap_init on HPUX))
3376 AC_CHECK_FUNC_EXT(ldap_initialize,$LDAP_LIBS)
3378 if test x"$ac_cv_func_ext_ldap_initialize" != x"yes"; then
3379 if test x"$with_ads_support" = x"yes"; then
3380 AC_MSG_ERROR(Active Directory support requires ldap_initialize)
3381 elif test x"$with_ads_support" = x"auto"; then
3382 AC_MSG_WARN(Disabling Active Directory support (requires ldap_initialize))
3390 AC_CHECK_FUNC_EXT(ldap_add_result_entry,$LDAP_LIBS)
3392 if test x"$ac_cv_func_ext_ldap_add_result_entry" != x"yes"; then
3393 if test x"$with_ads_support" = x"yes"; then
3394 AC_MSG_ERROR(Active Directory support requires ldap_add_result_entry)
3395 elif test x"$with_ads_support" = x"auto"; then
3396 AC_MSG_WARN(Disabling Active Directory support (requires ldap_add_result_entry))
3403 if test x"$with_ads_support" != x"no"; then
3405 # Do no harm to the values of CFLAGS and LIBS while testing for
3408 if test x$FOUND_KRB5 = x"no"; then
3409 #################################################
3410 # check for location of Kerberos 5 install
3411 AC_MSG_CHECKING(for kerberos 5 install path)
3413 [ --with-krb5=base-dir Locate Kerberos 5 support (default=/usr)],
3414 [ case "$withval" in
3416 AC_MSG_RESULT(no krb5-path given)
3423 AC_MSG_RESULT($withval)
3424 KRB5_CFLAGS="-I$withval/include"
3425 KRB5_CPPFLAGS="-I$withval/include"
3426 KRB5_LDFLAGS="-L$withval/lib"
3428 if test -x "$withval/bin/krb5-config"; then
3429 KRB5CONFIG=$withval/bin/krb5-config
3433 AC_MSG_RESULT(no krb5-path given)
3437 #################################################
3438 # check for krb5-config from recent MIT and Heimdal kerberos 5
3439 AC_PATH_PROG(KRB5CONFIG, krb5-config)
3440 AC_MSG_CHECKING(for working krb5-config)
3441 if test -x "$KRB5CONFIG"; then
3442 ac_save_CFLAGS=$CFLAGS
3443 CFLAGS="";export CFLAGS
3444 ac_save_LDFLAGS=$LDFLAGS
3445 LDFLAGS="";export LDFLAGS
3446 KRB5_LIBS="`$KRB5CONFIG --libs gssapi`"
3447 KRB5_LDFLAGS="`$KRB5CONFIG --libs gssapi | sed s/-lgss.*//`"
3448 KRB5_CFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3449 KRB5_CPPFLAGS="`$KRB5CONFIG --cflags | sed s/@INCLUDE_des@//`"
3450 CFLAGS=$ac_save_CFLAGS;export CFLAGS
3451 LDFLAGS=$ac_save_LDFLAGS;export LDFLAGS
3455 AC_MSG_RESULT(no. Fallback to previous krb5 detection strategy)
3458 if test x$FOUND_KRB5 = x"no"; then
3459 #################################################
3460 # see if this box has the SuSE location for the heimdal krb implementation
3461 AC_MSG_CHECKING(for /usr/include/heimdal)
3462 if test -d /usr/include/heimdal; then
3463 if test -f /usr/lib/heimdal/lib/libkrb5.a; then
3464 KRB5_CFLAGS="-I/usr/include/heimdal"
3465 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3466 KRB5_LDFLAGS="-L/usr/lib/heimdal/lib"
3469 KRB5_CFLAGS="-I/usr/include/heimdal"
3470 KRB5_CPPFLAGS="-I/usr/include/heimdal"
3478 if test x$FOUND_KRB5 = x"no"; then
3479 #################################################
3480 # see if this box has the RedHat location for kerberos
3481 AC_MSG_CHECKING(for /usr/kerberos)
3482 if test -d /usr/kerberos -a -f /usr/kerberos/lib/libkrb5.a; then
3483 KRB5_LDFLAGS="-L/usr/kerberos/lib"
3484 KRB5_CFLAGS="-I/usr/kerberos/include"
3485 KRB5_CPPFLAGS="-I/usr/kerberos/include"
3492 ac_save_CFLAGS=$CFLAGS
3493 ac_save_CPPFLAGS=$CPPFLAGS
3494 ac_save_LDFLAGS=$LDFLAGS
3496 CFLAGS="$KRB5_CFLAGS $CFLAGS"
3497 CPPFLAGS="$KRB5_CPPFLAGS $CPPFLAGS"
3498 LDFLAGS="$KRB5_LDFLAGS $LDFLAGS"
3500 KRB5_LIBS="$KRB5_LDFLAGS $KRB5_LIBS"
3502 # now check for krb5.h. Some systems have the libraries without the headers!
3503 # note that this check is done here to allow for different kerberos
3505 AC_CHECK_HEADERS(krb5.h)
3507 if test x"$ac_cv_header_krb5_h" = x"no"; then
3509 # Give a warning if AD support was not explicitly requested,
3510 # i.e with_ads_support = auto, otherwise die with an error.
3512 if test x"$with_ads_support" = x"yes"; then
3513 AC_MSG_ERROR([Active Directory cannot be supported without krb5.h])
3515 AC_MSG_WARN([Active Directory cannot be supported without krb5.h])
3518 # Turn off AD support and restore CFLAGS and LIBS variables
3520 with_ads_support="no"
3522 CFLAGS=$ac_save_CFLAGS
3523 CPPFLAGS=$ac_save_CPPFLAGS
3524 LDFLAGS=$ac_save_LDFLAGS
3526 AC_CHECK_HEADERS(krb5/locate_plugin.h)
3529 # Now we have determined whether we really want ADS support
3531 if test x"$with_ads_support" != x"no"; then
3536 # now check for gssapi headers. This is also done here to allow for
3537 # different kerberos include paths
3538 AC_CHECK_HEADERS(gssapi.h gssapi/gssapi_generic.h gssapi/gssapi.h com_err.h)
3540 ##################################################################
3541 # we might need the k5crypto and com_err libraries on some systems
3542 AC_CHECK_LIB_EXT(com_err, KRB5_LIBS, _et_list)
3543 AC_CHECK_LIB_EXT(k5crypto, KRB5_LIBS, krb5_encrypt_data)
3546 AC_CHECK_LIB_EXT(crypto, KRB5_LIBS, des_set_key)
3547 AC_CHECK_LIB_EXT(asn1, KRB5_LIBS, copy_Authenticator)
3548 AC_CHECK_LIB_EXT(roken, KRB5_LIBS, roken_getaddrinfo_hostspec)
3550 # Heimdal checks. On static Heimdal gssapi must be linked before krb5.
3551 AC_CHECK_LIB_EXT(gssapi, KRB5_LIBS, gss_display_status,[],[],have_gssapi=yes)
3553 ########################################################
3554 # now see if we can find the krb5 libs in standard paths
3555 # or as specified above
3556 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_mk_req_extended)
3557 AC_CHECK_LIB_EXT(krb5, KRB5_LIBS, krb5_kt_compare)
3559 ########################################################
3560 # now see if we can find the gssapi libs in standard paths
3561 if test x"$have_gssapi" != x"yes"; then
3562 AC_CHECK_LIB_EXT(gssapi_krb5, KRB5_LIBS,gss_display_status,[],[],have_gssapi=yes)
3565 AC_CHECK_FUNC_EXT(krb5_set_real_time, $KRB5_LIBS)
3566 AC_CHECK_FUNC_EXT(krb5_set_default_in_tkt_etypes, $KRB5_LIBS)
3567 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_enctypes, $KRB5_LIBS)
3568 AC_CHECK_FUNC_EXT(krb5_set_default_tgs_ktypes, $KRB5_LIBS)
3569 AC_CHECK_FUNC_EXT(krb5_principal2salt, $KRB5_LIBS)
3570 AC_CHECK_FUNC_EXT(krb5_use_enctype, $KRB5_LIBS)
3571 AC_CHECK_FUNC_EXT(krb5_string_to_key, $KRB5_LIBS)
3572 AC_CHECK_FUNC_EXT(krb5_get_pw_salt, $KRB5_LIBS)
3573 AC_CHECK_FUNC_EXT(krb5_string_to_key_salt, $KRB5_LIBS)
3574 AC_CHECK_FUNC_EXT(krb5_auth_con_setkey, $KRB5_LIBS)
3575 AC_CHECK_FUNC_EXT(krb5_auth_con_setuseruserkey, $KRB5_LIBS)
3576 AC_CHECK_FUNC_EXT(krb5_locate_kdc, $KRB5_LIBS)
3577 AC_CHECK_FUNC_EXT(krb5_get_permitted_enctypes, $KRB5_LIBS)
3578 AC_CHECK_FUNC_EXT(krb5_get_default_in_tkt_etypes, $KRB5_LIBS)
3579 AC_CHECK_FUNC_EXT(krb5_free_data_contents, $KRB5_LIBS)
3580 AC_CHECK_FUNC_EXT(krb5_principal_get_comp_string, $KRB5_LIBS)
3581 AC_CHECK_FUNC_EXT(krb5_free_unparsed_name, $KRB5_LIBS)
3582 AC_CHECK_FUNC_EXT(krb5_free_keytab_entry_contents, $KRB5_LIBS)
3583 AC_CHECK_FUNC_EXT(krb5_kt_free_entry, $KRB5_LIBS)
3584 AC_CHECK_FUNC_EXT(krb5_krbhst_init, $KRB5_LIBS)
3585 AC_CHECK_FUNC_EXT(krb5_krbhst_get_addrinfo, $KRB5_LIBS)
3586 AC_CHECK_FUNC_EXT(krb5_c_enctype_compare, $KRB5_LIBS)
3587 AC_CHECK_FUNC_EXT(krb5_enctypes_compatible_keys, $KRB5_LIBS)
3588 AC_CHECK_FUNC_EXT(krb5_crypto_init, $KRB5_LIBS)
3589 AC_CHECK_FUNC_EXT(krb5_crypto_destroy, $KRB5_LIBS)
3590 AC_CHECK_FUNC_EXT(krb5_decode_ap_req, $KRB5_LIBS)
3591 AC_CHECK_FUNC_EXT(free_AP_REQ, $KRB5_LIBS)
3592 AC_CHECK_FUNC_EXT(krb5_verify_checksum, $KRB5_LIBS)
3593 AC_CHECK_FUNC_EXT(krb5_c_verify_checksum, $KRB5_LIBS)
3594 AC_CHECK_FUNC_EXT(krb5_principal_compare_any_realm, $KRB5_LIBS)
3595 AC_CHECK_FUNC_EXT(krb5_parse_name_norealm, $KRB5_LIBS)
3596 AC_CHECK_FUNC_EXT(krb5_princ_size, $KRB5_LIBS)
3597 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_set_pac_request, $KRB5_LIBS)
3598 AC_CHECK_FUNC_EXT(krb5_get_renewed_creds, $KRB5_LIBS)
3599 AC_CHECK_FUNC_EXT(krb5_get_kdc_cred, $KRB5_LIBS)
3600 AC_CHECK_FUNC_EXT(krb5_free_error_contents, $KRB5_LIBS)
3601 AC_CHECK_FUNC_EXT(initialize_krb5_error_table, $KRB5_LIBS)
3602 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_alloc, $KRB5_LIBS)
3603 AC_CHECK_FUNC_EXT(krb5_get_init_creds_opt_free, $KRB5_LIBS)
3605 LIBS="$KRB5_LIBS $LIBS"
3607 AC_CACHE_CHECK(whether krb5_ticket contains kvno and enctype,
3608 smb_krb5_ticket_has_keyinfo,
3617 krb5_enctype enctype;
3619 enctype = ticket.enc_part.enctype;
3620 kvno = ticket.enc_part.kvno;
3622 [ smb_krb5_ticket_has_keyinfo=yes ],
3623 [ smb_krb5_ticket_has_keyinfo=no ])
3626 if test x"$smb_krb5_ticket_has_keyinfo" = x"yes" ; then
3627 AC_DEFINE(KRB5_TICKET_HAS_KEYINFO, 1,
3628 [Whether the krb5_ticket structure contains the kvno and enctype])
3631 AC_CACHE_CHECK(whether krb5_get_init_creds_opt_free takes a context argument,
3632 smb_krb5_creds_opt_free_context,
3638 krb5_get_init_creds_opt *opt = NULL;
3639 krb5_get_init_creds_opt_free(ctx, opt);
3641 [smb_krb5_creds_opt_free_context=yes],
3642 [smb_krb5_creds_opt_free_context=no]
3646 if test x"$smb_krb5_creds_opt_free_context" = x"yes" ; then
3647 AC_DEFINE(KRB5_CREDS_OPT_FREE_REQUIRES_CONTEXT, 1,
3648 [Whether krb5_get_init_creds_opt_free takes a context argument])
3651 AC_CACHE_CHECK(whether krb5_verify_checksum takes 7 arguments, smb_krb5_verify_checksum, [
3654 [krb5_verify_checksum(0, 0, 0, 0, 0, 0, 0);],
3655 [smb_krb5_verify_checksum=7],
3656 [smb_krb5_verify_checksum=6],
3659 AC_DEFINE_UNQUOTED(KRB5_VERIFY_CHECKSUM_ARGS, $smb_krb5_verify_checksum, [Number of arguments to krb5_verify_checksum])
3661 AC_CACHE_CHECK([for checksum in krb5_checksum],
3662 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM,[
3663 AC_TRY_COMPILE([#include <krb5.h>],
3664 [krb5_checksum cksum; cksum.checksum.length = 0;],
3665 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=yes,
3666 samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM=no)])
3668 if test x"$samba_cv_HAVE_CHECKSUM_IN_KRB5_CHECKSUM" = x"yes"; then
3669 AC_DEFINE(HAVE_CHECKSUM_IN_KRB5_CHECKSUM,1,
3670 [Whether the krb5_checksum struct has a checksum property])
3673 AC_CACHE_CHECK([for etype in EncryptedData],
3674 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA,[
3675 AC_TRY_COMPILE([#include <krb5.h>],
3676 [EncryptedData edata; edata.etype = 0;],
3677 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=yes,
3678 samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA=no)])
3680 if test x"$samba_cv_HAVE_ETYPE_IN_ENCRYPTEDDATA" = x"yes"; then
3681 AC_DEFINE(HAVE_ETYPE_IN_ENCRYPTEDDATA,1,
3682 [Whether the EncryptedData struct has a etype property])
3685 AC_CACHE_CHECK([for ticket pointer in krb5_ap_req],
3686 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,[
3687 AC_TRY_COMPILE([#include <krb5.h>],
3688 [krb5_ap_req *ap_req; ap_req->ticket = NULL;],
3689 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=yes,
3690 samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ=no)])
3692 if test x"$samba_cv_HAVE_TICKET_POINTER_IN_KRB5_AP_REQ" = x"yes"; then
3693 AC_DEFINE(HAVE_TICKET_POINTER_IN_KRB5_AP_REQ,1,
3694 [Whether the krb5_ap_req struct has a ticket pointer])
3697 AC_CACHE_CHECK([for e_data pointer in krb5_error],
3698 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR,[
3699 AC_TRY_COMPILE([#include <krb5.h>],
3700 [krb5_error err; err.e_data = NULL;],
3701 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=yes,
3702 samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR=no)])
3704 if test x"$samba_cv_HAVE_E_DATA_POINTER_IN_KRB5_ERROR" = x"yes"; then
3705 AC_DEFINE(HAVE_E_DATA_POINTER_IN_KRB5_ERROR,1,
3706 [Whether the krb5_error struct has a e_data pointer])
3709 AC_CACHE_CHECK([for krb5_crypto type],
3710 samba_cv_HAVE_KRB5_CRYPTO,[
3711 AC_TRY_COMPILE([#include <krb5.h>],
3712 [krb5_crypto crypto;],
3713 samba_cv_HAVE_KRB5_CRYPTO=yes,
3714 samba_cv_HAVE_KRB5_CRYPTO=no)])
3716 if test x"$samba_cv_HAVE_KRB5_CRYPTO" = x"yes"; then
3717 AC_DEFINE(HAVE_KRB5_CRYPTO,1,
3718 [Whether the type krb5_crypto exists])
3721 AC_CACHE_CHECK([for krb5_encrypt_block type],
3722 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK,[
3723 AC_TRY_COMPILE([#include <krb5.h>],
3724 [krb5_encrypt_block block;],
3725 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=yes,
3726 samba_cv_HAVE_KRB5_ENCRYPT_BLOCK=no)])
3728 if test x"$samba_cv_HAVE_KRB5_ENCRYPT_BLOCK" = x"yes"; then
3729 AC_DEFINE(HAVE_KRB5_ENCRYPT_BLOCK,1,
3730 [Whether the type krb5_encrypt_block exists])
3733 AC_CACHE_CHECK([for addrtype in krb5_address],
3734 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS,[
3735 AC_TRY_COMPILE([#include <krb5.h>],
3736 [krb5_address kaddr; kaddr.addrtype = ADDRTYPE_INET;],
3737 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=yes,
3738 samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS=no)])
3740 if test x"$samba_cv_HAVE_ADDRTYPE_IN_KRB5_ADDRESS" = x"yes"; then
3741 AC_DEFINE(HAVE_ADDRTYPE_IN_KRB5_ADDRESS,1,
3742 [Whether the krb5_address struct has a addrtype property])
3745 AC_CACHE_CHECK([for addr_type in krb5_address],
3746 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,[
3747 AC_TRY_COMPILE([#include <krb5.h>],
3748 [krb5_address kaddr; kaddr.addr_type = KRB5_ADDRESS_INET;],
3749 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=yes,
3750 samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS=no)])
3752 if test x"$samba_cv_HAVE_ADDR_TYPE_IN_KRB5_ADDRESS" = x"yes"; then
3753 AC_DEFINE(HAVE_ADDR_TYPE_IN_KRB5_ADDRESS,1,
3754 [Whether the krb5_address struct has a addr_type property])
3757 AC_CACHE_CHECK([for enc_part2 in krb5_ticket],
3758 samba_cv_HAVE_KRB5_TKT_ENC_PART2,
3759 [AC_TRY_COMPILE([#include <krb5.h>],
3760 [krb5_ticket tkt; tkt.enc_part2->authorization_data[0]->contents = NULL;],
3761 samba_cv_HAVE_KRB5_TKT_ENC_PART2=yes,samba_cv_HAVE_KRB5_TKT_ENC_PART2=no)])
3763 if test x"$samba_cv_HAVE_KRB5_TKT_ENC_PART2" = x"yes"; then
3764 AC_DEFINE(HAVE_KRB5_TKT_ENC_PART2,1,
3765 [Whether the krb5_ticket struct has a enc_part2 property])
3768 AC_CACHE_CHECK([for keyblock in krb5_creds],
3769 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS,[
3770 AC_TRY_COMPILE([#include <krb5.h>],
3771 [krb5_creds creds; krb5_keyblock kb; creds.keyblock = kb;],
3772 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=yes,
3773 samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS=no)])
3775 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_IN_CREDS" = x"yes"; then
3776 AC_DEFINE(HAVE_KRB5_KEYBLOCK_IN_CREDS,1,
3777 [Whether the krb5_creds struct has a keyblock property])
3780 AC_CACHE_CHECK([for session in krb5_creds],
3781 samba_cv_HAVE_KRB5_SESSION_IN_CREDS,[
3782 AC_TRY_COMPILE([#include <krb5.h>],
3783 [krb5_creds creds; krb5_keyblock kb; creds.session = kb;],
3784 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=yes,
3785 samba_cv_HAVE_KRB5_SESSION_IN_CREDS=no)])
3787 if test x"$samba_cv_HAVE_KRB5_SESSION_IN_CREDS" = x"yes"; then
3788 AC_DEFINE(HAVE_KRB5_SESSION_IN_CREDS,1,
3789 [Whether the krb5_creds struct has a session property])
3792 AC_CACHE_CHECK([for keyvalue in krb5_keyblock],
3793 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE,[
3794 AC_TRY_COMPILE([#include <krb5.h>],
3795 [krb5_keyblock key; key.keyvalue.data = NULL;],
3796 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=yes,
3797 samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE=no)])
3799 if test x"$samba_cv_HAVE_KRB5_KEYBLOCK_KEYVALUE" = x"yes"; then
3800 AC_DEFINE(HAVE_KRB5_KEYBLOCK_KEYVALUE,1,
3801 [Whether the krb5_keyblock struct has a keyvalue property])
3804 AC_CACHE_CHECK([for ENCTYPE_ARCFOUR_HMAC_MD5],
3805 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,[
3806 AC_TRY_COMPILE([#include <krb5.h>],
3807 [krb5_enctype enctype; enctype = ENCTYPE_ARCFOUR_HMAC_MD5;],
3808 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=yes,
3809 samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5=no)])
3810 AC_CACHE_CHECK([for KEYTYPE_ARCFOUR_56],
3811 samba_cv_HAVE_KEYTYPE_ARCFOUR_56,[
3812 AC_TRY_COMPILE([#include <krb5.h>],
3813 [krb5_keytype keytype; keytype = KEYTYPE_ARCFOUR_56;],
3814 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=yes,
3815 samba_cv_HAVE_KEYTYPE_ARCFOUR_56=no)])
3816 # Heimdals with KEYTYPE_ARCFOUR but not KEYTYPE_ARCFOUR_56 are broken
3817 # w.r.t. arcfour and windows, so we must not enable it here
3818 if test x"$samba_cv_HAVE_ENCTYPE_ARCFOUR_HMAC_MD5" = x"yes" -a\
3819 x"$samba_cv_HAVE_KEYTYPE_ARCFOUR_56" = x"yes"; then
3820 AC_DEFINE(HAVE_ENCTYPE_ARCFOUR_HMAC_MD5,1,
3821 [Whether the ENCTYPE_ARCFOUR_HMAC_MD5 key type is available])
3824 AC_CACHE_CHECK([for AP_OPTS_USE_SUBKEY],
3825 samba_cv_HAVE_AP_OPTS_USE_SUBKEY,[
3826 AC_TRY_COMPILE([#include <krb5.h>],
3827 [krb5_flags ap_options; ap_options = AP_OPTS_USE_SUBKEY;],
3828 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=yes,
3829 samba_cv_HAVE_AP_OPTS_USE_SUBKEY=no)])
3831 if test x"$samba_cv_HAVE_AP_OPTS_USE_SUBKEY" = x"yes"; then
3832 AC_DEFINE(HAVE_AP_OPTS_USE_SUBKEY,1,
3833 [Whether the AP_OPTS_USE_SUBKEY ap option is available])
3836 AC_CACHE_CHECK([for KV5M_KEYTAB],
3837 samba_cv_HAVE_KV5M_KEYTAB,[
3838 AC_TRY_COMPILE([#include <krb5.h>],
3839 [krb5_keytab_entry entry; entry.magic = KV5M_KEYTAB;],
3840 samba_cv_HAVE_KV5M_KEYTAB=yes,
3841 samba_cv_HAVE_KV5M_KEYTAB=no)])
3843 if test x"$samba_cv_HAVE_KV5M_KEYTAB" = x"yes"; then
3844 AC_DEFINE(HAVE_KV5M_KEYTAB,1,
3845 [Whether the KV5M_KEYTAB option is available])
3848 AC_CACHE_CHECK([for KRB5_KU_OTHER_CKSUM],
3849 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM,[
3850 AC_TRY_COMPILE([#include <krb5.h>],
3851 [krb5_keyusage usage = KRB5_KU_OTHER_CKSUM;],
3852 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=yes,
3853 samba_cv_HAVE_KRB5_KU_OTHER_CKSUM=no)])
3855 if test x"$samba_cv_HAVE_KRB5_KU_OTHER_CKSUM" = x"yes"; then
3856 AC_DEFINE(HAVE_KRB5_KU_OTHER_CKSUM,1,
3857 [Whether KRB5_KU_OTHER_CKSUM is available])
3860 AC_CACHE_CHECK([for KRB5_KEYUSAGE_APP_DATA_CKSUM],
3861 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,[
3862 AC_TRY_COMPILE([#include <krb5.h>],
3863 [krb5_keyusage usage = KRB5_KEYUSAGE_APP_DATA_CKSUM;],
3864 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=yes,
3865 samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM=no)])
3867 if test x"$samba_cv_HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM" = x"yes"; then
3868 AC_DEFINE(HAVE_KRB5_KEYUSAGE_APP_DATA_CKSUM,1,
3869 [Whether KRB5_KEYUSAGE_APP_DATA_CKSUM is available])
3872 AC_CACHE_CHECK([for the krb5_princ_component macro],
3873 samba_cv_HAVE_KRB5_PRINC_COMPONENT,[
3874 AC_TRY_LINK([#include <krb5.h>],
3875 [const krb5_data *pkdata; krb5_context context; krb5_principal principal; pkdata = krb5_princ_component(context, principal, 0);],
3876 samba_cv_HAVE_KRB5_PRINC_COMPONENT=yes,
3877 samba_cv_HAVE_KRB5_PRINC_COMPONENT=no)])
3879 if test x"$samba_cv_HAVE_KRB5_PRINC_COMPONENT" = x"yes"; then
3880 AC_DEFINE(HAVE_KRB5_PRINC_COMPONENT,1,
3881 [Whether krb5_princ_component is available])
3884 AC_CACHE_CHECK([for key in krb5_keytab_entry],
3885 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY,[
3886 AC_TRY_COMPILE([#include <krb5.h>],
3887 [krb5_keytab_entry entry; krb5_keyblock e; entry.key = e;],
3888 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=yes,
3889 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY=no)])
3891 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEY" = x"yes"; then
3892 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEY,1,
3893 [Whether krb5_keytab_entry has key member])
3896 AC_CACHE_CHECK([for keyblock in krb5_keytab_entry],
3897 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,[
3898 AC_TRY_COMPILE([#include <krb5.h>],
3899 [krb5_keytab_entry entry; entry.keyblock.keytype = 0;],
3900 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=yes,
3901 samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK=no)])
3903 if test x"$samba_cv_HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK" = x"yes"; then
3904 AC_DEFINE(HAVE_KRB5_KEYTAB_ENTRY_KEYBLOCK,1,
3905 [Whether krb5_keytab_entry has keyblock member])
3908 AC_CACHE_CHECK([for magic in krb5_address],
3909 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS,[
3910 AC_TRY_COMPILE([#include <krb5.h>],
3911 [krb5_address addr; addr.magic = 0;],
3912 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=yes,
3913 samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS=no)])
3915 if test x"$samba_cv_HAVE_MAGIC_IN_KRB5_ADDRESS" = x"yes"; then
3916 AC_DEFINE(HAVE_MAGIC_IN_KRB5_ADDRESS,1,
3917 [Whether the krb5_address struct has a magic property])
3920 AC_CACHE_CHECK([for WRFILE: keytab support],
3921 samba_cv_HAVE_WRFILE_KEYTAB,[
3926 krb5_context context;
3929 krb5_init_context(&context);
3930 return krb5_kt_resolve(context, "WRFILE:api", &keytab);
3932 samba_cv_HAVE_WRFILE_KEYTAB=yes,
3933 samba_cv_HAVE_WRFILE_KEYTAB=no)])
3935 if test x"$samba_cv_HAVE_WRFILE_KEYTAB" = x"yes"; then
3936 AC_DEFINE(HAVE_WRFILE_KEYTAB,1,
3937 [Whether the WRFILE:-keytab is supported])
3940 AC_CACHE_CHECK([for krb5_princ_realm returns krb5_realm or krb5_data],
3941 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM,[
3942 AC_TRY_COMPILE([#include <krb5.h>],
3944 krb5_context context;
3945 krb5_principal principal;
3946 krb5_realm realm; realm = *krb5_princ_realm(context, principal);],
3947 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=yes,
3948 samba_cv_KRB5_PRINC_REALM_RETURNS_REALM=no)])
3950 if test x"$samba_cv_KRB5_PRINC_REALM_RETURNS_REALM" = x"yes"; then
3951 AC_DEFINE(KRB5_PRINC_REALM_RETURNS_REALM,1,
3952 [Whether krb5_princ_realm returns krb5_realm or krb5_data])
3955 AC_CACHE_CHECK([for krb5_addresses type],
3956 samba_cv_HAVE_KRB5_ADDRESSES,[
3957 AC_TRY_COMPILE([#include <krb5.h>],
3958 [krb5_addresses addr;],
3959 samba_cv_HAVE_KRB5_ADDRESSES=yes,
3960 samba_cv_HAVE_KRB5_ADDRESSES=no)])
3962 if test x"$samba_cv_HAVE_KRB5_ADDRESSES" = x"yes"; then
3963 AC_DEFINE(HAVE_KRB5_ADDRESSES,1,
3964 [Whether the type krb5_addresses type exists])
3967 AC_CACHE_CHECK([whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal],
3968 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE, [
3969 AC_TRY_COMPILE([#include <krb5.h>],
3971 krb5_mk_error(0,0,0);],
3972 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=yes,
3973 samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE=no)])
3975 if test x"$samba_cv_HAVE_SHORT_KRB5_MK_ERROR_INTERFACE" = x"yes"; then
3976 AC_DEFINE(HAVE_SHORT_KRB5_MK_ERROR_INTERFACE,1,
3977 [whether krb5_mk_error takes 3 arguments MIT or 9 Heimdal])
3983 # Now the decisions whether we can support krb5
3985 # NOTE: all tests should be done before this block!
3988 if test x"$ac_cv_lib_ext_krb5_krb5_mk_req_extended" != x"yes"; then
3989 AC_MSG_WARN(krb5_mk_req_extended not found in -lkrb5)
3993 if test x"$ac_cv_func_ext_krb5_principal2salt" != x"yes" -a \
3994 x"$ac_cv_func_ext_krb5_get_pw_salt" != x"yes"
3996 AC_MSG_WARN(no CREATE_KEY_FUNCTIONS detected)
4000 if test x"$ac_cv_func_ext_krb5_get_permitted_enctypes" != x"yes" -a \
4001 x"$ac_cv_func_ext_krb5_get_default_in_tkt_etypes" != x"yes"
4003 AC_MSG_WARN(no GET_ENCTYPES_FUNCTIONS detected)
4007 if test x"$ac_cv_func_ext_krb5_kt_free_entry" != x"yes" -a \
4008 x"$ac_cv_func_ext_krb5_free_keytab_entry_contents" != x"yes"
4010 AC_MSG_WARN(no KT_FREE_FUNCTION detected)
4014 if test x"$ac_cv_func_ext_krb5_c_verify_checksum" != x"yes" -a \
4015 x"$ac_cv_func_ext_krb5_verify_checksum" != x"yes"
4017 AC_MSG_WARN(no KRB5_VERIFY_CHECKSUM_FUNCTION detected)
4021 if test x"$smb_krb5_ticket_has_keyinfo" != x"yes" ; then
4023 # We only need the following functions if we can't get the enctype
4024 # and kvno out of the ticket directly (ie. on Heimdal).
4026 if test x"$ac_cv_func_ext_free_AP_REQ" != x"yes"
4028 AC_MSG_WARN(no KRB5_AP_REQ_FREE_FUNCTION detected)
4032 if test x"$ac_cv_func_ext_krb5_decode_ap_req" != x"yes"
4034 AC_MSG_WARN(no KRB5_AP_REQ_DECODING_FUNCTION detected)
4040 if test x"$use_ads" = x"yes"; then
4041 AC_DEFINE(WITH_ADS,1,[Whether to include Active Directory support])
4042 AC_DEFINE(HAVE_KRB5,1,[Whether to have KRB5 support])
4043 if test x"$have_gssapi" = x"yes"; then
4044 AC_DEFINE(HAVE_GSSAPI,1,[Whether GSSAPI is available])
4047 if test x"$with_ads_support" = x"yes"; then
4048 AC_MSG_ERROR(krb5 libs don't have all features required for Active Directory support)
4050 AC_MSG_WARN(krb5 libs don't have all features required for Active Directory support)
4052 AC_REMOVE_DEFINE(HAVE_KRB5_H)
4053 AC_REMOVE_DEFINE(HAVE_GSSAPI_H)
4054 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_GENERIC_H)
4055 AC_REMOVE_DEFINE(HAVE_GSSAPI_GSSAPI_H)
4059 AC_MSG_CHECKING(whether Active Directory and krb5 support is used)
4060 AC_MSG_RESULT([$use_ads])
4062 LIBS="$ac_save_LIBS"
4065 AC_CHECK_LIB_EXT(nscd, NSCD_LIBS, nscd_flush_cache)
4066 PASSDB_LIBS="$PASSDB_LIBS $NSCD_LIBS"
4069 ########################################################
4070 # Compile with DNS Updates support?
4072 with_dnsupdate_support=no
4073 AC_MSG_CHECKING([whether to enable DNS Updates support])
4075 AC_ARG_WITH(dnsupdate,
4076 [ --with-dnsupdate Enable DNS Updates support (default no)],
4077 [ case "$withval" in
4079 with_dnsupdate_support=$withval
4083 AC_MSG_RESULT($with_dnsupdate_support)
4085 if test x"$with_dnsupdate_support" != x"no"; then
4087 ################################################################
4088 # first test for Active Directory support being enabled
4089 #if test x"$with_ads_support" = x"no"; then
4090 # AC_MSG_ERROR(Active Directory support is required to enable DNS Update support)
4091 # with_dnsupdate_support=no
4093 ##################################################################
4094 # then test for uuid.h (necessary to generate unique DNS keynames
4095 # (uuid.h is required for this test)
4096 AC_CHECK_HEADERS(uuid/uuid.h)
4098 if test x"$ac_cv_header_uuid_uuid_h" != x"yes"; then
4099 if test x"$with_dnsupdate_support" = x"yes"; then
4100 AC_MSG_ERROR(uuid.h is needed to enable DNS Updates support)
4102 AC_MSG_WARN(uuid.h is needed to enable DNS Updates support)
4104 with_dnsupdate_support=no
4108 if test x"$with_dnsupdate_support" != x"no"; then
4110 ########################################################
4111 # Now see if we can find the uuid libs in standard paths
4112 # On some systems, the uuid API is in libc, so we have to
4113 # be careful not to insert a spurious -luuid.
4116 AC_LIBTESTFUNC(uuid, uuid_generate,
4121 SMB_REMOVE_LIB(uuid)
4125 with_dnsupdate_support=yes
4126 AC_DEFINE(WITH_DNS_UPDATES,1,[Whether to enable DNS Update support])
4129 if test x"$with_dnsupdate_support" = x"yes"; then
4130 AC_MSG_ERROR(libuuid is needed to enable DNS Updates support)
4132 AC_MSG_WARN(libuuid is needed to enable DNS Updates support)
4134 with_dnsupdate_support=no
4138 #################################################
4139 # check for automount support
4140 AC_MSG_CHECKING(whether to use automount)
4141 AC_ARG_WITH(automount,
4142 [ --with-automount Include automount support (default=no)],
4143 [ case "$withval" in
4146 AC_DEFINE(WITH_AUTOMOUNT,1,[Whether to include automount support])
4155 #################################################
4156 # check for smbmount support
4157 AC_MSG_CHECKING(whether to use smbmount)
4158 AC_ARG_WITH(smbmount,
4159 [ --with-smbmount Include smbmount (Linux only) support (default=no)],
4160 [ case "$withval" in
4165 AC_DEFINE(WITH_SMBMOUNT,1,[Whether to build smbmount])
4166 SMBMOUNT_PROGS="bin/smbmount bin/smbmnt bin/smbumount"
4169 AC_MSG_ERROR(not on a linux system!)
4180 #################################################
4181 # check for mount- and umount.cifs support
4183 INSTALL_CIFSMOUNT=""
4184 UNINSTALL_CIFSMOUNT=""
4185 AC_MSG_CHECKING(whether to build mount.cifs and umount.cifs)
4186 AC_ARG_WITH(cifsmount,
4187 [ --with-cifsmount Include mount.cifs and umount.cifs (Linux only) support (default=yes)],
4188 [ case "$withval" in
4196 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4197 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4198 INSTALL_CIFSMOUNT="installcifsmount"
4199 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4202 AC_MSG_ERROR(not on a linux system!)
4207 [ case "$host_os" in
4210 AC_DEFINE(WITH_CIFSMOUNT,1,[Whether to build mount.cifs and umount.cifs])
4211 CIFSMOUNT_PROGS="bin/mount.cifs bin/umount.cifs"
4212 INSTALL_CIFSMOUNT="installcifsmount"
4213 UNINSTALL_CIFSMOUNT="uninstallcifsmount"
4222 #################################################
4223 # check for a PAM clear-text auth, accounts, password and session support
4224 with_pam_for_crypt=no
4226 AC_MSG_CHECKING(whether to try PAM support)
4228 [ --with-pam Include PAM support (default=no)],
4229 [ case "$withval" in
4235 AC_MSG_RESULT([$try_pam])
4238 create_pam_modules=no
4239 if test x"${try_pam}" != x"no";then
4241 create_pam_modules=yes
4243 AC_CHECK_HEADERS(security/pam_appl.h)
4244 if test x"$ac_cv_header_security_pam_appl_h" != x"yes"; then
4245 if test x"${try_pam}" = x"yes";then
4246 AC_MSG_ERROR([--with-pam=yes but security/pam_appl.h not found])
4249 create_pam_modules=no
4252 AC_CHECK_LIB_EXT(pam, PAM_LIBS, pam_get_data)
4253 if test x"$ac_cv_lib_ext_pam_pam_get_data" != x"yes"; then
4254 if test x"${try_pam}" = x"yes";then
4255 AC_MSG_ERROR([--with-pam=yes but libpam not found])
4258 create_pam_modules=no
4261 AC_CHECK_HEADERS(security/pam_modules.h,,,[[
4262 #if HAVE_SECURITY_PAM_APPL_H
4263 #include <security/pam_appl.h>
4266 if test x"$ac_cv_header_security_pam_modules_h" = x"no"; then
4267 if test x"${try_pam}" = x"yes";then
4268 AC_MSG_ERROR([--with-pam=yes but security/pam_modules.h not found])
4270 create_pam_modules=no
4273 if test x"$use_pam" = x"yes"; then
4274 AC_DEFINE(WITH_PAM,1,[Whether to include PAM support])
4275 AC_DEFINE(HAVE_LIBPAM,1,[Whether libpam is available])
4276 AUTH_LIBS="$AUTH_LIBS $PAM_LIBS"
4277 with_pam_for_crypt=yes
4279 if test x"$create_pam_modules" = x"yes"; then
4280 AC_DEFINE(WITH_PAM_MODULES,1,[Whether to include PAM MODULES support])
4281 # this checks are optional,
4282 # we don't care about the results here
4283 AC_CHECK_HEADERS(security/pam_ext.h security/_pam_macros.h)
4284 AC_CHECK_FUNC_EXT(pam_vsyslog,$PAM_LIBS)
4286 AC_MSG_WARN([PAM support detected but PAM MODULES support is missing])
4289 AC_MSG_CHECKING(whether to use PAM support)
4290 AC_MSG_RESULT([$use_pam])
4292 AC_MSG_CHECKING(whether to have PAM MODULES support)
4293 AC_MSG_RESULT([$create_pam_modules])
4296 #################################################
4297 # check for pam_smbpass support
4299 INSTALL_PAM_MODULES=""
4300 UNINSTALL_PAM_MODULES=""
4301 AC_MSG_CHECKING(whether to use pam_smbpass)
4302 AC_ARG_WITH(pam_smbpass,
4303 [ --with-pam_smbpass Build PAM module for authenticating against passdb backends (default=no)],
4304 [ case "$withval" in
4308 # Conditions under which pam_smbpass should not be built.
4310 if test x"$BLDSHARED" != x"true"; then
4311 AC_MSG_ERROR([No support for shared modules])
4312 elif test x"$create_pam_modules" != x"yes"; then
4313 AC_MSG_ERROR([No support for PAM MODULES])
4315 PAM_MODULES="pam_smbpass"
4316 INSTALL_PAM_MODULES="installpammodules"
4317 UNINSTALL_PAM_MODULES="uninstallpammodules"
4328 ###############################################
4329 # test for where we get crypt() from
4330 AC_SEARCH_LIBS(crypt, [crypt],
4331 [test "$ac_cv_search_crypt" = "none required" || AUTH_LIBS="-lcrypt $AUTH_LIBS"
4332 AC_DEFINE(HAVE_CRYPT,1,[Whether the system has the crypt() function])])
4335 ## moved after the check for -lcrypt in order to
4336 ## ensure that the necessary libraries are included
4337 ## check checking for truncated salt. Wrapped by the
4338 ## $with_pam_for_crypt variable as above --jerry
4340 if test $with_pam_for_crypt = no; then
4341 AC_CACHE_CHECK([for a crypt that needs truncated salt],samba_cv_HAVE_TRUNCATED_SALT,[
4343 LIBS="$AUTH_LIBS $LIBS"
4344 AC_TRY_RUN([#include "${srcdir-.}/tests/crypttest.c"],
4345 samba_cv_HAVE_TRUNCATED_SALT=no,samba_cv_HAVE_TRUNCATED_SALT=yes,samba_cv_HAVE_TRUNCATED_SALT=cross)
4346 LIBS="$crypt_LIBS"])
4347 if test x"$samba_cv_HAVE_TRUNCATED_SALT" = x"yes"; then
4348 AC_DEFINE(HAVE_TRUNCATED_SALT,1,[Whether crypt needs truncated salt])
4352 #################################################
4353 # check for a NISPLUS_HOME support
4354 AC_MSG_CHECKING(whether to use NISPLUS_HOME)
4355 AC_ARG_WITH(nisplus-home,
4356 [ --with-nisplus-home Include NISPLUS_HOME support (default=no)],
4357 [ case "$withval" in
4360 AC_DEFINE(WITH_NISPLUS_HOME,1,[Whether to include nisplus_home support])
4369 #################################################
4370 # check for syslog logging
4371 AC_MSG_CHECKING(whether to use syslog logging)
4373 [ --with-syslog Include experimental SYSLOG support (default=no)],
4374 [ case "$withval" in
4377 AC_DEFINE(WITH_SYSLOG,1,[Whether to include experimental syslog support])
4386 #################################################
4387 # check for experimental disk-quotas support
4389 samba_cv_WITH_QUOTAS=auto
4390 samba_cv_TRY_QUOTAS=no
4391 samba_cv_RUN_QUOTA_TESTS=auto
4392 samba_cv_WITH_SYS_QUOTAS=auto
4393 samba_cv_TRY_SYS_QUOTAS=auto
4394 samba_cv_SYSQUOTA_FOUND=no
4396 AC_MSG_CHECKING(whether to try disk-quotas support)
4398 [ --with-quotas Include disk-quota support (default=no)],
4399 [ case "$withval" in
4402 samba_cv_WITH_QUOTAS=yes
4403 samba_cv_TRY_QUOTAS=yes
4404 samba_cv_RUN_QUOTA_TESTS=yes
4405 #set sys quotas to auto in this case
4406 samba_cv_TRY_SYS_QUOTAS=auto
4410 samba_cv_WITH_QUOTAS=auto
4411 samba_cv_TRY_QUOTAS=auto
4412 samba_cv_RUN_QUOTA_TESTS=auto
4413 #set sys quotas to auto in this case
4414 samba_cv_TRY_SYS_QUOTAS=auto
4418 samba_cv_WITH_QUOTAS=no
4419 samba_cv_TRY_QUOTAS=no
4420 samba_cv_RUN_QUOTA_TESTS=no
4423 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4426 AC_MSG_RESULT(${samba_cv_TRY_QUOTAS})
4429 AC_MSG_CHECKING(whether to try the new lib/sysquotas.c interface)
4430 AC_ARG_WITH(sys-quotas,
4431 [ --with-sys-quotas Include lib/sysquotas.c support (default=auto)],
4432 [ case "$withval" in
4435 samba_cv_WITH_SYS_QUOTAS=yes
4436 samba_cv_TRY_SYS_QUOTAS=yes
4437 samba_cv_RUN_QUOTA_TESTS=yes
4441 samba_cv_WITH_SYS_QUOTAS=auto
4442 samba_cv_TRY_SYS_QUOTAS=auto
4443 samba_cv_RUN_QUOTA_TESTS=auto
4447 samba_cv_WITH_SYS_QUOTAS=no
4448 samba_cv_TRY_SYS_QUOTAS=no
4451 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4454 AC_MSG_RESULT(${samba_cv_TRY_SYS_QUOTAS})
4457 if test x"$samba_cv_TRY_SYS_QUOTAS" = x"auto"; then
4458 AC_MSG_CHECKING(whether to try the lib/sysquotas.c interface on ${host_os})
4462 samba_cv_TRY_SYS_QUOTAS=yes
4463 samba_cv_RUN_QUOTA_TESTS=yes
4467 samba_cv_TRY_SYS_QUOTAS=no
4472 #############################################
4473 # only check for quota stuff if --with-quotas
4474 if test x"$samba_cv_RUN_QUOTA_TESTS" != x"no"; then
4477 # on linux we didn't need to test we have builtin support
4479 samba_cv_SYSQUOTA_FOUND=yes
4480 AC_DEFINE(HAVE_QUOTACTL_LINUX,1,[Whether Linux quota support is available])
4481 samba_cv_sysquotas_file="lib/sysquotas_linux.c"
4482 AC_MSG_CHECKING(whether to use the lib/sysquotas_linux.c builtin support)
4485 AC_DEFINE(HAVE_LINUX_XFS_QUOTAS,1,[Whether Linux xfs quota support is available])
4486 samba_cv_found_xfs_header=yes
4487 AC_MSG_CHECKING(whether to use the lib/sysquotas_xfs.c builtin support)
4491 # need to set this define when using static linking (BUG 1473)
4492 CPPFLAGS="$CPPFLAGS -DSUNOS5"
4498 # some broken header files need this
4499 AC_CHECK_HEADER(asm/types.h,[
4500 AC_DEFINE(HAVE_ASM_TYPES_H,1,[check for <asm/types.h>])
4501 AC_ADD_INCLUDE(<asm/types.h>)
4504 # For quotas on Veritas VxFS filesystems
4505 AC_CHECK_HEADERS(sys/fs/vx_quota.h)
4507 # For sys/quota.h and linux/quota.h
4508 AC_CHECK_HEADERS(sys/quota.h)
4510 if test x"$samba_cv_found_xfs_header" != x"yes"; then
4511 # if we have xfs quota support <sys/quota.h> (IRIX) we should use it
4512 AC_CACHE_CHECK([for XFS QUOTA in <sys/quota.h>],samba_cv_HAVE_SYS_QUOTA_XFS, [
4514 #include "confdefs.h"
4515 #ifdef HAVE_SYS_TYPES_H
4516 #include <sys/types.h>
4518 #ifdef HAVE_ASM_TYPES_H
4519 #include <asm/types.h>
4521 #include <sys/quota.h>
4522 ],[int i = Q_XGETQUOTA;],
4523 samba_cv_HAVE_SYS_QUOTA_XFS=yes,samba_cv_HAVE_SYS_QUOTA_XFS=no)])
4524 if test "$samba_cv_HAVE_SYS_QUOTA_XFS"x = "yes"x; then
4525 samba_cv_found_xfs_header=yes
4529 # if we have struct dqblk .dqb_fsoftlimit instead of .dqb_isoftlimit on IRIX
4530 AC_CACHE_CHECK([if struct dqblk has .dqb_fsoftlimit],samba_cv_HAVE_DQB_FSOFTLIMIT, [
4532 #include "confdefs.h"
4533 #ifdef HAVE_SYS_QUOTA_H
4534 #include <sys/quota.h>
4538 D.dqb_fsoftlimit = 0;],
4539 samba_cv_HAVE_DQB_FSOFTLIMIT=yes,samba_cv_HAVE_DQB_FSOFTLIMIT=no)])
4540 if test "$samba_cv_HAVE_DQB_FSOFTLIMIT"x = "yes"x; then
4541 AC_DEFINE(HAVE_DQB_FSOFTLIMIT,1,[struct dqblk .dqb_fsoftlimit])
4545 # look for a working quota system
4547 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4548 AC_CACHE_CHECK([for long quotactl(int cmd, char *special, qid_t id, caddr_t addr)],samba_cv_HAVE_QUOTACTL_4A,[
4550 #define HAVE_QUOTACTL_4A 1
4551 #define AUTOCONF_TEST 1
4552 #include "confdefs.h"
4553 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4554 samba_cv_HAVE_QUOTACTL_4A=yes,samba_cv_HAVE_QUOTACTL_4A=no,samba_cv_HAVE_QUOTACTL_4A=cross)])
4555 if test x"$samba_cv_HAVE_QUOTACTL_4A" = x"yes"; then
4556 samba_cv_SYSQUOTA_FOUND=yes;
4557 AC_DEFINE(HAVE_QUOTACTL_4A,1,[Whether long quotactl(int cmd, char *special, qid_t id, caddr_t addr) is available])
4558 samba_cv_sysquotas_file="lib/sysquotas_4A.c"
4562 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4563 AC_CACHE_CHECK([for int quotactl(const char *path, int cmd, int id, char *addr)],samba_cv_HAVE_QUOTACTL_4B,[
4565 #define HAVE_QUOTACTL_4B 1
4566 #define AUTOCONF_TEST 1
4567 #include "confdefs.h"
4568 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4569 samba_cv_HAVE_QUOTACTL_4B=yes,samba_cv_HAVE_QUOTACTL_4B=no,samba_cv_HAVE_QUOTACTL_4B=cross)])
4570 if test x"$samba_cv_HAVE_QUOTACTL_4B" = x"yes"; then
4571 echo "int quotactl(const char *path, int cmd, int id, char *addr) is not reworked for the new sys_quota api"
4572 samba_cv_SYSQUOTA_FOUND=yes;
4573 AC_DEFINE(HAVE_QUOTACTL_4B,1,[Whether int quotactl(const char *path, int cmd, int id, char *addr) is available])
4574 samba_cv_sysquotas_file="lib/sysquotas_4B.c"
4578 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4579 AC_CACHE_CHECK([for CRAY int quotactl (char *spec, int request, char *arg)],samba_cv_HAVE_QUOTACTL_3,[
4581 #define HAVE_QUOTACTL_3 1
4582 #define AUTOCONF_TEST 1
4583 #include "confdefs.h"
4584 #include "${srcdir-.}/tests/sysquotas.c"],[$Werror_FLAGS],[$CPPFLAGS],[$LDFLAGS],
4585 samba_cv_HAVE_QUOTACTL_3=yes,samba_cv_HAVE_QUOTACTL_3=no,samba_cv_HAVE_QUOTACTL_3=cross)])
4586 if test x"$samba_cv_HAVE_QUOTACTL_3" = x"yes"; then
4587 echo "CRAY int quotactl (char *spec, int request, char *arg) is NOT reworked for the sys_quota api"
4588 samba_cv_SYSQUOTA_FOUND=yes;
4589 AC_DEFINE(HAVE_QUOTACTL_3,1,[Whether CRAY int quotactl (char *spec, int request, char *arg); is available])
4590 samba_cv_sysquotas_file="lib/sysquotas_3.c"
4594 #################################################
4595 # check for mntent.h and struct mntent
4596 AC_CHECK_HEADERS(mntent.h)
4597 #################################################
4598 # check for setmntent,getmntent,endmntent
4599 AC_CHECK_FUNCS(setmntent getmntent endmntent)
4601 #################################################
4602 # check for devnm.h and struct mntent
4603 AC_CHECK_HEADERS(devnm.h)
4604 #################################################
4606 AC_CHECK_FUNCS(devnm)
4608 if test x"$samba_cv_WITH_SYS_QUOTAS" = x"yes"; then
4609 if test x"$samba_cv_SYSQUOTA_FOUND" != x"yes"; then
4610 # if --with-sys-quotas=yes then build it
4611 # you have can use the get/set quota command smb.conf
4613 samba_cv_SYSQUOTA_FOUND=auto
4615 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"yes"; then
4616 # if --with-sys-quotas=yes then build it
4617 # you have can use the get/set quota command smb.conf
4619 samba_cv_TRY_SYS_QUOTAS=auto
4623 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no"; then
4624 AC_CACHE_CHECK([whether the sys_quota interface works],samba_cv_SYSQUOTA_WORKS,[
4625 SAVE_CPPFLAGS="$CPPFLAGS"
4626 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4628 #include "confdefs.h"
4629 #define NO_PROTO_H 1
4630 #define NO_CONFIG_H 1
4631 #define HAVE_SYS_QUOTAS 1
4632 #include "${srcdir-.}/${samba_cv_sysquotas_file}"
4633 #include "${srcdir-.}/lib/sysquotas.c"
4634 ],[],samba_cv_SYSQUOTA_WORKS=yes,samba_cv_SYSQUOTA_WORKS=no)
4635 CPPFLAGS="$SAVE_CPPFLAGS"
4637 if test x"$samba_cv_SYSQUOTA_WORKS" = x"yes"; then
4638 AC_MSG_CHECKING(whether to use the new lib/sysquotas.c interface)
4639 if test x"$samba_cv_TRY_SYS_QUOTAS" != x"no"; then
4640 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4641 AC_DEFINE(HAVE_SYS_QUOTAS,1,[Whether the new lib/sysquotas.c interface can be used])
4642 samba_cv_WE_USE_SYS_QUOTAS=yes
4650 if test x"$samba_cv_SYSQUOTA_FOUND" != x"no" -a x"$samba_cv_found_xfs_header" = x"yes"; then
4651 AC_CACHE_CHECK([whether the sys_quota interface works with XFS],samba_cv_SYSQUOTA_WORKS_XFS,[
4652 SAVE_CPPFLAGS="$CPPFLAGS"
4653 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4655 #include "confdefs.h"
4656 #define NO_PROTO_H 1
4657 #define NO_CONFIG_H 1
4658 #define HAVE_SYS_QUOTAS 1
4659 #define HAVE_XFS_QUOTAS 1
4660 #include "${srcdir-.}/lib/sysquotas_xfs.c"
4661 ],[],samba_cv_SYSQUOTA_WORKS_XFS=yes,samba_cv_SYSQUOTA_WORKS_XFS=no)
4662 CPPFLAGS="$SAVE_CPPFLAGS"
4664 if test x"$samba_cv_SYSQUOTA_WORKS_XFS" = x"yes"; then
4665 if test x"$samba_cv_WE_USE_SYS_QUOTAS" = x"yes"; then
4666 AC_DEFINE(HAVE_XFS_QUOTAS,1,[Whether xfs quota support is available])
4671 AC_CACHE_CHECK([whether the old quota support works],samba_cv_QUOTA_WORKS,[
4672 SAVE_CPPFLAGS="$CPPFLAGS"
4673 CPPFLAGS="$CPPFLAGS ${SAMBA_CONFIGURE_CPPFLAGS}"
4675 #include "confdefs.h"
4676 #define NO_PROTO_H 1
4677 #define NO_CONFIG_H 1
4678 #include "${srcdir-.}/smbd/quotas.c"
4679 ],[],samba_cv_QUOTA_WORKS=yes,samba_cv_QUOTA_WORKS=no)
4680 CPPFLAGS="$SAVE_CPPFLAGS"
4682 if test x"$samba_cv_QUOTA_WORKS" = x"yes"; then
4683 AC_MSG_CHECKING(whether to use the old quota support)
4684 if test x"$samba_cv_WE_USE_SYS_QUOTAS" != x"yes"; then
4685 if test x"$samba_cv_TRY_QUOTAS" != x"no"; then
4686 AC_DEFINE(WITH_QUOTAS,1,[Whether to use disk quota support])
4696 ####################
4697 # End of quota check samba_cv_RUN_QUOTA_TESTS
4700 #################################################
4701 # check for experimental utmp accounting
4703 AC_MSG_CHECKING(whether to support utmp accounting)
4706 [ --with-utmp Include utmp accounting (default, if supported by OS)],
4707 [ case "$withval" in
4717 # utmp requires utmp.h
4718 # Note similar check earlier, when checking utmp details.
4720 if test x"$WITH_UTMP" = x"yes" -a x"$ac_cv_header_utmp_h" = x"no"; then
4721 utmp_no_reason=", no utmp.h on $host_os"
4725 # Display test results
4727 if test x"$WITH_UTMP" = x"yes"; then
4729 AC_DEFINE(WITH_UTMP,1,[Whether to include experimental utmp accounting])
4731 AC_MSG_RESULT(no$utmp_no_reason)
4736 UNINSTALLLIBCMD_SH=:
4739 if test $BLDSHARED = true; then
4740 INSTALLLIBCMD_SH="\$(INSTALLCMD)"
4741 UNINSTALLLIBCMD_SH="rm -f"
4743 if test $enable_static = yes; then
4744 INSTALLLIBCMD_A="\$(INSTALLCMD)"
4745 UNINSTALLLIBCMD_A="rm -f"
4748 #################################################
4749 # should we build libmsrpc?
4754 AC_MSG_CHECKING(whether to build the libmsrpc shared library)
4755 AC_ARG_WITH(libmsrpc,
4756 [ --with-libmsrpc Build the libmsrpc shared library (default=yes if shared libs supported)],
4757 [ case "$withval" in
4762 if test $BLDSHARED = true; then
4763 LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4768 AC_MSG_RESULT(no shared library support -- will supply static library)
4770 if test $enable_static = yes; then
4773 INSTALL_LIBMSRPC=installlibmsrpc
4774 UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4778 # if unspecified, default is to built it if possible.
4779 if test $BLDSHARED = true; then
4780 LIBMSRPC_SHARED=bin/libmsrpc.$SHLIBEXT
4785 AC_MSG_RESULT(no shared library support -- will supply static library)
4787 if test $enable_static = yes; then
4790 INSTALL_LIBMSRPC=installlibmsrpc
4791 UNINSTALL_LIBMSRPC=uninstalllibmsrpc
4795 #################################################
4796 # should we build libaddns?
4801 AC_MSG_CHECKING(whether to build the libaddns shared library)
4802 AC_ARG_WITH(libaddns,
4803 [ --with-libaddns Build the libaddns shared library (default=yes if shared libs supported)],
4804 [ case "$withval" in
4809 if test $BLDSHARED = true; then
4810 LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4815 AC_MSG_RESULT(no shared library support -- will supply static library)
4817 if test $enable_static = yes; then
4820 INSTALL_LIBADDNS=installlibaddns
4821 UNINSTALL_LIBADDNS=uninstalllibaddns
4825 # if unspecified, default is to built it if possible.
4826 if test $BLDSHARED = true; then
4827 LIBADDNS_SHARED=bin/libaddns.$SHLIBEXT
4832 AC_MSG_RESULT(no shared library support -- will supply static library)
4834 if test $enable_static = yes; then
4837 INSTALL_LIBADDNS=installlibaddns
4838 UNINSTALL_LIBADDNS=uninstalllibaddns
4841 #################################################
4842 # should we build libsmbclient?
4843 INSTALL_LIBSMBCLIENT=
4844 UNINSTALL_LIBSMBCLIENT=
4845 LIBSMBCLIENT_SHARED=
4847 AC_MSG_CHECKING(whether to build the libsmbclient shared library)
4848 AC_ARG_WITH(libsmbclient,
4849 [ --with-libsmbclient Build the libsmbclient shared library (default=yes if shared libs supported)],
4850 [ case "$withval" in
4855 if test $BLDSHARED = true; then
4856 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4857 LIBSMBCLIENT=libsmbclient
4861 AC_MSG_RESULT(no shared library support -- will supply static library)
4863 if test $enable_static = yes; then
4864 LIBSMBCLIENT=libsmbclient
4866 INSTALL_LIBSMBCLIENT=installclientlib
4867 UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4871 # if unspecified, default is to built it if possible.
4872 if test $BLDSHARED = true; then
4873 LIBSMBCLIENT_SHARED=bin/libsmbclient.$SHLIBEXT
4874 LIBSMBCLIENT=libsmbclient
4878 AC_MSG_RESULT(no shared library support -- will supply static library)
4880 if test $enable_static = yes; then
4881 LIBSMBCLIENT=libsmbclient
4883 INSTALL_LIBSMBCLIENT=installclientlib
4884 UNINSTALL_LIBSMBCLIENT=uninstallclientlib
4887 INSTALL_LIBSMBSHAREMODES=
4888 LIBSMBSHAREMODES_SHARED=
4890 AC_MSG_CHECKING(whether to build the libsmbsharemodes shared library)
4891 AC_ARG_WITH(libsmbsharemodes,
4892 [ --with-libsmbsharemodes Build the libsmbsharemodes shared library (default=yes if shared libs supported)],
4893 [ case "$withval" in
4898 if test $BLDSHARED = true; then
4899 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4900 LIBSMBSHAREMODES=libsmbsharemodes
4904 AC_MSG_RESULT(no shared library support -- will supply static library)
4906 if test $enable_static = yes; then
4907 LIBSMBSHAREMODES=libsmbsharemodes
4909 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4910 UNINSTALL_LIBSMBSHAREMODES=uninstalllibsmbsharemodes
4914 # if unspecified, default is to built it if possible.
4915 if test $BLDSHARED = true; then
4916 LIBSMBSHAREMODES_SHARED=bin/libsmbsharemodes.$SHLIBEXT
4917 LIBSMBSHAREMODES=libsmbsharemodes
4921 AC_MSG_RESULT(no shared library support -- will supply static library)
4923 if test $enable_static = yes; then
4924 LIBSMBSHAREMODES=libsmbsharemodes
4926 INSTALL_LIBSMBSHAREMODES=installlibsmbsharemodes
4929 #################################################
4930 # these tests are taken from the GNU fileutils package
4931 AC_CHECKING(how to get filesystem space usage)
4934 # Test for statvfs64.
4935 if test $space = no; then
4937 AC_CACHE_CHECK([statvfs64 function (SVR4)], fu_cv_sys_stat_statvfs64,
4939 #if defined(HAVE_UNISTD_H)
4942 #include <sys/types.h>
4943 #include <sys/statvfs.h>
4946 struct statvfs64 fsd;
4947 exit (statvfs64 (".", &fsd));
4949 fu_cv_sys_stat_statvfs64=yes,
4950 fu_cv_sys_stat_statvfs64=no,
4951 fu_cv_sys_stat_statvfs64=cross)])
4952 if test $fu_cv_sys_stat_statvfs64 = yes; then
4954 AC_DEFINE(STAT_STATVFS64,1,[Whether statvfs64() is available])
4958 # Perform only the link test since it seems there are no variants of the
4959 # statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs)
4960 # because that got a false positive on SCO OSR5. Adding the declaration
4961 # of a `struct statvfs' causes this test to fail (as it should) on such
4962 # systems. That system is reported to work fine with STAT_STATFS4 which
4963 # is what it gets when this test fails.
4964 if test $space = no; then
4966 AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs,
4967 [AC_TRY_LINK([#include <sys/types.h>
4968 #include <sys/statvfs.h>],
4969 [struct statvfs fsd; statvfs (0, &fsd);],
4970 fu_cv_sys_stat_statvfs=yes,
4971 fu_cv_sys_stat_statvfs=no)])
4972 if test $fu_cv_sys_stat_statvfs = yes; then
4974 AC_DEFINE(STAT_STATVFS,1,[Whether statvfs() is available])
4978 # smbd/statvfs.c assumes that statvfs.f_fsid is an integer.
4979 # This is not the case on ancient Linux systems.
4981 AC_CACHE_CHECK([that statvfs.f_fsid is an integer],samba_cv_fsid_int, [
4982 AC_TRY_COMPILE([#include <sys/statvfs.h>],[struct statvfs buf; buf.f_fsid = 0],
4983 samba_cv_fsid_int=yes,samba_cv_fsid_int=no)])
4984 if test x"$samba_cv_fsid_int" = x"yes"; then
4985 AC_DEFINE(HAVE_FSID_INT, 1, [Whether statvfs.f_fsid is an integer])
4988 if test $space = no; then
4989 # DEC Alpha running OSF/1
4990 AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)])
4991 AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1,
4993 #include <sys/param.h>
4994 #include <sys/types.h>
4995 #include <sys/mount.h>
5000 exit (statfs (".", &fsd, sizeof (struct statfs)));
5002 fu_cv_sys_stat_statfs3_osf1=yes,
5003 fu_cv_sys_stat_statfs3_osf1=no,
5004 fu_cv_sys_stat_statfs3_osf1=no)])
5005 AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1)
5006 if test $fu_cv_sys_stat_statfs3_osf1 = yes; then
5008 AC_DEFINE(STAT_STATFS3_OSF1,1,[Whether statfs requires 3 arguments])
5012 if test $space = no; then
5014 AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl
5015 member (AIX, 4.3BSD)])
5016 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize,
5018 #ifdef HAVE_SYS_PARAM_H
5019 #include <sys/param.h>
5021 #ifdef HAVE_SYS_MOUNT_H
5022 #include <sys/mount.h>
5024 #ifdef HAVE_SYS_VFS_H
5025 #include <sys/vfs.h>
5031 exit (statfs (".", &fsd));
5033 fu_cv_sys_stat_statfs2_bsize=yes,
5034 fu_cv_sys_stat_statfs2_bsize=no,
5035 fu_cv_sys_stat_statfs2_bsize=no)])
5036 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize)
5037 if test $fu_cv_sys_stat_statfs2_bsize = yes; then
5039 AC_DEFINE(STAT_STATFS2_BSIZE,1,[Whether statfs requires two arguments and struct statfs has bsize property])
5043 if test $space = no; then
5045 AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)])
5046 AC_CACHE_VAL(fu_cv_sys_stat_statfs4,
5047 [AC_TRY_RUN([#include <sys/types.h>
5048 #include <sys/statfs.h>
5052 exit (statfs (".", &fsd, sizeof fsd, 0));
5054 fu_cv_sys_stat_statfs4=yes,
5055 fu_cv_sys_stat_statfs4=no,
5056 fu_cv_sys_stat_statfs4=no)])
5057 AC_MSG_RESULT($fu_cv_sys_stat_statfs4)
5058 if test $fu_cv_sys_stat_statfs4 = yes; then
5060 AC_DEFINE(STAT_STATFS4,1,[Whether statfs requires 4 arguments])
5064 if test $space = no; then
5066 AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl
5067 member (4.4BSD and NetBSD)])
5068 AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize,
5069 [AC_TRY_RUN([#include <sys/types.h>
5070 #ifdef HAVE_SYS_PARAM_H
5071 #include <sys/param.h>
5073 #ifdef HAVE_SYS_MOUNT_H
5074 #include <sys/mount.h>
5080 exit (statfs (".", &fsd));
5082 fu_cv_sys_stat_statfs2_fsize=yes,
5083 fu_cv_sys_stat_statfs2_fsize=no,
5084 fu_cv_sys_stat_statfs2_fsize=no)])
5085 AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize)
5086 if test $fu_cv_sys_stat_statfs2_fsize = yes; then
5088 AC_DEFINE(STAT_STATFS2_FSIZE,1,[Whether statfs requires 2 arguments and struct statfs has fsize])
5092 if test $space = no; then
5094 AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)])
5095 AC_CACHE_VAL(fu_cv_sys_stat_fs_data,
5096 [AC_TRY_RUN([#include <sys/types.h>
5097 #ifdef HAVE_SYS_PARAM_H
5098 #include <sys/param.h>
5100 #ifdef HAVE_SYS_MOUNT_H
5101 #include <sys/mount.h>
5103 #ifdef HAVE_SYS_FS_TYPES_H
5104 #include <sys/fs_types.h>
5109 /* Ultrix's statfs returns 1 for success,
5110 0 for not mounted, -1 for failure. */
5111 exit (statfs (".", &fsd) != 1);
5113 fu_cv_sys_stat_fs_data=yes,
5114 fu_cv_sys_stat_fs_data=no,
5115 fu_cv_sys_stat_fs_data=no)])
5116 AC_MSG_RESULT($fu_cv_sys_stat_fs_data)
5117 if test $fu_cv_sys_stat_fs_data = yes; then
5119 AC_DEFINE(STAT_STATFS2_FS_DATA,1,[Whether statfs requires 2 arguments and struct fs_data is available])
5124 # As a gating factor for large file support, in order to
5125 # use <4GB files we must have the following minimal support
5127 # long long, and a 64 bit off_t or off64_t.
5128 # If we don't have all of these then disable large
5131 AC_MSG_CHECKING([if large file support can be enabled])
5133 #if defined(HAVE_LONGLONG) && (defined(HAVE_OFF64_T) || (defined(SIZEOF_OFF_T) && (SIZEOF_OFF_T == 8)))
5134 #include <sys/types.h>
5140 samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=yes,samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT=no)
5141 if test x"$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT" = x"yes"; then
5142 AC_DEFINE(HAVE_EXPLICIT_LARGEFILE_SUPPORT,1,[Whether large file support can be enabled])
5144 AC_MSG_RESULT([$samba_cv_HAVE_EXPLICIT_LARGEFILE_SUPPORT])
5146 #################################################
5147 # check for cluster extensions
5149 AC_MSG_CHECKING(whether to include cluster support)
5150 AC_ARG_WITH(cluster-support,
5151 [ --with-cluster-support Enable cluster extensions (default=no)])
5152 if test "x$with_cluster_support" = "xyes"; then
5153 AC_DEFINE(CLUSTER_SUPPORT,1,[Whether to enable cluster extensions])
5160 #################################################
5161 # check for ACL support
5163 AC_MSG_CHECKING(whether to support ACLs)
5164 AC_ARG_WITH(acl-support,
5165 [ --with-acl-support Include ACL support (default=no)],
5166 [ case "$withval" in
5171 AC_MSG_RESULT(Using UnixWare ACLs)
5172 AC_DEFINE(HAVE_UNIXWARE_ACLS,1,[Whether UnixWare ACLs are available])
5173 default_static_modules="$default_static_modules vfs_solarisacl"
5176 AC_MSG_RESULT(Using solaris ACLs)
5177 AC_DEFINE(HAVE_SOLARIS_ACLS,1,[Whether solaris ACLs are available])
5178 ACL_LIBS="$ACL_LIBS -lsec"
5179 default_static_modules="$default_static_modules vfs_solarisacl"
5182 AC_MSG_RESULT(Using HPUX ACLs)
5183 AC_DEFINE(HAVE_HPUX_ACLS,1,[Whether HPUX ACLs are available])
5184 default_static_modules="$default_static_modules vfs_hpuxacl"
5187 AC_MSG_RESULT(Using IRIX ACLs)
5188 AC_DEFINE(HAVE_IRIX_ACLS,1,[Whether IRIX ACLs are available])
5189 default_static_modules="$default_static_modules vfs_irixacl"
5192 AC_MSG_RESULT(Using AIX ACLs)
5193 AC_DEFINE(HAVE_AIX_ACLS,1,[Whether AIX ACLs are available])
5194 default_static_modules="$default_static_modules vfs_aixacl"
5197 AC_MSG_RESULT(Using Tru64 ACLs)
5198 AC_DEFINE(HAVE_TRU64_ACLS,1,[Whether Tru64 ACLs are available])
5199 ACL_LIBS="$ACL_LIBS -lpacl"
5200 default_static_modules="$default_static_modules vfs_tru64acl"
5203 AC_MSG_RESULT(Using FreeBSD posix ACLs)
5204 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether FreeBSD POSIX ACLs are available])
5205 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5208 AC_CHECK_LIB(attr,getxattr,[ACL_LIBS="$ACL_LIBS -lattr"])
5209 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5210 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
5214 #include <sys/types.h>
5215 #include <sys/acl.h>
5219 acl_entry_t *entry_p;
5220 return acl_get_entry(acl, entry_id, entry_p);
5222 [samba_cv_HAVE_POSIX_ACLS=yes],
5223 [samba_cv_HAVE_POSIX_ACLS=no])
5226 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5227 AC_MSG_RESULT(Using posix ACLs)
5228 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5229 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5233 #include <sys/types.h>
5234 #include <sys/acl.h>
5236 acl_permset_t permset_d;
5238 return acl_get_perm_np(permset_d, perm);
5240 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5241 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5244 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5245 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5250 AC_CHECK_LIB(acl,acl_get_file,[ACL_LIBS="$ACL_LIBS -lacl"])
5251 AC_CACHE_CHECK([for ACL support],samba_cv_HAVE_POSIX_ACLS,[
5255 #include <sys/types.h>
5256 #include <sys/acl.h>
5260 acl_entry_t *entry_p;
5261 return acl_get_entry( acl, entry_id, entry_p);
5263 [samba_cv_HAVE_POSIX_ACLS=yes],
5264 [samba_cv_HAVE_POSIX_ACLS=no])
5267 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5268 AC_MSG_RESULT(Using posix ACLs)
5269 AC_DEFINE(HAVE_POSIX_ACLS,1,[Whether POSIX ACLs are available])
5270 AC_CACHE_CHECK([for acl_get_perm_np],samba_cv_HAVE_ACL_GET_PERM_NP,[
5274 #include <sys/types.h>
5275 #include <sys/acl.h>
5277 acl_permset_t permset_d;
5279 return acl_get_perm_np( permset_d, perm);
5281 [samba_cv_HAVE_ACL_GET_PERM_NP=yes],
5282 [samba_cv_HAVE_ACL_GET_PERM_NP=no])
5285 if test x"$samba_cv_HAVE_ACL_GET_PERM_NP" = x"yes"; then
5286 AC_DEFINE(HAVE_ACL_GET_PERM_NP,1,[Whether acl_get_perm_np() is available])
5294 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support is available])
5297 AC_DEFINE(HAVE_NO_ACLS,1,[Whether no ACLs support should be built in])
5301 if test x"$samba_cv_HAVE_POSIX_ACLS" = x"yes"; then
5302 default_static_modules="$default_static_modules vfs_posixacl"
5305 #################################################
5306 # check for AIO support
5308 AC_MSG_CHECKING(whether to support asynchronous io)
5309 AC_ARG_WITH(aio-support,
5310 [ --with-aio-support Include asynchronous io support (default=no)],
5311 [ case "$withval" in
5318 AC_CHECK_LIB(rt,aio_read,[AIO_LIBS="$LIBS -lrt"])
5319 AC_CHECK_LIB(aio,aio_read,[AIO_LIBS="$LIBS -laio"])
5320 AC_CACHE_CHECK([for asynchronous io support],samba_cv_HAVE_AIO,[
5323 AC_TRY_LINK([#include <sys/types.h>
5325 [ struct aiocb a; return aio_read(&a);],
5326 samba_cv_HAVE_AIO=yes,samba_cv_HAVE_AIO=no)
5328 AC_CACHE_CHECK([for 64-bit asynchronous io support],samba_cv_HAVE_AIO64,[
5331 AC_TRY_LINK([#include <sys/types.h>
5333 [ struct aiocb64 a; return aio_read64(&a);],
5334 samba_cv_HAVE_AIO64=yes,samba_cv_HAVE_AIO64=no)
5336 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5337 AC_DEFINE(HAVE_AIOCB64,1,[Whether 64 bit aio is available])
5338 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5340 elif test x"$samba_cv_HAVE_AIO" = x"yes"; then
5341 AC_DEFINE(WITH_AIO, 1, [Using asynchronous io])
5345 if test x"$samba_cv_HAVE_AIO" = x"yes"; then
5346 AC_MSG_CHECKING(for aio_read)
5347 AC_LINK_IFELSE([#include <aio.h>
5348 int main() { struct aiocb a; return aio_read(&a); }],
5349 [AC_DEFINE(HAVE_AIO_READ, 1, [Have aio_read]) AC_MSG_RESULT(yes)],
5350 [AC_MSG_RESULT(no)])
5352 AC_MSG_CHECKING(for aio_write)
5353 AC_LINK_IFELSE([#include <aio.h>
5354 int main() { struct aiocb a; return aio_write(&a); }],
5355 [AC_DEFINE(HAVE_AIO_WRITE, 1, [Have aio_write]) AC_MSG_RESULT(yes)],
5356 [AC_MSG_RESULT(no)])
5358 AC_MSG_CHECKING(for aio_fsync)
5359 AC_LINK_IFELSE([#include <aio.h>
5360 int main() { struct aiocb a; return aio_fsync(1, &a); }],
5361 [AC_DEFINE(HAVE_AIO_FSYNC, 1, [Have aio_fsync]) AC_MSG_RESULT(yes)],
5362 [AC_MSG_RESULT(no)])
5364 AC_MSG_CHECKING(for aio_return)
5365 AC_LINK_IFELSE([#include <aio.h>
5366 int main() { struct aiocb a; return aio_return(&a); }],
5367 [AC_DEFINE(HAVE_AIO_RETURN, 1, [Have aio_return]) AC_MSG_RESULT(yes)],
5368 [AC_MSG_RESULT(no)])
5370 AC_MSG_CHECKING(for aio_error)
5371 AC_LINK_IFELSE([#include <aio.h>
5372 int main() { struct aiocb a; return aio_error(&a); }],
5373 [AC_DEFINE(HAVE_AIO_ERROR, 1, [Have aio_error]) AC_MSG_RESULT(yes)],
5374 [AC_MSG_RESULT(no)])
5376 AC_MSG_CHECKING(for aio_cancel)
5377 AC_LINK_IFELSE([#include <aio.h>
5378 int main() { struct aiocb a; return aio_cancel(1, &a); }],
5379 [AC_DEFINE(HAVE_AIO_CANCEL, 1, [Have aio_cancel]) AC_MSG_RESULT(yes)],
5380 [AC_MSG_RESULT(no)])
5382 AC_MSG_CHECKING(for aio_suspend)
5383 AC_LINK_IFELSE([#include <aio.h>
5384 int main() { struct aiocb a; return aio_suspend(&a, 1, NULL); }],
5385 [AC_DEFINE(HAVE_AIO_SUSPEND, 1, [Have aio_suspend]) AC_MSG_RESULT(yes)],
5386 [AC_MSG_RESULT(no)])
5389 if test x"$samba_cv_HAVE_AIO64" = x"yes"; then
5390 AC_MSG_CHECKING(for aio_read64)
5391 AC_LINK_IFELSE([#include <aio.h>
5392 int main() { struct aiocb a; return aio_read64(&a); }],
5393 [AC_DEFINE(HAVE_AIO_READ64, 1, [Have aio_read64]) AC_MSG_RESULT(yes)],
5394 [AC_MSG_RESULT(no)])
5396 AC_MSG_CHECKING(for aio_write64)
5397 AC_LINK_IFELSE([#include <aio.h>
5398 int main() { struct aiocb a; return aio_write64(&a); }],
5399 [AC_DEFINE(HAVE_AIO_WRITE64, 1, [Have aio_write64]) AC_MSG_RESULT(yes)],
5400 [AC_MSG_RESULT(no)])
5402 AC_MSG_CHECKING(for aio_fsync64)
5403 AC_LINK_IFELSE([#include <aio.h>
5404 int main() { struct aiocb a; return aio_fsync64(1, &a); }],
5405 [AC_DEFINE(HAVE_AIO_FSYNC64, 1, [Have aio_fsync64]) AC_MSG_RESULT(yes)],
5406 [AC_MSG_RESULT(no)])
5408 AC_MSG_CHECKING(for aio_return64)
5409 AC_LINK_IFELSE([#include <aio.h>
5410 int main() { struct aiocb a; return aio_return64(&a); }],
5411 [AC_DEFINE(HAVE_AIO_RETURN64, 1, [Have aio_return64]) AC_MSG_RESULT(yes)],
5412 [AC_MSG_RESULT(no)])
5414 AC_MSG_CHECKING(for aio_error64)
5415 AC_LINK_IFELSE([#include <aio.h>
5416 int main() { struct aiocb a; return aio_error64(&a); }],
5417 [AC_DEFINE(HAVE_AIO_ERROR64, 1, [Have aio_error64]) AC_MSG_RESULT(yes)],
5418 [AC_MSG_RESULT(no)])
5420 AC_MSG_CHECKING(for aio_cancel64)
5421 AC_LINK_IFELSE([#include <aio.h>
5422 int main() { struct aiocb a; return aio_cancel64(1, &a); }],
5423 [AC_DEFINE(HAVE_AIO_CANCEL64, 1, [Have aio_cancel64]) AC_MSG_RESULT(yes)],
5424 [AC_MSG_RESULT(no)])
5426 AC_MSG_CHECKING(for aio_suspend64)
5427 AC_LINK_IFELSE([#include <aio.h>
5428 int main() { struct aiocb a; return aio_suspend64(&a, 1, NULL); }],
5429 [AC_DEFINE(HAVE_AIO_SUSPEND64, 1, [Have aio_suspend64]) AC_MSG_RESULT(yes)],
5430 [AC_MSG_RESULT(no)])
5437 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support is available])
5440 AC_DEFINE(HAVE_NO_AIO,1,[Whether no asynchronous io support should be built in])
5444 #################################################
5445 # check for sendfile support
5447 with_sendfile_support=yes
5448 AC_MSG_CHECKING(whether to check to support sendfile)
5449 AC_ARG_WITH(sendfile-support,
5450 [ --with-sendfile-support Check for sendfile support (default=yes)],
5451 [ case "$withval" in
5458 AC_CACHE_CHECK([for linux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5459 AC_TRY_LINK([#include <sys/sendfile.h>],
5464 ssize_t nwritten = sendfile64(tofd, fromfd, &offset, total);
5466 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5468 AC_CACHE_CHECK([for linux sendfile support],samba_cv_HAVE_SENDFILE,[
5469 AC_TRY_LINK([#include <sys/sendfile.h>],
5474 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5476 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5478 # Try and cope with broken Linux sendfile....
5479 AC_CACHE_CHECK([for broken linux sendfile support],samba_cv_HAVE_BROKEN_LINUX_SENDFILE,[
5481 #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
5482 #undef _FILE_OFFSET_BITS
5484 #include <sys/sendfile.h>],
5489 ssize_t nwritten = sendfile(tofd, fromfd, &offset, total);
5491 samba_cv_HAVE_BROKEN_LINUX_SENDFILE=yes,samba_cv_HAVE_BROKEN_LINUX_SENDFILE=no)])
5493 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5494 AC_DEFINE(HAVE_SENDFILE64,1,[Whether 64-bit sendfile() is available])
5495 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5496 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5497 elif test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5498 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5499 AC_DEFINE(LINUX_SENDFILE_API,1,[Whether linux sendfile() API is available])
5500 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() should be used])
5501 elif test x"$samba_cv_HAVE_BROKEN_LINUX_SENDFILE" = x"yes"; then
5502 AC_DEFINE(LINUX_BROKEN_SENDFILE_API,1,[Whether (linux) sendfile() is broken])
5503 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile should be used])
5509 *freebsd* | *dragonfly* )
5510 AC_CACHE_CHECK([for freebsd sendfile support],samba_cv_HAVE_SENDFILE,[
5512 #include <sys/types.h>
5514 #include <sys/socket.h>
5515 #include <sys/uio.h>],
5517 int fromfd, tofd, ret, total=0;
5518 off_t offset, nwritten;
5521 hdr.headers = &hdtrl;
5523 hdr.trailers = NULL;
5525 hdtrl.iov_base = NULL;
5527 ret = sendfile(fromfd, tofd, offset, total, &hdr, &nwritten, 0);
5529 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5531 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5532 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() support is available])
5533 AC_DEFINE(FREEBSD_SENDFILE_API,1,[Whether the FreeBSD sendfile() API is available])
5534 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5541 AC_CACHE_CHECK([for hpux sendfile64 support],samba_cv_HAVE_SENDFILE64,[
5543 #include <sys/socket.h>
5544 #include <sys/uio.h>],
5548 struct iovec hdtrl[2];
5552 hdtrl[0].iov_base = 0;
5553 hdtrl[0].iov_len = 0;
5555 nwritten = sendfile64(tofd, fromfd, offset, total, &hdtrl[0], 0);
5557 samba_cv_HAVE_SENDFILE64=yes,samba_cv_HAVE_SENDFILE64=no)])
5558 if test x"$samba_cv_HAVE_SENDFILE64" = x"yes"; then
5559 AC_DEFINE(HAVE_SENDFILE64,1,[Whether sendfile64() is available])
5560 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5561 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5566 AC_CACHE_CHECK([for hpux sendfile support],samba_cv_HAVE_SENDFILE,[
5568 #include <sys/socket.h>
5569 #include <sys/uio.h>],
5573 struct iovec hdtrl[2];
5577 hdtrl[0].iov_base = 0;
5578 hdtrl[0].iov_len = 0;
5580 nwritten = sendfile(tofd, fromfd, offset, total, &hdtrl[0], 0);
5582 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5583 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5584 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5585 AC_DEFINE(HPUX_SENDFILE_API,1,[Whether the hpux sendfile() API is available])
5586 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5593 AC_CHECK_LIB(sendfile,sendfilev)
5594 AC_CACHE_CHECK([for solaris sendfilev64 support],samba_cv_HAVE_SENDFILEV64,[
5596 #include <sys/sendfile.h>],
5600 struct sendfilevec vec[2];
5606 vec[0].sfv_fd = SFV_FD_SELF;
5607 vec[0].sfv_flag = 0;
5612 vec[1].sfv_flag = 0;
5615 nwritten = sendfilev64(tofd, vec, sfvcnt, &xferred);
5617 samba_cv_HAVE_SENDFILEV64=yes,samba_cv_HAVE_SENDFILEV64=no)])
5619 if test x"$samba_cv_HAVE_SENDFILEV64" = x"yes"; then
5620 AC_DEFINE(HAVE_SENDFILEV64,1,[Whether sendfilev64() is available])
5621 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the soloris sendfile() API is available])
5622 AC_DEFINE(WITH_SENDFILE,1,[Whether sendfile() support should be included])
5627 AC_CACHE_CHECK([for solaris sendfilev support],samba_cv_HAVE_SENDFILEV,[
5629 #include <sys/sendfile.h>],
5633 struct sendfilevec vec[2];
5639 vec[0].sfv_fd = SFV_FD_SELF;
5640 vec[0].sfv_flag = 0;
5645 vec[1].sfv_flag = 0;
5648 nwritten = sendfilev(tofd, vec, sfvcnt, &xferred);
5650 samba_cv_HAVE_SENDFILEV=yes,samba_cv_HAVE_SENDFILEV=no)])
5652 if test x"$samba_cv_HAVE_SENDFILEV" = x"yes"; then
5653 AC_DEFINE(HAVE_SENDFILEV,1,[Whether sendfilev() is available])
5654 AC_DEFINE(SOLARIS_SENDFILE_API,1,[Whether the solaris sendfile() API is available])
5655 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5661 AC_CACHE_CHECK([for AIX send_file support],samba_cv_HAVE_SENDFILE,[
5663 #include <sys/socket.h>],
5667 struct sf_parms hdtrl;
5671 hdtrl.header_data = 0;
5672 hdtrl.header_length = 0;
5673 hdtrl.file_descriptor = fromfd;
5674 hdtrl.file_offset = 0;
5675 hdtrl.file_bytes = 0;
5676 hdtrl.trailer_data = 0;
5677 hdtrl.trailer_length = 0;
5679 nwritten = send_file(&tofd, &hdtrl, 0);
5681 samba_cv_HAVE_SENDFILE=yes,samba_cv_HAVE_SENDFILE=no)])
5682 if test x"$samba_cv_HAVE_SENDFILE" = x"yes"; then
5683 AC_DEFINE(HAVE_SENDFILE,1,[Whether sendfile() is available])
5684 AC_DEFINE(AIX_SENDFILE_API,1,[Whether the AIX send_file() API is available])
5685 AC_DEFINE(WITH_SENDFILE,1,[Whether to include sendfile() support])
5701 ############################################
5702 # See if we have the Linux readahead syscall.
5704 AC_CACHE_CHECK([for Linux readahead],
5705 samba_cv_HAVE_LINUX_READAHEAD,[
5707 #if defined(HAVE_UNISTD_H)
5710 #include <fcntl.h>],
5711 [ssize_t err = readahead(0,0,0x80000);],
5712 samba_cv_HAVE_LINUX_READAHEAD=yes,
5713 samba_cv_HAVE_LINUX_READAHEAD=no)])
5715 if test x"$samba_cv_HAVE_LINUX_READAHEAD" = x"yes"; then
5716 AC_DEFINE(HAVE_LINUX_READAHEAD,1,
5717 [Whether Linux readahead is available])
5720 ############################################
5721 # See if we have the posix_fadvise syscall.
5723 AC_CACHE_CHECK([for posix_fadvise],
5724 samba_cv_HAVE_POSIX_FADVISE,[
5726 #if defined(HAVE_UNISTD_H)
5729 #include <fcntl.h>],
5730 [ssize_t err = posix_fadvise(0,0,0x80000,POSIX_FADV_WILLNEED);],
5731 samba_cv_HAVE_POSIX_FADVISE=yes,
5732 samba_cv_HAVE_POSIX_FADVISE=no)])
5734 if test x"$samba_cv_HAVE_POSIX_FADVISE" = x"yes"; then
5735 AC_DEFINE(HAVE_POSIX_FADVISE,1,
5736 [Whether posix_fadvise is available])
5741 #################################################
5742 # Check whether winbind is supported on this platform. If so we need to
5743 # build and install client programs, sbin programs and shared libraries
5745 AC_MSG_CHECKING(whether to build winbind)
5747 # Initially, the value of $host_os decides whether winbind is supported
5751 # Define the winbind shared library name and any specific linker flags
5752 # it needs to be built with.
5754 WINBIND_NSS="nsswitch/libnss_winbind.$SHLIBEXT"
5755 WINBIND_WINS_NSS="nsswitch/libnss_wins.$SHLIBEXT"
5756 WINBIND_NSS_LDSHFLAGS=$LDSHFLAGS
5757 NSSSONAMEVERSIONSUFFIX=""
5759 SMB_KRB5_LOCATOR="bin/smb_krb5_locator.$SHLIBEXT"
5763 NSSSONAMEVERSIONSUFFIX=".2"
5764 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_linux.o"
5767 # FreeBSD winbind client is implemented as a wrapper around
5768 # the Linux version.
5769 NSSSONAMEVERSIONSUFFIX=".1"
5770 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_freebsd.o \
5771 nsswitch/winbind_nss_linux.o"
5772 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5773 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5777 # NetBSD winbind client is implemented as a wrapper
5778 # around the Linux version. It needs getpwent_r() to
5779 # indicate libc's use of the correct nsdispatch API.
5781 if test x"$ac_cv_func_getpwent_r" = x"yes"; then
5782 WINBIND_NSS_EXTRA_OBJS="\
5783 nsswitch/winbind_nss_netbsd.o \
5784 nsswitch/winbind_nss_linux.o"
5785 WINBIND_NSS="nsswitch/nss_winbind.$SHLIBEXT"
5786 WINBIND_WINS_NSS="nsswitch/nss_wins.$SHLIBEXT"
5789 winbind_no_reason=", getpwent_r is missing on $host_os so winbind is unsupported"
5793 # IRIX has differently named shared libraries
5794 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_irix.o"
5795 WINBIND_NSS="nsswitch/libns_winbind.$SHLIBEXT"
5796 WINBIND_WINS_NSS="nsswitch/libns_wins.$SHLIBEXT"
5799 # Solaris winbind client is implemented as a wrapper around
5800 # the Linux version.
5801 NSSSONAMEVERSIONSUFFIX=".1"
5802 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o \
5803 nsswitch/winbind_nss_linux.o"
5804 WINBIND_NSS_EXTRA_LIBS="-lsocket"
5807 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_solaris.o"
5810 # AIX has even differently named shared libraries. No
5811 # WINS support has been implemented yet.
5812 WINBIND_NSS_EXTRA_OBJS="nsswitch/winbind_nss_aix.o"
5813 WINBIND_NSS_LDSHFLAGS="-Wl,-bexpall,-bM:SRE,-ewb_aix_init"
5814 WINBIND_NSS="nsswitch/WINBIND"
5819 winbind_no_reason=", unsupported on $host_os"
5823 AC_SUBST(WINBIND_NSS)
5824 AC_SUBST(WINBIND_WINS_NSS)
5825 AC_SUBST(WINBIND_NSS_LDSHFLAGS)
5826 AC_SUBST(WINBIND_NSS_EXTRA_OBJS)
5827 AC_SUBST(WINBIND_NSS_EXTRA_LIBS)
5828 AC_SUBST(NSSSONAMEVERSIONSUFFIX)
5830 if test $BLDSHARED = true -a x"$HAVE_WINBIND" = x"yes"; then
5831 NSS_MODULES="${WINBIND_NSS} ${WINBIND_WINS_NSS}"
5834 AC_SUBST(SMB_KRB5_LOCATOR)
5836 # Check the setting of --with-winbind
5838 AC_ARG_WITH(winbind,
5839 [ --with-winbind Build winbind (default, if supported by OS)],
5852 # We need unix domain sockets for winbind
5854 if test x"$HAVE_WINBIND" = x"yes"; then
5855 if test x"$samba_cv_unixsocket" = x"no"; then
5856 winbind_no_reason=", no unix domain socket support on $host_os"
5861 # Display test results
5863 if test x"$HAVE_WINBIND" = x"no"; then
5868 if test x"$HAVE_WINBIND" = x"yes"; then
5870 AC_DEFINE(WITH_WINBIND,1,[Whether to build winbind])
5872 EXTRA_BIN_PROGS="$EXTRA_BIN_PROGS bin/wbinfo\$(EXEEXT)"
5873 EXTRA_SBIN_PROGS="$EXTRA_SBIN_PROGS bin/winbindd\$(EXEEXT)"
5874 if test $BLDSHARED = true -a x"$create_pam_modules" = x"yes"; then
5875 PAM_MODULES="$PAM_MODULES pam_winbind"
5876 INSTALL_PAM_MODULES="installpammodules"
5877 UNINSTALL_PAM_MODULES="uninstallpammodules"
5880 AC_MSG_RESULT(no$winbind_no_reason)
5883 # Solaris 10 does have new member in nss_XbyY_key
5884 AC_CHECK_MEMBER(union nss_XbyY_key.ipnode.af_family,
5885 AC_DEFINE(HAVE_NSS_XBYY_KEY_IPNODE, 1, [Defined if union nss_XbyY_key has ipnode field]),,
5886 [#include <nss_dbdefs.h>])
5888 # Solaris has some extra fields in struct passwd that need to be
5889 # initialised otherwise nscd crashes.
5891 AC_CHECK_MEMBER(struct passwd.pw_comment,
5892 AC_DEFINE(HAVE_PASSWD_PW_COMMENT, 1, [Defined if struct passwd has pw_comment field]),,
5895 AC_CHECK_MEMBER(struct passwd.pw_age,
5896 AC_DEFINE(HAVE_PASSWD_PW_AGE, 1, [Defined if struct passwd has pw_age field]),,
5899 # AIX 4.3.x and 5.1 do not have as many members in
5900 # struct secmethod_table as AIX 5.2
5901 AC_CHECK_MEMBERS([struct secmethod_table.method_attrlist], , ,
5902 [#include <usersec.h>])
5903 AC_CHECK_MEMBERS([struct secmethod_table.method_version], , ,
5904 [#include <usersec.h>])
5906 AC_CACHE_CHECK([for SO_PEERCRED],samba_cv_HAVE_PEERCRED,[
5907 AC_TRY_COMPILE([#include <sys/types.h>
5908 #include <sys/socket.h>],
5911 int ret = getsockopt(0, SOL_SOCKET, SO_PEERCRED, &cred, &cred_len);
5913 samba_cv_HAVE_PEERCRED=yes,samba_cv_HAVE_PEERCRED=no,samba_cv_HAVE_PEERCRED=cross)])
5914 if test x"$samba_cv_HAVE_PEERCRED" = x"yes"; then
5915 AC_DEFINE(HAVE_PEERCRED,1,[Whether we can use SO_PEERCRED to get socket credentials])
5919 #################################################
5920 # Check to see if we should use the included popt
5922 AC_ARG_WITH(included-popt,
5923 [ --with-included-popt use bundled popt library, not from system],
5934 if test x"$INCLUDED_POPT" != x"yes"; then
5935 AC_CHECK_LIB(popt, poptGetContext,
5936 INCLUDED_POPT=no, INCLUDED_POPT=yes)
5939 AC_MSG_CHECKING(whether to use included popt)
5940 if test x"$INCLUDED_POPT" = x"yes"; then
5942 BUILD_POPT='$(POPT_OBJ)'
5943 POPTLIBS='$(POPT_OBJ)'
5944 FLAGS1="-I\$(srcdir)/popt"
5950 AC_SUBST(BUILD_POPT)
5954 #################################################
5955 # Check to see if we should use the included iniparser
5957 AC_ARG_WITH(included-iniparser,
5958 [ --with-included-iniparser use bundled iniparser library, not from system],
5962 INCLUDED_INIPARSER=yes
5965 INCLUDED_INIPARSER=no
5969 if test x"$INCLUDED_INIPARSER" != x"yes"; then
5970 AC_CHECK_LIB(iniparser, iniparser_load,
5971 INCLUDED_INIPARSER=no, INCLUDED_INIPARSER=yes)
5974 AC_MSG_CHECKING(whether to use included iniparser)
5975 if test x"$INCLUDED_INIPARSER" = x"yes"; then
5977 BUILD_INIPARSER='$(INIPARSER_OBJ)'
5979 FLAGS1="$FLAGS1 -I\$(srcdir)/iniparser/src"
5983 INIPARSERLIBS="-liniparser"
5985 AC_SUBST(BUILD_INIPARSER)
5986 AC_SUBST(INIPARSERLIBS)
5991 #################################################
5992 # Check if the user wants Python
5994 # At the moment, you can use this to set which Python binary to link
5995 # against. (Libraries built for Python2.2 can't be used by 2.1,
5996 # though they can coexist in different directories.) In the future
5997 # this might make the Python stuff be built by default.
5999 # Defaulting python breaks the clean target if python isn't installed
6004 [ --with-python=PYTHONNAME build Python libraries],
6005 [ case "${withval-python}" in
6008 EXTRA_ALL_TARGETS="$EXTRA_ALL_TARGETS python_ext"
6014 PYTHON=${withval-python}
6019 for i in `echo $default_static_modules | sed -e 's/,/ /g'`
6021 eval MODULE_DEFAULT_$i=STATIC
6024 for i in `echo $default_shared_modules | sed -e 's/,/ /g'`
6026 dnl Fall back to static if we cannot build shared libraries
6027 eval MODULE_DEFAULT_$i=STATIC
6029 if test $BLDSHARED = true; then
6030 eval MODULE_DEFAULT_$i=SHARED
6034 dnl Always built these modules static
6035 MODULE_rpc_spoolss=STATIC
6036 MODULE_rpc_srvsvc=STATIC
6037 MODULE_idmap_tdb=STATIC
6038 MODULE_idmap_passdb=STATIC
6039 MODULE_idmap_nss=STATIC
6041 MODULE_nss_info_template=STATIC
6043 AC_ARG_WITH(static-modules,
6044 [ --with-static-modules=MODULES Comma-separated list of names of modules to statically link in],
6045 [ if test $withval; then
6046 for i in `echo $withval | sed -e 's/,/ /g'`
6048 eval MODULE_$i=STATIC
6052 AC_ARG_WITH(shared-modules,
6053 [ --with-shared-modules=MODULES Comma-separated list of names of modules to build shared],
6054 [ if test $withval; then
6055 for i in `echo $withval | sed -e 's/,/ /g'`
6057 eval MODULE_$i=SHARED
6061 SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o, "bin/ldapsam.$SHLIBEXT", PDB,
6062 [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] )
6063 SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB)
6064 SMB_MODULE(pdb_tdbsam, passdb/pdb_tdb.o, "bin/tdbsam.$SHLIBEXT", PDB)
6065 SMB_SUBSYSTEM(PDB,passdb/pdb_interface.o)
6068 SMB_MODULE(rpc_lsa, \$(RPC_LSA_OBJ), "bin/librpc_lsarpc.$SHLIBEXT", RPC)
6069 SMB_MODULE(rpc_winreg, \$(RPC_REG_OBJ), "bin/librpc_winreg.$SHLIBEXT", RPC)
6070 SMB_MODULE(rpc_initshutdown, \$(RPC_INITSHUTDOWN_OBJ), "bin/librpc_initshutdown.$SHLIBEXT", RPC)
6071 SMB_MODULE(rpc_lsa_ds, \$(RPC_LSA_DS_OBJ), "bin/librpc_lsa_ds.$SHLIBEXT", RPC)
6072 SMB_MODULE(rpc_wkssvc, \$(RPC_WKS_OBJ), "bin/librpc_wkssvc.$SHLIBEXT", RPC)
6073 SMB_MODULE(rpc_svcctl, \$(RPC_SVCCTL_OBJ), "bin/librpc_svcctl.$SHLIBEXT", RPC)
6074 SMB_MODULE(rpc_ntsvcs, \$(RPC_NTSVCS_OBJ), "bin/librpc_ntsvcs.$SHLIBEXT", RPC)
6075 SMB_MODULE(rpc_net, \$(RPC_NETLOG_OBJ), "bin/librpc_NETLOGON.$SHLIBEXT", RPC)
6076 SMB_MODULE(rpc_netdfs, \$(RPC_DFS_OBJ), "bin/librpc_netdfs.$SHLIBEXT", RPC)
6077 SMB_MODULE(rpc_srvsvc, \$(RPC_SVC_OBJ), "bin/librpc_srvsvc.$SHLIBEXT", RPC)
6078 SMB_MODULE(rpc_spoolss, \$(RPC_SPOOLSS_OBJ), "bin/librpc_spoolss.$SHLIBEXT", RPC)
6079 SMB_MODULE(rpc_eventlog, \$(RPC_EVENTLOG_OBJ), "bin/librpc_eventlog.$SHLIBEXT", RPC)
6080 SMB_MODULE(rpc_samr, \$(RPC_SAMR_OBJ), "bin/librpc_samr.$SHLIBEXT", RPC)
6081 SMB_MODULE(rpc_rpcecho, \$(RPC_ECHO_OBJ), "bin/librpc_echo.$SHLIBEXT", RPC)
6082 SMB_MODULE(rpc_unixinfo, \$(RPC_UNIXINFO_OBJ), "bin/librpc_unixinfo.$SHLIBEXT", RPC)
6083 SMB_MODULE(rpc_epmapper, \$(RPC_EPMAPPER_OBJ), "bin/librpc_epmapper.$SHLIBEXT", RPC)
6084 SMB_SUBSYSTEM(RPC,smbd/server.o)
6086 SMB_MODULE(idmap_ldap, nsswitch/idmap_ldap.o, "bin/ldap.$SHLIBEXT", IDMAP)
6087 SMB_MODULE(idmap_tdb, nsswitch/idmap_tdb.o, "bin/tdb.$SHLIBEXT", IDMAP)
6088 SMB_MODULE(idmap_passdb, nsswitch/idmap_passdb.o, "bin/passdb.$SHLIBEXT", IDMAP)
6089 SMB_MODULE(idmap_nss, nsswitch/idmap_nss.o, "bin/nss.$SHLIBEXT", IDMAP)
6090 SMB_MODULE(idmap_rid, nsswitch/idmap_rid.o, "bin/rid.$SHLIBEXT", IDMAP)
6091 SMB_MODULE(idmap_ad, nsswitch/idmap_ad.o, "bin/ad.$SHLIBEXT", IDMAP)
6092 SMB_SUBSYSTEM(IDMAP, nsswitch/idmap.o)
6094 SMB_MODULE(nss_info_template, nsswitch/nss_info_template.o, "bin/template.$SHLIBEXT", NSS_INFO)
6095 SMB_SUBSYSTEM(NSS_INFO, nsswitch/nss_info.o)
6097 SMB_MODULE(charset_weird, modules/weird.o, "bin/weird.$SHLIBEXT", CHARSET)
6098 SMB_MODULE(charset_CP850, modules/CP850.o, "bin/CP850.$SHLIBEXT", CHARSET)
6099 SMB_MODULE(charset_CP437, modules/CP437.o, "bin/CP437.$SHLIBEXT", CHARSET)
6100 SMB_MODULE(charset_macosxfs, modules/charset_macosxfs.o,"bin/macosxfs.$SHLIBEXT", CHARSET)
6101 SMB_SUBSYSTEM(CHARSET,lib/iconv.o)
6103 SMB_MODULE(auth_sam, \$(AUTH_SAM_OBJ), "bin/sam.$SHLIBEXT", AUTH)
6104 SMB_MODULE(auth_unix, \$(AUTH_UNIX_OBJ), "bin/unix.$SHLIBEXT", AUTH)
6105 SMB_MODULE(auth_winbind, \$(AUTH_WINBIND_OBJ), "bin/winbind.$SHLIBEXT", AUTH)
6106 SMB_MODULE(auth_server, \$(AUTH_SERVER_OBJ), "bin/smbserver.$SHLIBEXT", AUTH)
6107 SMB_MODULE(auth_domain, \$(AUTH_DOMAIN_OBJ), "bin/domain.$SHLIBEXT", AUTH)
6108 SMB_MODULE(auth_builtin, \$(AUTH_BUILTIN_OBJ), "bin/builtin.$SHLIBEXT", AUTH)
6109 SMB_MODULE(auth_script, \$(AUTH_SCRIPT_OBJ), "bin/script.$SHLIBEXT", AUTH)
6110 SMB_SUBSYSTEM(AUTH,auth/auth.o)
6112 SMB_MODULE(vfs_default, \$(VFS_DEFAULT_OBJ), "bin/default.$SHLIBEXT", VFS)
6113 SMB_MODULE(vfs_recycle, \$(VFS_RECYCLE_OBJ), "bin/recycle.$SHLIBEXT", VFS)
6114 SMB_MODULE(vfs_audit, \$(VFS_AUDIT_OBJ), "bin/audit.$SHLIBEXT", VFS)
6115 SMB_MODULE(vfs_extd_audit, \$(VFS_EXTD_AUDIT_OBJ), "bin/extd_audit.$SHLIBEXT", VFS)
6116 SMB_MODULE(vfs_full_audit, \$(VFS_FULL_AUDIT_OBJ), "bin/full_audit.$SHLIBEXT", VFS)
6117 SMB_MODULE(vfs_netatalk, \$(VFS_NETATALK_OBJ), "bin/netatalk.$SHLIBEXT", VFS)
6118 SMB_MODULE(vfs_fake_perms, \$(VFS_FAKE_PERMS_OBJ), "bin/fake_perms.$SHLIBEXT", VFS)
6119 SMB_MODULE(vfs_default_quota, \$(VFS_DEFAULT_QUOTA_OBJ), "bin/default_quota.$SHLIBEXT", VFS)
6120 SMB_MODULE(vfs_readonly, \$(VFS_READONLY_OBJ), "bin/readonly.$SHLIBEXT", VFS)
6121 SMB_MODULE(vfs_cap, \$(VFS_CAP_OBJ), "bin/cap.$SHLIBEXT", VFS)
6122 SMB_MODULE(vfs_expand_msdfs, \$(VFS_EXPAND_MSDFS_OBJ), "bin/expand_msdfs.$SHLIBEXT", VFS)
6123 SMB_MODULE(vfs_shadow_copy, \$(VFS_SHADOW_COPY_OBJ), "bin/shadow_copy.$SHLIBEXT", VFS)
6124 SMB_MODULE(vfs_afsacl, \$(VFS_AFSACL_OBJ), "bin/afsacl.$SHLIBEXT", VFS)
6125 SMB_MODULE(vfs_posixacl, \$(VFS_POSIXACL_OBJ), "bin/posixacl.$SHLIBEXT", VFS)
6126 SMB_MODULE(vfs_aixacl, \$(VFS_AIXACL_OBJ), "bin/aixacl.$SHLIBEXT", VFS)
6127 SMB_MODULE(vfs_aixacl2, \$(VFS_AIXACL2_OBJ), "bin/aixacl2.$SHLIBEXT", VFS)
6128 SMB_MODULE(vfs_solarisacl, \$(VFS_SOLARISACL_OBJ), "bin/solarisacl.$SHLIBEXT", VFS)
6129 SMB_MODULE(vfs_irixacl, \$(VFS_IRIXACL_OBJ), "bin/irixacl.$SHLIBEXT", VFS)
6130 SMB_MODULE(vfs_hpuxacl, \$(VFS_HPUXACL_OBJ), "bin/hpuxacl.$SHLIBEXT", VFS)
6131 SMB_MODULE(vfs_tru64acl, \$(VFS_TRU64ACL_OBJ), "bin/tru64acl.$SHLIBEXT", VFS)
6132 SMB_MODULE(vfs_catia, \$(VFS_CATIA_OBJ), "bin/catia.$SHLIBEXT", VFS)
6133 SMB_MODULE(vfs_cacheprime, \$(VFS_CACHEPRIME_OBJ), "bin/cacheprime.$SHLIBEXT", VFS)
6134 SMB_MODULE(vfs_prealloc, \$(VFS_PREALLOC_OBJ), "bin/prealloc.$SHLIBEXT", VFS)
6135 SMB_MODULE(vfs_commit, \$(VFS_COMMIT_OBJ), "bin/commit.$SHLIBEXT", VFS)
6136 SMB_MODULE(vfs_gpfs, \$(VFS_GPFS_OBJ), "bin/gpfs.$SHLIBEXT", VFS)
6137 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
6138 SMB_MODULE(vfs_readahead, \$(VFS_READAHEAD_OBJ), "bin/readahead.$SHLIBEXT", VFS)
6140 SMB_SUBSYSTEM(VFS,smbd/vfs.o)
6142 AC_DEFINE_UNQUOTED(STRING_STATIC_MODULES, "$string_static_modules", [String list of builtin modules])
6144 #################################################
6145 # do extra things if we are running insure
6147 if test "${ac_cv_prog_CC}" = "insure"; then
6148 CPPFLAGS="$CPPFLAGS -D__INSURE__"
6151 #################################################
6152 # If run from the build farm, enable NASTY hacks
6153 #################################################
6154 AC_MSG_CHECKING(whether to enable build farm hacks)
6155 if test x"$RUN_FROM_BUILD_FARM" = x"yes"; then
6157 AC_DEFINE(ENABLE_BUILD_FARM_HACKS, 1, [Defined if running in the build farm])
6162 #################################################
6163 # check for bad librt/libpthread interactions
6165 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes" -o \
6166 x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes" -o \
6167 x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6168 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6170 SMB_IF_RTSIGNAL_BUG(
6172 # Have RT_SIGNAL bug, need to check whether the problem will
6173 # affect anything we have configured.
6176 if test x"$samba_cv_HAVE_KERNEL_OPLOCKS_LINUX" = x"yes"; then
6177 if test x"$rt_signal_lease_ok" = x"no" ; then
6182 if test x"$samba_cv_HAVE_KERNEL_CHANGE_NOTIFY" = x"yes"; then
6183 if test x"$rt_signal_notify_ok" = x"no" ; then
6188 if test x"$samba_cv_HAVE_AIO64" = x"yes" -o \
6189 x"$samba_cv_HAVE_AIO" = x"yes" ; then
6190 if test x"$rt_signal_aio_ok" = x"no" ; then
6195 if test x"$rt_do_error" = x"yes" ; then
6196 SMB_IS_LIBPTHREAD_LINKED(
6200 *** On this platforms, linking Samba against pthreads causes problems
6201 *** with the oplock and change notification mechanisms. You may be
6202 *** using pthreads as a side-effect of using the --with-aio-support
6203 *** or --with-profiling-data options. Please remove these and try again.
6210 *** On this platform, the oplock and change notification mechanisms do not
6211 *** appear to work. Please report this problem to samba-technical@samba.org
6212 *** and attach the config.log file from this directory.
6216 AC_MSG_ERROR(unable to use realtime signals on this platform)
6220 # no RT_SIGNAL bug, we are golden
6221 SMB_IS_LIBPTHREAD_LINKED(
6223 AC_MSG_WARN(using libpthreads - this may degrade performance)
6228 # cross compiling, I hope you know what you are doing
6234 dnl Remove -L/usr/lib/? from LDFLAGS and LIBS
6235 LIB_REMOVE_USR_LIB(LDFLAGS)
6236 LIB_REMOVE_USR_LIB(LIBS)
6237 LIB_REMOVE_USR_LIB(KRB5_LIBS)
6239 dnl Remove -I/usr/include/? from CFLAGS and CPPFLAGS
6240 CFLAGS_REMOVE_USR_INCLUDE(CFLAGS)
6241 CFLAGS_REMOVE_USR_INCLUDE(CPPFLAGS)
6243 #################################################
6244 # Display summary of libraries detected
6246 AC_MSG_RESULT([Using libraries:])
6247 AC_MSG_RESULT([ LIBS = $LIBS])
6248 if test x"$with_ads_support" != x"no"; then
6249 AC_MSG_RESULT([ KRB5_LIBS = $KRB5_LIBS])
6251 if test x"$with_ldap_support" != x"no"; then
6252 AC_MSG_RESULT([ LDAP_LIBS = $LDAP_LIBS])
6254 if test x"$with_dnsupdate_support" != x"no"; then
6255 AC_MSG_RESULT([ UUID_LIBS = $UUID_LIBS])
6257 AC_MSG_RESULT([ AUTH_LIBS = $AUTH_LIBS])
6259 #################################################
6260 # final configure stuff
6262 AC_MSG_CHECKING([configure summary])
6263 AC_TRY_RUN([#include "${srcdir-.}/tests/summary.c"],
6265 AC_MSG_ERROR([summary failure. Aborting config]); exit 1;,
6266 AC_MSG_WARN([cannot run when cross-compiling]))
6271 # Stuff the smbd-only libraries at the end of the smbd link
6272 # path (if we have them).
6273 SMBD_LIBS="$samba_fam_libs $samba_dmapi_libs"
6276 AC_OUTPUT(include/stamp-h Makefile script/findsmb smbadduser script/gen-8bit-gap.sh script/installbin.sh script/uninstallbin.sh)
6278 #################################################
6279 # Print very concise instructions on building/use
6280 if test "x$enable_dmalloc" = xyes
6282 AC_MSG_RESULT([Note: The dmalloc debug library will be included. To turn it on use])
6283 AC_MSG_RESULT([ \$ eval \`dmalloc samba\`.])